Remove the SOME_MACHINE_LISP distinction in src/Makefile.in.
[bpt/emacs.git] / src / Makefile.in
index b2a6b65..6476880 100644 (file)
@@ -1,7 +1,6 @@
 # src/Makefile for GNU Emacs.
 
-# Copyright (C) 1985, 1987, 1988, 1993, 1994, 1995, 1999, 2000, 2001, 2002,
-#   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+# Copyright (C) 1985, 1987-1988, 1993-1995, 1999-2011
 #   Free Software Foundation, Inc.
 
 # This file is part of GNU Emacs.
@@ -107,7 +106,7 @@ LD_SWITCH_SYSTEM=@LD_SWITCH_SYSTEM@
 
 ## This holds any special options for linking temacs only (ie, not
 ## used by configure).  Not used elsewhere because it sometimes
-## contains options that have to do with using Emacs's crt0, 
+## contains options that have to do with using Emacs's crt0,
 ## which are only good with temacs.
 LD_SWITCH_SYSTEM_TEMACS=@LD_SWITCH_SYSTEM_TEMACS@
 
@@ -191,7 +190,7 @@ OLDXMENU=@OLDXMENU@
 ## If HAVE_X11 && !USE_GTK, $(OLDXMENU) ../src/$(OLDXMENU); else empty.
 ## We use stamp-xmenu with these two deps to both ensure that lwlib
 ## gets remade based on its dependencies in its own makefile,
-## and remake temacs if lwlib gets changed by this. 
+## and remake temacs if lwlib gets changed by this.
 OLDXMENU_DEPS=@OLDXMENU_DEPS@
 
 ## If !HAVE_X11 && HAVE_X_WINDOWS, -lXMenu (this case no longer possible).
@@ -238,17 +237,12 @@ CYGWIN_OBJ=@CYGWIN_OBJ@
 MSDOS_OBJ =
 ## w16select.o termcap.o if MSDOS && HAVE_X_WINDOWS.
 MSDOS_X_OBJ =
-MSDOS_SUPPORT_REAL = $(lispsource)/ls-lisp.elc $(lispsource)/disp-table.elc \
- $(lispsource)/dos-fns.elc $(lispsource)/dos-w32.elc $(lispsource)/dos-vars.elc \
- $(lispsource)/term/internal.elc $(lispsource)/term/pc-win.elc
-## $MSDOS_SUPPORT_REAL if MSDOS.
-MSDOS_SUPPORT = 
 
 ns_appdir=@ns_appdir@
 ns_appbindir=@ns_appbindir@
 ns_appsrc=@ns_appsrc@
 NS_OBJ=@NS_OBJ@
-NS_SUPPORT=@NS_SUPPORT@
+NS_OBJC_OBJ=@NS_OBJC_OBJ@
 ## Only set if NS_IMPL_GNUSTEP.
 GNU_OBJC_CFLAGS=@GNU_OBJC_CFLAGS@
 
@@ -258,28 +252,7 @@ GNU_OBJC_CFLAGS=@GNU_OBJC_CFLAGS@
 ## else xfont.o
 FONT_OBJ=@FONT_OBJ@
 
-## Used if HAVE_MOUSE.
-REAL_MOUSE_SUPPORT=$(lispsource)/mouse.elc $(lispsource)/select.elc \
-  $(lispsource)/scroll-bar.elc
-## Used if HAVE_GPM && !HAVE_MOUSE
-GPM_MOUSE_SUPPORT=$(lispsource)/mouse.elc
 LIBGPM = @LIBGPM@
