diff src/Makefile.in.in @ 442:abe6d1db359e r21-2-36

Import from CVS: tag r21-2-36
author cvs
date Mon, 13 Aug 2007 11:35:02 +0200
parents 8de8e3f6228a
children 3078fd1074e8
line wrap: on
line diff
--- a/src/Makefile.in.in	Mon Aug 13 11:33:40 2007 +0200
+++ b/src/Makefile.in.in	Mon Aug 13 11:35:02 2007 +0200
@@ -25,7 +25,20 @@
 
 PROGNAME=@PROGNAME@
 
-all: ${PROGNAME}
+#define NOT_C_CODE
+#include "config.h"
+
+#ifdef PDUMP
+DUMP_TARGET = ${PROGNAME}.dmp
+EXE_TARGET  = ${PROGNAME}
+ID_FILE     = dump-id.c
+#else
+DUMP_TARGET = ${PROGNAME}
+EXE_TARGET  = temacs
+ID_FILE     =
+#endif
+
+all: ${DUMP_TARGET}
 .PHONY : all release dump-elc dump-elcs all-elc all-elcs lint
 
 ## For performance and consistency, no built-in rules.
@@ -73,8 +86,6 @@
 lib_gcc=@lib_gcc@
 ##libmcheck=@libmcheck@
 
-#define NOT_C_CODE
-#include "config.h"
 
 ## With the traditional VPATH setting, it is not possible to
 ## simultaneously compile in-place and in another directory.  The
@@ -98,16 +109,13 @@
 vpath paths.h
 vpath Emacs.ad.h
 vpath sheap-adjust.h
+vpath dump-id.c
 #else
 VPATH=@srcdir@
 #endif
 
 RM = rm -f
 
-#ifdef HAVE_NATIVE_SOUND
-sound_cflags=@sound_cflags@
-#endif
-
 LWLIB_SRCDIR = ${srcdir}/../lwlib
 
 #ifdef HAVE_X_WINDOWS
@@ -116,7 +124,7 @@
 $(lwlib_libs) :
 	cd ../lwlib && $(RECURSIVE_MAKE)
 
-x_objs=balloon_help.o balloon-x.o console-x.o device-x.o event-Xt.o frame-x.o\
+x_objs=console-x.o device-x.o event-Xt.o frame-x.o\
  glyphs-x.o objects-x.o redisplay-x.o select-x.o xgccache.o
 
 #ifdef AIX4
@@ -126,8 +134,12 @@
 X11_libs = $(LIBI18N)
 #endif /* HAVE_X_WINDOWS */
 
-#ifdef HEAP_IN_DATA
-sheap_obj=sheap.o
+#if defined (HEAP_IN_DATA) && !defined (PDUMP)
+sheap_objs=sheap.o
+#endif
+
+#if defined (WIN32_NATIVE) || defined (CYGWIN)
+win32_objs=win32.o xemacs_res.o
 #endif
 
 ## -Demacs is needed to make some files produce the correct version
@@ -181,9 +193,9 @@
  macros.o marker.o md5.o minibuf.o objects.o opaque.o\
  print.o process.o profile.o\
  rangetab.o redisplay.o redisplay-output.o regex.o\
- search.o select.o $(sheap_obj) signal.o sound.o\
+ search.o select.o $(sheap_objs) signal.o sound.o\
  specifier.o strftime.o symbols.o syntax.o sysdep.o\
- undo.o $(x_objs) widget.o window.o
+ undo.o $(x_objs) widget.o window.o $(win32_objs)
 
 obj_rtl = $(objs:.o=.c.rtl)
 
@@ -309,67 +321,50 @@
 mo_file = ${mo_dir}emacs.mo
 #endif
 
-#ifdef WINDOWSNT
-LOADPATH   =  EMACSBOOTSTRAPLOADPATH="${lispdir};${blddir}"
-MODULEPATH =  EMACSBOOTSTRAPMODULEPATH="${moduledir};${blddir}"
-#else
-LOADPATH   =  EMACSBOOTSTRAPLOADPATH="${lispdir}:${blddir}"
-MODULEPATH =  EMACSBOOTSTRAPMODULEPATH="${moduledir}:${blddir}"
-#endif
-DUMPENV = $(LOADPATH) $(MODULEPATH)
-temacs_loadup = $(DUMPENV) ./temacs -batch -l ${srcdir}/../lisp/loadup.el
+temacs_loadup = ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/loadup.el
 dump_temacs   = ${temacs_loadup} dump
 run_temacs    = ${temacs_loadup} run-temacs
-debug_temacs = $(DUMPENV) gdb temacs
+debug_temacs = gdb ${EXE_TARGET}
 
-release: temacs ${libsrc}DOC $(mo_file) ${other_files}
+release: ${EXE_TARGET} ${libsrc}DOC $(mo_file) ${other_files}
 #ifdef CANNOT_DUMP
-	ln temacs ${PROGNAME}
+	ln ${EXE_TARGET} ${PROGNAME}
 #else
