---------- Forwarded message ---------- From: Tim Murphy <tnmur...@gmail.com> Date: 2009/9/6 Subject: Re: Why "*** extraneous `endef'. Stop."? To: a...@gnu.org
Oh dear - sorry - I'm an idiot. All I can say is that the ifneq statement is what makes it go wrong for me. Using $(if works for me but to get the same effect as "not equal" you need to do some complicated stuff. It is a bug. I can only suggest a workaround: define equal $(if $(1:$2=),,$(if $(2:$1=),1)) endef define Var1 $(if $(call equal,1,1),, define Var2 define Var3 endef endef ) endef Cheers, Tim 2009/9/6 Alfred M. Szmidt <a...@gnu.org>: > define starts a macro. Everything from the start of the macro to > endef is just text and is not evaluated. > > So your inner "define" is not recognised - it's just treated as > text. That means that the dirst endef matches the first define and > all the other endefs seem to have no corresponding define > statement. > > In other words, you cannot nest defines like that. > > Sure you can, it is a documented feature. From the GNU make manual, > (make) Defining: > > | You may nest `define' directives: `make' will keep track of > | nested directives and report an error if they are not all properly > | closed with `endef'. Note that lines beginning with tab characters > | are considered part of a command script, so any `define' or `endef' > | strings appearing on such a line will not be considered `make' > | operators. > > This is more a bug than anything. > -- You could help some brave and decent people to have access to uncensored news by making a donation at: http://www.thezimbabwean.co.uk/ -- You could help some brave and decent people to have access to uncensored news by making a donation at: http://www.thezimbabwean.co.uk/ _______________________________________________ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make