Hi Paul,
Build & install on solaris 2.9 (sparc) using gcc (3.4.5) looks fine. make
check all good.
Parallel builds for making make as well as building our stuff.
I see one thing that might be an issue. Not critical I think.
But it's a change in behaviour anyway and I'd like to run it by you.
The issue is with echoing a # to file from a Makefile. We use $(shell echo
"\#...
This gives us a # in the file with make 3.80.
With make 3.81 we get a \# in the file.
We then include that file as a makefile so the \# breaks things.
I think that is a bug/feature that was fixed.
Can see some things in ChangeLog that might be it but I cannot see exactly
what it was.
It is easy to fix my particular occurence of this but it has the potential to
break
various Makefiles. So maybe it is a change that could cause trouble?
How long has the old behaviour been in make I wonder?
Would it be worth a mention in NEWS with a "WARNING: Backward-incompatibility"
maybe?
Is it the same issue as the backslash-newline?
It is certainly a very similar issue I think.
Thanks Paul,
James.
Here are the exact lines we have in the Makefile:
$(shell echo "\#STACKS=\"$(STACKS)\" OBSERVERS=\"$(OBSERVERS)\" BUILD=\"$(BUILD)\""
>$(COMPONENTS_DETAIL_FILE).new)
# We include these files to trigger Make to pick their changes up immediately
include $(COMPONENTS_DETAIL_FILE).new
With make 3.80: (we get a # in file)
cat rps_components.build.new
#STACKS="gb iups" OBSERVERS="report_stats_observer gb_user_context storage gb_pdp_context stats
iups_user_context" BUILD="debug"
With GNU Make 3.81rc1: (we get a \# in file)
cat rps_components.build.new
\#STACKS="gb iups" OBSERVERS="report_stats_observer gb_user_context storage gb_pdp_context stats
iups_user_context" BUILD="debug"
We get an error like this with make 3.81rc1: (because of \# at start of line)
rps_components.build.new:1: *** missing separator. Stop.
If we change to echo "#... then make 3.81rc1 is happy, but with make 3.80 we
get error like this:
Makefile:363: *** unterminated call to function `shell': missing `)'. Stop.
Easy for us to fix for either version.
Of course we don't need that line to be a comment so we can fix our Makefile
to work with both 3.80 and 3.81 as follows:
$(shell echo "$(PROG)STACKS=\"$(STACKS)\" $(PROG)OBSERVERS=\"$(OBSERVERS)\"
$(PROG)BUILD=\"$(BUILD)\"" >$(COMPONENTS_DETAIL_FILE).new)
Anyone wishing to have a line beginning with a # has a difficulty.
Not sure would it be easy to fix and be compatible with both make 3.80 and
3.81rc1?
_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make