changeset 2427:97dd9f867cef

[xemacs-hg @ 2004-12-07 12:52:30 by malcolmp] Parallel build support without the need for a POSIX-compatible make.
author malcolmp
date Tue, 07 Dec 2004 12:52:51 +0000
parents bb3f73fbbda8
children 24adc05310bc
files ChangeLog INSTALL Makefile.in.in configure configure.in man/ChangeLog man/Makefile src/ChangeLog src/Makefile.in.in
diffstat 9 files changed, 64 insertions(+), 40 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Dec 07 00:20:51 2004 +0000
+++ b/ChangeLog	Tue Dec 07 12:52:51 2004 +0000
@@ -1,3 +1,14 @@
+2004-12-07  Malcolm Purvis  <malcolmp@xemacs.org>
+
+	* INSTALL: A POSIX compatible Make is no longer required for builds.
+	* Makefile.in.in (RECURSIVE_MAKE): Removed.
+	* Makefile.in.in (RECURSIVE_MAKE_ARGS): New.
+	* configure.in (RECURSIVE_MAKE): Removed.
+	* configure.in (RECURSIVE_MAKE_ARGS): New.
+	Always refer to make as $(MAKE) and use $(RECURSIVE_MAKE_ARGS) for
+	other parameters.  This allows -j to work in GNU Make while
+	removing need for POSIX compatible make on all systems.
+
 2004-12-05  Ben Wing  <ben@xemacs.org>
 
 	* README.packages:
--- a/INSTALL	Tue Dec 07 00:20:51 2004 +0000
+++ b/INSTALL	Tue Dec 07 12:52:51 2004 +0000
@@ -45,11 +45,10 @@
 on-line documentation. The exact amount depends greatly on the number
 of extra Lisp packages that are installed.
 
-XEmacs requires an ANSI C compiler, such as GCC, and a POSIX compatible
-make, such as GNU Make.  If you wish to build the documentation
-yourself, you will need at least version 1.68 of makeinfo (GNU
-texinfo-3.11).  GNU Texinfo 4.2 is recommended; it is necessary for
-building Lisp packages, and we may move to it for the core.
+XEmacs requires an ANSI C compiler, such as GCC.  If you wish to build the
+documentation yourself, you will need at least version 1.68 of makeinfo (GNU
+texinfo-3.11).  GNU Texinfo 4.2 is recommended; it is necessary for building
+Lisp packages, and we may move to it for the core.
 
 A note on terminology: unfortunately the terms "library" and "package"
 are heavily overloaded.  In the following, "library" refers to an
--- a/Makefile.in.in	Tue Dec 07 00:20:51 2004 +0000
+++ b/Makefile.in.in	Tue Dec 07 12:52:51 2004 +0000
@@ -55,10 +55,10 @@
 #include "src/config.h"
 
 #ifdef USE_GNU_MAKE
-RECURSIVE_MAKE=$(MAKE)
+RECURSIVE_MAKE_ARGS=
 #else
 @SET_MAKE@
-RECURSIVE_MAKE=@RECURSIVE_MAKE@
+RECURSIVE_MAKE_ARGS=@RECURSIVE_MAKE_ARGS@
 #endif
 
 SHELL = /bin/sh
@@ -275,13 +275,13 @@
 	cd ${srcdir} && $(SHELL) lib-src/config.values.sh
 
 depend ${srcdir}/src/depend:
-	+cd ./src && $(RECURSIVE_MAKE) depend
+	cd ./src && $(MAKE) $(RECURSIVE_MAKE_ARGS) depend
 
 check:
-	+cd ./src && $(RECURSIVE_MAKE) $@
+	cd ./src && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@
 
 check-features: all
-	+cd ./src && $(RECURSIVE_MAKE) $@
+	cd ./src && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@
 
 ## We have to force the building of Emacs.ad.h as well in order to get it
 ## updated correctly when VPATH is being used.  Since we use move-if-change,
@@ -310,14 +310,14 @@
 FRC.lisp.finder-inf.el:
 
 ${SUBDIR}: ${SUBDIR_MAKEFILES} ${GENERATED_HEADERS} FRC
-	+cd ./$@ && $(RECURSIVE_MAKE) all
+	cd ./$@ && $(MAKE) $(RECURSIVE_MAKE_ARGS) all
 
 ## Building modules depends on ellcc, found in lib-src.
 modules/sample modules/ldap modules/zlib modules/base64 modules/postgresql: lib-src
 
 Makefile: ${srcdir}/Makefile.in.in config.status
 	./config.status