-## Either of the two preceding options, or empty.
-MOUSE_SUPPORT=@MOUSE_SUPPORT@
-
-## $(lispsource)/tooltip.elc if HAVE_WINDOW_SYSTEM, else empty.
-TOOLTIP_SUPPORT=@TOOLTIP_SUPPORT@
-
-BASE_WINDOW_SUPPORT=$(lispsource)/fringe.elc $(lispsource)/image.elc \
-  $(lispsource)/international/fontset.elc $(lispsource)/dnd.elc \
-  $(lispsource)/tool-bar.elc $(lispsource)/mwheel.elc
-
-X_WINDOW_SUPPORT=$(lispsource)/x-dnd.elc $(lispsource)/term/common-win.elc \
-  $(lispsource)/term/x-win.elc $(lispsource)/dynamic-setting.elc
-
-## If HAVE_X_WINDOWS, both the above
-## else if HAVE_WINDOW_SYSTEM (ie, HAVE_NS) just the former; else empty.
-WINDOW_SUPPORT=@WINDOW_SUPPORT@
 
 ## -lresolv, or empty.
 LIBRESOLV = @LIBRESOLV@
@@ -342,20 +315,21 @@ ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
 
 ## lastfile must follow all files whose initialized data areas should
 ## be dumped as pure by dump-emacs.
-obj=    dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
+base_obj = dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
        charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \
        cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
        emacs.o keyboard.o macros.o keymap.o sysdep.o \
        buffer.o filelock.o insdel.o marker.o \
-       minibuf.o fileio.o dired.o filemode.o \
+       minibuf.o fileio.o dired.o \
        cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
        alloc.o data.o doc.o editfns.o callint.o \
        eval.o floatfns.o fns.o font.o print.o lread.o \
        syntax.o $(UNEXEC_OBJ) bytecode.o \
        process.o gnutls.o callproc.o \
        region-cache.o sound.o atimer.o \
-       doprnt.o strftime.o intervals.o textprop.o composite.o md5.o xml.o \
+       doprnt.o intervals.o textprop.o composite.o xml.o \
        $(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ)
+obj = $(base_obj) $(NS_OBJC_OBJ)
 
 ## Object files used on some machine or other.
 ## These go in the DOC file on all machines in case they are needed.
@@ -384,55 +358,60 @@ POST_ALLOC_OBJ=@POST_ALLOC_OBJ@
 otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \
   $(POST_ALLOC_OBJ) $(VMLIMIT_OBJ) $(WIDGET_OBJ) $(LIBOBJS)
 
-## This is the platform-specific list of Lisp files loaded into the
-## dumped Emacs.  It is arranged like this because it is easier to generate
-## it semi-mechanically from loadup.el this way.
+## This is the list of all Lisp files that might be loaded into the
+## dumped Emacs.  Some of them are not loaded on all platforms, but
+## the DOC file on every platform uses them (because the DOC file is
+## supposed to be platform-independent).
+## It is arranged like this because it is easier to generate it
+## semi-mechanically from loadup.el this way.
+## Eg something like:
+##   sed -e 's/"[ )].*//' -n -e '/(load "/ s/.*load "//p' loadup.el | \
+##   grep -vE 'site-|ldefs-boot'
+## minus any duplicates.
+## Note that you cannot just add a ".elc" extension to every file,
+## since some of them are no-byte-compile (eg some language/ ones).
+##
+## Confusingly, term/internal is not in loadup, but is unconditionally
+## loaded by pc-win, which is.
 ##
 ## Note that this list should not include lisp files which might not
 ## be present, like site-load.el and site-init.el; this makefile
 ## expects them all to be either present or buildable.
 ##
-## Files which are loaded unconditionally (i.e., on all platforms) should
-## also be in shortlisp.  Files which are loaded conditionally (i.e., only
-## on some platforms) should instead be in SOME_MACHINE_LISP.
-##
 ## Place loaddefs.el first, so it gets generated first, since it is on
 ## the critical path (relevant in parallel compilations).
 lisp= \
        $(lispsource)/loaddefs.el \
-       $(lispsource)/abbrev.elc \
-       $(lispsource)/buff-menu.elc \
-       $(lispsource)/button.elc \
+       $(lispsource)/loadup.el \
        $(lispsource)/emacs-lisp/byte-run.elc \
-       $(lispsource)/composite.elc \
-       $(lispsource)/cus-face.elc \
-       $(lispsource)/cus-start.elc \
-       $(lispsource)/custom.elc \
        $(lispsource)/emacs-lisp/backquote.elc \
