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