-	$(RECURSIVE_MAKE) all
+	$(MAKE) $(RECURSIVE_MAKE_ARGS) all
 
 src/Makefile: ${srcdir}/src/Makefile.in.in ${srcdir}/src/depend config.status
 	./config.status
@@ -375,7 +375,7 @@
 
 install-arch-dep: mkdir
 	for subdir in ${INSTALL_ARCH_DEP_SUBDIR}; do \
-	(cd ./$${subdir} && $(RECURSIVE_MAKE) install prefix=${prefix} \
+	(cd ./$${subdir} && $(MAKE) $(RECURSIVE_MAKE_ARGS) install prefix=${prefix} \
 	    exec_prefix=${exec_prefix} bindir=${bindir} libdir=${libdir} \
 	    archlibdir=${archlibdir}) ; done
 	if test "`(cd ${archlibdir} && $(pwd))`" != \
@@ -492,7 +492,7 @@
 #### would be extremely dangerous for anyone to use it.
 ##uninstall:
 ##	(cd ./lib-src; 					\
-##	 $(RECURSIVE_MAKE) uninstall			\
+##	 $(MAKE) $(RECURSIVE_MAKE_ARGS) uninstall			\
 ##	    prefix=${prefix} exec_prefix=${exec_prefix}	\
 ##	    bindir=${bindir} libdir=${libdir} archlibdir=${archlibdir})
 ##	for dir in ${lispdir} ${etcdir} ; do 		\
@@ -526,7 +526,7 @@
 ##      target for GCC does not delete `libgcc.a', because recompiling it
 ##      is rarely necessary and takes a lot of time.
 mostlyclean: FRC.mostlyclean
-	+for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
 	$(RM) core
 
 ## `clean'
@@ -542,7 +542,7 @@
 ##      when they don't work right.  (beta can't depend on distclean, which
 ##      removes necessary files generated by configure.)
 clean: FRC.clean
-	+for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
 	$(RM) core lisp/auto-autoloads.el* lisp/custom-load.el*
 	$(RM) lisp/mule/auto-autoloads.el* lisp/mule/custom-load.el*
 	$(RM) modules/auto-autoloads.el* modules/custom-load.el*
@@ -560,7 +560,7 @@
 	$(RM) -r site-packages xemacs-packages mule-packages site-lisp
 
 distclean: FRC.distclean
-	+for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
 	-${top_distclean}
 
 ## `realclean'
@@ -575,7 +575,7 @@
 ##      anything that needs to exist in order to run `configure' and then
 ##      begin to build the program.
 realclean: FRC.realclean
-	+for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
 	-${top_distclean}
 	$(RM) TAGS
 
@@ -584,7 +584,7 @@
 ## the coding standards seem to come from.  It's like distclean, but
 ## it deletes backup and autosave files too.
 extraclean:
-	+for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
 	$(RM) *~ \#*
 	-${top_distclean}
 
@@ -606,7 +606,7 @@
 unlock:
 	chmod u+w $(SOURCES) cpp/*
 	-cd ./elisp && chmod u+w Makefile README *.texi
-	for d in src etc lib-src lisp; do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	for d in src etc lib-src lisp; do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
 	cd ./lisp/term && chmod u+w README *.el
 	cd ./man && chmod u+w *texi* ChangeLog split-man
 	cd ./lwlib && chmod u+w *.[ch] Makefile.in.in
@@ -614,7 +614,7 @@
 relock:
 	chmod u-w $(SOURCES) cpp/*
 	-cd ./elisp && chmod u-w Makefile README *.texi
-	for d in src etc lib-src lisp; do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	for d in src etc lib-src lisp; do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
 	cd ./lisp/term && chmod u+w README *.el
 	cd ./man && chmod u+w *texi* ChangeLog split-man
 	cd ./lwlib && chmod u+w *.[ch] Makefile.in.in
@@ -635,10 +635,10 @@
 	  xargs etags -a -l none -r "/^(def\\(var\\|un\\|alias\\|const\\|macro\\|subst\\|struct\\|face\\|group\\|custom\\|ine-\\(function\\|compiler-macro\\|[a-z-]+alias\\)\\)[ 	]+'?\\([^ 	]+\\)/\\3/"
 
 info: FRC.info
-	+cd ${srcdir}/man && $(RECURSIVE_MAKE) $@
+	cd ${srcdir}/man && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@
 
 dvi:
-	+cd ${srcdir}/man && $(RECURSIVE_MAKE) $@
+	cd ${srcdir}/man && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@
 
 ## Fix up version information in executables (Solaris-only)
 mcs:
--- a/configure	Tue Dec 07 00:20:51 2004 +0000
+++ b/configure	Tue Dec 07 12:52:51 2004 +0000
@@ -16541,7 +16541,7 @@
 
 
 
-RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
+RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
 
 
 
@@ -17235,7 +17235,7 @@
 s%@ld_libs_general@%$ld_libs_general%g
 s%@ld_libs_window_system@%$ld_libs_window_system%g
 s%@ld_libs_all@%$ld_libs_all%g
-s%@RECURSIVE_MAKE@%$RECURSIVE_MAKE%g
+s%@RECURSIVE_MAKE_ARGS@%$RECURSIVE_MAKE_ARGS%g
 s%@native_sound_lib@%$native_sound_lib%g
 s%@sound_cflags@%$sound_cflags%g
 s%@dynodump_arch@%$dynodump_arch%g
--- a/configure.in	Tue Dec 07 00:20:51 2004 +0000
+++ b/configure.in	Tue Dec 07 12:52:51 2004 +0000
@@ -5328,8 +5328,8 @@
 AC_SUBST(CFLAGS)
 AC_SUBST(CPPFLAGS)
 AC_SUBST(LDFLAGS)
-RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
-AC_SUBST(RECURSIVE_MAKE)
+RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
+AC_SUBST(RECURSIVE_MAKE_ARGS)
 
 AC_SUBST(native_sound_lib)
 AC_SUBST(sound_cflags)
--- a/man/ChangeLog	Tue Dec 07 00:20:51 2004 +0000
+++ b/man/ChangeLog	Tue Dec 07 12:52:51 2004 +0000
@@ -1,3 +1,9 @@
+2004-12-07  Malcolm Purvis  <malcolmp@xemacs.org>
+
+	* Makefile (RECURSIVE_MAKE): Removed.
+	* Makefile (RECURSIVE_MAKE_ARGS): New.  The new method for
+	handling parallel builds.
+
 2004-12-05  Ben Wing  <ben@xemacs.org>
 
 	* xemacs/packages.texi (Packages):
@@ -351,6 +357,7 @@
 	(Future Work -- Lisp Engine Replacement):
 	Add pointers to new node.
 
+>>>>>>> 1.271
 2004-11-16  Ben Wing  <ben@xemacs.org>
 
 	* internals/internals.texi (Top):
--- a/man/Makefile	Tue Dec 07 00:20:51 2004 +0000
+++ b/man/Makefile	Tue Dec 07 12:52:51 2004 +0000
@@ -31,7 +31,7 @@
 .SUFFIXES:
 .SUFFIXES: .html .info .texi .dvi .pdf
 
-RECURSIVE_MAKE = $(MAKE) $(MFLAGS) MAKEINFO='$(MAKEINFO)' TEXI2DVI='$(TEXI2DVI)'
+RECURSIVE_MAKE_ARGS = $(MFLAGS) MAKEINFO='$(MAKEINFO)' TEXI2DVI='$(TEXI2DVI)'
 
 all : info
 
--- a/src/ChangeLog	Tue Dec 07 00:20:51 2004 +0000
+++ b/src/ChangeLog	Tue Dec 07 12:52:51 2004 +0000
@@ -1,3 +1,10 @@
+2004-12-07  Malcolm Purvis  <malcolmp@xemacs.org>
+
+	* Makefile.in.in: Always refer to make as $(MAKE) and use
+	$(RECURSIVE_MAKE_ARGS) for other parameters.  This allows -j to
+	work in GNU Make while removing need for POSIX compatible make on
+	all systems.
+
 2004-12-06  Ben Wing  <ben@xemacs.org>
 
 	* rangetab.c (rangetab_instantiate):
--- a/src/Makefile.in.in	Tue Dec 07 00:20:51 2004 +0000
+++ b/src/Makefile.in.in	Tue Dec 07 12:52:51 2004 +0000
@@ -33,10 +33,10 @@
 ## Here are the things that we expect ../configure to edit.
 
 #ifdef USE_GNU_MAKE
-RECURSIVE_MAKE=$(MAKE)
+RECURSIVE_MAKE_ARGS=
 #else
 @SET_MAKE@
-RECURSIVE_MAKE=@RECURSIVE_MAKE@
+RECURSIVE_MAKE_ARGS=@RECURSIVE_MAKE_ARGS@
 #endif
 
 PROGNAME=@PROGNAME@
@@ -525,19 +525,19 @@
 #ifdef HAVE_X_WINDOWS
 lwlib_deps = $(lwlib_lib)
 $(lwlib_lib):
-	+cd ../lwlib && $(RECURSIVE_MAKE)
+	cd ../lwlib && $(MAKE) $(RECURSIVE_MAKE_ARGS)
 #endif /* HAVE_X_WINDOWS */
 
 #ifdef DYNODUMP
 dynodump_deps = ../dynodump/dynodump.so
 ../dynodump/dynodump.so:
-	+cd ../dynodump && $(RECURSIVE_MAKE)
+	cd ../dynodump && $(MAKE) $(RECURSIVE_MAKE_ARGS)
 #endif /* DYNODUMP */
 
 link_deps = $(start_files) $(objs) $(otherobjs) $(lwlib_deps) $(dynodump_deps)
 
 $(LIB_SRC)/make-dump-id:
-	+cd $(LIB_SRC) && $(RECURSIVE_MAKE) make-dump-id
+	cd $(LIB_SRC) && $(MAKE) $(RECURSIVE_MAKE_ARGS) make-dump-id
 
 dump-id.c: $(LIB_SRC)/make-dump-id $(link_deps)
 	$(LIB_SRC)/make-dump-id
@@ -573,7 +573,7 @@
 obj_src = $(objs:.o=.c)
 
 $(LIB_SRC)/make-docfile:
-	+cd $(LIB_SRC) && $(RECURSIVE_MAKE) make-docfile
+	cd $(LIB_SRC) && $(MAKE) $(RECURSIVE_MAKE_ARGS) make-docfile
 
 $(LIB_SRC)/DOC: $(LIB_SRC)/make-docfile $(BLDSRC)/NEEDTODUMP $(temacs_deps)
 #ifdef QUICK_BUILD
@@ -593,7 +593,7 @@
 	@$(RM) $@ && touch SATISFIED
 	$(dump_temacs)
 	@if test -f SATISFIED; then $(RM) SATISFIED; else $(RM) $@; \
-	$(RECURSIVE_MAKE) $@; fi
+	$(MAKE) $(RECURSIVE_MAKE_ARGS) $@; fi
 #else
 	@$(RM) $@
 	$(dump_temacs)
@@ -615,7 +615,7 @@
 	if ! test -f dump-size; then \
 		$(LIB_SRC)/insert-data-in-exec -s $(DUMP_TARGET).dmp > dump-size ; \
 		$(RM) dump-data.o $(DUMP_TARGET) $(DUMP_TARGET).dmp $(RAW_EXE);\
-		$(RECURSIVE_MAKE) $@; \
+		$(MAKE) $(RECURSIVE_MAKE_ARGS) $@; \
 	fi
 #endif
 
@@ -658,7 +658,7 @@
 
 .PHONY: all-elc
 all-elc:
-	+cd .. && $(RECURSIVE_MAKE)
+	cd .. && $(MAKE) $(RECURSIVE_MAKE_ARGS)
 
 #########################################################################
 ##                     Subsidiary dependency rules                     ##
@@ -686,10 +686,10 @@
 	cd $(LIB_SRC)/ && $(msgfmt) -o emacs.mo emacs.po
 
 $(LIB_SRC)/make-msgfile:
-	+cd $(LIB_SRC) && $(RECURSIVE_MAKE) make-msgfile
+	cd $(LIB_SRC) && $(MAKE) $(RECURSIVE_MAKE_ARGS) make-msgfile
 
 $(LIB_SRC)/make-po:
-	+cd $(LIB_SRC) && $(RECURSIVE_MAKE) make-po
+	cd $(LIB_SRC) && $(MAKE) $(RECURSIVE_MAKE_ARGS) make-po
 
 #endif /* I18N3 */
 
@@ -945,7 +945,7 @@
 	rtc_patch_area -o $@
 
 rtcmacs: $(temacs_deps) rtc_patch.o
-	$(RM) $(RAW_EXE); $(RECURSIVE_MAKE) $(RAW_EXE) RTC_patch_objs=rtc_patch.o
+	$(RM) $(RAW_EXE); $(MAKE) $(RECURSIVE_MAKE_ARGS) $(RAW_EXE) RTC_patch_objs=rtc_patch.o
 	mv $(RAW_EXE) rtcmacs
 
 .PHONY: run-rtcmacs