-       $(lispsource)/emacs-lisp/lisp-mode.elc \
-       $(lispsource)/emacs-lisp/lisp.elc \
-       $(lispsource)/env.elc \
-       $(lispsource)/faces.elc \
-       $(lispsource)/files.elc \
-       $(lispsource)/format.elc \
-       $(lispsource)/facemenu.elc \
-       $(MOUSE_SUPPORT) \
-       $(lispsource)/emacs-lisp/float-sup.elc \
-       $(lispsource)/frame.elc \
-       $(lispsource)/help.elc \
-       $(lispsource)/indent.elc \
-       $(lispsource)/isearch.elc \
-       $(lispsource)/rfn-eshadow.elc \
-       $(lispsource)/loadup.el \
-       $(lispsource)/bindings.elc \
+       $(lispsource)/subr.elc \
+       $(lispsource)/version.el \
+       $(lispsource)/widget.elc \
+       $(lispsource)/custom.elc \
        $(lispsource)/emacs-lisp/map-ynp.elc \
-       $(lispsource)/menu-bar.elc \
+       $(lispsource)/cus-start.elc \
        $(lispsource)/international/mule.elc \
        $(lispsource)/international/mule-conf.elc \
+       $(lispsource)/env.elc \
+       $(lispsource)/format.elc \
+       $(lispsource)/bindings.elc \
+       $(lispsource)/files.elc \
+       $(lispsource)/cus-face.elc \
+       $(lispsource)/faces.elc \
+       $(lispsource)/button.elc \
+       $(lispsource)/startup.elc \
+       $(lispsource)/minibuffer.elc \
+       $(lispsource)/abbrev.elc \
+       $(lispsource)/simple.elc \
+       $(lispsource)/help.elc \
+       $(lispsource)/jka-cmpr-hook.elc \
+       $(lispsource)/epa-hook.elc \
        $(lispsource)/international/mule-cmds.elc \
+       $(lispsource)/case-table.elc \
        $(lispsource)/international/characters.elc \
+       $(lispsource)/composite.elc \
        $(lispsource)/international/charprop.el \
-       $(lispsource)/case-table.elc \
        $(lispsource)/language/chinese.elc \
        $(lispsource)/language/cyrillic.elc \
        $(lispsource)/language/indian.elc \
@@ -448,7 +427,6 @@ lisp= \
        $(lispsource)/language/japanese.el \
        $(lispsource)/language/korean.el \
        $(lispsource)/language/lao.el \
-       $(lispsource)/language/cham.el \
        $(lispsource)/language/tai-viet.el \
        $(lispsource)/language/thai.el \
        $(lispsource)/language/tibetan.elc \
@@ -458,72 +436,95 @@ lisp= \
        $(lispsource)/language/georgian.el \
        $(lispsource)/language/khmer.el \
        $(lispsource)/language/burmese.el \
-       $(lispsource)/paths.el \
-       $(lispsource)/register.elc \
-       $(lispsource)/replace.elc \
-       $(lispsource)/simple.elc \
-       $(lispsource)/minibuffer.elc \
-       $(lispsource)/startup.elc \
-       $(lispsource)/subr.elc \
+       $(lispsource)/language/cham.el \
+       $(lispsource)/indent.elc \
+       $(lispsource)/window.elc \
+       $(lispsource)/frame.elc \
        $(lispsource)/term/tty-colors.elc \
        $(lispsource)/font-core.elc \
+       $(lispsource)/facemenu.elc \
        $(lispsource)/emacs-lisp/syntax.elc \
        $(lispsource)/font-lock.elc \
        $(lispsource)/jit-lock.elc \
