On Sat, Oct 25, 2008 at 1:42 PM, Daniela Rütting <[EMAIL PROTECTED]> wrote: ... > 1st problem: In an attempt to reduce tedious typing when defining a variable > from > the command line, I tried: > ifeq (max,$(O)) > O = -O3 -fomit-frame-pointer -fno-unroll-loops > endif > ifeq (,$(O)) > O = -O > endif > CXXFLAGS = -W -Wall $(O) > but this didn t work. After typing make O=max the value max was passed > straight > to the compiler instead of being changed to -O3 -fomit-frame-pointer > -fno-unroll-loops. > I had to use the more complex sequence > ifeq (max,$(O)) > OPTIM = -O3 -fomit-frame-pointer -fno-unroll-loops > endif > ifeq (,$(O)) > OPTIM = -O > endif > ifndef OPTIM > OPTIM = $(O) > endif > CXXFLAGS = -W -Wall $(OPTIM) > It seems as if it is not possible to change the value of a variable inside an > ifeq > conditional that test against that very variable, but I wasn t told in the > documentation.
This has nothing to do with the conditionals and everything to do with mixing command-line and makefile assignments. To quote section 9.5 "Overriding Variables" of the make 3.81 manual: ------ An argument that contains `=' specifies the value of a variable: `V=X' sets the value of the variable V to X. If you specify a value in this way, all ordinary assignments of the same variable in the makefile are ignored; we say they have been "overridden" by the command line argument. ... There is one way that the makefile can change a variable that you have overridden. This is to use the `override' directive, which is a line that looks like this: `override VARIABLE = VALUE' (*note The `override' Directive: Override Directive.). --y---- Indeed, if you use 'override' in your makefile, then it works as you expect. > I refer to: Edition 0.55, last updated 04 April 2000, of `The GNU Make > Manual', for > `make', Version 3.79. > I use: GNU Make version 3.79.1, Built for i386-pc-msdosdjgpp > (not the newest version, I presume, but maybe no one mentioned the problem > yet?) So you're using a version of make that has been obsolete for *6 years*, but haven't checked the new manual? (3.80 was released on 2002-10-03; 3.81 on 2006-04-01) Philip Guenther _______________________________________________ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make