Hi,
Thanks for information.
I have bee trying to do the following:
test.txt::
@$(RM) $@;
for i in $(TEST) ; \
do \
if [ -d $$i ] ; then \
$(ECHO) "`basename $$comp` $$comp">> $@; \
fi ;\
done
The same implementation works fine with gmake 3.80, but when using gmake 3.81 I get the following error.
Syntax error: end of file unexpected
TEST consists of a list of directories around 384 of them.
When I reduce the list to 300 it works fine evenwith 3.81
Thanks & Regards,
Bhaskar G
|
"Philip Guenther" <[EMAIL PROTECTED]> 10/18/2006 07:55 PM |
|
On 10/18/06, Bhaskar G <[EMAIL PROTECTED]> wrote:
> The sed script that I use with gmake 3.80 works fine but not with 3.81. I
> get the following errors.
To bad you don't actually show us the relevant lines of the makefile.
Oh well, I guess I can only quote to you the
"Backward-incompatibility" entries from the gmake 3.81 NEWS file. I
suggest you read each and think carefully about whether any of those
changes could be involved.
* WARNING: Backward-incompatibility!
GNU make now implements a generic "second expansion" feature on the
prerequisites of both explicit and implicit (pattern) rules. In order
to enable this feature, the special target '.SECONDEXPANSION' must be
defined before the first target which takes advantage of it. If this
feature is enabled then after all rules have been parsed the
prerequisites are expanded again, this time with all the automatic
variables in scope. This means that in addition to using standard
SysV $$@ in prerequisites lists, you can also use complex functions
such as $$(notdir $$@) etc. This behavior applies to implicit rules,
as well, where the second expansion occurs when the rule is matched.
However, this means that when '.SECONDEXPANSION' is enabled you must
double-quote any "$" in your filenames; instead of "foo: boo$$bar" you
now must write "foo: foo$$$$bar". Note that the SysV $$@ etc. feature,
which used to be available by default, is now ONLY available when the
.SECONDEXPANSION target is defined. If your makefiles take advantage
of this SysV feature you will need to update them.
* WARNING: Backward-incompatibility!
In order to comply with POSIX, the way in which GNU make processes
backslash-newline sequences in command strings has changed. If your
makefiles use backslash-newline sequences inside of single-quoted
strings in command scripts you will be impacted by this change. See
the GNU make manual subsection "Splitting Command Lines" (node
"Splitting Lines"), in section "Command Syntax", chapter "Writing the
Commands in Rules", for details.
* WARNING: Backward-incompatibility!
Some previous versions of GNU make had a bug where "#" in a function
invocation such as $(shell ...) was treated as a make comment. A
workaround was to escape these with backslashes. This bug has been
fixed: if your makefile uses "\#" in a function invocation the
backslash is now preserved, so you'll need to remove it.
Philip Guenther
_______________________________________________ Help-make mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-make
