tech-toolchain archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
I need support with a planned POSIX make extension
Hi,
I am currently trying to get an orthogonal extension into POSIX make in order
to have at least an orthogonal variant as a choice instead of the incompatible
GNU make extensions called:
:= that has been standardized in POSIX as ::= and that creates a
different type of make macro with different behavior
+= from GNU make that is incompatible to the much older += from
SunPro Make. The incompatibility is that if a make macro has been
created by the GNU := (POSIX ::=) instead of the standard
assignment operaror =, += first expands the right side before
appending the expanded result to the macro.
The different type of macros created with the GNU := is not
expanded at use time.
The incompatible behavior from GNU make has the following problems:
1) expansion always could be prevented in a standard compliant way
by using $$(MACRO), instead of using a different macro type.
2) large makefiles that make heavy use of the include directive
become highly unpredictable because you cannot know what a +=
operator will do, since the first definition of the related make
macro is most likely in a different include file.
I already filed a bug against POSIX for that and POSIX now recommends
to include at least one lower case letter in the name of a make
macro created via GNU make := (POSIX ::=).
3) The GNU make documentation is written so badly that most people
who use := do not know that this causes unexpected behavior with
the += operator.
In order to have at least the choice of an orthogonal way of doing what
people expect, I defined and implemented two new operators:
:::= Assigns to a make macro by first expanding the right
side of the assignment, but without creating a different
type of make macro.
+:= Appends to a make macro by first expanding the right
side of the assignment, regardless of the type of the
make macro that is to the left.
and I filed a bug against POSIX to enhance the standard to include these
new operators, see:
https://www.austingroupbugs.net/view.php?id=1471
BTW: I am the author and maintainer of smake and I am the current maintainer
of SunPro Make as well. Both programs are part of the schilytools package
and already include support for the new operators.
The time to implement the new operators was 1-4 hours for each of the make
implementations, so this is a really cheap extension.
Given that bmake otherwise behaves like smake for :=, I hope that *BSD could
be willing to support my enhancement.
So my question is: would you be willing to implement support for :::= and +:=
into bmake and publish that will to the POSIX bug tracking system?
Jörg
--
EMail:joerg%schily.net@localhost Jörg Schilling D-13353 Berlin
Blog: http://schily.blogspot.com/
URL: http://cdrecord.org/private/ http://sourceforge.net/projects/schilytools/files/
Home |
Main Index |
Thread Index |
Old Index