Pardon me if this is the wrong place to send reports of this nature. I've been trying to build Xerces 1.0.3 on a Solaris 2.7 box using GNU make, and ran into trouble with the Makefile.incl. The problem was that make would generate an error when the recursive makefiles would finally reach a terminal directory and actually try to compile some files. Here is an example:
make[6]: Entering directory `/remote/projects/mws/src/xml/xerces/xerces-1_0_3/src/org/apache/xerces/dom/events' if [ -n "" ]; \ then for i in ;do \ echo "make -C $i"; make -C $i; \ done; \ fi /bin/sh: syntax error at line 1: `;' unexpected make[6]: *** [dirs] Error 2 I am not sure why this is happening, but it appears to center on the fact that when the following code in Makefile.incl is run in a leaf directory, dirs:: @if [ -n "$(DIRS)" ]; \ then for i in $(DIRS);do \ echo "$(MAKE) -C $$i"; $(MAKE) -C $$i; \ done; \ fi the DIRS is empty, and the shell (/bin/sh in this case) tries to parse if [ -n "" ]; then for i in ;do ^^^^ It looks like the shell isn't stopping when it hits if [ -n "" ] but rather keeps going, encountering for i in ;do and generating a syntax error. It's been too long since I've done much shell script hacking, and I don't remember the parsing rules. I would have thought that it would stop when the conditional failed, but apparently it doesn't (though maybe it's a quirk of the /bin/sh distributed with Solaris 2.7). My solution to this involved the following changes to Makefile.incl. There are probably better solutions, but this seems to work. (The make fails when it tries to deal with the docs, but that I think is a different problem.) Could this (or an equivalent fix) please be added to the Xerces source code base, so that future releases don't suffer from this problem? ----------------------------------------------------------------------------- diff -c /projects/mws/src/xml/xerces/xerces-1_0_3/src/Makefile.incl /projects/mws/src/xml/xerces/xerces-1_0_3/src/Makefile.incl.~1~ *** /projects/mws/src/xml/xerces/xerces-1_0_3/src/Makefile.incl Wed Mar 8 21:25:52 2000 --- /projects/mws/src/xml/xerces/xerces-1_0_3/src/Makefile.incl.~1~ Wed Mar 8 21:25:52 2000 *************** *** 1,11 **** # Decide if we're on unix or DOS ! # ifneq ($(findstring WIN,$(shell uname)),) # DOS ! # CLPATHSEP := ; ! # else # UNIX CLPATHSEP := : ! # endif # # Define the environment commands and/or utilities --- 1,11 ---- # Decide if we're on unix or DOS ! ifneq ($(findstring WIN,$(shell uname)),) # DOS ! CLPATHSEP := ; ! else # UNIX CLPATHSEP := : ! endif # # Define the environment commands and/or utilities *************** *** 88,110 **** dirs:: @if [ -n "$(DIRS)" ]; \ ! then \ ! $(MAKE) subdirs; \ ! fi; \ ! $(MAKE) compile ! ! subdirs:: ! @for i in $(DIRS) ; do \ echo "$(MAKE) -C $$i"; $(MAKE) -C $$i; \ ! done cleandirs:: @if [ -n "$(DIRS)" ]; \ ! then \ ! $(MAKE) subcleandirs; \ ! fi; \ ! ! subcleandirs:: ! @for i in $(DIRS);do \ echo "$(MAKE) -C $$i clean"; $(MAKE) -C $$i clean; \ ! done --- 88,101 ---- dirs:: @if [ -n "$(DIRS)" ]; \ ! then for i in $(DIRS);do \ echo "$(MAKE) -C $$i"; $(MAKE) -C $$i; \ ! done; \ ! fi cleandirs:: @if [ -n "$(DIRS)" ]; \ ! then for i in $(DIRS);do \ echo "$(MAKE) -C $$i clean"; $(MAKE) -C $$i clean; \ ! done; \ ! fi ----------------------------------------------------------------------------- Mike Hucka, Ph.D. -- [EMAIL PROTECTED] -- ph: 626.395.6818 Postdoctoral researcher, software developer, systems administrator GENESIS Development Group, Division of Biology 216-76, Caltech