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