[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Ann: GNU xmake

From: DuX
Subject: Ann: GNU xmake
Date: Sat, 10 Aug 2002 23:23:02 +0200

Hello, GNU makers!

I've written a couple of additional make functions/commands which I think
might be useful to others. Hence, the xmake is an eXtended version of GNU make
(3.79.1-7), born with the idea of writing a perfect makefile template.

You may find it here:

I've started the work last year, when the program was intended for internal use
only (that's why it still doesn't follow the "keep it small and simple"
philosophy), but this set of extensions soon grown up enough and now has some
handy functions that simplify the writing even of the "ordinary" makefiles.

Most of the new functions can be simulated by the shell, while some of them
(such as defining canned command sequences, variables and explicit rules
dynamically) cannot be achieved at all, or can be performed, but in the most
bizarre ways. Some of them are here just to eliminate the need for (slower)
external programs or to overcome the OS's command-line length limit. This is
probably in contrast with the UNIX philosophy, but performances are sometimes
more important (especially in Win32 UNIX emulation environments).

But now, with GNU make 3.80rc1, where Paul D. Smith completely redesigned some
portions of code (hashing, introduced `eval' buffers etc.), xmake is not so
much more powerful than the "plain" GNU make.

It also has a few highly redundant functions that can be easily accomplished by
the shell; in fact, make processor is probably the last place on earth their
functionality should belong to (e.g. `$(read )').

Presumably, xmake breaks the GNU make philosophy, it is still a beta release
(ported only to DJGPP, Cygwin and Linux), but one may still find something
useful in it.

Basically, these are its "features":

 o  Regular expressions
 o  Much better handling of filenames containing spaces
 o  ANSI escape sequences
 o  Builtin functions with optional flags (e.g. `$(stdout: -anf,Hello, world!)')
 o  Setting/unsetting of variables in current contexts (i.e. local vars in 
 o  Overriding the default goal file
 o  Loop control: functions break and continue
 o  Re-reading input lines
 o  Piping the output of an external command directly into makefile
 o  Builtin commands (for use in rules, with no command-line length limit)
 o  Expanding of (x)make functions in the second phase of making
 o  Defining canned command sequences and explicit rules dynamically
 o  Some environment variables

Like the Paul announced two months ago, he's going to integrate some existing
scripting language into GNU make (probably Guile), so in the meantime, you may
try this extension.

Sorry, the "manual" is (still) in Serbian, but the source "walks and talks" in
(my bad) English :).


Best regards,
Slijepcevic Dusan


.; E147 EA31 00110000 10 08 13 51

reply via email to

[Prev in Thread] Current Thread [Next in Thread]