-       $(lispsource)/textmodes/fill.elc \
+       $(lispsource)/mouse.elc \
+       $(lispsource)/scroll-bar.elc \
+       $(lispsource)/select.elc \
+       $(lispsource)/emacs-lisp/timer.elc \
+       $(lispsource)/isearch.elc \
+       $(lispsource)/rfn-eshadow.elc \
+       $(lispsource)/menu-bar.elc \
+       $(lispsource)/paths.el \
+       $(lispsource)/emacs-lisp/lisp.elc \
        $(lispsource)/textmodes/page.elc \
+       $(lispsource)/register.elc \
        $(lispsource)/textmodes/paragraphs.elc \
+       $(lispsource)/emacs-lisp/lisp-mode.elc \
        $(lispsource)/textmodes/text-mode.elc \
-       $(lispsource)/emacs-lisp/timer.elc \
-       $(lispsource)/jka-cmpr-hook.elc \
+       $(lispsource)/textmodes/fill.elc \
+       $(lispsource)/replace.elc \
+       $(lispsource)/buff-menu.elc \
+       $(lispsource)/fringe.elc \
+       $(lispsource)/image.elc \
+       $(lispsource)/international/fontset.elc \
+       $(lispsource)/dnd.elc \
+       $(lispsource)/tool-bar.elc \
+       $(lispsource)/dynamic-setting.elc \
+       $(lispsource)/x-dnd.elc \
+       $(lispsource)/term/common-win.elc \
+       $(lispsource)/term/x-win.elc \
+       $(lispsource)/w32-vars.elc \
+       $(lispsource)/term/w32-win.elc \
+       $(lispsource)/ls-lisp.elc \
+       $(lispsource)/disp-table.elc \
+       $(lispsource)/dos-w32.elc \
+       $(lispsource)/w32-fns.elc \
+       $(lispsource)/dos-fns.elc \
+       $(lispsource)/dos-vars.elc \
+       $(lispsource)/term/pc-win.elc \
+       $(lispsource)/term/internal.elc \
+       $(lispsource)/term/ns-win.elc \
+       $(lispsource)/mwheel.elc \
+       $(lispsource)/emacs-lisp/float-sup.elc \
        $(lispsource)/vc/vc-hooks.elc \
        $(lispsource)/vc/ediff-hook.elc \
-       $(lispsource)/epa-hook.elc \
-       $(TOOLTIP_SUPPORT) \
-       $(MSDOS_SUPPORT) \
-       $(WINDOW_SUPPORT) \
-       $(NS_SUPPORT) \
-       $(lispsource)/widget.elc \
-       $(lispsource)/window.elc \
-       $(lispsource)/version.el
+       $(lispsource)/tooltip.elc
 
-## List of relative names for those files from $lisp that are loaded
-## unconditionally (i.e. on all platforms).  Files from $lisp that
-## are only loaded on some platforms should instead be placed in
-## SOME_MACHINE_LISP.  The only reason this variable exists is to prevent
-## the make-docfile command-line getting too long for some systems.
+## The same as $lisp, but using relative file names.  The only reason
+## this variable exists is to prevent the make-docfile command-line
+## getting too long for some systems.  Unfortunately, no-one has any
+## idea how long "too long" is.
 shortlisp= \
        ../lisp/loaddefs.el \
-       ../lisp/abbrev.elc \
-       ../lisp/buff-menu.elc \
-       ../lisp/button.elc \
+       ../lisp/loadup.el \
        ../lisp/emacs-lisp/byte-run.elc \
-       ../lisp/composite.elc \
-       ../lisp/cus-face.elc \
-       ../lisp/cus-start.elc \
-       ../lisp/custom.elc \
        ../lisp/emacs-lisp/backquote.elc \
-       ../lisp/emacs-lisp/lisp-mode.elc \
-       ../lisp/emacs-lisp/lisp.elc \
-       ../lisp/facemenu.elc \
-       ../lisp/faces.elc \
-       ../lisp/files.elc \
-       ../lisp/emacs-lisp/float-sup.elc \
-       ../lisp/format.elc \
-       ../lisp/frame.elc \
-       ../lisp/help.elc \
-       ../lisp/indent.elc \
-       ../lisp/isearch.elc \
-       ../lisp/rfn-eshadow.elc \
-       ../lisp/loadup.el \
-       ../lisp/bindings.elc \
+       ../lisp/subr.elc \
+       ../lisp/version.el \
+       ../lisp/widget.elc \
+       ../lisp/custom.elc \
        ../lisp/emacs-lisp/map-ynp.elc \
