Handle CANNOT_DUMP (partially) with configure.
[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
c1d0dcfd
GM
127LD=@LINKER@
128
5a903aa9
GM
129## May use $CRT_DIR.
130LIB_STANDARD=@LIB_STANDARD@
131
132## -lm, or empty.
133LIB_MATH=@LIB_MATH@
134
0dc2e11d
GM
135LIBTIFF=@LIBTIFF@
136LIBJPEG=@LIBJPEG@
137LIBPNG=@LIBPNG@
138LIBGIF=@LIBGIF@
139LIBXPM=@LIBXPM@
140XFT_LIBS=@XFT_LIBS@
3dee6fdb 141LIBX_EXTRA=$(LIBTIFF) $(LIBJPEG) $(LIBPNG) $(LIBGIF) $(LIBXPM) -lX11 $(XFT_LIBS)
0dc2e11d 142
5a903aa9
GM
143FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
144FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
145FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
146FREETYPE_LIBS = @FREETYPE_LIBS@
147LIBOTF_CFLAGS = @LIBOTF_CFLAGS@
148LIBOTF_LIBS = @LIBOTF_LIBS@
149M17N_FLT_CFLAGS = @M17N_FLT_CFLAGS@
150M17N_FLT_LIBS = @M17N_FLT_LIBS@
151
19d4c244
DN
152DBUS_CFLAGS = @DBUS_CFLAGS@
153DBUS_LIBS = @DBUS_LIBS@
10efe302 154DBUS_OBJ = @DBUS_OBJ@
19d4c244
DN
155
156GCONF_CFLAGS = @GCONF_CFLAGS@
157GCONF_LIBS = @GCONF_LIBS@
158
10efe302
GM
159GTK_OBJ=@GTK_OBJ@
160
40c17879
GM
161## -ltermcap, or -lncurses, or -lcurses, or "".
162LIBS_TERMCAP=@LIBS_TERMCAP@
163## terminfo.o if TERMINFO, else tparam.o.
164TERMCAP_OBJ=@TERMCAP_OBJ@
165
294c50a0
GM
166LIBXMU=@LIBXMU@
167
10efe302
GM
168LIBXSM=@LIBXSM@
169
8fdac2c3
GM
170LIBXTR6=@LIBXTR6@
171
3dee6fdb
GM
172## $(LIBXMU) -lXt $(LIBXTR6) -lXext if USE_X_TOOLKIT, else $(LIBXSM).
173## Only used if HAVE_X_WINDOWS.
174LIBXT_OTHER=@LIBXT_OTHER@
175
1a82cca9
GM
176## Only used if HAVE_X11 && !USE_GTK.
177## really-lwlib if USE_X_TOOLKIT, else really-oldxmenu.
178OLDXMENU_TARGET=@OLDXMENU_TARGET@
179
c0b0aed5
GM
180## If !HAVE_X11 || USE_GTK, empty.
181## Else if USE_X_TOOLKIT, ${lwlibdir}liblw.a.
182## Else ${oldXMenudir}libXMenu11.a.
183OLDXMENU=@OLDXMENU@
184
16455a85
GM
185## If HAVE_X11 && !USE_GTK, ${OLDXMENU} ../src/${OLDXMENU}; else empty.
186## We use stamp-xmenu with these two deps to both ensure that lwlib
187## gets remade based on its dependencies in its own makefile,
188## and remake temacs if lwlib gets changed by this.
189OLDXMENU_DEPS=@OLDXMENU_DEPS@
190
4235ca47
GM
191## If !HAVE_X11 && HAVE_X_WINDOWS, -lXMenu (this case no longer possible).
192## Else if !HAVE_X11 || USE_GTK, empty.
193## Else $(OLDXMENU).
194LIBXMENU=@LIBXMENU@
195
10efe302
GM
196XMENU_OBJ=@XMENU_OBJ@
197XOBJ=@XOBJ@
198
986fb647 199TOOLKIT_LIBW=@TOOLKIT_LIBW@
b678dd8b 200
676b6304
GM
201## Only used if HAVE_X11, in LIBX_OTHER.
202LIBXT=$(TOOLKIT_LIBW) $(LIBXT_OTHER)
203
8a95f0e7
GM
204## If HAVE_X11, $(LIBXT) $(LIBX_EXTRA), else empty.
205LIBX_OTHER=@LIBX_OTHER@
206
9beab9ce
GM
207## LIBXMENU is nil if !HAVE_X_WINDOWS.
208## LD_SWITCH_X_SITE should not be used if not using X, but nothing
209## sets it at present, and if something ever does, it should be
210## configure, which should set it to nil in non-X builds.
211LIBX_BASE=$(LIBXMENU) $(LD_SWITCH_X_SITE)
212
19d4c244
DN
213LIBSOUND= @LIBSOUND@
214CFLAGS_SOUND= @CFLAGS_SOUND@
215
216RSVG_LIBS= @RSVG_LIBS@
217RSVG_CFLAGS= @RSVG_CFLAGS@
218
b678dd8b
GM
219## widget.o if USE_X_TOOLKIT, otherwise empty.
220WIDGET_OBJ=@WIDGET_OBJ@
221
c40f9449
GM
222## sheap.o if CYGWIN, otherwise empty.
223CYGWIN_OBJ=@CYGWIN_OBJ@
224
dbd3f723 225## dosfns.o msdos.o w16select.o if MSDOS.
f14d1dfd
GM
226MSDOS_OBJ =
227## w16select.o termcap.o if MSDOS && HAVE_X_WINDOWS.
228MSDOS_X_OBJ =
229MSDOS_SUPPORT_REAL = ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
230 ${lispsource}dos-fns.elc ${lispsource}dos-w32.elc ${lispsource}dos-vars.elc \
231 ${lispsource}term/internal.elc ${lispsource}term/pc-win.elc
232## $MSDOS_SUPPORT_REAL if MSDOS.
233MSDOS_SUPPORT =
234
da53fab9
GM
235ns_appdir=@ns_appdir@
236ns_appbindir=@ns_appbindir@
177b0288 237ns_appsrc=@ns_appsrc@
e6ec4e99
GM
238NS_OBJ=@NS_OBJ@
239NS_SUPPORT=@NS_SUPPORT@
8877ca0f 240## Only set if NS_IMPL_GNUSTEP.
5a903aa9 241GNU_OBJC_CFLAGS=@GNU_OBJC_CFLAGS@
e6ec4e99 242
6e546d18
GM
243## Empty if !HAVE_X_WINDOWS
244## xfont.o ftfont.o xftfont.o ftxfont.o if HAVE_XFT
245## xfont.o ftfont.o ftxfont.o if HAVE_FREETYPE
246## else xfont.o
bc0b5f61
GM
247FONT_OBJ=@FONT_OBJ@
248
11842bd8
GM
249## Used if HAVE_MOUSE.
250REAL_MOUSE_SUPPORT=${lispsource}mouse.elc ${lispsource}select.elc \
251 ${lispsource}scroll-bar.elc
252## Used if HAVE_GPM && !HAVE_MOUSE
253GPM_MOUSE_SUPPORT=${lispsource}mouse.elc
5a903aa9 254LIBGPM = @LIBGPM@
11842bd8
GM
255## Either of the two preceding options, or empty.
256MOUSE_SUPPORT=@MOUSE_SUPPORT@
257
258## ${lispsource}tooltip.elc if HAVE_WINDOW_SYSTEM, else empty.
259TOOLTIP_SUPPORT=@TOOLTIP_SUPPORT@
658f86ca 260
faf535f8
GM
261BASE_WINDOW_SUPPORT=${lispsource}fringe.elc ${lispsource}image.elc \
262 ${lispsource}international/fontset.elc ${lispsource}dnd.elc \
263 ${lispsource}tool-bar.elc ${lispsource}mwheel.elc
264
265X_WINDOW_SUPPORT=${lispsource}x-dnd.elc ${lispsource}term/common-win.elc \
266 ${lispsource}term/x-win.elc ${lispsource}dynamic-setting.elc
267
11842bd8
GM
268## If HAVE_X_WINDOWS, both the above
269## else if HAVE_WINDOW_SYSTEM (ie, HAVE_NS) just the former; else empty.
270WINDOW_SUPPORT=@WINDOW_SUPPORT@
271
5a903aa9
GM
272## -lresolv, or empty.
273LIBRESOLV = @LIBRESOLV@
274
2807228d
GM
275LIBSELINUX_LIBS = @LIBSELINUX_LIBS@
276
19d4c244
DN
277INTERVALS_H = dispextern.h intervals.h composite.h
278
279GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
280
281RUN_TEMACS = `/bin/pwd`/temacs
282
49ebbd65
DN
283START_FILES = @START_FILES@
284
5a903aa9
GM
285UNEXEC_OBJ = @unexec@
286
e8752c66
GM
287CANNOT_DUMP=@cannot_dump@
288
9d5cf9b6
GM
289DEPDIR=deps
290## -MMD -MF ${DEPDIR}/$*.d if AUTO_DEPEND; else empty.
291DEPFLAGS=@DEPFLAGS@
292## test -d ${DEPDIR} || mkdir ${DEPDIR} (if AUTO_DEPEND); else ':'.
293MKDEPDIR=@MKDEPDIR@
294
a0528984
EZ
295# ========================== start of cpp stuff =======================
296/* From here on, comments must be done in C syntax. */
297
a0528984
EZ
298#define NOT_C_CODE
299#include "config.h"
300
489d31a4
GM
301/* If NS_IMPL_GNUSTEP, some definitions and includes are expanded here. */
302@NS_IMPL_GNUSTEP_INC@
edfda783 303
8877ca0f
GM
304/* FIXME move to LD_SWITCH_SYSTEM_TEMACS?
305 This uses ${CONFIG_SYSTEM_LIBS}, presumably set by the above include. */
306NS_IMPL_GNUSTEP_TEMACS_LDFLAGS=@NS_IMPL_GNUSTEP_TEMACS_LDFLAGS@
307
a0528984
EZ
308/* DO NOT use -R. There is a special hack described in lastfile.c
309 which is used instead. Some initialized data areas are modified
310 at initial startup, then labeled as part of the text area when
e20f1f07 311 Emacs is dumped for the first time, and never changed again. */
a0528984
EZ
312
313/* -Demacs is needed to make some files produce the correct version
314 for use in Emacs.
315
316 -DHAVE_CONFIG_H is needed for some other files to take advantage of
5aa17bb2 317 the information in ``config.h''. */
a0528984 318
e769f484 319/* C_SWITCH_X_SITE must come before C_SWITCH_X_SYSTEM
5a903aa9 320 since it may have -I options that should override those. */
e3cf0cde 321/* MYCPPFLAGS only referenced in etc/DEBUG. */
5a903aa9
GM
322ALL_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}
323ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
48fad8e8 324
edfda783 325.SUFFIXES: .m
a0528984 326.c.o:
9d5cf9b6 327 @$(MKDEPDIR)
a0528984 328 $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
edfda783 329.m.o:
9d5cf9b6 330 @$(MKDEPDIR)
48fad8e8 331 $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $<
a0528984 332
a0528984 333
11842bd8
GM
334/* lastfile must follow all files whose initialized data areas should
335 be dumped as pure by dump-emacs. */
01ef9d36 336obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
f44e260c 337 charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \
033b73e2 338 cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
a0528984
EZ
339 emacs.o keyboard.o macros.o keymap.o sysdep.o \
340 buffer.o filelock.o insdel.o marker.o \
341 minibuf.o fileio.o dired.o filemode.o \
342 cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
343 alloc.o data.o doc.o editfns.o callint.o \
0f91ebe6 344 eval.o floatfns.o fns.o font.o print.o lread.o \
5a903aa9 345 syntax.o $(UNEXEC_OBJ) bytecode.o \
a0528984
EZ
346 process.o callproc.o \
347 region-cache.o sound.o atimer.o \
348 doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
6e546d18 349 $(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ)
a0528984
EZ
350
351/* Object files used on some machine or other.
e20f1f07 352 These go in the DOC file on all machines in case they are needed. */
04a697fe 353SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
d87a9ab8 354 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
25c72475 355 fontset.o dbusbind.o \
a68fda4a 356 nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
c9fc02c7 357 w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
6e546d18 358 w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_OBJ)
a0528984 359
be4ff9da
GM
360/* gmalloc.o if !SYSTEM_MALLOC && !DOUG_LEA_MALLOC, else empty. */
361GMALLOC_OBJ=@GMALLOC_OBJ@
362
363/* vm-limit.o if !SYSTEM_MALLOC, else empty. */
364VMLIMIT_OBJ=@VMLIMIT_OBJ@
2fa0eedf 365
40dc6bf4
GM
366/* ralloc.o if !SYSTEM_MALLOC && REL_ALLOC, else empty. */
367RALLOC_OBJ=@RALLOC_OBJ@
5a1bb006 368
f724825e 369/* Empty on Cygwin, lastfile.o elsewhere. */
7acac9f4 370PRE_ALLOC_OBJ=@PRE_ALLOC_OBJ@
6665f4c5 371/* lastfile.o on Cygwin, empty elsewhere. */
7acac9f4 372POST_ALLOC_OBJ=@POST_ALLOC_OBJ@
5a1bb006 373
7eb1ac33 374/* List of object files that make-docfile should not be told about. */
40dc6bf4 375otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \
6665f4c5 376 $(POST_ALLOC_OBJ) $(VMLIMIT_OBJ) $(WIDGET_OBJ) $(LIBOBJS)
a0528984 377
00e2f46c
GM
378/* This is the platform-specific list of Lisp files loaded into the
379 dumped Emacs. It is arranged like this because it is easier to generate
380 it semi-mechanically from loadup.el this way.
a0528984
EZ
381
382 Note that this list should not include lisp files which might not
383 be present, like site-load.el and site-init.el; this makefile
384 expects them all to be either present or buildable.
385
00e2f46c
GM
386 Files which are loaded unconditionally (i.e., on all platforms) should
387 also be in shortlisp. Files which are loaded conditionally (i.e., only
388 on some platforms) should instead be in SOME_MACHINE_LISP. */
a0528984 389
c045cf6e 390/* Place loaddefs.el first, so it gets generated first, since it is on
b4945b95
SM
391 the critical path (relevant in parallel compilations). */
392
a0528984 393lisp= \
b4945b95 394 ${lispsource}loaddefs.el \
a0528984
EZ
395 ${lispsource}abbrev.elc \
396 ${lispsource}buff-menu.elc \
aae5b722 397 ${lispsource}button.elc \
f984e73e 398 ${lispsource}emacs-lisp/byte-run.elc \
731055f5 399 ${lispsource}composite.elc \
bfcf6dbe 400 ${lispsource}cus-face.elc \
d381a855 401 ${lispsource}cus-start.elc \
a0528984 402 ${lispsource}custom.elc \
6e860d15 403 ${lispsource}emacs-lisp/backquote.elc \
a0528984
EZ
404 ${lispsource}emacs-lisp/lisp-mode.elc \
405 ${lispsource}emacs-lisp/lisp.elc \
406 ${lispsource}env.elc \
407 ${lispsource}faces.elc \
408 ${lispsource}files.elc \
409 ${lispsource}format.elc \
410 ${lispsource}facemenu.elc \
11842bd8 411 ${MOUSE_SUPPORT} \
f984e73e 412 ${lispsource}emacs-lisp/float-sup.elc \
af0ad939 413 ${lispsource}frame.elc \
a0528984
EZ
414 ${lispsource}help.elc \
415 ${lispsource}indent.elc \
416 ${lispsource}isearch.elc \
29f05691 417 ${lispsource}rfn-eshadow.elc \
a0528984 418 ${lispsource}loadup.el \
aae5b722 419 ${lispsource}bindings.elc \
f984e73e 420 ${lispsource}emacs-lisp/map-ynp.elc \
a0528984
EZ
421 ${lispsource}menu-bar.elc \
422 ${lispsource}international/mule.elc \
e118d2be 423 ${lispsource}international/mule-conf.elc \
a0528984
EZ
424 ${lispsource}international/mule-cmds.elc \
425 ${lispsource}international/characters.elc \
15e2814c 426 ${lispsource}international/charprop.el \
a0528984 427 ${lispsource}case-table.elc \
e118d2be
AS
428 ${lispsource}language/chinese.elc \
429 ${lispsource}language/cyrillic.elc \
7e694795 430 ${lispsource}language/indian.elc \
cc8d1311 431 ${lispsource}language/sinhala.el \
74fc84af 432 ${lispsource}language/english.el \
a0528984
EZ
433 ${lispsource}language/ethiopic.elc \
434 ${lispsource}language/european.elc \
74fc84af
EZ
435 ${lispsource}language/czech.el \
436 ${lispsource}language/slovak.el \
437 ${lispsource}language/romanian.el \
438 ${lispsource}language/greek.el \
439 ${lispsource}language/hebrew.el \
440 ${lispsource}language/japanese.el \
441 ${lispsource}language/korean.el \
442 ${lispsource}language/lao.el \
c9228487 443 ${lispsource}language/cham.el \
16460a76 444 ${lispsource}language/tai-viet.el \
74fc84af 445 ${lispsource}language/thai.el \
a0528984 446 ${lispsource}language/tibetan.elc \
e118d2be 447 ${lispsource}language/vietnamese.elc \
74fc84af 448 ${lispsource}language/misc-lang.el \
1e9a6186
DL
449 ${lispsource}language/utf-8-lang.el \
450 ${lispsource}language/georgian.el \
0e45710c 451 ${lispsource}language/khmer.el \
7f6519c5 452 ${lispsource}language/burmese.el \
a0528984
EZ
453 ${lispsource}paths.el \
454 ${lispsource}register.elc \
455 ${lispsource}replace.elc \
456 ${lispsource}simple.elc \
32bae13c 457 ${lispsource}minibuffer.elc \
a0528984
EZ
458 ${lispsource}startup.elc \
459 ${lispsource}subr.elc \
460 ${lispsource}term/tty-colors.elc \
bfcf6dbe 461 ${lispsource}font-core.elc \
1f7b1131
DN
462 ${lispsource}emacs-lisp/syntax.elc \
463 ${lispsource}font-lock.elc \
464 ${lispsource}jit-lock.elc \
a0528984
EZ
465 ${lispsource}textmodes/fill.elc \
466 ${lispsource}textmodes/page.elc \
467 ${lispsource}textmodes/paragraphs.elc \
468 ${lispsource}textmodes/text-mode.elc \
f984e73e 469 ${lispsource}emacs-lisp/timer.elc \
6e6851b0 470 ${lispsource}jka-cmpr-hook.elc \
a0528984
EZ
471 ${lispsource}vc-hooks.elc \
472 ${lispsource}ediff-hook.elc \
86914123 473 ${lispsource}epa-hook.elc \
11842bd8 474 ${TOOLTIP_SUPPORT} \
f14d1dfd 475 ${MSDOS_SUPPORT} \
11842bd8 476 ${WINDOW_SUPPORT} \
e6ec4e99 477 ${NS_SUPPORT} \
a0528984
EZ
478 ${lispsource}widget.elc \
479 ${lispsource}window.elc \
480 ${lispsource}version.el
481
00e2f46c
GM
482/* List of relative names for those files from $lisp that are loaded
483 unconditionally (i.e. on all platforms). Files from $lisp that
484 are only loaded on some platforms should instead be placed in
485 SOME_MACHINE_LISP. The only reason this variable exists is to prevent
486 the make-docfile command-line getting too long for some systems. */
a0528984 487shortlisp= \
b4945b95 488 ../lisp/loaddefs.el \
a0528984
EZ
489 ../lisp/abbrev.elc \
490 ../lisp/buff-menu.elc \
aae5b722 491 ../lisp/button.elc \
f984e73e 492 ../lisp/emacs-lisp/byte-run.elc \
731055f5 493 ../lisp/composite.elc \
bfcf6dbe 494 ../lisp/cus-face.elc \
d381a855 495 ../lisp/cus-start.elc \
a0528984 496 ../lisp/custom.elc \
f7d5d963 497 ../lisp/emacs-lisp/backquote.elc \
a0528984
EZ
498 ../lisp/emacs-lisp/lisp-mode.elc \
499 ../lisp/emacs-lisp/lisp.elc \
500 ../lisp/facemenu.elc \
501 ../lisp/faces.elc \
502 ../lisp/files.elc \
f984e73e 503 ../lisp/emacs-lisp/float-sup.elc \
a0528984
EZ
504 ../lisp/format.elc \
505 ../lisp/frame.elc \
506 ../lisp/help.elc \
507 ../lisp/indent.elc \
508 ../lisp/isearch.elc \
29f05691 509 ../lisp/rfn-eshadow.elc \
a0528984 510 ../lisp/loadup.el \
aae5b722 511 ../lisp/bindings.elc \
f984e73e 512 ../lisp/emacs-lisp/map-ynp.elc \
a0528984
EZ
513 ../lisp/env.elc \
514 ../lisp/international/mule.elc \
e118d2be 515 ../lisp/international/mule-conf.elc \
a0528984
EZ
516 ../lisp/international/mule-cmds.elc \
517 ../lisp/international/characters.elc \
518 ../lisp/case-table.elc \
e118d2be
AS
519 ../lisp/language/chinese.elc \
520 ../lisp/language/cyrillic.elc \
7e694795 521 ../lisp/language/indian.elc \
cc8d1311 522 ../lisp/language/sinhala.el \
74fc84af 523 ../lisp/language/english.el \
a0528984
EZ
524 ../lisp/language/ethiopic.elc \
525 ../lisp/language/european.elc \
74fc84af
EZ
526 ../lisp/language/czech.el \
527 ../lisp/language/slovak.el \
528 ../lisp/language/romanian.el \
529 ../lisp/language/greek.el \
530 ../lisp/language/hebrew.el \
531 ../lisp/language/japanese.el \
532 ../lisp/language/korean.el \
533 ../lisp/language/lao.el \
c9228487 534 ../lisp/language/cham.el \
16460a76 535 ../lisp/language/tai-viet.el \
74fc84af 536 ../lisp/language/thai.el \
a0528984 537 ../lisp/language/tibetan.elc \
e118d2be 538 ../lisp/language/vietnamese.elc \
74fc84af 539 ../lisp/language/misc-lang.el \
1e9a6186
DL
540 ../lisp/language/utf-8-lang.el \
541 ../lisp/language/georgian.el \
0e45710c 542 ../lisp/language/khmer.el \
7f6519c5 543 ../lisp/language/burmese.el \
f7d5d963 544 ../lisp/menu-bar.elc \
a0528984
EZ
545 ../lisp/paths.el \
546 ../lisp/register.elc \
547 ../lisp/replace.elc \
548 ../lisp/simple.elc \
32bae13c 549 ../lisp/minibuffer.elc \
a0528984
EZ
550 ../lisp/startup.elc \
551 ../lisp/subr.elc \
552 ../lisp/term/tty-colors.elc \
59809627 553 ../lisp/font-core.elc \
1f7b1131
DN
554 ../lisp/emacs-lisp/syntax.elc \
555 ../lisp/font-lock.elc \
556 ../lisp/jit-lock.elc \
a0528984
EZ
557 ../lisp/textmodes/fill.elc \
558 ../lisp/textmodes/page.elc \
559 ../lisp/textmodes/paragraphs.elc \
560 ../lisp/textmodes/text-mode.elc \
f984e73e 561 ../lisp/emacs-lisp/timer.elc \
a0528984 562 ../lisp/vc-hooks.elc \
6e6851b0 563 ../lisp/jka-cmpr-hook.elc \
a0528984 564 ../lisp/ediff-hook.elc \
86914123 565 ../lisp/epa-hook.elc \
a0528984
EZ
566 ../lisp/widget.elc \
567 ../lisp/window.elc \
568 ../lisp/version.el
569
00e2f46c
GM
570/* Like $shortlisp, but includes only those files from $lisp that are loaded
571 conditionally (i.e., only on some platforms). */
60a3d7ee
DN
572SOME_MACHINE_LISP = ../lisp/mouse.elc \
573 ../lisp/select.elc ../lisp/scroll-bar.elc \
60a3d7ee
DN
574 ../lisp/ls-lisp.elc ../lisp/dos-fns.elc \
575 ../lisp/w32-fns.elc ../lisp/dos-w32.elc \
576 ../lisp/disp-table.elc ../lisp/dos-vars.elc \
577 ../lisp/tooltip.elc ../lisp/image.elc \
578 ../lisp/fringe.elc ../lisp/dnd.elc \
579 ../lisp/mwheel.elc ../lisp/tool-bar.elc \
f904c0f9 580 ../lisp/x-dnd.elc ../lisp/dynamic-setting.elc \
60a3d7ee 581 ../lisp/international/ccl.elc \
60a3d7ee
DN
582 ../lisp/international/fontset.elc \
583 ../lisp/mouse.elc \
24ed93fb 584 ../lisp/term/common-win.elc \
7206e7b7 585 ../lisp/term/x-win.elc \
e227ba05 586 ../lisp/term/pc-win.elc ../lisp/term/internal.elc \
b7d552d6
GM
587 ../lisp/term/ns-win.elc ../lisp/term/w32-win.elc \
588 ../lisp/emacs-lisp/easymenu.elc
a0528984
EZ
589
590/* Construct full set of libraries to be linked.
591 Note that SunOS needs -lm to come before -lc; otherwise, you get
592 duplicated symbols. If the standard libraries were compiled
c1d0dcfd 593 with GCC, we might need LIB_GCC again after them. */
edfda783 594
3dee6fdb 595LIBES = $(LOADLIBES) $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \
5a903aa9 596 $(RSVG_LIBS) $(DBUS_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \
97efb629 597 $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \
5a903aa9 598 $(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \
c1d0dcfd 599 $(LIB_GCC) $(LIB_MATH) $(LIB_STANDARD) $(LIB_GCC)
a0528984 600
005bd5a2 601all: emacs${EXEEXT} $(OTHER_FILES)
a0528984 602
3df7b338 603/* Does anyone ever pay attention to the load-path-shadows output here? */
e8752c66
GM
604/* FIXME Add EXEEXT for load-path-shadows? */
605/* The dumped Emacs is as functional and more efficient than
606 bootstrap-emacs, so we replace the latter with the former. */
0c2b6f8e 607emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
e8752c66
GM
608 if test "${CANNOT_DUMP}" = "yes"; then \
609 ln -f temacs${EXEEXT} emacs${EXEEXT}; \
610 EMACSLOADPATH=${lispsource} ./emacs -q -batch \
611 -f list-load-path-shadows || true; \
612 else \
613 LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump || exit 1; \
614 ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}; \
615 ./emacs -q -batch -f list-load-path-shadows || true; \
616 fi
a0528984
EZ
617
618/* We run make-docfile twice because the command line may get too long
619 on some systems. */
620/* ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may
621 or may not be included in ${obj}, but they are always included in
622 ${SOME_MACHINE_OBJECTS}. Since a file is processed when it is mentioned
623 for the first time, this prevents any variation between configurations
624 in the contents of the DOC file.
625 Likewise for ${SOME_MACHINE_LISP}. */
d7c664f3
SM
626/* Most of this Makefile refers to Lisp files via ${lispsource}, so
627 we also use ${lisp} rather than ${shortlisp} for the dependency since
628 the Makefile uses string equality to decide when we talk about identical
629 files. Apparently we pass ${shortlisp} rather than ${lisp} to make-docfile
630 only in order to reduce the command line length. --Stef */
631${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
a0528984
EZ
632 -rm -f ${etc}DOC
633 ${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
634 ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
635
108c7c97
AS
636${libsrc}make-docfile${EXEEXT}:
637 cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile${EXEEXT}
a0528984 638
878bde49 639buildobj.h: Makefile
005bd5a2 640 echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h
878bde49 641
c1d0dcfd
GM
642#define YMF_PASS_LDFLAGS(flags) @YMF_PASS_LDFLAGS@
643
8877ca0f 644temacs${EXEEXT}: $(START_FILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT}
8877ca0f
GM
645 $(LD) YMF_PASS_LDFLAGS ( ${TEMACS_LDFLAGS} \
646 ${NS_IMPL_GNUSTEP_TEMACS_LDFLAGS} ) \
b02a6645 647 ${TEMACS_LDFLAGS2} \
8877ca0f 648 -o temacs ${START_FILES} ${obj} ${otherobj} ${LIBES}
a0528984 649
a53cfbe5 650prefix-args${EXEEXT}: prefix-args.o $(config_h)
f4c21026 651 $(CC) $(LDFLAGS) prefix-args.o -o prefix-args
a0528984 652
deeaffe1 653
1a82cca9
GM
654/* Only (possibly) used if HAVE_X11 && !USE_GTK, but no harm in always
655 defining. */
a0528984 656really-lwlib:
6b61353c 657 cd ${lwlibdir}; ${MAKE} ${MFLAGS} \
ed6281b0 658 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
a0528984
EZ
659 @true /* make -t should not create really-lwlib. */
660.PHONY: really-lwlib
a0528984 661
a0528984 662really-oldXMenu:
9c28b587 663 cd ${oldXMenudir}; ${MAKE} ${MFLAGS} \
ed6281b0 664 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
a0528984
EZ
665 @true /* make -t should not create really-oldXMenu. */
666.PHONY: really-oldXMenu
a0528984 667
16455a85
GM
668/* We don''t really need this when OLDXMENU_DEPS is empty, but as
669 things stand we need something to satisfy the temacs dependency. */
670stamp-oldxmenu: ${OLDXMENU_DEPS}
671 touch stamp-oldxmenu
672
1a82cca9
GM
673/* HAVE_X11 implies HAVE_X_WINDOWS and HAVE_MENUS. */
674#if defined (HAVE_X11) && ! defined (USE_GTK)
1a82cca9
GM
675/* Supply an ordering for parallel make. */
676../src/$(OLDXMENU): ${OLDXMENU}
677
678$(OLDXMENU): $(OLDXMENU_TARGET)
16455a85 679#endif /* HAVE_X11 && !USE_GTK */
a0528984
EZ
680
681../config.status:: epaths.in
682 @echo "The file epaths.h needs to be set up from epaths.in."
683 @echo "Please run the `configure' script again."
684 exit 1
685
686../config.status:: config.in
687 @echo "The file config.h needs to be set up from config.in."
688 @echo "Please run the `configure' script again."
689 exit 1
690
a53cfbe5 691ecrt0.o: ecrt0.c $(config_h)
9d5cf9b6 692 @$(MKDEPDIR)
19d4c244 693 $(CC) -c $(ALL_CFLAGS) ${srcdir}/ecrt0.c
a53cfbe5
JD
694doc.o: buildobj.h
695
a53cfbe5 696
a0528984 697/* System-specific programs to be made.
e20f1f07 698 OTHER_FILES select which of these should be compiled. */
a0528984 699
edfda783 700#ifdef HAVE_NS
06b62770
AR
701${ns_appdir}: ${ns_appsrc}
702 rm -fr ${ns_appdir}
703 mkdir -p ${ns_appdir}
2b5f541b 704 ( cd ${ns_appsrc} ; tar cfh - . ) | ( cd ${ns_appdir} ; umask 022; tar xf - )
7ca1f3f9 705#endif /* HAVE_NS */
edfda783 706
7ca1f3f9 707/* These are only used if HAVE_NS, but no harm in always defining them. */
06b62770
AR
708${ns_appbindir}Emacs: emacs${EXEEXT}
709 mkdir -p ${ns_appbindir}
710 cp -f emacs${EXEEXT} ${ns_appbindir}Emacs
edfda783 711
06b62770 712ns-app: ${ns_appdir} ${ns_appbindir}Emacs
e0f712ba 713
a0528984 714mostlyclean:
108c7c97 715 rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a
a0528984 716 rm -f ../etc/DOC
b4945b95 717 rm -f bootstrap-emacs${EXEEXT} emacs-${version}${EXEEXT}
878bde49 718 rm -f buildobj.h
a0528984 719clean: mostlyclean
03bd3c1f 720 rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT}
9d5cf9b6 721 -rm -rf ${DEPDIR}
7541dad5
GM
722 test "X${ns_appdir}" = "X" || rm -rf ${ns_appdir}
723
49f6eb95
SM
724/* bootstrap-clean is used to clean up just before a bootstrap.
725 It should remove all files generated during a compilation/bootstrap,
726 but not things like config.status or TAGS. */
fd13748d
AS
727bootstrap-clean: clean
728 rm -f epaths.h config.h Makefile.c config.stamp stamp-oldxmenu ../etc/DOC-*
729 if test -f ./.gdbinit; then \
730 mv ./.gdbinit ./.gdbinit.save; \
731 if test -f "${srcdir}/.gdbinit"; then rm -f ./.gdbinit.save; \
732 else mv ./.gdbinit.save ./.gdbinit; fi; \
733 fi
734/**/# This is used in making a distribution.
735/**/# Do not use it on development directories!
736distclean: bootstrap-clean
737 rm -f Makefile
a0528984
EZ
738maintainer-clean: distclean
739 @echo "This command is intended for maintainers to use;"
740 @echo "it deletes files that may require special tools to rebuild."
741 rm -f TAGS
742versionclean:
03bd3c1f 743 -rm -f emacs${EXEEXT} emacs-*.*.*${EXEEXT} ../etc/DOC*
a0528984
EZ
744extraclean: distclean
745 -rm -f *~ \#* m/?*~ s/?*~
746
a0528984
EZ
747/* Arrange to make a tags table TAGS-LISP for ../lisp,
748 plus TAGS for the C files, which includes ../lisp/TAGS by reference. */
749
50da4e56
SM
750ctagsfiles1 = [xyzXYZ]*.[hcm]
751ctagsfiles2 = [a-wA-W]*.[hcm]
a0528984
EZ
752
753TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
754 ../lib-src/etags --include=TAGS-LISP --include=${lwlibdir}/TAGS \
755 --regex='/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \
756 $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
757frc:
758TAGS-LISP: frc
99b7e543 759 $(MAKE) -f ${lispdir}Makefile TAGS-LISP ETAGS=../lib-src/etags
a0528984
EZ
760
761$(lwlibdir)TAGS:
762 (cd $(lwlibdir); $(MAKE) -f $(lwlibdir)Makefile tags ETAGS=../lib-src/etags)
763
764tags: TAGS TAGS-LISP $(lwlibdir)TAGS
765.PHONY: tags
766
767
768/* Bootstrapping. */
fc46d219
SM
769/* Bootstrapping right is difficult because of the circular dependencies.
770 Furthermore, we have to deal with the fact that many compilation targets
771 such as loaddefs.el or *.elc can typically be produced by any old
772 Emacs executable, so we would like to avoid rebuilding them whenever
773 we build a new Emacs executable.
774 To solve the circularity, we use 2 different Emacs executables,
775 "emacs" is the main target and "bootstrap-emacs" is the one used
776 to build the *.elc and loaddefs.el files.
b4945b95
SM
777 To solve the freshness issue, we used to use a third file "witness-emacs"
778 which was used to witness the fact that there is a bootstrap-emacs
779 executable, and then have dependencies on witness-emacs rather than
780 bootstrap-emacs, but that lead to problems in parallel builds (because
781 witness-emacs needed to be free from dependencies (to avoid rebuilding
782 it), so it was compiled in parallel, leading typically to having 2
783 processes dumping bootstrap-emacs at the same time).
784 So instead, we replace the witness-emacs dependencies by conditional
785 bootstrap-dependencies (via ${BOOTSTRAPEMACS}). Of course, since we do
786 not want to rely on GNU Make features, we have to rely on an external
787 script to do the conditional part of the dependency
788 (i.e. see the ${SUBDIR} rule ../Makefile.in). */
fc46d219 789
36565815
GM
790.SUFFIXES: .elc .el
791
b4945b95
SM
792/* These suffix rules do not allow additional dependencies, sadly, so
793 instead of adding a $(BOOTSTRAPEMACS) dependency here, we add it
794 separately below.
795 With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)" */
fc46d219 796.el.elc:
82c3d67a
AS
797 @cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \
798 THEFILE=$< EMACS=${bootstrap_exe}
fc46d219 799
b4945b95
SM
800/* Since the .el.elc rule cannot specify an extra dependency, we do it here. */
801${lisp} ${SOME_MACHINE_LISP}: $(BOOTSTRAPEMACS)
fc46d219 802
5b5262f4
SM
803/* VCSWITNESS points to the file that holds info about the current checkout.
804 We use it as a heuristic to decide when to rebuild loaddefs.el. */
805${lispsource}loaddefs.el: $(BOOTSTRAPEMACS) $(VCSWITNESS)
82c3d67a 806 cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=${bootstrap_exe}
49f6eb95 807
c60ee5e7 808/* Dump an Emacs executable named bootstrap-emacs containing the
a0528984
EZ
809 files from loadup.el in source form. */
810
fc46d219 811bootstrap-emacs${EXEEXT}: temacs${EXEEXT}
b4945b95 812 cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs
e8752c66
GM
813 if test "${CANNOT_DUMP}" = "yes"; then \
814 ln -f temacs${EXEEXT} bootstrap-emacs${EXEEXT}; \
815 else \
816 $(RUN_TEMACS) --batch --load loadup bootstrap || exit 1; \
817 mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}; \
818 fi
768efd84 819 @: Compile some files earlier to speed up further compilation.
82c3d67a 820 cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe}
a53cfbe5 821
9d5cf9b6
GM
822## Insert either autodeps.mk (if AUTO_DEPEND), else deps.mk.
823@deps_frag@