-#ifdef HAVE_SHM
 	-if [ -w ${srcdir}/../lisp ]; then \
-	  w=`pwd`; cd ${srcdir} && $${w}/temacs -nl -batch -l ${srcdir}/../lisp/inc-vers; \
+	  w=`pwd`; cd ${srcdir} && $${w}/${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/inc-vers; \
 	else true; fi
-	-$(DUMPENV) ./temacs -nl -batch -l ${srcdir}/../lisp/loadup.el dump
-#else /* ! defined (HAVE_SHM) */
-	-if [ -w ${srcdir}/../lisp ]; then \
-	  w=`pwd`; cd ${srcdir} && $${w}/temacs -batch -l ${srcdir}/../lisp/inc-vers; \
-	else true; fi
-	-$(DUMPENV) ./temacs -batch -l ${srcdir}/../lisp/loadup.el dump
-#endif /* ! defined (HAVE_SHM) */
+	-./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/loadup.el dump
 	touch release
 #endif /* ! defined (CANNOT_DUMP) */
 
-${PROGNAME}: temacs ${libsrc}DOC $(mo_file) ${other_files} update-elc.stamp
+${DUMP_TARGET}: ${EXE_TARGET} ${libsrc}DOC $(mo_file) ${other_files} update-elc.stamp
 #ifdef HEAP_IN_DATA
-	@$(RM) $@ $@.exe && touch SATISFIED
+	@$(RM) $@ && touch SATISFIED
 	-${dump_temacs}
 	@if test -f $@;        then if test -f SATISFIED; then \
 		echo "Testing for Lisp shadows ..."; \
 		./${PROGNAME} -batch -vanilla -f list-load-path-shadows; fi; \
 		$(RM) SATISFIED; exit 0; fi; \
 	if test -f SATISFIED; then $(RM) SATISFIED; exit 1; fi; \
+	$(RM) $@; \
 	$(RECURSIVE_MAKE) $@;
 #else
-	@$(RM) $@ xemacs.dmp
+	@$(RM) $@
 	${dump_temacs}
-#ifdef PDUMP
-	@mv temacs $@
-#endif
 	@echo "Testing for Lisp shadows ..."
 	@./${PROGNAME} -batch -vanilla -f list-load-path-shadows
 #endif
 
-fastdump: temacs
-	@$(RM) ${PROGNAME} && touch SATISFIED
+fastdump: ${EXE_TARGET}
+	@$(RM) ${DUMP_TARGET} && touch SATISFIED
 	-${dump_temacs}
 	@./${PROGNAME} -batch -vanilla -f list-load-path-shadows
 
 FRC.update-elc.stamp :
 
-update-elc.stamp : temacs FRC.update-elc.stamp
+update-elc.stamp : ${EXE_TARGET} FRC.update-elc.stamp
 	@touch NOBYTECOMPILE
-	${DUMPENV} ./temacs -batch -l ${srcdir}/../lisp/update-elc.el
+	./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/update-elc.el
 	@if test ! -f $@ -o -f NOBYTECOMPILE; then touch $@; fi; \
 	 $(RM) NOBYTECOMPILE
 
@@ -388,16 +383,16 @@
 	cd ../dynodump && $(RECURSIVE_MAKE)
 #endif /* DYNODUMP */
 
-${libsrc}DOC: temacs update-elc.stamp
+${libsrc}DOC: ${EXE_TARGET} update-elc.stamp
 	$(RM) ${libsrc}DOC; \
-	${DUMPENV} ./temacs -batch -l ${srcdir}/../lisp/make-docfile.el -- \
+	${DUMPENV} ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/make-docfile.el -- \
 		-o ${libsrc}DOC -d ${srcdir} -i ${libsrc}../site-packages \
 		${obj_src} ${mallocdocsrc} ${rallocdocsrc}
 
 dump_elcs: dump-elcs
 
-dump-elcs: temacs
-	-${DUMPENV} ./temacs -batch -l ${srcdir}/../lisp/update-elc.el
+dump-elcs: ${EXE_TARGET}
+	-${DUMPENV} ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/update-elc.el
 
 all-elc all-elcs:
 	cd .. && $(RECURSIVE_MAKE) all-elc
@@ -431,6 +426,9 @@
 
 #endif /* I18N3 */
 
+${libsrc}make-dump-id:
+	cd ${libsrc} && $(RECURSIVE_MAKE) make-dump-id
+
 ${libsrc}make-docfile:
 	cd ${libsrc} && $(RECURSIVE_MAKE) make-docfile
 
@@ -444,23 +442,26 @@
 	$(LINT.c) $(LINTFILES)
 ## end of Lint Section
 
-temacs_deps=\
+link_deps=\
  $(start_files) ${objs} ${otherobjs}\
  $(lwlib_deps) $(dynodump_deps)
 
-temacs_link_args=\
- ${start_flags} ${ldflags}\
- -o $@ ${start_files} ${objs} ${otherobjs} ${LIBES}
+temacs_deps=\
+ $(link_deps) $(ID_FILE)
 
-temacs: $(temacs_deps)
+temacs_link_args=\
+ ${start_flags} ${ldflags} -I${srcdir} \
+ -o $@ ${start_files} ${objs} ${otherobjs} ${ID_FILE} ${LIBES}
+
+${EXE_TARGET}: $(temacs_deps)
 	$(LD) $(temacs_link_args)
-#ifdef PDUMP
-	@$(RM) xemacs.dmp
-#endif
+
+dump-id.c: ${libsrc}make-dump-id ${link_deps}
+	${libsrc}make-dump-id
 
 .PHONY : run-temacs
 
-run-temacs: temacs
+run-temacs: ${EXE_TARGET}
 	-${run_temacs}
 
 ## We have automated tests!!
@@ -485,8 +486,8 @@
 	rtc_patch_area -o $@
 
 rtcmacs: $(temacs_deps) rtc_patch.o
-	$(RM) temacs; $(RECURSIVE_MAKE) temacs RTC_patch_objs=rtc_patch.o
-	mv temacs rtcmacs
+	$(RM) ${EXE_TARGET}; $(RECURSIVE_MAKE) ${EXE_TARGET} RTC_patch_objs=rtc_patch.o
+	mv ${EXE_TARGET} rtcmacs
 
 .PHONY: run-rtcmacs
 run-rtcmacs: rtcmacs
@@ -499,7 +500,7 @@
 	runargs -batch -l ${srcdir}/../lisp/loadup.el run-temacs -q; \
 	run' rtcmacs
 
-debug-temacs: temacs
+debug-temacs: ${EXE_TARGET}
 	-${debug_temacs}
 
 ## Purify, Quantify, PureCoverage are software quality products from
@@ -512,12 +513,12 @@
  -search-mmaps=yes\
 #endif
  -chain-length=32 -ignore-signals=SIGPOLL -threads=yes\
- -cache-dir=./purecache -always-use-cache-dir=yes
+ -cache-dir=${srcdir}/purecache -always-use-cache-dir=yes
 
 PURIFY_LIBS  = -lpthread
 puremacs: $(temacs_deps)
 	$(PURIFY_PROG) $(PURIFY_FLAGS) $(LD) $(temacs_link_args) $(PURIFY_LIBS)
-	cp $@ temacs
+	cp $@ ${EXE_TARGET}
 
 ## Quantify
 #ifdef  QUANTIFY
@@ -529,7 +530,7 @@
 
 quantmacs: $(temacs_deps)
 	$(QUANTIFY_PROG) $(QUANTIFY_FLAGS) $(LD) $(temacs_link_args)
-	cp $@ temacs
+	cp $@ ${EXE_TARGET}
 #endif /* QUANTIFY */
 
 
@@ -554,6 +555,10 @@
 	$(CC) -dr -c $(cflags) -DDEFINE_TRANSIENT_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
 	mv EmacsShell-sub.c.rtl TransientEmacsShell.c.rtl
 
+## The above rules are subject to a race condition if using a parallel make.
+TransientEmacsShell.o : TopLevelEmacsShell.o
+TransientEmacsShell.c.rtl : TopLevelEmacsShell.c.rtl
+
 ## Position-independent code for shared library creation
 #if USE_GCC
 pic_arg = -fpic
@@ -686,19 +691,23 @@
 #endif /* ! defined (C_ALLOCA) */
 
 #ifdef HAVE_NATIVE_SOUND
+sound_cflags=@sound_cflags@
 sunplay.o: ${srcdir}/sunplay.c
 	$(CC) -c  $(sound_cflags) $(cflags) ${srcdir}/sunplay.c
 hpplay.o: ${srcdir}/hpplay.c
 	$(CC) -c -Demacs $(sound_cflags) $(cflags) ${srcdir}/hpplay.c
 #endif /* HAVE_NATIVE_SOUND */
 
+xemacs_res.o: ${srcdir}/../nt/xemacs.rc
+	windres --include-dir ${srcdir}/../nt -i ${srcdir}/../nt/xemacs.rc -o $@
+
 ## System-specific programs to be made.
 ## ${other_files}, $(objects_system) and $(objects_machine)
 ## select which of these should be compiled.  */
 
 .PHONY: mostlyclean clean distclean realclean versionclean extraclean
 mostlyclean:
-	$(RM) temacs puremacs quantmacs prefix-args *.o *.i  \
+	$(RM) temacs puremacs quantmacs *.o *.i  \
 	  core temacs.exe sheap-adjust.h
 clean: mostlyclean versionclean
 	$(RM) libextcli* update-elc.stamp
@@ -709,7 +718,7 @@
 	  GNUmakefile Makefile Makefile.in TAGS ${PROGNAME}.*
 realclean: distclean
 versionclean:
-	$(RM) ${PROGNAME} ${PROGNAME}.exe ${libsrc}DOC
+	$(RM) ${EXE_TARGET} ${DUMP_TARGET} ${libsrc}DOC
 extraclean: realclean
 	$(RM) *~ \#* m/*~ m/\#* s/*~ s/\#*