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