Simplify temacs build rule.
[bpt/emacs.git] / src / Makefile.in
CommitLineData
a0528984 1# Makefile for GNU Emacs.
0b5538bd 2# Copyright (C) 1985, 1987, 1988, 1993, 1994, 1995, 1999, 2000, 2001, 2002,
b5457f14
GM
3# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
4# Free Software Foundation, Inc.
a0528984
EZ
5
6# This file is part of GNU Emacs.
7
b9b1cc14 8# GNU Emacs is free software: you can redistribute it and/or modify
a0528984 9# it under the terms of the GNU General Public License as published by
b9b1cc14
GM
10# the Free Software Foundation, either version 3 of the License, or
11# (at your option) any later version.
a0528984
EZ
12
13# GNU Emacs is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17
18# You should have received a copy of the GNU General Public License
b9b1cc14 19# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
a0528984
EZ
20
21
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
24# avoid shell-ism because the DOS build has to use the DOS shell.
25
5f351ff1 26# Don't try to replace the cpp processing using autoconf facilities,
a0528984 27# says rms.
deeaffe1
DN
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
e20f1f07 33SHELL = /bin/sh
a0528984
EZ
34
35# Here are the things that we expect ../configure to edit.
36# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
82c3d67a
AS
37srcdir = @srcdir@
38abs_builddir = @abs_builddir@
39VPATH = $(srcdir)
40CC = @CC@
82c3d67a
AS
41CFLAGS = @CFLAGS@
42CPPFLAGS = @CPPFLAGS@
43LDFLAGS = @LDFLAGS@
82c3d67a
AS
44EXEEXT = @EXEEXT@
45version = @version@
a0528984
EZ
46# Substitute an assignment for the MAKE variable, because
47# BSD doesn't have it as a default.
48@SET_MAKE@
49# 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.
51# LIBS = @LIBS@
52LIBOBJS = @LIBOBJS@
53
60a3d7ee 54lispsource = ${srcdir}/../lisp/
60a3d7ee
DN
55libsrc = ../lib-src/
56etc = ../etc/
57oldXMenudir = ../oldXMenu/
58lwlibdir = ../lwlib/
59lispdir = ../lisp/
a0528984
EZ
60
61# Configuration files for .o files to depend on.
62M_FILE = ${srcdir}/@machfile@
63S_FILE = ${srcdir}/@opsysfile@
64config_h = config.h $(M_FILE) $(S_FILE)
65
82c3d67a 66bootstrap_exe = ${abs_builddir}/bootstrap-emacs${EXEEXT}
7763401b 67
1a82cca9 68## ns-app if HAVE_NS, else empty.
005bd5a2
DN
69OTHER_FILES = @OTHER_FILES@
70
70eab5c1
GM
71CRT_DIR=@CRT_DIR@
72
49628785
GM
73## Machine-specific CFLAGS.
74C_SWITCH_MACHINE=@C_SWITCH_MACHINE@
75## System-specific CFLAGS.
76C_SWITCH_SYSTEM=@C_SWITCH_SYSTEM@
5a903aa9
GM
77
78## Currently only set if NS_IMPL_GNUSTEP.
79## C_SWITCH_X_SITE may override this.
80C_SWITCH_X_SYSTEM=@C_SWITCH_X_SYSTEM@
81
82## Define C_SWITCH_X_SITE to contain any special flags your compiler
83## may need to deal with X Windows. For instance, if you've defined
84## HAVE_X_WINDOWS and your X include files aren't in a place that your
85## compiler can find on its own, you might want to add "-I/..." or
86## something similar. This is normally set by configure.
87## This is used before C_SWITCH_X_SYSTEM and may override it.
88C_SWITCH_X_SITE=@C_SWITCH_X_SITE@
89
0116466b
GM
90## Define LD_SWITCH_X_SITE to contain any special flags your loader
91## may need to deal with X Windows. For instance, if your X libraries
92## aren't in a place that your loader can find on its own, you might
93## want to add "-L/..." or something similar. Only used if
94## HAVE_X_WINDOWS.
95## FIXME? configure sets a value for this, but it has never been
96## substituted in this or any other Makefile. Cf C_SWITCH_X_SITE.
97LD_SWITCH_X_SITE=
98
eb21eab5 99## This holds any special options for linking temacs only (ie, not
2f86b22b
GM
100## used by configure). Not used elsewhere because it sometimes
101## contains options that have to do with using Emacs's crt0,
102## which are only good with temacs.
eb21eab5 103LD_SWITCH_SYSTEM_TEMACS=@LD_SWITCH_SYSTEM_TEMACS@
5a903aa9 104
27a2cdfc
GM
105## Next two must come before LD_SWITCH_SYSTEM.
106## If needed, a -R option that says where to find X windows at run time.
107LD_SWITCH_X_SITE_AUX=@LD_SWITCH_X_SITE_AUX@
108## As above, but using -rpath instead.
109LD_SWITCH_X_SITE_AUX_RPATH=@LD_SWITCH_X_SITE_AUX_RPATH@
5a903aa9 110
2f86b22b
GM
111## System-specific LDFLAGS.
112LD_SWITCH_SYSTEM=@LD_SWITCH_SYSTEM@
113LD_SWITCH_SYSTEM_EXTRA=@LD_SWITCH_SYSTEM_EXTRA@
5a903aa9 114
2f86b22b
GM
115## Flags to pass to ld only for temacs.
116TEMACS_LDFLAGS = $(LD_SWITCH_SYSTEM) $(LD_SWITCH_SYSTEM_EXTRA) $(LD_SWITCH_SYSTEM_TEMACS)
49628785 117
97efb629
GM
118## Some systems define this to request special libraries.
119LIBS_SYSTEM=@LIBS_SYSTEM@
120
1a0d7c06
GM
121## Where to find libgcc.a, if using gcc and necessary.
122LIB_GCC=@LIB_GCC@
123
5a903aa9
GM
124## May use $CRT_DIR.
125LIB_STANDARD=@LIB_STANDARD@
126
127## -lm, or empty.
128LIB_MATH=@LIB_MATH@
129
0dc2e11d
GM
130LIBTIFF=@LIBTIFF@
131LIBJPEG=@LIBJPEG@
132LIBPNG=@LIBPNG@
133LIBGIF=@LIBGIF@
134LIBXPM=@LIBXPM@
135XFT_LIBS=@XFT_LIBS@
3dee6fdb 136LIBX_EXTRA=$(LIBTIFF) $(LIBJPEG) $(LIBPNG) $(LIBGIF) $(LIBXPM) -lX11 $(XFT_LIBS)
0dc2e11d 137
5a903aa9
GM
138FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
139FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
140FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
141FREETYPE_LIBS = @FREETYPE_LIBS@
142LIBOTF_CFLAGS = @LIBOTF_CFLAGS@
143LIBOTF_LIBS = @LIBOTF_LIBS@
144M17N_FLT_CFLAGS = @M17N_FLT_CFLAGS@
145M17N_FLT_LIBS = @M17N_FLT_LIBS@
146
19d4c244
DN
147DBUS_CFLAGS = @DBUS_CFLAGS@
148DBUS_LIBS = @DBUS_LIBS@
10efe302 149DBUS_OBJ = @DBUS_OBJ@
19d4c244
DN
150
151GCONF_CFLAGS = @GCONF_CFLAGS@
152GCONF_LIBS = @GCONF_LIBS@
153
10efe302
GM
154GTK_OBJ=@GTK_OBJ@
155
40c17879
GM
156## -ltermcap, or -lncurses, or -lcurses, or "".
157LIBS_TERMCAP=@LIBS_TERMCAP@
158## terminfo.o if TERMINFO, else tparam.o.
159TERMCAP_OBJ=@TERMCAP_OBJ@
160
294c50a0
GM
161LIBXMU=@LIBXMU@
162
10efe302
GM
163LIBXSM=@LIBXSM@
164
8fdac2c3
GM
165LIBXTR6=@LIBXTR6@
166
3dee6fdb
GM
167## $(LIBXMU) -lXt $(LIBXTR6) -lXext if USE_X_TOOLKIT, else $(LIBXSM).
168## Only used if HAVE_X_WINDOWS.
169LIBXT_OTHER=@LIBXT_OTHER@
170
1a82cca9
GM
171## Only used if HAVE_X11 && !USE_GTK.
172## really-lwlib if USE_X_TOOLKIT, else really-oldxmenu.
173OLDXMENU_TARGET=@OLDXMENU_TARGET@
174
c0b0aed5
GM
175## If !HAVE_X11 || USE_GTK, empty.
176## Else if USE_X_TOOLKIT, ${lwlibdir}liblw.a.
177## Else ${oldXMenudir}libXMenu11.a.
178OLDXMENU=@OLDXMENU@
179
4235ca47
GM
180## If !HAVE_X11 && HAVE_X_WINDOWS, -lXMenu (this case no longer possible).
181## Else if !HAVE_X11 || USE_GTK, empty.
182## Else $(OLDXMENU).
183LIBXMENU=@LIBXMENU@
184
10efe302
GM
185XMENU_OBJ=@XMENU_OBJ@
186XOBJ=@XOBJ@
187
986fb647 188TOOLKIT_LIBW=@TOOLKIT_LIBW@
b678dd8b 189
676b6304
GM
190## Only used if HAVE_X11, in LIBX_OTHER.
191LIBXT=$(TOOLKIT_LIBW) $(LIBXT_OTHER)
192
8a95f0e7
GM
193## If HAVE_X11, $(LIBXT) $(LIBX_EXTRA), else empty.
194LIBX_OTHER=@LIBX_OTHER@
195
9beab9ce
GM
196## LIBXMENU is nil if !HAVE_X_WINDOWS.
197## LD_SWITCH_X_SITE should not be used if not using X, but nothing
198## sets it at present, and if something ever does, it should be
199## configure, which should set it to nil in non-X builds.
200LIBX_BASE=$(LIBXMENU) $(LD_SWITCH_X_SITE)
201
19d4c244
DN
202LIBSOUND= @LIBSOUND@
203CFLAGS_SOUND= @CFLAGS_SOUND@
204
205RSVG_LIBS= @RSVG_LIBS@
206RSVG_CFLAGS= @RSVG_CFLAGS@
207
b678dd8b
GM
208## widget.o if USE_X_TOOLKIT, otherwise empty.
209WIDGET_OBJ=@WIDGET_OBJ@
210
c40f9449
GM
211## sheap.o if CYGWIN, otherwise empty.
212CYGWIN_OBJ=@CYGWIN_OBJ@
213
dbd3f723 214## dosfns.o msdos.o w16select.o if MSDOS.
f14d1dfd
GM
215MSDOS_OBJ =
216## w16select.o termcap.o if MSDOS && HAVE_X_WINDOWS.
217MSDOS_X_OBJ =
218MSDOS_SUPPORT_REAL = ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
219 ${lispsource}dos-fns.elc ${lispsource}dos-w32.elc ${lispsource}dos-vars.elc \
220 ${lispsource}term/internal.elc ${lispsource}term/pc-win.elc
221## $MSDOS_SUPPORT_REAL if MSDOS.
222MSDOS_SUPPORT =
223
177b0288
GM
224ns_appdir=@ns_appdir@/
225ns_appbindir=@ns_appbindir@/
226ns_appsrc=@ns_appsrc@
e6ec4e99
GM
227NS_OBJ=@NS_OBJ@
228NS_SUPPORT=@NS_SUPPORT@
8877ca0f 229## Only set if NS_IMPL_GNUSTEP.
5a903aa9 230GNU_OBJC_CFLAGS=@GNU_OBJC_CFLAGS@
e6ec4e99 231
6e546d18
GM
232## Empty if !HAVE_X_WINDOWS
233## xfont.o ftfont.o xftfont.o ftxfont.o if HAVE_XFT
234## xfont.o ftfont.o ftxfont.o if HAVE_FREETYPE
235## else xfont.o
bc0b5f61
GM
236FONT_OBJ=@FONT_OBJ@
237
11842bd8
GM
238## Used if HAVE_MOUSE.
239REAL_MOUSE_SUPPORT=${lispsource}mouse.elc ${lispsource}select.elc \
240 ${lispsource}scroll-bar.elc
241## Used if HAVE_GPM && !HAVE_MOUSE
242GPM_MOUSE_SUPPORT=${lispsource}mouse.elc
5a903aa9 243LIBGPM = @LIBGPM@
11842bd8
GM
244## Either of the two preceding options, or empty.
245MOUSE_SUPPORT=@MOUSE_SUPPORT@
246
247## ${lispsource}tooltip.elc if HAVE_WINDOW_SYSTEM, else empty.
248TOOLTIP_SUPPORT=@TOOLTIP_SUPPORT@
658f86ca 249
faf535f8
GM
250BASE_WINDOW_SUPPORT=${lispsource}fringe.elc ${lispsource}image.elc \
251 ${lispsource}international/fontset.elc ${lispsource}dnd.elc \
252 ${lispsource}tool-bar.elc ${lispsource}mwheel.elc
253
254X_WINDOW_SUPPORT=${lispsource}x-dnd.elc ${lispsource}term/common-win.elc \
255 ${lispsource}term/x-win.elc ${lispsource}dynamic-setting.elc
256
11842bd8
GM
257## If HAVE_X_WINDOWS, both the above
258## else if HAVE_WINDOW_SYSTEM (ie, HAVE_NS) just the former; else empty.
259WINDOW_SUPPORT=@WINDOW_SUPPORT@
260
5a903aa9
GM
261## -lresolv, or empty.
262LIBRESOLV = @LIBRESOLV@
263
2807228d
GM
264LIBSELINUX_LIBS = @LIBSELINUX_LIBS@
265
19d4c244
DN
266INTERVALS_H = dispextern.h intervals.h composite.h
267
268GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
269
270RUN_TEMACS = `/bin/pwd`/temacs
271
49ebbd65
DN
272START_FILES = @START_FILES@
273
5a903aa9
GM
274UNEXEC_OBJ = @unexec@
275
a0528984
EZ
276# ========================== start of cpp stuff =======================
277/* From here on, comments must be done in C syntax. */
278
a0528984
EZ
279#define NOT_C_CODE
280#include "config.h"
281
a53cfbe5
JD
282#ifdef AUTO_DEPEND
283DEPFLAGS = -MMD -MF deps/$*.d
284#endif
285
489d31a4
GM
286/* If NS_IMPL_GNUSTEP, some definitions and includes are expanded here. */
287@NS_IMPL_GNUSTEP_INC@
edfda783 288
8877ca0f
GM
289/* FIXME move to LD_SWITCH_SYSTEM_TEMACS?
290 This uses ${CONFIG_SYSTEM_LIBS}, presumably set by the above include. */
291NS_IMPL_GNUSTEP_TEMACS_LDFLAGS=@NS_IMPL_GNUSTEP_TEMACS_LDFLAGS@
292
a0528984
EZ
293/* DO NOT use -R. There is a special hack described in lastfile.c
294 which is used instead. Some initialized data areas are modified
295 at initial startup, then labeled as part of the text area when
e20f1f07 296 Emacs is dumped for the first time, and never changed again. */
a0528984
EZ
297
298/* -Demacs is needed to make some files produce the correct version
299 for use in Emacs.
300
301 -DHAVE_CONFIG_H is needed for some other files to take advantage of
5aa17bb2 302 the information in ``config.h''. */
a0528984 303
e769f484 304/* C_SWITCH_X_SITE must come before C_SWITCH_X_SYSTEM
5a903aa9 305 since it may have -I options that should override those. */
e3cf0cde 306/* MYCPPFLAGS only referenced in etc/DEBUG. */
5a903aa9
GM
307ALL_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}
308ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
48fad8e8 309
edfda783 310.SUFFIXES: .m
a0528984 311.c.o:
a53cfbe5 312#ifdef AUTO_DEPEND
5d1e70a2 313 @-test -d deps || mkdir deps
a53cfbe5 314#endif
a0528984 315 $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
edfda783 316.m.o:
a53cfbe5 317#ifdef AUTO_DEPEND
5d1e70a2 318 @-test -d deps || mkdir deps
a53cfbe5 319#endif
48fad8e8 320 $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $<
a0528984 321
a0528984 322
b5457f14
GM
323/* A macro which other sections of Makefile can redefine to munge the
324 flags before they are passed to LD. This is helpful if you have
325 redefined LD to something odd, like "gcc".
326 (The YMF prefix is a holdover from the old name "ymakefile".) */
327#define YMF_PASS_LDFLAGS(flags) flags
a0528984 328
a0528984 329
b5457f14
GM
330#ifdef ORDINARY_LINK
331LD = $(CC)
332
333#else /* not ORDINARY_LINK */
334GNULIB_VAR = $(LIB_GCC)
335
336/* Fix linking if compiled with GCC. */
337#if defined (__GNUC__) && ! defined (LINKER)
a0528984
EZ
338/* Versions of GCC >= 2.0 put their library, libgcc.a, in obscure
339 places that are difficult to figure out at make time. Fortunately,
340 these same versions allow you to pass arbitrary flags on to the
be9b5a60 341 linker, so there is no reason not to use it as a linker.
a0528984 342
be9b5a60 343 Well, it is not quite perfect. The "-nostdlib" keeps GCC from
a0528984
EZ
344 searching for libraries in its internal directories, so we have to
345 ask GCC explicitly where to find libgcc.a. */
a0528984 346#define LINKER $(CC) -nostdlib
b5457f14
GM
347/* GCC passes any argument prefixed with -Xlinker directly to the linker.
348 See prefix-args.c for an explanation of why we do not do this with the
349 shell''s ``for'' construct. Note that sane people do not have '.' in
350 their paths, so we must use ./prefix-args. */
351#undef YMF_PASS_LDFLAGS
a0528984 352#define YMF_PASS_LDFLAGS(flags) `./prefix-args -Xlinker flags`
b5457f14 353#endif /* defined (__GNUC__) && ! defined (LINKER) */
a0528984 354
a0528984
EZ
355#ifdef LINKER
356LD=LINKER
357#else /* not LINKER */
358LD=ld
359#endif /* not LINKER */
b5457f14 360
a0528984
EZ
361#endif /* not ORDINARY_LINK */
362
8877ca0f
GM
363
364#ifdef NS_IMPL_GNUSTEP
365LD=$(CC) -rdynamic
366#endif
367
368
11842bd8
GM
369/* lastfile must follow all files whose initialized data areas should
370 be dumped as pure by dump-emacs. */
01ef9d36 371obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
f44e260c 372 charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \
033b73e2 373 cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
a0528984
EZ
374 emacs.o keyboard.o macros.o keymap.o sysdep.o \
375 buffer.o filelock.o insdel.o marker.o \
376 minibuf.o fileio.o dired.o filemode.o \
377 cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
378 alloc.o data.o doc.o editfns.o callint.o \
0f91ebe6 379 eval.o floatfns.o fns.o font.o print.o lread.o \
5a903aa9 380 syntax.o $(UNEXEC_OBJ) bytecode.o \
a0528984
EZ
381 process.o callproc.o \
382 region-cache.o sound.o atimer.o \
383 doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
6e546d18 384 $(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ)
a0528984
EZ
385
386/* Object files used on some machine or other.
e20f1f07 387 These go in the DOC file on all machines in case they are needed. */
04a697fe 388SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
d87a9ab8 389 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
25c72475 390 fontset.o dbusbind.o \
a68fda4a 391 nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
c9fc02c7 392 w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
6e546d18 393 w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_OBJ)
a0528984 394
7acac9f4
GM
395gmallocobj =
396rallocobj =
397vmlimitobj =
a0528984 398#ifndef SYSTEM_MALLOC
2fa0eedf
RS
399#ifndef DOUG_LEA_MALLOC
400gmallocobj = gmalloc.o
401#endif
402
a0528984 403#ifdef REL_ALLOC
2fa0eedf
RS
404rallocobj = ralloc.o
405#endif
5a1bb006
GM
406
407vmlimitobj = vm-limit.o
7eb1ac33 408#endif /* !SYSTEM_MALLOC */
2fa0eedf 409
f724825e 410/* Empty on Cygwin, lastfile.o elsewhere. */
7acac9f4 411PRE_ALLOC_OBJ=@PRE_ALLOC_OBJ@
f724825e 412/* lastfile.o vm-limit.o on Cygwin, $vmlimitobj elsewhere. */
7acac9f4 413POST_ALLOC_OBJ=@POST_ALLOC_OBJ@
5a1bb006 414
7eb1ac33 415/* List of object files that make-docfile should not be told about. */
40c17879 416otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(gmallocobj) $(rallocobj) \
7acac9f4 417 $(POST_ALLOC_OBJ) $(WIDGET_OBJ) $(LIBOBJS)
a0528984 418
00e2f46c
GM
419/* This is the platform-specific list of Lisp files loaded into the
420 dumped Emacs. It is arranged like this because it is easier to generate
421 it semi-mechanically from loadup.el this way.
a0528984
EZ
422
423 Note that this list should not include lisp files which might not
424 be present, like site-load.el and site-init.el; this makefile
425 expects them all to be either present or buildable.
426
00e2f46c
GM
427 Files which are loaded unconditionally (i.e., on all platforms) should
428 also be in shortlisp. Files which are loaded conditionally (i.e., only
429 on some platforms) should instead be in SOME_MACHINE_LISP. */
a0528984 430
c045cf6e 431/* Place loaddefs.el first, so it gets generated first, since it is on
b4945b95
SM
432 the critical path (relevant in parallel compilations). */
433
a0528984 434lisp= \
b4945b95 435 ${lispsource}loaddefs.el \
a0528984
EZ
436 ${lispsource}abbrev.elc \
437 ${lispsource}buff-menu.elc \
aae5b722 438 ${lispsource}button.elc \
f984e73e 439 ${lispsource}emacs-lisp/byte-run.elc \
731055f5 440 ${lispsource}composite.elc \
bfcf6dbe 441 ${lispsource}cus-face.elc \
d381a855 442 ${lispsource}cus-start.elc \
a0528984 443 ${lispsource}custom.elc \
6e860d15 444 ${lispsource}emacs-lisp/backquote.elc \
a0528984
EZ
445 ${lispsource}emacs-lisp/lisp-mode.elc \
446 ${lispsource}emacs-lisp/lisp.elc \
447 ${lispsource}env.elc \
448 ${lispsource}faces.elc \
449 ${lispsource}files.elc \
450 ${lispsource}format.elc \
451 ${lispsource}facemenu.elc \
11842bd8 452 ${MOUSE_SUPPORT} \
f984e73e 453 ${lispsource}emacs-lisp/float-sup.elc \
af0ad939 454 ${lispsource}frame.elc \
a0528984
EZ
455 ${lispsource}help.elc \
456 ${lispsource}indent.elc \
457 ${lispsource}isearch.elc \
29f05691 458 ${lispsource}rfn-eshadow.elc \
a0528984 459 ${lispsource}loadup.el \
aae5b722 460 ${lispsource}bindings.elc \
f984e73e 461 ${lispsource}emacs-lisp/map-ynp.elc \
a0528984
EZ
462 ${lispsource}menu-bar.elc \
463 ${lispsource}international/mule.elc \
e118d2be 464 ${lispsource}international/mule-conf.elc \
a0528984
EZ
465 ${lispsource}international/mule-cmds.elc \
466 ${lispsource}international/characters.elc \
15e2814c 467 ${lispsource}international/charprop.el \
a0528984 468 ${lispsource}case-table.elc \
e118d2be
AS
469 ${lispsource}language/chinese.elc \
470 ${lispsource}language/cyrillic.elc \
7e694795 471 ${lispsource}language/indian.elc \
cc8d1311 472 ${lispsource}language/sinhala.el \
74fc84af 473 ${lispsource}language/english.el \
a0528984
EZ
474 ${lispsource}language/ethiopic.elc \
475 ${lispsource}language/european.elc \
74fc84af
EZ
476 ${lispsource}language/czech.el \
477 ${lispsource}language/slovak.el \
478 ${lispsource}language/romanian.el \
479 ${lispsource}language/greek.el \
480 ${lispsource}language/hebrew.el \
481 ${lispsource}language/japanese.el \
482 ${lispsource}language/korean.el \
483 ${lispsource}language/lao.el \
c9228487 484 ${lispsource}language/cham.el \
16460a76 485 ${lispsource}language/tai-viet.el \
74fc84af 486 ${lispsource}language/thai.el \
a0528984 487 ${lispsource}language/tibetan.elc \
e118d2be 488 ${lispsource}language/vietnamese.elc \
74fc84af 489 ${lispsource}language/misc-lang.el \
1e9a6186
DL
490 ${lispsource}language/utf-8-lang.el \
491 ${lispsource}language/georgian.el \
0e45710c 492 ${lispsource}language/khmer.el \
7f6519c5 493 ${lispsource}language/burmese.el \
a0528984
EZ
494 ${lispsource}paths.el \
495 ${lispsource}register.elc \
496 ${lispsource}replace.elc \
497 ${lispsource}simple.elc \
32bae13c 498 ${lispsource}minibuffer.elc \
a0528984
EZ
499 ${lispsource}startup.elc \
500 ${lispsource}subr.elc \
501 ${lispsource}term/tty-colors.elc \
bfcf6dbe 502 ${lispsource}font-core.elc \
1f7b1131
DN
503 ${lispsource}emacs-lisp/syntax.elc \
504 ${lispsource}font-lock.elc \
505 ${lispsource}jit-lock.elc \
a0528984
EZ
506 ${lispsource}textmodes/fill.elc \
507 ${lispsource}textmodes/page.elc \
508 ${lispsource}textmodes/paragraphs.elc \
509 ${lispsource}textmodes/text-mode.elc \
f984e73e 510 ${lispsource}emacs-lisp/timer.elc \
6e6851b0 511 ${lispsource}jka-cmpr-hook.elc \
a0528984
EZ
512 ${lispsource}vc-hooks.elc \
513 ${lispsource}ediff-hook.elc \
86914123 514 ${lispsource}epa-hook.elc \
11842bd8 515 ${TOOLTIP_SUPPORT} \
f14d1dfd 516 ${MSDOS_SUPPORT} \
11842bd8 517 ${WINDOW_SUPPORT} \
e6ec4e99 518 ${NS_SUPPORT} \
a0528984
EZ
519 ${lispsource}widget.elc \
520 ${lispsource}window.elc \
521 ${lispsource}version.el
522
00e2f46c
GM
523/* List of relative names for those files from $lisp that are loaded
524 unconditionally (i.e. on all platforms). Files from $lisp that
525 are only loaded on some platforms should instead be placed in
526 SOME_MACHINE_LISP. The only reason this variable exists is to prevent
527 the make-docfile command-line getting too long for some systems. */
a0528984 528shortlisp= \
b4945b95 529 ../lisp/loaddefs.el \
a0528984
EZ
530 ../lisp/abbrev.elc \
531 ../lisp/buff-menu.elc \
aae5b722 532 ../lisp/button.elc \
f984e73e 533 ../lisp/emacs-lisp/byte-run.elc \
731055f5 534 ../lisp/composite.elc \
bfcf6dbe 535 ../lisp/cus-face.elc \
d381a855 536 ../lisp/cus-start.elc \
a0528984 537 ../lisp/custom.elc \
f7d5d963 538 ../lisp/emacs-lisp/backquote.elc \
a0528984
EZ
539 ../lisp/emacs-lisp/lisp-mode.elc \
540 ../lisp/emacs-lisp/lisp.elc \
541 ../lisp/facemenu.elc \
542 ../lisp/faces.elc \
543 ../lisp/files.elc \
f984e73e 544 ../lisp/emacs-lisp/float-sup.elc \
a0528984
EZ
545 ../lisp/format.elc \
546 ../lisp/frame.elc \
547 ../lisp/help.elc \
548 ../lisp/indent.elc \
549 ../lisp/isearch.elc \
29f05691 550 ../lisp/rfn-eshadow.elc \
a0528984 551 ../lisp/loadup.el \
aae5b722 552 ../lisp/bindings.elc \
f984e73e 553 ../lisp/emacs-lisp/map-ynp.elc \
a0528984
EZ
554 ../lisp/env.elc \
555 ../lisp/international/mule.elc \
e118d2be 556 ../lisp/international/mule-conf.elc \
a0528984
EZ
557 ../lisp/international/mule-cmds.elc \
558 ../lisp/international/characters.elc \
559 ../lisp/case-table.elc \
e118d2be
AS
560 ../lisp/language/chinese.elc \
561 ../lisp/language/cyrillic.elc \
7e694795 562 ../lisp/language/indian.elc \
cc8d1311 563 ../lisp/language/sinhala.el \
74fc84af 564 ../lisp/language/english.el \
a0528984
EZ
565 ../lisp/language/ethiopic.elc \
566 ../lisp/language/european.elc \
74fc84af
EZ
567 ../lisp/language/czech.el \
568 ../lisp/language/slovak.el \
569 ../lisp/language/romanian.el \
570 ../lisp/language/greek.el \
571 ../lisp/language/hebrew.el \
572 ../lisp/language/japanese.el \
573 ../lisp/language/korean.el \
574 ../lisp/language/lao.el \
c9228487 575 ../lisp/language/cham.el \
16460a76 576 ../lisp/language/tai-viet.el \
74fc84af 577 ../lisp/language/thai.el \
a0528984 578 ../lisp/language/tibetan.elc \
e118d2be 579 ../lisp/language/vietnamese.elc \
74fc84af 580 ../lisp/language/misc-lang.el \
1e9a6186
DL
581 ../lisp/language/utf-8-lang.el \
582 ../lisp/language/georgian.el \
0e45710c 583 ../lisp/language/khmer.el \
7f6519c5 584 ../lisp/language/burmese.el \
f7d5d963 585 ../lisp/menu-bar.elc \
a0528984
EZ
586 ../lisp/paths.el \
587 ../lisp/register.elc \
588 ../lisp/replace.elc \
589 ../lisp/simple.elc \
32bae13c 590 ../lisp/minibuffer.elc \
a0528984
EZ
591 ../lisp/startup.elc \
592 ../lisp/subr.elc \
593 ../lisp/term/tty-colors.elc \
59809627 594 ../lisp/font-core.elc \
1f7b1131
DN
595 ../lisp/emacs-lisp/syntax.elc \
596 ../lisp/font-lock.elc \
597 ../lisp/jit-lock.elc \
a0528984
EZ
598 ../lisp/textmodes/fill.elc \
599 ../lisp/textmodes/page.elc \
600 ../lisp/textmodes/paragraphs.elc \
601 ../lisp/textmodes/text-mode.elc \
f984e73e 602 ../lisp/emacs-lisp/timer.elc \
a0528984 603 ../lisp/vc-hooks.elc \
6e6851b0 604 ../lisp/jka-cmpr-hook.elc \
a0528984 605 ../lisp/ediff-hook.elc \
86914123 606 ../lisp/epa-hook.elc \
a0528984
EZ
607 ../lisp/widget.elc \
608 ../lisp/window.elc \
609 ../lisp/version.el
610
00e2f46c
GM
611/* Like $shortlisp, but includes only those files from $lisp that are loaded
612 conditionally (i.e., only on some platforms). */
60a3d7ee
DN
613SOME_MACHINE_LISP = ../lisp/mouse.elc \
614 ../lisp/select.elc ../lisp/scroll-bar.elc \
60a3d7ee
DN
615 ../lisp/ls-lisp.elc ../lisp/dos-fns.elc \
616 ../lisp/w32-fns.elc ../lisp/dos-w32.elc \
617 ../lisp/disp-table.elc ../lisp/dos-vars.elc \
618 ../lisp/tooltip.elc ../lisp/image.elc \
619 ../lisp/fringe.elc ../lisp/dnd.elc \
620 ../lisp/mwheel.elc ../lisp/tool-bar.elc \
f904c0f9 621 ../lisp/x-dnd.elc ../lisp/dynamic-setting.elc \
60a3d7ee 622 ../lisp/international/ccl.elc \
60a3d7ee
DN
623 ../lisp/international/fontset.elc \
624 ../lisp/mouse.elc \
24ed93fb 625 ../lisp/term/common-win.elc \
7206e7b7 626 ../lisp/term/x-win.elc \
e227ba05 627 ../lisp/term/pc-win.elc ../lisp/term/internal.elc \
b7d552d6
GM
628 ../lisp/term/ns-win.elc ../lisp/term/w32-win.elc \
629 ../lisp/emacs-lisp/easymenu.elc
a0528984
EZ
630
631/* Construct full set of libraries to be linked.
632 Note that SunOS needs -lm to come before -lc; otherwise, you get
633 duplicated symbols. If the standard libraries were compiled
634 with GCC, we might need gnulib again after them. */
edfda783 635
3dee6fdb 636LIBES = $(LOADLIBES) $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \
5a903aa9 637 $(RSVG_LIBS) $(DBUS_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \
97efb629 638 $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \
5a903aa9
GM
639 $(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \
640 $(GNULIB_VAR) $(LIB_MATH) $(LIB_STANDARD) $(GNULIB_VAR)
a0528984 641
005bd5a2 642all: emacs${EXEEXT} $(OTHER_FILES)
a0528984 643
3df7b338 644/* Does anyone ever pay attention to the load-path-shadows output here? */
0c2b6f8e 645emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
a0528984 646#ifdef CANNOT_DUMP
108c7c97
AS
647 rm -f emacs${EXEEXT}
648 ln temacs${EXEEXT} emacs${EXEEXT}
c8edcc01 649 -EMACSLOADPATH=${lispsource} ./emacs -q -batch -f list-load-path-shadows
a0528984 650#else
83f1cb94 651 LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump
fc46d219
SM
652 @: This new Emacs is as functional and more efficient then
653 @: bootstrap-emacs, so let us replace it.
654 -ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
a0528984 655 -./emacs -q -batch -f list-load-path-shadows
c8edcc01 656#endif /* ! defined (CANNOT_DUMP) */
a0528984
EZ
657
658/* We run make-docfile twice because the command line may get too long
659 on some systems. */
660/* ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may
661 or may not be included in ${obj}, but they are always included in
662 ${SOME_MACHINE_OBJECTS}. Since a file is processed when it is mentioned
663 for the first time, this prevents any variation between configurations
664 in the contents of the DOC file.
665 Likewise for ${SOME_MACHINE_LISP}. */
d7c664f3
SM
666/* Most of this Makefile refers to Lisp files via ${lispsource}, so
667 we also use ${lisp} rather than ${shortlisp} for the dependency since
668 the Makefile uses string equality to decide when we talk about identical
669 files. Apparently we pass ${shortlisp} rather than ${lisp} to make-docfile
670 only in order to reduce the command line length. --Stef */
671${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
a0528984
EZ
672 -rm -f ${etc}DOC
673 ${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
674 ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
675
108c7c97
AS
676${libsrc}make-docfile${EXEEXT}:
677 cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile${EXEEXT}
a0528984 678
878bde49 679buildobj.h: Makefile
005bd5a2 680 echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h
878bde49 681
8877ca0f 682temacs${EXEEXT}: $(START_FILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT}
122e9f8f 683#ifdef NS_IMPL_GNUSTEP
8877ca0f
GM
684 $(LD) YMF_PASS_LDFLAGS ( ${TEMACS_LDFLAGS} \
685 ${NS_IMPL_GNUSTEP_TEMACS_LDFLAGS} ) \
686 -o temacs ${START_FILES} ${obj} ${otherobj} ${LIBES}
edfda783 687#else
8877ca0f
GM
688 $(LD) YMF_PASS_LDFLAGS ( ${TEMACS_LDFLAGS} \
689 ${NS_IMPL_GNUSTEP_TEMACS_LDFLAGS} ) \
690 ${LDFLAGS} \
691 -o temacs ${START_FILES} ${obj} ${otherobj} ${LIBES}
edfda783 692#endif
a0528984 693
a53cfbe5 694prefix-args${EXEEXT}: prefix-args.o $(config_h)
f4c21026 695 $(CC) $(LDFLAGS) prefix-args.o -o prefix-args
a0528984 696
deeaffe1 697
1a82cca9
GM
698/* Only (possibly) used if HAVE_X11 && !USE_GTK, but no harm in always
699 defining. */
a0528984 700really-lwlib:
6b61353c 701 cd ${lwlibdir}; ${MAKE} ${MFLAGS} \
ed6281b0 702 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
a0528984
EZ
703 @true /* make -t should not create really-lwlib. */
704.PHONY: really-lwlib
a0528984 705
a0528984 706really-oldXMenu:
9c28b587 707 cd ${oldXMenudir}; ${MAKE} ${MFLAGS} \
ed6281b0 708 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
a0528984
EZ
709 @true /* make -t should not create really-oldXMenu. */
710.PHONY: really-oldXMenu
a0528984 711
1a82cca9
GM
712/* HAVE_X11 implies HAVE_X_WINDOWS and HAVE_MENUS. */
713#if defined (HAVE_X11) && ! defined (USE_GTK)
714/* We use stamp-xmenu with these two deps to both ensure that lwlib
715 gets remade based on its dependencies in its own makefile,
716 and remake temacs if lwlib gets changed by this. */
717stamp-oldxmenu: ${OLDXMENU} ../src/$(OLDXMENU)
718 touch stamp-oldxmenu
719/* Supply an ordering for parallel make. */
720../src/$(OLDXMENU): ${OLDXMENU}
721
722$(OLDXMENU): $(OLDXMENU_TARGET)
723
724#else /* !HAVE_X11 || USE_GTK */
5aa17bb2 725/* We don''t really need this, but satisfy the dependency. */
a0528984
EZ
726stamp-oldxmenu:
727 touch stamp-oldxmenu
3df7b338 728#endif /* HAVE_X11 && !USE_GTK */
a0528984
EZ
729
730../config.status:: epaths.in
731 @echo "The file epaths.h needs to be set up from epaths.in."
732 @echo "Please run the `configure' script again."
733 exit 1
734
735../config.status:: config.in
736 @echo "The file config.h needs to be set up from config.in."
737 @echo "Please run the `configure' script again."
738 exit 1
739
a53cfbe5 740ecrt0.o: ecrt0.c $(config_h)
cfc86c7a
JD
741#ifdef AUTO_DEPEND
742 @-test -d deps || mkdir deps
743#endif
19d4c244 744 $(CC) -c $(ALL_CFLAGS) ${srcdir}/ecrt0.c
a53cfbe5
JD
745doc.o: buildobj.h
746
747#ifndef AUTO_DEPEND
a0528984 748
a48bc865
GM
749/* FIXME some of these dependencies are platform-specific.
750Eg callproc.c only depends on w32.h for WINDOWSNT builds.
751One way to fix this would be to replace w32.h (etc) by $(W32_H),
752a variable set by configure. Does not seem worth the trouble.
11842bd8
GM
753Since the w32 build does not even use this file, you might ask
754why these dependencies are here at all...
a48bc865
GM
755
756nsgui.h: In fact, every .o file depends directly or indirectly on
757dispextern.h and hence nsgui.h under NS. But the ones that actually
758use stuff there are more limited. */
3f670e9a
EZ
759atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \
760 $(config_h)
ad55bd46 761bidi.o: bidi.c buffer.h character.h dispextern.h lisp.h $(config_h)
a0528984 762buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \
3f670e9a
EZ
763 $(INTERVALS_H) blockinput.h atimer.h systime.h character.h \
764 indent.h keyboard.h coding.h keymap.h frame.h lisp.h $(config_h)
21065c92 765callint.o: callint.c window.h commands.h buffer.h keymap.h \
3f670e9a 766 keyboard.h dispextern.h systime.h coding.h composite.h lisp.h $(config_h)
0a5d24ae 767callproc.o: callproc.c epaths.h buffer.h commands.h lisp.h $(config_h) \
8f924df7 768 process.h systty.h syssignal.h character.h coding.h ccl.h msdos.h \
3f670e9a
EZ
769 composite.h w32.h blockinput.h atimer.h systime.h frame.h termhooks.h \
770 buffer.h
85969c22 771casefiddle.o: casefiddle.c syntax.h commands.h buffer.h character.h \
3f670e9a
EZ
772 composite.h keymap.h lisp.h $(config_h)
773casetab.o: casetab.c buffer.h character.h lisp.h $(config_h)
a63aa692 774category.o: category.c category.h buffer.h charset.h keymap.h \
0a5d24ae 775 character.h lisp.h $(config_h)
3f670e9a 776ccl.o: ccl.c ccl.h charset.h character.h coding.h composite.h lisp.h $(config_h)
85969c22 777character.o: character.c character.h buffer.h charset.h composite.h disptab.h \
0a5d24ae 778 lisp.h $(config_h)
85969c22 779charset.o: charset.c charset.h character.h buffer.h coding.h composite.h \
0a5d24ae 780 disptab.h lisp.h $(config_h)
3f670e9a
EZ
781chartab.o: charset.h character.h ccl.h lisp.h $(config_h)
782coding.o: coding.c coding.h ccl.h buffer.h character.h charset.h composite.h \
0a5d24ae 783 window.h dispextern.h frame.h termhooks.h lisp.h $(config_h)
3f670e9a 784cm.o: cm.c frame.h cm.h termhooks.h termchar.h dispextern.h lisp.h $(config_h)
0a5d24ae 785cmds.o: cmds.c syntax.h buffer.h character.h commands.h window.h lisp.h $(config_h) \
3f670e9a
EZ
786 msdos.h dispextern.h keyboard.h keymap.h systime.h coding.h frame.h \
787 composite.h
a0528984 788pre-crt0.o: pre-crt0.c
0a5d24ae
DN
789dbusbind.o: dbusbind.c termhooks.h frame.h keyboard.h lisp.h $(config_h)
790dired.o: dired.c commands.h buffer.h lisp.h $(config_h) character.h charset.h \
3f670e9a
EZ
791 coding.h regex.h systime.h blockinput.h atimer.h composite.h
792dispnew.o: dispnew.c systime.h commands.h process.h frame.h coding.h \
793 window.h buffer.h termchar.h termopts.h termhooks.h cm.h \
517d086b 794 disptab.h indent.h $(INTERVALS_H) nsgui.h \
3f670e9a 795 xterm.h blockinput.h atimer.h character.h msdos.h keyboard.h \
0a5d24ae 796 syssignal.h lisp.h $(config_h)
3f670e9a
EZ
797doc.o: doc.c lisp.h $(config_h) epaths.h buffer.h keyboard.h keymap.h \
798 character.h systime.h coding.h composite.h
0a5d24ae 799doprnt.o: doprnt.c character.h lisp.h $(config_h)
21065c92 800dosfns.o: buffer.h termchar.h termhooks.h frame.h blockinput.h window.h \
ffb72b67 801 msdos.h dosfns.h dispextern.h charset.h coding.h atimer.h systime.h \
0a5d24ae 802 lisp.h $(config_h)
bd7bbf29 803editfns.o: editfns.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
3f670e9a 804 coding.h frame.h blockinput.h atimer.h lisp.h $(config_h)
a0528984 805emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \
0a5d24ae 806 termhooks.h buffer.h atimer.h systime.h $(INTERVALS_H) lisp.h $(config_h) \
3f670e9a 807 window.h dispextern.h keyboard.h keymap.h frame.h coding.h
bd7bbf29 808fileio.o: fileio.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
3f670e9a
EZ
809 coding.h msdos.h blockinput.h atimer.h lisp.h $(config_h) frame.h commands.h
810filelock.o: filelock.c buffer.h character.h coding.h systime.h composite.h \
811 lisp.h $(config_h)
812filemode.o: filemode.c $(config_h)
a0528984 813frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
08b3caa9 814 blockinput.h atimer.h systime.h buffer.h character.h fontset.h font.h \
517d086b
GM
815 msdos.h dosfns.h dispextern.h w32term.h nsgui.h termchar.h coding.h \
816 composite.h lisp.h $(config_h) termhooks.h ccl.h
817fringe.o: fringe.c dispextern.h nsgui.h frame.h window.h buffer.h termhooks.h \
3f670e9a 818 blockinput.h atimer.h systime.h lisp.h $(config_h)
08b1e593 819font.o: font.c dispextern.h frame.h window.h ccl.h character.h charset.h \
517d086b 820 font.h lisp.h $(config_h) buffer.h composite.h fontset.h xterm.h nsgui.h
6b7f0860 821ftfont.o: dispextern.h frame.h character.h charset.h composite.h font.h \
3f670e9a
EZ
822 lisp.h $(config_h) blockinput.h atimer.h systime.h coding.h fontset.h \
823 ccl.h ftfont.h
824fontset.o: fontset.c fontset.h ccl.h buffer.h character.h \
825 charset.h frame.h keyboard.h termhooks.h font.h lisp.h $(config_h) \
517d086b
GM
826 blockinput.h atimer.h systime.h coding.h $(INTERVALS_H) nsgui.h \
827 window.h xterm.h
a0528984 828getloadavg.o: getloadavg.c $(config_h)
0a5d24ae 829gtkutil.o: gtkutil.c gtkutil.h xterm.h lisp.h frame.h lisp.h $(config_h) \
b9fd67bd 830 blockinput.h window.h atimer.h systime.h termhooks.h keyboard.h \
3f670e9a 831 charset.h coding.h syssignal.h dispextern.h composite.h
6b61353c 832image.o: image.c frame.h window.h dispextern.h blockinput.h atimer.h \
3f670e9a
EZ
833 systime.h xterm.h w32term.h w32gui.h font.h epaths.h character.h coding.h \
834 nsterm.h nsgui.h lisp.h $(config_h) composite.h termhooks.h ccl.h
0a5d24ae 835indent.o: indent.c frame.h window.h indent.h buffer.h lisp.h $(config_h) termchar.h \
3f670e9a
EZ
836 termopts.h disptab.h region-cache.h character.h category.h \
837 keyboard.h systime.h coding.h $(INTERVALS_H)
bd7bbf29 838insdel.o: insdel.c window.h buffer.h $(INTERVALS_H) blockinput.h character.h \
0a5d24ae 839 dispextern.h atimer.h systime.h region-cache.h lisp.h $(config_h)
85969c22 840keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \
a0528984 841 commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \
3f670e9a 842 systime.h syntax.h $(INTERVALS_H) blockinput.h atimer.h composite.h \
517d086b 843 xterm.h puresize.h msdos.h keymap.h w32term.h nsterm.h nsgui.h coding.h \
0a5d24ae 844 lisp.h $(config_h)
a0528984 845keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \
bd7bbf29 846 atimer.h systime.h puresize.h character.h charset.h $(INTERVALS_H) keymap.h window.h \
3f670e9a 847 coding.h frame.h lisp.h $(config_h)
0a5d24ae 848lastfile.o: lastfile.c $(config_h)
a0528984 849macros.o: macros.c window.h buffer.h commands.h macros.h keyboard.h \
3f670e9a 850 dispextern.h lisp.h $(config_h) systime.h coding.h composite.h
a0528984 851gmalloc.o: gmalloc.c $(config_h)
0a5d24ae
DN
852ralloc.o: ralloc.c lisp.h $(config_h)
853vm-limit.o: vm-limit.c mem-limits.h lisp.h $(config_h)
854marker.o: marker.c buffer.h character.h lisp.h $(config_h)
39c9a034 855md5.o: md5.c md5.h $(config_h)
3f670e9a 856minibuf.o: minibuf.c syntax.h frame.h window.h keyboard.h systime.h \
bd7bbf29 857 buffer.h commands.h character.h msdos.h $(INTERVALS_H) keymap.h \
3f670e9a 858 termhooks.h lisp.h $(config_h) coding.h
a0528984 859mktime.o: mktime.c $(config_h)
a0528984 860msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \
85969c22 861 termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \
0a5d24ae 862 keyboard.h $(INTERVALS_H) buffer.h commands.h blockinput.h atimer.h lisp.h $(config_h)
55737942 863nsfns.o: nsfns.m charset.h nsterm.h nsgui.h frame.h window.h buffer.h \
0a7df391 864 dispextern.h fontset.h $(INTERVALS_H) keyboard.h blockinput.h \
0a5d24ae
DN
865 atimer.h systime.h epaths.h termhooks.h coding.h systime.h lisp.h $(config_h)
866nsfont.o: nsterm.h dispextern.h frame.h lisp.h lisp.h $(config_h)
867nsimage.o: nsimage.m nsterm.h lisp.h $(config_h)
55737942
AR
868nsmenu.o: nsmenu.m termhooks.h frame.h window.h dispextern.h \
869 nsgui.h keyboard.h blockinput.h atimer.h systime.h buffer.h \
0a5d24ae 870 nsterm.h lisp.h $(config_h)
55737942
AR
871nsterm.o: nsterm.m blockinput.h atimer.h systime.h syssignal.h nsterm.h \
872 nsgui.h frame.h charset.h ccl.h dispextern.h fontset.h termhooks.h \
873 termopts.h termchar.h disptab.h buffer.h window.h keyboard.h \
0a5d24ae
DN
874 $(INTERVALS_H) process.h coding.h lisp.h $(config_h)
875nsselect.o: nsselect.m blockinput.h nsterm.h nsgui.h frame.h lisp.h $(config_h)
a0528984
EZ
876process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \
877 commands.h syssignal.h systime.h systty.h syswait.h frame.h dispextern.h \
878 blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \
3f670e9a
EZ
879 keyboard.h lisp.h $(config_h) character.h xgselect.h sysselect.h
880regex.o: regex.c syntax.h buffer.h lisp.h $(config_h) regex.h category.h character.h
0a5d24ae 881region-cache.o: region-cache.c buffer.h region-cache.h lisp.h $(config_h)
a0528984 882scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \
3f670e9a 883 termhooks.h lisp.h $(config_h) systime.h coding.h composite.h window.h
a0528984 884search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \
6660e3a8 885 blockinput.h atimer.h systime.h category.h character.h charset.h \
3f670e9a 886 $(INTERVALS_H) \
0a5d24ae 887 lisp.h $(config_h)
3f670e9a 888sound.o: sound.c dispextern.h syssignal.h lisp.h $(config_h) atimer.h systime.h
a0528984 889strftime.o: strftime.c $(config_h)
85969c22 890syntax.o: syntax.c syntax.h buffer.h commands.h category.h character.h \
3f670e9a 891 keymap.h regex.h $(INTERVALS_H) lisp.h $(config_h)
4524691f 892sysdep.o: sysdep.c syssignal.h systty.h systime.h syswait.h blockinput.h \
3f670e9a
EZ
893 process.h dispextern.h termhooks.h termchar.h termopts.h coding.h \
894 frame.h atimer.h window.h msdos.h dosfns.h keyboard.h cm.h lisp.h $(config_h) \
895 composite.h
0a5d24ae 896term.o: term.c termchar.h termhooks.h termopts.h lisp.h $(config_h) cm.h frame.h \
3f670e9a 897 disptab.h keyboard.h character.h charset.h coding.h ccl.h xterm.h \
f78c2c97 898 msdos.h window.h keymap.h blockinput.h atimer.h systime.h systty.h \
3f670e9a 899 syssignal.h $(INTERVALS_H) buffer.h
0a5d24ae 900termcap.o: termcap.c lisp.h $(config_h)
ed8dad6b 901terminal.o: terminal.c frame.h termchar.h termhooks.h charset.h coding.h \
3f670e9a 902 keyboard.h lisp.h $(config_h) dispextern.h composite.h systime.h
0a5d24ae
DN
903terminfo.o: terminfo.c lisp.h $(config_h)
904tparam.o: tparam.c lisp.h $(config_h)
3f670e9a 905undo.o: undo.c buffer.h commands.h window.h dispextern.h lisp.h $(config_h)
0a5d24ae 906unexaix.o: unexaix.c lisp.h $(config_h)
f2a77c3a 907unexalpha.o: unexalpha.c $(config_h)
0a5d24ae
DN
908unexcw.o: unexcw.c lisp.h $(config_h)
909unexec.o: unexec.c lisp.h $(config_h)
f2a77c3a
DN
910unexelf.o: unexelf.c $(config_h)
911unexhp9k800.o: unexhp9k800.c $(config_h)
912unexmacosx.o: unexmacosx.c $(config_h)
0a5d24ae 913unexsol.o: unexsol.c lisp.h $(config_h)
f2a77c3a 914unexw32.o: unexw32.c $(config_h)
a0528984 915w16select.o: w16select.c dispextern.h frame.h blockinput.h atimer.h systime.h \
0a5d24ae 916 msdos.h buffer.h charset.h coding.h composite.h lisp.h $(config_h)
a0528984 917widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \
0a5d24ae 918 $(srcdir)/../lwlib/lwlib.h lisp.h $(config_h)
a0528984 919window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \
3f670e9a 920 disptab.h keyboard.h msdos.h coding.h termhooks.h \
bd7bbf29 921 keymap.h blockinput.h atimer.h systime.h $(INTERVALS_H) \
517d086b 922 xterm.h w32term.h nsterm.h nsgui.h lisp.h $(config_h)
a63aa692 923xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h \
49628785 924 coding.h termchar.h frame.h window.h disptab.h termhooks.h character.h \
517d086b
GM
925 charset.h lisp.h $(config_h) keyboard.h $(INTERVALS_H) region-cache.h \
926 xterm.h w32term.h nsterm.h nsgui.h msdos.h composite.h fontset.h ccl.h \
08b3caa9 927 blockinput.h atimer.h systime.h keymap.h font.h
a63aa692
MB
928xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \
929 window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \
3f670e9a 930 systime.h keyboard.h fontset.h w32term.h nsterm.h coding.h ccl.h \
517d086b 931 $(INTERVALS_H) nsgui.h termchar.h termhooks.h font.h lisp.h $(config_h)
a0528984
EZ
932xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \
933 $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \
0a5d24ae 934 character.h charset.h coding.h gtkutil.h lisp.h $(config_h) termhooks.h \
3f670e9a 935 fontset.h termchar.h font.h xsettings.h $(INTERVALS_H) ccl.h
7de94409 936xfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \
3f670e9a 937 font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h
7de94409 938xftfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \
3f670e9a 939 font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h ftfont.h
7de94409 940ftxfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \
3f670e9a 941 font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h
71015b45 942menu.o: menu.c lisp.h keyboard.h keymap.h frame.h termhooks.h blockinput.h \
e7c9048f 943 dispextern.h $(srcdir)/../lwlib/lwlib.h xterm.h gtkutil.h menu.h \
517d086b 944 lisp.h $(config_h) systime.h coding.h composite.h window.h atimer.h nsgui.h
c2d0b18a 945xmenu.o: xmenu.c xterm.h termhooks.h window.h dispextern.h frame.h buffer.h \
85969c22 946 charset.h keyboard.h $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h \
3f670e9a
EZ
947 systime.h gtkutil.h msdos.h coding.h menu.h lisp.h $(config_h) composite.h \
948 keymap.h sysselect.h
c2d0b18a 949xterm.o: xterm.c xterm.h termhooks.h termopts.h termchar.h window.h buffer.h \
85969c22 950 dispextern.h frame.h disptab.h blockinput.h atimer.h systime.h syssignal.h \
73f838ad 951 keyboard.h emacs-icon.h character.h charset.h ccl.h fontset.h composite.h \
3f670e9a
EZ
952 coding.h process.h gtkutil.h font.h fontset.h lisp.h $(config_h) \
953 xsettings.h intervals.h keymap.h xgselect.h sysselect.h
4524691f 954xselect.o: xselect.c process.h dispextern.h frame.h xterm.h blockinput.h \
3f670e9a
EZ
955 buffer.h atimer.h systime.h termhooks.h lisp.h $(config_h) keyboard.h \
956 coding.h composite.h
957xgselect.o: xgselect.h systime.h sysselect.h lisp.h $(config_h)
0a5d24ae
DN
958xrdb.o: xrdb.c lisp.h $(config_h) epaths.h
959xsmfns.o: xsmfns.c lisp.h $(config_h) systime.h sysselect.h termhooks.h xterm.h \
3f670e9a
EZ
960 lisp.h termopts.h frame.h dispextern.h
961xsettings.o: xterm.h xsettings.h lisp.h frame.h termhooks.h $(config_h) \
962 dispextern.h keyboard.h systime.h coding.h composite.h blockinput.h atimer.h \
963 termopts.h
a0528984 964
e20f1f07 965/* The files of Lisp proper. */
3f670e9a
EZ
966alloc.o: alloc.c process.h frame.h window.h buffer.h puresize.h syssignal.h \
967 keyboard.h blockinput.h atimer.h systime.h character.h lisp.h $(config_h) \
49105cd0 968 $(INTERVALS_H) termhooks.h
a63aa692 969bytecode.o: bytecode.c buffer.h syntax.h character.h window.h dispextern.h \
0a5d24ae 970 frame.h xterm.h lisp.h $(config_h)
a63aa692 971data.o: data.c buffer.h puresize.h character.h syssignal.h keyboard.h frame.h \
3f670e9a
EZ
972 termhooks.h systime.h coding.h composite.h dispextern.h font.h ccl.h \
973 lisp.h $(config_h)
a0528984 974eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h \
3f670e9a 975 dispextern.h lisp.h $(config_h) coding.h composite.h xterm.h
0a5d24ae
DN
976floatfns.o: floatfns.c syssignal.h lisp.h $(config_h)
977fns.o: fns.c commands.h lisp.h $(config_h) frame.h buffer.h character.h keyboard.h \
3f670e9a
EZ
978 keymap.h window.h dispextern.h $(INTERVALS_H) coding.h md5.h \
979 blockinput.h atimer.h systime.h xterm.h
85969c22 980print.o: print.c process.h frame.h window.h buffer.h keyboard.h character.h \
3f670e9a
EZ
981 lisp.h $(config_h) termchar.h $(INTERVALS_H) msdos.h termhooks.h \
982 blockinput.h atimer.h systime.h font.h charset.h coding.h ccl.h
85969c22 983lread.o: lread.c commands.h keyboard.h buffer.h epaths.h character.h \
3f670e9a
EZ
984 charset.h lisp.h $(config_h) $(INTERVALS_H) termhooks.h coding.h msdos.h \
985 systime.h frame.h blockinput.h atimer.h
a0528984 986
e20f1f07 987/* Text properties support. */
3f670e9a 988composite.o: composite.c buffer.h character.h coding.h font.h ccl.h \
0a5d24ae 989 frame.h termhooks.h $(INTERVALS_H) window.h lisp.h $(config_h)
bd7bbf29 990intervals.o: intervals.c buffer.h $(INTERVALS_H) keyboard.h puresize.h \
3f670e9a
EZ
991 keymap.h lisp.h $(config_h) systime.h coding.h
992textprop.o: textprop.c buffer.h window.h $(INTERVALS_H) \
0a5d24ae 993 lisp.h $(config_h)
a0528984 994
a53cfbe5
JD
995#endif /* ! AUTO_DEPEND */
996
a0528984 997/* System-specific programs to be made.
e20f1f07 998 OTHER_FILES select which of these should be compiled. */
a0528984 999
edfda783 1000#ifdef HAVE_NS
06b62770
AR
1001${ns_appdir}: ${ns_appsrc}
1002 rm -fr ${ns_appdir}
1003 mkdir -p ${ns_appdir}
2b5f541b 1004 ( cd ${ns_appsrc} ; tar cfh - . ) | ( cd ${ns_appdir} ; umask 022; tar xf - )
edfda783 1005
06b62770
AR
1006${ns_appbindir}Emacs: emacs${EXEEXT}
1007 mkdir -p ${ns_appbindir}
1008 cp -f emacs${EXEEXT} ${ns_appbindir}Emacs
edfda783 1009
06b62770 1010ns-app: ${ns_appdir} ${ns_appbindir}Emacs
edfda783 1011#endif /* HAVE_NS */
e0f712ba 1012
a0528984 1013mostlyclean:
108c7c97 1014 rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a
a0528984 1015 rm -f ../etc/DOC
b4945b95 1016 rm -f bootstrap-emacs${EXEEXT} emacs-${version}${EXEEXT}
878bde49 1017 rm -f buildobj.h
a0528984 1018clean: mostlyclean
03bd3c1f 1019 rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT}
a53cfbe5 1020 -rm -rf deps
5c976973
AR
1021#ifdef HAVE_NS
1022 rm -fr ${ns_appdir}
5c976973 1023#endif
49f6eb95
SM
1024/* bootstrap-clean is used to clean up just before a bootstrap.
1025 It should remove all files generated during a compilation/bootstrap,
1026 but not things like config.status or TAGS. */
fd13748d
AS
1027bootstrap-clean: clean
1028 rm -f epaths.h config.h Makefile.c config.stamp stamp-oldxmenu ../etc/DOC-*
1029 if test -f ./.gdbinit; then \
1030 mv ./.gdbinit ./.gdbinit.save; \
1031 if test -f "${srcdir}/.gdbinit"; then rm -f ./.gdbinit.save; \
1032 else mv ./.gdbinit.save ./.gdbinit; fi; \
1033 fi
1034/**/# This is used in making a distribution.
1035/**/# Do not use it on development directories!
1036distclean: bootstrap-clean
1037 rm -f Makefile
a0528984
EZ
1038maintainer-clean: distclean
1039 @echo "This command is intended for maintainers to use;"
1040 @echo "it deletes files that may require special tools to rebuild."
1041 rm -f TAGS
1042versionclean:
03bd3c1f 1043 -rm -f emacs${EXEEXT} emacs-*.*.*${EXEEXT} ../etc/DOC*
a0528984
EZ
1044extraclean: distclean
1045 -rm -f *~ \#* m/?*~ s/?*~
1046
a0528984
EZ
1047/* Arrange to make a tags table TAGS-LISP for ../lisp,
1048 plus TAGS for the C files, which includes ../lisp/TAGS by reference. */
1049
50da4e56
SM
1050ctagsfiles1 = [xyzXYZ]*.[hcm]
1051ctagsfiles2 = [a-wA-W]*.[hcm]
a0528984
EZ
1052
1053TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
1054 ../lib-src/etags --include=TAGS-LISP --include=${lwlibdir}/TAGS \
1055 --regex='/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \
1056 $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
1057frc:
1058TAGS-LISP: frc
99b7e543 1059 $(MAKE) -f ${lispdir}Makefile TAGS-LISP ETAGS=../lib-src/etags
a0528984
EZ
1060
1061$(lwlibdir)TAGS:
1062 (cd $(lwlibdir); $(MAKE) -f $(lwlibdir)Makefile tags ETAGS=../lib-src/etags)
1063
1064tags: TAGS TAGS-LISP $(lwlibdir)TAGS
1065.PHONY: tags
1066
1067
1068/* Bootstrapping. */
fc46d219
SM
1069/* Bootstrapping right is difficult because of the circular dependencies.
1070 Furthermore, we have to deal with the fact that many compilation targets
1071 such as loaddefs.el or *.elc can typically be produced by any old
1072 Emacs executable, so we would like to avoid rebuilding them whenever
1073 we build a new Emacs executable.
1074 To solve the circularity, we use 2 different Emacs executables,
1075 "emacs" is the main target and "bootstrap-emacs" is the one used
1076 to build the *.elc and loaddefs.el files.
b4945b95
SM
1077 To solve the freshness issue, we used to use a third file "witness-emacs"
1078 which was used to witness the fact that there is a bootstrap-emacs
1079 executable, and then have dependencies on witness-emacs rather than
1080 bootstrap-emacs, but that lead to problems in parallel builds (because
1081 witness-emacs needed to be free from dependencies (to avoid rebuilding
1082 it), so it was compiled in parallel, leading typically to having 2
1083 processes dumping bootstrap-emacs at the same time).
1084 So instead, we replace the witness-emacs dependencies by conditional
1085 bootstrap-dependencies (via ${BOOTSTRAPEMACS}). Of course, since we do
1086 not want to rely on GNU Make features, we have to rely on an external
1087 script to do the conditional part of the dependency
1088 (i.e. see the ${SUBDIR} rule ../Makefile.in). */
fc46d219 1089
36565815
GM
1090.SUFFIXES: .elc .el
1091
b4945b95
SM
1092/* These suffix rules do not allow additional dependencies, sadly, so
1093 instead of adding a $(BOOTSTRAPEMACS) dependency here, we add it
1094 separately below.
1095 With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)" */
fc46d219 1096.el.elc:
82c3d67a
AS
1097 @cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \
1098 THEFILE=$< EMACS=${bootstrap_exe}
fc46d219 1099
b4945b95
SM
1100/* Since the .el.elc rule cannot specify an extra dependency, we do it here. */
1101${lisp} ${SOME_MACHINE_LISP}: $(BOOTSTRAPEMACS)
fc46d219 1102
56f6f760 1103${lispsource}loaddefs.el: $(BOOTSTRAPEMACS)
82c3d67a 1104 cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=${bootstrap_exe}
49f6eb95 1105
c60ee5e7 1106/* Dump an Emacs executable named bootstrap-emacs containing the
a0528984
EZ
1107 files from loadup.el in source form. */
1108
fc46d219 1109bootstrap-emacs${EXEEXT}: temacs${EXEEXT}
b4945b95 1110 cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs
a0528984 1111#ifdef CANNOT_DUMP
11d8ec4a 1112 ln -f temacs${EXEEXT} bootstrap-emacs${EXEEXT}
a0528984 1113#else
83f1cb94 1114 $(RUN_TEMACS) --batch --load loadup bootstrap
108c7c97 1115 mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
a0528984 1116#endif /* ! defined (CANNOT_DUMP) */
768efd84 1117 @: Compile some files earlier to speed up further compilation.
82c3d67a 1118 cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe}
a53cfbe5
JD
1119
1120#ifdef AUTO_DEPEND
49ebbd65 1121ALLOBJS=$(START_FILES) ${obj} ${otherobj} prefix-args.o
a53cfbe5
JD
1122-include $(ALLOBJS:%.o=deps/%.d)
1123#endif