-       ../lisp/env.elc \
+       ../lisp/cus-start.elc \
        ../lisp/international/mule.elc \
        ../lisp/international/mule-conf.elc \
+       ../lisp/env.elc \
+       ../lisp/format.elc \
+       ../lisp/bindings.elc \
+       ../lisp/files.elc \
+       ../lisp/cus-face.elc \
+       ../lisp/faces.elc \
+       ../lisp/button.elc \
+       ../lisp/startup.elc \
+       ../lisp/minibuffer.elc \
+       ../lisp/abbrev.elc \
+       ../lisp/simple.elc \
+       ../lisp/help.elc \
+       ../lisp/jka-cmpr-hook.elc \
+       ../lisp/epa-hook.elc \
        ../lisp/international/mule-cmds.elc \
-       ../lisp/international/characters.elc \
        ../lisp/case-table.elc \
+       ../lisp/international/characters.elc \
+       ../lisp/composite.elc \
+       ../lisp/international/charprop.el \
        ../lisp/language/chinese.elc \
        ../lisp/language/cyrillic.elc \
        ../lisp/language/indian.elc \
@@ -539,7 +540,6 @@ shortlisp= \
        ../lisp/language/japanese.el \
        ../lisp/language/korean.el \
        ../lisp/language/lao.el \
-       ../lisp/language/cham.el \
        ../lisp/language/tai-viet.el \
        ../lisp/language/thai.el \
        ../lisp/language/tibetan.elc \
@@ -549,50 +549,58 @@ shortlisp= \
        ../lisp/language/georgian.el \
        ../lisp/language/khmer.el \
        ../lisp/language/burmese.el \
-       ../lisp/menu-bar.elc \
-       ../lisp/paths.el \
-       ../lisp/register.elc \
-       ../lisp/replace.elc \
-       ../lisp/simple.elc \
-       ../lisp/minibuffer.elc \
-       ../lisp/startup.elc \
-       ../lisp/subr.elc \
+       ../lisp/language/cham.el \
+       ../lisp/indent.elc \
+       ../lisp/window.elc \
+       ../lisp/frame.elc \
        ../lisp/term/tty-colors.elc \
        ../lisp/font-core.elc \
+       ../lisp/facemenu.elc \
        ../lisp/emacs-lisp/syntax.elc \
        ../lisp/font-lock.elc \
        ../lisp/jit-lock.elc \
-       ../lisp/textmodes/fill.elc \
+       ../lisp/mouse.elc \
+       ../lisp/scroll-bar.elc \
+       ../lisp/select.elc \
+       ../lisp/emacs-lisp/timer.elc \
+       ../lisp/isearch.elc \
+       ../lisp/rfn-eshadow.elc \
+       ../lisp/menu-bar.elc \
+       ../lisp/paths.el \
+       ../lisp/emacs-lisp/lisp.elc \
        ../lisp/textmodes/page.elc \
+       ../lisp/register.elc \
        ../lisp/textmodes/paragraphs.elc \
+       ../lisp/emacs-lisp/lisp-mode.elc \
        ../lisp/textmodes/text-mode.elc \
