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