aboutsummaryrefslogtreecommitdiffstats
path: root/src/Makefile.in
diff options
context:
space:
mode:
authorGlenn Morris2010-05-26 22:43:27 -0700
committerGlenn Morris2010-05-26 22:43:27 -0700
commit81ac4f35366bfc525fa6ed89e0b5aaa90a05c902 (patch)
treee77b927e7e5fcf2d0ac05bcacb13baa10ed4b285 /src/Makefile.in
parent11e4d8c0d35ec52819d5ce11176fc1f53b9890e0 (diff)
downloademacs-81ac4f35366bfc525fa6ed89e0b5aaa90a05c902.tar.gz
emacs-81ac4f35366bfc525fa6ed89e0b5aaa90a05c902.zip
Do not preprocess src/Makefile.in.
* configure.in: Do not preprocess src/Makefile.in. (cpp_undefs, CPP_NEED_TRADITIONAL): Remove. (AC_EGREP_CPP): Test no longer needed. * configure: Regenerate. * config.bat: Do not preprocess src/Makefile.in. * make-dist: No more Makefile.c files. * INSTALL, src/README: Makefiles are not preprocessed. * src/Makefile.in, src/autodeps.mk, src/deps.mk, src/ns.mk: Convert comments to Makefile format. * lib-src/Makefile.in (distclean): No more Makefile.c. * src/Makefile.in (bootstrap-clean): No more Makefile.c. * admin/notes/cpp: Remove file. * admin/quick-install-emacs (AVOID): No more Makefile.c files. * etc/PROBLEMS, etc/MACHINES: Remove details of cpp problems which can no longer occur.
Diffstat (limited to 'src/Makefile.in')
-rw-r--r--src/Makefile.in262
1 files changed, 129 insertions, 133 deletions
diff --git a/src/Makefile.in b/src/Makefile.in
index ea84fa08429..0b23606a921 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -23,13 +23,6 @@
23# script may need modifying in sync with changes made here. Try to 23# script may need modifying in sync with changes made here. Try to
24# avoid shell-ism because the DOS build has to use the DOS shell. 24# avoid shell-ism because the DOS build has to use the DOS shell.
25 25
26# Don't try to replace the cpp processing using autoconf facilities,
27# says rms.
28# Replacing a particular part of the conditionals to work via autoconf
29# is OK.
30# Some of the conditionals might be dead now. Finding them and
31# deleting them would be fine.
32
33SHELL = /bin/sh 26SHELL = /bin/sh
34 27
35# Here are the things that we expect ../configure to edit. 28# Here are the things that we expect ../configure to edit.
@@ -47,7 +40,7 @@ version = @version@
47# BSD doesn't have it as a default. 40# BSD doesn't have it as a default.
48@SET_MAKE@ 41@SET_MAKE@
49# Don't use LIBS. configure puts stuff in it that either shouldn't be 42# Don't use LIBS. configure puts stuff in it that either shouldn't be
50# linked with Emacs or is duplicated by the cpp stuff below. 43# linked with Emacs or is duplicated by the other stuff below.
51# LIBS = @LIBS@ 44# LIBS = @LIBS@
52LIBOBJS = @LIBOBJS@ 45LIBOBJS = @LIBOBJS@
53 46
@@ -298,24 +291,26 @@ DEPFLAGS=@DEPFLAGS@
298## test -d ${DEPDIR} || mkdir ${DEPDIR} (if AUTO_DEPEND); else ':'. 291## test -d ${DEPDIR} || mkdir ${DEPDIR} (if AUTO_DEPEND); else ':'.
299MKDEPDIR=@MKDEPDIR@ 292MKDEPDIR=@MKDEPDIR@
300 293
301# ========================== start of cpp stuff ======================= 294## DO NOT use -R. There is a special hack described in lastfile.c
302/* From here on, comments must be done in C syntax. */ 295## which is used instead. Some initialized data areas are modified
303 296## at initial startup, then labeled as part of the text area when
304/* DO NOT use -R. There is a special hack described in lastfile.c 297## Emacs is dumped for the first time, and never changed again.
305 which is used instead. Some initialized data areas are modified 298##
306 at initial startup, then labeled as part of the text area when 299## -Demacs is needed to make some files produce the correct version
307 Emacs is dumped for the first time, and never changed again. */ 300## for use in Emacs.
308 301##
309/* -Demacs is needed to make some files produce the correct version 302## -DHAVE_CONFIG_H is needed for some other files to take advantage of
310 for use in Emacs. 303## the information in `config.h'.
311 304##
312 -DHAVE_CONFIG_H is needed for some other files to take advantage of 305## C_SWITCH_X_SITE must come before C_SWITCH_X_SYSTEM
313 the information in ``config.h''. */ 306## since it may have -I options that should override those.
314 307##
315/* C_SWITCH_X_SITE must come before C_SWITCH_X_SYSTEM 308## FIXME? MYCPPFLAGS only referenced in etc/DEBUG.
316 since it may have -I options that should override those. */ 309ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I${srcdir} \
317/* MYCPPFLAGS only referenced in etc/DEBUG. */ 310 ${C_SWITCH_MACHINE} ${C_SWITCH_SYSTEM} ${C_SWITCH_X_SITE} \
318ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I${srcdir} ${C_SWITCH_MACHINE} ${C_SWITCH_SYSTEM} ${C_SWITCH_X_SITE} ${C_SWITCH_X_SYSTEM} ${CFLAGS_SOUND} ${RSVG_CFLAGS} ${DBUS_CFLAGS} ${GCONF_CFLAGS} ${CFLAGS} ${FREETYPE_CFLAGS} ${FONTCONFIG_CFLAGS} ${LIBOTF_CFLAGS} ${M17N_FLT_CFLAGS} ${DEPFLAGS} 311 ${C_SWITCH_X_SYSTEM} ${CFLAGS_SOUND} ${RSVG_CFLAGS} ${DBUS_CFLAGS} \
312 ${GCONF_CFLAGS} ${CFLAGS} ${FREETYPE_CFLAGS} ${FONTCONFIG_CFLAGS} \
313 ${LIBOTF_CFLAGS} ${M17N_FLT_CFLAGS} ${DEPFLAGS}
319ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS) 314ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
320 315
321.SUFFIXES: .m 316.SUFFIXES: .m
@@ -327,8 +322,8 @@ ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
327 $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $< 322 $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $<
328 323
329 324
330/* lastfile must follow all files whose initialized data areas should 325## lastfile must follow all files whose initialized data areas should
331 be dumped as pure by dump-emacs. */ 326## be dumped as pure by dump-emacs.
332obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \ 327obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
333 charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \ 328 charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \
334 cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \ 329 cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
@@ -344,8 +339,8 @@ obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
344 doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \ 339 doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
345 $(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ) 340 $(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ)
346 341
347/* Object files used on some machine or other. 342## Object files used on some machine or other.
348 These go in the DOC file on all machines in case they are needed. */ 343## These go in the DOC file on all machines in case they are needed.
349SOME_MACHINE_OBJECTS = dosfns.o msdos.o \ 344SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
350 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \ 345 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
351 fontset.o dbusbind.o \ 346 fontset.o dbusbind.o \
@@ -353,39 +348,38 @@ SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
353 w32.o w32console.o w32fns.o w32heap.o w32inevt.o \ 348 w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
354 w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_OBJ) 349 w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_OBJ)
355 350
356/* gmalloc.o if !SYSTEM_MALLOC && !DOUG_LEA_MALLOC, else empty. */ 351## gmalloc.o if !SYSTEM_MALLOC && !DOUG_LEA_MALLOC, else empty.
357GMALLOC_OBJ=@GMALLOC_OBJ@ 352GMALLOC_OBJ=@GMALLOC_OBJ@
358 353
359/* vm-limit.o if !SYSTEM_MALLOC, else empty. */ 354## vm-limit.o if !SYSTEM_MALLOC, else empty.
360VMLIMIT_OBJ=@VMLIMIT_OBJ@ 355VMLIMIT_OBJ=@VMLIMIT_OBJ@
361 356
362/* ralloc.o if !SYSTEM_MALLOC && REL_ALLOC, else empty. */ 357## ralloc.o if !SYSTEM_MALLOC && REL_ALLOC, else empty.
363RALLOC_OBJ=@RALLOC_OBJ@ 358RALLOC_OBJ=@RALLOC_OBJ@
364 359
365/* Empty on Cygwin, lastfile.o elsewhere. */ 360## Empty on Cygwin, lastfile.o elsewhere.
366PRE_ALLOC_OBJ=@PRE_ALLOC_OBJ@ 361PRE_ALLOC_OBJ=@PRE_ALLOC_OBJ@
367/* lastfile.o on Cygwin, empty elsewhere. */ 362## lastfile.o on Cygwin, empty elsewhere.
368POST_ALLOC_OBJ=@POST_ALLOC_OBJ@ 363POST_ALLOC_OBJ=@POST_ALLOC_OBJ@
369 364
370/* List of object files that make-docfile should not be told about. */ 365## List of object files that make-docfile should not be told about.
371otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \ 366otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \
372 $(POST_ALLOC_OBJ) $(VMLIMIT_OBJ) $(WIDGET_OBJ) $(LIBOBJS) 367 $(POST_ALLOC_OBJ) $(VMLIMIT_OBJ) $(WIDGET_OBJ) $(LIBOBJS)
373 368
374/* This is the platform-specific list of Lisp files loaded into the 369## This is the platform-specific list of Lisp files loaded into the
375 dumped Emacs. It is arranged like this because it is easier to generate 370## dumped Emacs. It is arranged like this because it is easier to generate
376 it semi-mechanically from loadup.el this way. 371## it semi-mechanically from loadup.el this way.
377 372##
378 Note that this list should not include lisp files which might not 373## Note that this list should not include lisp files which might not
379 be present, like site-load.el and site-init.el; this makefile 374## be present, like site-load.el and site-init.el; this makefile
380 expects them all to be either present or buildable. 375## expects them all to be either present or buildable.
381 376##
382 Files which are loaded unconditionally (i.e., on all platforms) should 377## Files which are loaded unconditionally (i.e., on all platforms) should
383 also be in shortlisp. Files which are loaded conditionally (i.e., only 378## also be in shortlisp. Files which are loaded conditionally (i.e., only
384 on some platforms) should instead be in SOME_MACHINE_LISP. */ 379## on some platforms) should instead be in SOME_MACHINE_LISP.
385 380##
386/* Place loaddefs.el first, so it gets generated first, since it is on 381## Place loaddefs.el first, so it gets generated first, since it is on
387 the critical path (relevant in parallel compilations). */ 382## the critical path (relevant in parallel compilations).
388
389lisp= \ 383lisp= \
390 ${lispsource}loaddefs.el \ 384 ${lispsource}loaddefs.el \
391 ${lispsource}abbrev.elc \ 385 ${lispsource}abbrev.elc \
@@ -475,11 +469,11 @@ lisp= \
475 ${lispsource}window.elc \ 469 ${lispsource}window.elc \
476 ${lispsource}version.el 470 ${lispsource}version.el
477 471
478/* List of relative names for those files from $lisp that are loaded 472## List of relative names for those files from $lisp that are loaded
479 unconditionally (i.e. on all platforms). Files from $lisp that 473## unconditionally (i.e. on all platforms). Files from $lisp that
480 are only loaded on some platforms should instead be placed in 474## are only loaded on some platforms should instead be placed in
481 SOME_MACHINE_LISP. The only reason this variable exists is to prevent 475## SOME_MACHINE_LISP. The only reason this variable exists is to prevent
482 the make-docfile command-line getting too long for some systems. */ 476## the make-docfile command-line getting too long for some systems.
483shortlisp= \ 477shortlisp= \
484 ../lisp/loaddefs.el \ 478 ../lisp/loaddefs.el \
485 ../lisp/abbrev.elc \ 479 ../lisp/abbrev.elc \
@@ -563,8 +557,8 @@ shortlisp= \
563 ../lisp/window.elc \ 557 ../lisp/window.elc \
564 ../lisp/version.el 558 ../lisp/version.el
565 559
566/* Like $shortlisp, but includes only those files from $lisp that are loaded 560## Like $shortlisp, but includes only those files from $lisp that are loaded
567 conditionally (i.e., only on some platforms). */ 561## conditionally (i.e., only on some platforms).
568SOME_MACHINE_LISP = ../lisp/mouse.elc \ 562SOME_MACHINE_LISP = ../lisp/mouse.elc \
569 ../lisp/select.elc ../lisp/scroll-bar.elc \ 563 ../lisp/select.elc ../lisp/scroll-bar.elc \
570 ../lisp/ls-lisp.elc ../lisp/dos-fns.elc \ 564 ../lisp/ls-lisp.elc ../lisp/dos-fns.elc \
@@ -583,11 +577,10 @@ SOME_MACHINE_LISP = ../lisp/mouse.elc \
583 ../lisp/term/ns-win.elc ../lisp/term/w32-win.elc \ 577 ../lisp/term/ns-win.elc ../lisp/term/w32-win.elc \
584 ../lisp/emacs-lisp/easymenu.elc 578 ../lisp/emacs-lisp/easymenu.elc
585 579
586/* Construct full set of libraries to be linked. 580## Construct full set of libraries to be linked.
587 Note that SunOS needs -lm to come before -lc; otherwise, you get 581## Note that SunOS needs -lm to come before -lc; otherwise, you get
588 duplicated symbols. If the standard libraries were compiled 582## duplicated symbols. If the standard libraries were compiled
589 with GCC, we might need LIB_GCC again after them. */ 583## with GCC, we might need LIB_GCC again after them.
590
591LIBES = $(LOADLIBES) $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \ 584LIBES = $(LOADLIBES) $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \
592 $(RSVG_LIBS) $(DBUS_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \ 585 $(RSVG_LIBS) $(DBUS_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \
593 $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \ 586 $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \
@@ -596,9 +589,9 @@ LIBES = $(LOADLIBES) $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \
596 589
597all: emacs${EXEEXT} $(OTHER_FILES) 590all: emacs${EXEEXT} $(OTHER_FILES)
598 591
599/* Does anyone ever pay attention to the load-path-shadows output here? */ 592## Does anyone ever pay attention to the load-path-shadows output here?
600/* The dumped Emacs is as functional and more efficient than 593## The dumped Emacs is as functional and more efficient than
601 bootstrap-emacs, so we replace the latter with the former. */ 594## bootstrap-emacs, so we replace the latter with the former.
602emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp} 595emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
603 if test "${CANNOT_DUMP}" = "yes"; then \ 596 if test "${CANNOT_DUMP}" = "yes"; then \
604 ln -f temacs${EXEEXT} emacs${EXEEXT}; \ 597 ln -f temacs${EXEEXT} emacs${EXEEXT}; \
@@ -610,19 +603,19 @@ emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
610 ./emacs -q -batch -f list-load-path-shadows || true; \ 603 ./emacs -q -batch -f list-load-path-shadows || true; \
611 fi 604 fi
612 605
613/* We run make-docfile twice because the command line may get too long 606## We run make-docfile twice because the command line may get too long
614 on some systems. */ 607## on some systems.
615/* ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may 608## ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may
616 or may not be included in ${obj}, but they are always included in 609## or may not be included in ${obj}, but they are always included in
617 ${SOME_MACHINE_OBJECTS}. Since a file is processed when it is mentioned 610## ${SOME_MACHINE_OBJECTS}. Since a file is processed when it is mentioned
618 for the first time, this prevents any variation between configurations 611## for the first time, this prevents any variation between configurations
619 in the contents of the DOC file. 612## in the contents of the DOC file.
620 Likewise for ${SOME_MACHINE_LISP}. */ 613## Likewise for ${SOME_MACHINE_LISP}.
621/* Most of this Makefile refers to Lisp files via ${lispsource}, so 614## Most of this Makefile refers to Lisp files via ${lispsource}, so
622 we also use ${lisp} rather than ${shortlisp} for the dependency since 615## we also use ${lisp} rather than ${shortlisp} for the dependency since
623 the Makefile uses string equality to decide when we talk about identical 616## the Makefile uses string equality to decide when we talk about identical
624 files. Apparently we pass ${shortlisp} rather than ${lisp} to make-docfile 617## files. Apparently we pass ${shortlisp} rather than ${lisp} to make-docfile
625 only in order to reduce the command line length. --Stef */ 618## only in order to reduce the command line length. --Stef
626${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP} 619${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
627 -rm -f ${etc}DOC 620 -rm -f ${etc}DOC
628 ${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC 621 ${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
@@ -635,11 +628,11 @@ buildobj.h: Makefile
635 echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h 628 echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h
636 629
637 630
638/* We cannot define variables for PRE_EDIT and POST_EDIT. 631## We cannot define variables for PRE_EDIT and POST_EDIT.
639 If !ORDINARY_LINK && !LINKER && GCC, they add a 632## If !ORDINARY_LINK && !LINKER && GCC, they add a
640 \`./prefix-args -Xlinker ... \` wrapper, otherwise they are empty. 633## `./prefix-args -Xlinker ... ` wrapper, otherwise they are empty.
641 One alternative to this approach would be to always call prefix-args, 634## One alternative to this approach would be to always call prefix-args,
642 and have it DTRT in all cases, by testing the above defines. */ 635## and have it DTRT in all cases, by testing the above defines.
643temacs${EXEEXT}: $(START_FILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT} 636temacs${EXEEXT}: $(START_FILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT}
644 $(LD) @PRE_EDIT_LDFLAGS@ ${TEMACS_LDFLAGS} @POST_EDIT_LDFLAGS@ \ 637 $(LD) @PRE_EDIT_LDFLAGS@ ${TEMACS_LDFLAGS} @POST_EDIT_LDFLAGS@ \
645 ${TEMACS_LDFLAGS2} \ 638 ${TEMACS_LDFLAGS2} \
@@ -649,27 +642,27 @@ prefix-args${EXEEXT}: prefix-args.o $(config_h)
649 $(CC) $(LDFLAGS) prefix-args.o -o prefix-args 642 $(CC) $(LDFLAGS) prefix-args.o -o prefix-args
650 643
651 644
652/* The following oldxmenu-related rules are only (possibly) used if 645## The following oldxmenu-related rules are only (possibly) used if
653 HAVE_X11 && !USE_GTK, but there is no harm in always defining them 646## HAVE_X11 && !USE_GTK, but there is no harm in always defining them
654 (provided we take a little care that OLDXMENU is never empty). */ 647## (provided we take a little care that OLDXMENU is never empty).
655really-lwlib: 648really-lwlib:
656 cd ${lwlibdir}; ${MAKE} ${MFLAGS} \ 649 cd ${lwlibdir}; ${MAKE} ${MFLAGS} \
657 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' 650 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
658 @true /* make -t should not create really-lwlib. */ 651 @true # make -t should not create really-lwlib.
659.PHONY: really-lwlib 652.PHONY: really-lwlib
660 653
661really-oldXMenu: 654really-oldXMenu:
662 cd ${oldXMenudir}; ${MAKE} ${MFLAGS} \ 655 cd ${oldXMenudir}; ${MAKE} ${MFLAGS} \
663 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' 656 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
664 @true /* make -t should not create really-oldXMenu. */ 657 @true # make -t should not create really-oldXMenu.
665.PHONY: really-oldXMenu 658.PHONY: really-oldXMenu
666 659
667/* We don''t really need this when OLDXMENU_DEPS is empty, but as 660## We do not really need this when OLDXMENU_DEPS is empty, but as
668 things stand we need something to satisfy the temacs dependency. */ 661## things stand we need something to satisfy the temacs dependency.
669stamp-oldxmenu: ${OLDXMENU_DEPS} 662stamp-oldxmenu: ${OLDXMENU_DEPS}
670 touch stamp-oldxmenu 663 touch stamp-oldxmenu
671 664
672/* Supply an ordering for parallel make. */ 665## Supply an ordering for parallel make.
673../src/$(OLDXMENU): ${OLDXMENU} 666../src/$(OLDXMENU): ${OLDXMENU}
674 667
675$(OLDXMENU): $(OLDXMENU_TARGET) 668$(OLDXMENU): $(OLDXMENU_TARGET)
@@ -690,7 +683,7 @@ ecrt0.o: ecrt0.c $(config_h)
690doc.o: buildobj.h 683doc.o: buildobj.h
691 684
692 685
693/* If HAVE_NS, some ns-specific rules (for OTHER_FILES) are inserted here. */ 686## If HAVE_NS, some ns-specific rules (for OTHER_FILES) are inserted here.
694@ns_frag@ 687@ns_frag@
695 688
696 689
@@ -704,18 +697,18 @@ clean: mostlyclean
704 -rm -rf ${DEPDIR} 697 -rm -rf ${DEPDIR}
705 test "X${ns_appdir}" = "X" || rm -rf ${ns_appdir} 698 test "X${ns_appdir}" = "X" || rm -rf ${ns_appdir}
706 699
707/* bootstrap-clean is used to clean up just before a bootstrap. 700## bootstrap-clean is used to clean up just before a bootstrap.
708 It should remove all files generated during a compilation/bootstrap, 701## It should remove all files generated during a compilation/bootstrap,
709 but not things like config.status or TAGS. */ 702## but not things like config.status or TAGS.
710bootstrap-clean: clean 703bootstrap-clean: clean
711 rm -f epaths.h config.h Makefile.c config.stamp stamp-oldxmenu ../etc/DOC-* 704 rm -f epaths.h config.h config.stamp stamp-oldxmenu ../etc/DOC-*
712 if test -f ./.gdbinit; then \ 705 if test -f ./.gdbinit; then \
713 mv ./.gdbinit ./.gdbinit.save; \ 706 mv ./.gdbinit ./.gdbinit.save; \
714 if test -f "${srcdir}/.gdbinit"; then rm -f ./.gdbinit.save; \ 707 if test -f "${srcdir}/.gdbinit"; then rm -f ./.gdbinit.save; \
715 else mv ./.gdbinit.save ./.gdbinit; fi; \ 708 else mv ./.gdbinit.save ./.gdbinit; fi; \
716 fi 709 fi
717/**/# This is used in making a distribution. 710## This is used in making a distribution.
718/**/# Do not use it on development directories! 711## Do not use it on development directories!
719distclean: bootstrap-clean 712distclean: bootstrap-clean
720 rm -f Makefile 713 rm -f Makefile
721maintainer-clean: distclean 714maintainer-clean: distclean
@@ -727,8 +720,8 @@ versionclean:
727extraclean: distclean 720extraclean: distclean
728 -rm -f *~ \#* m/?*~ s/?*~ 721 -rm -f *~ \#* m/?*~ s/?*~
729 722
730/* Arrange to make a tags table TAGS-LISP for ../lisp, 723## Arrange to make a tags table TAGS-LISP for ../lisp,
731 plus TAGS for the C files, which includes ../lisp/TAGS by reference. */ 724## plus TAGS for the C files, which includes ../lisp/TAGS by reference.
732 725
733ctagsfiles1 = [xyzXYZ]*.[hcm] 726ctagsfiles1 = [xyzXYZ]*.[hcm]
734ctagsfiles2 = [a-wA-W]*.[hcm] 727ctagsfiles2 = [a-wA-W]*.[hcm]
@@ -748,49 +741,49 @@ tags: TAGS TAGS-LISP $(lwlibdir)TAGS
748.PHONY: tags 741.PHONY: tags
749 742
750 743
751/* Bootstrapping. */ 744### Bootstrapping.
752/* Bootstrapping right is difficult because of the circular dependencies. 745
753 Furthermore, we have to deal with the fact that many compilation targets 746## Bootstrapping right is difficult because of the circular dependencies.
754 such as loaddefs.el or *.elc can typically be produced by any old 747## Furthermore, we have to deal with the fact that many compilation targets
755 Emacs executable, so we would like to avoid rebuilding them whenever 748## such as loaddefs.el or *.elc can typically be produced by any old
756 we build a new Emacs executable. 749## Emacs executable, so we would like to avoid rebuilding them whenever
757 To solve the circularity, we use 2 different Emacs executables, 750## we build a new Emacs executable.
758 "emacs" is the main target and "bootstrap-emacs" is the one used 751## To solve the circularity, we use 2 different Emacs executables,
759 to build the *.elc and loaddefs.el files. 752## "emacs" is the main target and "bootstrap-emacs" is the one used
760 To solve the freshness issue, we used to use a third file "witness-emacs" 753## to build the *.elc and loaddefs.el files.
761 which was used to witness the fact that there is a bootstrap-emacs 754## To solve the freshness issue, we used to use a third file "witness-emacs"
762 executable, and then have dependencies on witness-emacs rather than 755## which was used to witness the fact that there is a bootstrap-emacs
763 bootstrap-emacs, but that lead to problems in parallel builds (because 756## executable, and then have dependencies on witness-emacs rather than
764 witness-emacs needed to be free from dependencies (to avoid rebuilding 757## bootstrap-emacs, but that lead to problems in parallel builds (because
765 it), so it was compiled in parallel, leading typically to having 2 758## witness-emacs needed to be free from dependencies (to avoid rebuilding
766 processes dumping bootstrap-emacs at the same time). 759## it), so it was compiled in parallel, leading typically to having 2
767 So instead, we replace the witness-emacs dependencies by conditional 760## processes dumping bootstrap-emacs at the same time).
768 bootstrap-dependencies (via ${BOOTSTRAPEMACS}). Of course, since we do 761## So instead, we replace the witness-emacs dependencies by conditional
769 not want to rely on GNU Make features, we have to rely on an external 762## bootstrap-dependencies (via ${BOOTSTRAPEMACS}). Of course, since we do
770 script to do the conditional part of the dependency 763## not want to rely on GNU Make features, we have to rely on an external
771 (i.e. see the ${SUBDIR} rule ../Makefile.in). */ 764## script to do the conditional part of the dependency
765## (i.e. see the ${SUBDIR} rule ../Makefile.in).
772 766
773.SUFFIXES: .elc .el 767.SUFFIXES: .elc .el
774 768
775/* These suffix rules do not allow additional dependencies, sadly, so 769## These suffix rules do not allow additional dependencies, sadly, so
776 instead of adding a $(BOOTSTRAPEMACS) dependency here, we add it 770## instead of adding a $(BOOTSTRAPEMACS) dependency here, we add it
777 separately below. 771## separately below.
778 With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)" */ 772## With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)"
779.el.elc: 773.el.elc:
780 @cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \ 774 @cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \
781 THEFILE=$< EMACS=${bootstrap_exe} 775 THEFILE=$< EMACS=${bootstrap_exe}
782 776
783/* Since the .el.elc rule cannot specify an extra dependency, we do it here. */ 777## Since the .el.elc rule cannot specify an extra dependency, we do it here.
784${lisp} ${SOME_MACHINE_LISP}: $(BOOTSTRAPEMACS) 778${lisp} ${SOME_MACHINE_LISP}: $(BOOTSTRAPEMACS)
785 779
786/* VCSWITNESS points to the file that holds info about the current checkout. 780## VCSWITNESS points to the file that holds info about the current checkout.
787 We use it as a heuristic to decide when to rebuild loaddefs.el. */ 781## We use it as a heuristic to decide when to rebuild loaddefs.el.
788${lispsource}loaddefs.el: $(BOOTSTRAPEMACS) $(VCSWITNESS) 782${lispsource}loaddefs.el: $(BOOTSTRAPEMACS) $(VCSWITNESS)
789 cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=${bootstrap_exe} 783 cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=${bootstrap_exe}
790 784
791/* Dump an Emacs executable named bootstrap-emacs containing the 785## Dump an Emacs executable named bootstrap-emacs containing the
792 files from loadup.el in source form. */ 786## files from loadup.el in source form.
793
794bootstrap-emacs${EXEEXT}: temacs${EXEEXT} 787bootstrap-emacs${EXEEXT}: temacs${EXEEXT}
795 cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs 788 cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs
796 if test "${CANNOT_DUMP}" = "yes"; then \ 789 if test "${CANNOT_DUMP}" = "yes"; then \
@@ -802,5 +795,8 @@ bootstrap-emacs${EXEEXT}: temacs${EXEEXT}
802 @: Compile some files earlier to speed up further compilation. 795 @: Compile some files earlier to speed up further compilation.
803 cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe} 796 cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe}
804 797
805/* Insert either autodeps.mk (if AUTO_DEPEND), else deps.mk. */ 798## Insert either autodeps.mk (if AUTO_DEPEND), else deps.mk.
806@deps_frag@ 799@deps_frag@
800
801
802### Makefile.in ends here