-       ../lisp/emacs-lisp/timer.elc \
+       ../lisp/textmodes/fill.elc \
+       ../lisp/replace.elc \
+       ../lisp/buff-menu.elc \
+       ../lisp/fringe.elc \
+       ../lisp/image.elc \
+       ../lisp/international/fontset.elc \
+       ../lisp/dnd.elc \
+       ../lisp/tool-bar.elc \
+       ../lisp/dynamic-setting.elc \
+       ../lisp/x-dnd.elc \
+       ../lisp/term/common-win.elc \
+       ../lisp/term/x-win.elc \
+       ../lisp/w32-vars.elc \
+       ../lisp/term/w32-win.elc \
+       ../lisp/ls-lisp.elc \
+       ../lisp/disp-table.elc \
+       ../lisp/dos-w32.elc \
+       ../lisp/w32-fns.elc \
+       ../lisp/dos-fns.elc \
+       ../lisp/dos-vars.elc \
+       ../lisp/term/pc-win.elc \
+       ../lisp/term/internal.elc \
+       ../lisp/term/ns-win.elc \
+       ../lisp/mwheel.elc \
+       ../lisp/emacs-lisp/float-sup.elc \
        ../lisp/vc/vc-hooks.elc \
        ../lisp/vc/ediff-hook.elc \
-       ../lisp/jka-cmpr-hook.elc \
-       ../lisp/epa-hook.elc \
-       ../lisp/widget.elc \
-       ../lisp/window.elc \
-       ../lisp/version.el
-
-## Like $shortlisp, but includes only those files from $lisp that are loaded
-## conditionally (i.e., only on some platforms).
-## Confusingly, term/internal is not in loadup, but is unconditionally
-## loaded by pc-win, which is.
-SOME_MACHINE_LISP = ../lisp/mouse.elc \
-  ../lisp/select.elc ../lisp/scroll-bar.elc \
-  ../lisp/ls-lisp.elc ../lisp/dos-fns.elc \
-  ../lisp/w32-fns.elc ../lisp/dos-w32.elc \
-  ../lisp/disp-table.elc ../lisp/dos-vars.elc ../lisp/w32-vars.elc \
-  ../lisp/tooltip.elc ../lisp/image.elc \
-  ../lisp/fringe.elc ../lisp/dnd.elc \
-  ../lisp/mwheel.elc ../lisp/tool-bar.elc \
-  ../lisp/x-dnd.elc ../lisp/dynamic-setting.elc \
-  ../lisp/international/fontset.elc \
-  ../lisp/term/common-win.elc \
-  ../lisp/term/x-win.elc \
-  ../lisp/term/pc-win.elc ../lisp/term/internal.elc \
-  ../lisp/term/ns-win.elc ../lisp/term/w32-win.elc
+       ../lisp/tooltip.elc
 
 ## Construct full set of libraries to be linked.
 ## Note that SunOS needs -lm to come before -lc; otherwise, you get
@@ -611,6 +619,9 @@ all: emacs$(EXEEXT) $(OTHER_FILES)
 ## Does anyone ever pay attention to the load-path-shadows output here?
 ## The dumped Emacs is as functional and more efficient than
 ## bootstrap-emacs, so we replace the latter with the former.
+## Strictly speaking, emacs does not depend directly on all of $lisp,
+## since not all pieces are used on all platforms.  But DOC depends
+## on all of $lisp, and emacs depends on DOC, so it is ok to use $lisp here.
 emacs$(EXEEXT): temacs$(EXEEXT) $(etc)/DOC $(lisp)
        if test "$(CANNOT_DUMP)" = "yes"; then \
          ln -f temacs$(EXEEXT) emacs$(EXEEXT); \
@@ -629,16 +640,15 @@ emacs$(EXEEXT): temacs$(EXEEXT) $(etc)/DOC $(lisp)
 ## $(SOME_MACHINE_OBJECTS).  Since a file is processed when it is mentioned
 ## for the first time, this prevents any variation between configurations
 ## in the contents of the DOC file.
-## Likewise for $(SOME_MACHINE_LISP).
 ## Most of this Makefile refers to Lisp files via $(lispsource), so
 ## we also use $(lisp) rather than $(shortlisp) for the dependency since
 ## the Makefile uses string equality to decide when we talk about identical
 ## files.  Apparently we pass $(shortlisp) rather than $(lisp) to make-docfile
 ## only in order to reduce the command line length.  --Stef
