comparison src/Makefile.in @ 108798:dedcf813aa69

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.
author Glenn Morris <rgm@gnu.org>
date Wed, 26 May 2010 22:43:27 -0700
parents 939ecb6ccd4d
children ff6d69344057
comparison
equal deleted inserted replaced
108797:d674108e8753 108798:dedcf813aa69
20 20
21 21
22 # Note that this file is edited by msdos/sed1v2.inp for MSDOS. That 22 # Note that this file is edited by msdos/sed1v2.inp for MSDOS. That
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
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 25
33 SHELL = /bin/sh 26 SHELL = /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.
36 # We use $(srcdir) explicitly in dependencies so as not to depend on VPATH. 29 # We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
45 version = @version@ 38 version = @version@
46 # Substitute an assignment for the MAKE variable, because 39 # Substitute an assignment for the MAKE variable, because
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@
52 LIBOBJS = @LIBOBJS@ 45 LIBOBJS = @LIBOBJS@
53 46
54 lispsource = ${srcdir}/../lisp/ 47 lispsource = ${srcdir}/../lisp/
55 libsrc = ../lib-src/ 48 libsrc = ../lib-src/
296 ## -MMD -MF ${DEPDIR}/$*.d if AUTO_DEPEND; else empty. 289 ## -MMD -MF ${DEPDIR}/$*.d if AUTO_DEPEND; else empty.
297 DEPFLAGS=@DEPFLAGS@ 290 DEPFLAGS=@DEPFLAGS@
298 ## test -d ${DEPDIR} || mkdir ${DEPDIR} (if AUTO_DEPEND); else ':'. 291 ## test -d ${DEPDIR} || mkdir ${DEPDIR} (if AUTO_DEPEND); else ':'.
299 MKDEPDIR=@MKDEPDIR@ 292 MKDEPDIR=@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. */ 309 ALL_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} \
318 ALL_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}
319 ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS) 314 ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
320 315
321 .SUFFIXES: .m 316 .SUFFIXES: .m
322 .c.o: 317 .c.o:
323 @$(MKDEPDIR) 318 @$(MKDEPDIR)
325 .m.o: 320 .m.o:
326 @$(MKDEPDIR) 321 @$(MKDEPDIR)
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.
332 obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \ 327 obj= 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) \
335 emacs.o keyboard.o macros.o keymap.o sysdep.o \ 330 emacs.o keyboard.o macros.o keymap.o sysdep.o \
336 buffer.o filelock.o insdel.o marker.o \ 331 buffer.o filelock.o insdel.o marker.o \
342 process.o callproc.o \ 337 process.o callproc.o \
343 region-cache.o sound.o atimer.o \ 338 region-cache.o sound.o atimer.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.
349 SOME_MACHINE_OBJECTS = dosfns.o msdos.o \ 344 SOME_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 \
352 nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \ 347 nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.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.
357 GMALLOC_OBJ=@GMALLOC_OBJ@ 352 GMALLOC_OBJ=@GMALLOC_OBJ@
358 353
359 /* vm-limit.o if !SYSTEM_MALLOC, else empty. */ 354 ## vm-limit.o if !SYSTEM_MALLOC, else empty.
360 VMLIMIT_OBJ=@VMLIMIT_OBJ@ 355 VMLIMIT_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.
363 RALLOC_OBJ=@RALLOC_OBJ@ 358 RALLOC_OBJ=@RALLOC_OBJ@
364 359
365 /* Empty on Cygwin, lastfile.o elsewhere. */ 360 ## Empty on Cygwin, lastfile.o elsewhere.
366 PRE_ALLOC_OBJ=@PRE_ALLOC_OBJ@ 361 PRE_ALLOC_OBJ=@PRE_ALLOC_OBJ@
367 /* lastfile.o on Cygwin, empty elsewhere. */ 362 ## lastfile.o on Cygwin, empty elsewhere.
368 POST_ALLOC_OBJ=@POST_ALLOC_OBJ@ 363 POST_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.
371 otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \ 366 otherobj= $(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
389 lisp= \ 383 lisp= \
390 ${lispsource}loaddefs.el \ 384 ${lispsource}loaddefs.el \
391 ${lispsource}abbrev.elc \ 385 ${lispsource}abbrev.elc \
392 ${lispsource}buff-menu.elc \ 386 ${lispsource}buff-menu.elc \
393 ${lispsource}button.elc \ 387 ${lispsource}button.elc \
473 ${NS_SUPPORT} \ 467 ${NS_SUPPORT} \
474 ${lispsource}widget.elc \ 468 ${lispsource}widget.elc \
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.
483 shortlisp= \ 477 shortlisp= \
484 ../lisp/loaddefs.el \ 478 ../lisp/loaddefs.el \
485 ../lisp/abbrev.elc \ 479 ../lisp/abbrev.elc \
486 ../lisp/buff-menu.elc \ 480 ../lisp/buff-menu.elc \
487 ../lisp/button.elc \ 481 ../lisp/button.elc \
561 ../lisp/epa-hook.elc \ 555 ../lisp/epa-hook.elc \
562 ../lisp/widget.elc \ 556 ../lisp/widget.elc \
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).
568 SOME_MACHINE_LISP = ../lisp/mouse.elc \ 562 SOME_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 \
571 ../lisp/w32-fns.elc ../lisp/dos-w32.elc \ 565 ../lisp/w32-fns.elc ../lisp/dos-w32.elc \
572 ../lisp/disp-table.elc ../lisp/dos-vars.elc \ 566 ../lisp/disp-table.elc ../lisp/dos-vars.elc \
581 ../lisp/term/x-win.elc \ 575 ../lisp/term/x-win.elc \
582 ../lisp/term/pc-win.elc ../lisp/term/internal.elc \ 576 ../lisp/term/pc-win.elc ../lisp/term/internal.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
591 LIBES = $(LOADLIBES) $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \ 584 LIBES = $(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} \
594 $(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \ 587 $(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \
595 $(LIB_GCC) $(LIB_MATH) $(LIB_STANDARD) $(LIB_GCC) 588 $(LIB_GCC) $(LIB_MATH) $(LIB_STANDARD) $(LIB_GCC)
596 589
597 all: emacs${EXEEXT} $(OTHER_FILES) 590 all: 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.
602 emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp} 595 emacs${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}; \
605 EMACSLOADPATH=${lispsource} ./emacs -q -batch \ 598 EMACSLOADPATH=${lispsource} ./emacs -q -batch \
606 -f list-load-path-shadows || true; \ 599 -f list-load-path-shadows || true; \
608 LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump || exit 1; \ 601 LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump || exit 1; \
609 ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}; \ 602 ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}; \
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
629 ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp} 622 ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
630 623
633 626
634 buildobj.h: Makefile 627 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.
643 temacs${EXEEXT}: $(START_FILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT} 636 temacs${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} \
646 -o temacs ${START_FILES} ${obj} ${otherobj} ${LIBES} 639 -o temacs ${START_FILES} ${obj} ${otherobj} ${LIBES}
647 640
648 prefix-args${EXEEXT}: prefix-args.o $(config_h) 641 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).
655 really-lwlib: 648 really-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
661 really-oldXMenu: 654 really-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.
669 stamp-oldxmenu: ${OLDXMENU_DEPS} 662 stamp-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)
676 669
677 ../config.status:: epaths.in 670 ../config.status:: epaths.in
688 @$(MKDEPDIR) 681 @$(MKDEPDIR)
689 $(CC) -c $(ALL_CFLAGS) ${srcdir}/ecrt0.c 682 $(CC) -c $(ALL_CFLAGS) ${srcdir}/ecrt0.c
690 doc.o: buildobj.h 683 doc.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
697 mostlyclean: 690 mostlyclean:
698 rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a 691 rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a
702 clean: mostlyclean 695 clean: mostlyclean
703 rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT} 696 rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT}
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.
710 bootstrap-clean: clean 703 bootstrap-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!
719 distclean: bootstrap-clean 712 distclean: bootstrap-clean
720 rm -f Makefile 713 rm -f Makefile
721 maintainer-clean: distclean 714 maintainer-clean: distclean
722 @echo "This command is intended for maintainers to use;" 715 @echo "This command is intended for maintainers to use;"
723 @echo "it deletes files that may require special tools to rebuild." 716 @echo "it deletes files that may require special tools to rebuild."
725 versionclean: 718 versionclean:
726 -rm -f emacs${EXEEXT} emacs-*.*.*${EXEEXT} ../etc/DOC* 719 -rm -f emacs${EXEEXT} emacs-*.*.*${EXEEXT} ../etc/DOC*
727 extraclean: distclean 720 extraclean: 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
733 ctagsfiles1 = [xyzXYZ]*.[hcm] 726 ctagsfiles1 = [xyzXYZ]*.[hcm]
734 ctagsfiles2 = [a-wA-W]*.[hcm] 727 ctagsfiles2 = [a-wA-W]*.[hcm]
735 728
736 TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) 729 TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
746 739
747 tags: TAGS TAGS-LISP $(lwlibdir)TAGS 740 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
794 bootstrap-emacs${EXEEXT}: temacs${EXEEXT} 787 bootstrap-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 \
797 ln -f temacs${EXEEXT} bootstrap-emacs${EXEEXT}; \ 790 ln -f temacs${EXEEXT} bootstrap-emacs${EXEEXT}; \
798 else \ 791 else \
800 mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}; \ 793 mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}; \
801 fi 794 fi
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