<feed xmlns='http://www.w3.org/2005/Atom'>
<title>paraslash/yy/makefile, branch next</title>
<subtitle>paraslash - network audio streaming tools</subtitle>
<id>https://git.tue.mpg.de/cgit/paraslash/atom?h=next</id>
<link rel='self' href='https://git.tue.mpg.de/cgit/paraslash/atom?h=next'/>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/'/>
<updated>2026-06-28T16:28:45Z</updated>
<entry>
<title>Makefile: Rename CPPFLAGS to XCPPFLAGS.</title>
<updated>2026-06-28T16:28:45Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-12T20:58:16Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=f23af60a28827d4d95cc0d98c9f35a0d69bde3c4'/>
<id>urn:sha1:f23af60a28827d4d95cc0d98c9f35a0d69bde3c4</id>
<content type='text'>
Treat this variable in the same way as we handle CFLAGS: Use an internal
variable to assemble the flags, then pass both the internal variable and
$(CPPFLAGS) to the compiler, in this order.

Define the new XCPPFLAGS as a simply expanded make(1) variable, because this
should be faster.
</content>
</entry>
<entry>
<title>Makefile: Honor CFLAGS when building lopsub/bison objects.</title>
<updated>2026-06-28T16:28:45Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-12T21:04:05Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=ab93154964d59057e89f8b4b1a594bbe9d6b9a87'/>
<id>urn:sha1:ab93154964d59057e89f8b4b1a594bbe9d6b9a87</id>
<content type='text'>
The user might want to override the compiler flags when compiling a source
file that was generated by lopsubgen or bison.
</content>
</entry>
<entry>
<title>build: Remove the .PRECIOUS target.</title>
<updated>2025-03-25T00:51:36Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2025-01-02T00:06:03Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=00098fe1f78013335c44d6e5c4082367057a5fd7'/>
<id>urn:sha1:00098fe1f78013335c44d6e5c4082367057a5fd7</id>
<content type='text'>
Instruct make(1) to never remove any intermediate files by defining
.SECONDARY. This way we don't need to maintain the list of precious
targets.
</content>
</entry>
<entry>
<title>build: Get rid of directory order-only dependencies.</title>
<updated>2025-03-25T00:51:36Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2025-01-01T16:19:47Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=447eb3befdc74caafbffb275ef5507505a5398c6'/>
<id>urn:sha1:447eb3befdc74caafbffb275ef5507505a5398c6</id>
<content type='text'>
They only clutter the Makefile for no good reason. Just create all
build directories beforehand when running ./version-gen.sh.

One order-only dependency remains: We want to invoke the compiler
only after all generated .h files have been created. Otherwise the
.d files may be created incorrectly.
</content>
</entry>
<entry>
<title>Version 2 moods.</title>
<updated>2017-08-20T13:57:03Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2017-07-11T14:08:32Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=3d3a2f50a05501cf27f1155629799953f952bd4b'/>
<id>urn:sha1:3d3a2f50a05501cf27f1155629799953f952bd4b</id>
<content type='text'>
This introduces a context-free grammar for moods. The parser for the
corresponding language (the version 2 mood parser) is generated by
flex and bison and will eventually replace the open-coded parser for
traditional (version 1) moods. Those are still supported, but the
server now logs a deprecation warning when a version 1 mood is loaded,

Loading a version 2 mood is a two step procedure. In the first step the
bison parser reads the mood definition stored in the moods table of the
afs database. If there are no errors, the parser returns an abstract
syntax tree which represents the syntactic structure of the mood
definition. In the second step the abstract syntax tree is evaluated
for each row of the audio file table in turn. If the evaluation
function returns true, the audio file is considered admissible. In
this case a reference to the row is added to the score table in the
same way the version 1 mood parser stores the set of admissible files.

The commit adds the following new files to the repository:

* yy/mp.lex: the lexer
* yy/mp.y: the bison parser
* yy/makefile: rules for building the parser, included from main Makefile
* mp.c: frontend (high-level API) and backend (helpers for yy/mp.[ch])
* mp.h: backend data structures and function prototypes

The frontend is only needed in the existing mood.c, which now also
contains the declarations of the frontend API so that mp.h needs only
be included by the lexer and the parser.

The comment at the top of mp.c gives an overview of the mood parser
API. All non-static functions of mp.c (both frontend and backend)
are fully documented. The section on moods of the user manual has
been rewritten and extended.

Since flex and bison are required to build para_server, the list
of optional software packages now mentions these tools, with links
to their home page. If either tool is not installed, the configure
script succeeds but para_server will not be built.
</content>
</entry>
</feed>