-$(etc)/DOC: $(libsrc)/make-docfile$(EXEEXT) $(obj) $(lisp) $(SOME_MACHINE_LISP)
+$(etc)/DOC: $(libsrc)/make-docfile$(EXEEXT) $(obj) $(lisp)
        -rm -f $(etc)/DOC
        $(libsrc)/make-docfile -d $(srcdir) $(SOME_MACHINE_OBJECTS) $(obj) > $(etc)/DOC
-       $(libsrc)/make-docfile -a $(etc)/DOC -d $(srcdir) $(SOME_MACHINE_LISP) $(shortlisp)
+       $(libsrc)/make-docfile -a $(etc)/DOC -d $(srcdir) $(shortlisp)
 
 $(libsrc)/make-docfile$(EXEEXT):
        cd $(libsrc); $(MAKE) $(MFLAGS) make-docfile$(EXEEXT)
@@ -646,6 +656,18 @@ $(libsrc)/make-docfile$(EXEEXT):
 buildobj.h: Makefile
        echo "#define BUILDOBJ \"$(obj) $(otherobj) " "\"" > buildobj.h
 
+globals.h: gl-stamp; @true
+
+GLOBAL_SOURCES = $(base_obj:.o=.c) $(NS_OBJC_OBJ:.o=.m)
+
+gl-stamp: $(libsrc)/make-docfile$(EXEEXT) $(GLOBAL_SOURCES)
+       @rm -f gl-tmp
+       $(libsrc)/make-docfile -d $(srcdir) -g $(SOME_MACHINE_OBJECTS) $(obj) > gl-tmp
+       $(srcdir)/../move-if-change gl-tmp globals.h
+       echo timestamp > $@
+
+$(obj) $(otherobj): globals.h
+
 $(lib)/libgnu.a: $(config_h)
        cd $(lib) && $(MAKE) libgnu.a
 
@@ -656,7 +678,7 @@ temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj) $(lib)/libgnu.
 ## The following oldxmenu-related rules are only (possibly) used if
 ## HAVE_X11 && !USE_GTK, but there is no harm in always defining them
 ## (provided we take a little care that OLDXMENU is never empty).
-really-lwlib:
+really-lwlib: globals.h
        cd $(lwlibdir); $(MAKE) $(MFLAGS) \
     CC='$(CC)' CFLAGS='$(CFLAGS)' MAKE='$(MAKE)'
        @true  # make -t should not create really-lwlib.
@@ -700,6 +722,7 @@ mostlyclean:
        rm -f ../etc/DOC
        rm -f bootstrap-emacs$(EXEEXT) emacs-$(version)$(EXEEXT)
        rm -f buildobj.h
+       rm -f globals.h gl-stamp
 clean: mostlyclean
        rm -f emacs-*.*.*$(EXEEXT) emacs$(EXEEXT)
        -rm -rf $(DEPDIR)
@@ -734,10 +757,10 @@ extraclean: distclean
 ctagsfiles1 = [xyzXYZ]*.[hcm]
 ctagsfiles2 = [a-wA-W]*.[hcm]
 
-TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
+TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) $(M_FILE) $(S_FILE)
        ../lib-src/etags --include=TAGS-LISP --include=$(lwlibdir)/TAGS \
          --regex='/[   ]*DEFVAR_[A-Z_  (]+"\([^"]+\)"/' \
-         $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
+         $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) $(M_FILE) $(S_FILE)
 frc:
 TAGS-LISP: frc
        $(MAKE) -f $(lispdir)/Makefile TAGS-LISP ETAGS=../lib-src/etags
@@ -783,7 +806,7 @@ tags: TAGS TAGS-LISP $(lwlibdir)/TAGS
                             THEFILE=$< EMACS=$(bootstrap_exe)
 
 ## Since the .el.elc rule cannot specify an extra dependency, we do it here.
-$(lisp) $(SOME_MACHINE_LISP): $(BOOTSTRAPEMACS)
+$(lisp): $(BOOTSTRAPEMACS)
 
 ## VCSWITNESS points to the file that holds info about the current checkout.
 ## We use it as a heuristic to decide when to rebuild loaddefs.el.