cvs commit: ports/java/jdk14 Makefile
Harti Brandt
harti at freebsd.org
Wed Aug 18 01:25:35 PDT 2004
On Wed, 18 Aug 2004, Ruslan Ermilov wrote:
RE>On Wed, Aug 18, 2004 at 07:06:03AM +0000, Greg Lewis wrote:
RE>> glewis 2004-08-18 07:06:03 UTC
RE>>
RE>> FreeBSD ports repository
RE>>
RE>> Modified files:
RE>> java/jdk14 Makefile
RE>> Log:
RE>> . The changes to make in -CURRENT to use MAKEFLAGS make us unable to
RE>> override the MAKEFLAGS ARCH value in the main HotSpot Makefile. Fix
RE>> this by passing in a blank MAKEFLAGS up front so there is nothing to
RE>> (try to) override.
RE>>
RE>> Submitted by: truckman
RE>> Requested by: kris
RE>>
RE>> Revision Changes Path
RE>> 1.79 +2 -1 ports/java/jdk14/Makefile
RE>>
RE>The fix to make(1) was to pass command-line variables as
RE>command-line variables to sub-makes, as required by POSIX.
RE>It's still possible to override anything that you want,
RE>you just need to know well how MAKEFLAGS works. ;)
RE>
RE>MAKEFLAGS is an *environment* variable that make(1) reads
RE>on startup, and treats its contents as if it was specified
RE>on the command line.
RE>
RE>1. The contents of this environment variable is then entered
RE>as the .MAKEFLAGS *global* variable.
RE>
RE>2. Makefile can modify this global as necessary, either by
RE>modifying the variable directly (including adding to it,
RE>overriding it, or even undefining it with .undef), or thru
RE>the special .MAKEFLAGS macro.
^^^^^ target (see commented out line in Makefile
below)
RE>
RE>3. When make(1) calls another ${MAKE}, it enters the value
RE>of its global variable .MAKEFLAGS into the environment of
RE>sub-make as the MAKEFLAGS variable.
RE>
RE>Make sure you have the latest make(1), then run this
RE>makefile as ``make all FOO=bar''. Note the difference
RE>between .MAKEFLAGS variable and a target.
RE>
RE>%%%
RE>.if make(all)
RE>.MAKEFLAGS+= FOO=foo # override for submakes only
RE>#.MAKEFLAGS: FOO=foo # override for myself and submakes
RE>all:
RE> @echo "${.TARGET}'s idea of FOO: ${FOO}"
RE> @echo .MAKEFLAGS=${.MAKEFLAGS}
RE> @cd ${.CURDIR} && ${MAKE} submake
RE>.endif
RE>
RE>.if make(submake)
RE>submake:
RE> @echo "${.TARGET}'s idea of FOO: ${FOO}"
RE> @echo .MAKEFLAGS=${.MAKEFLAGS}
RE>.endif
RE>%%%
RE>
RE>
RE>Cheers,
This is an excellent explanation. Perhaps we can put part of it into
make(1)?
harti
More information about the cvs-ports
mailing list