Add SELinux support.
[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,
114f9c96 3# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
8cabe764 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
a0528984
EZ
33
34# Here are the things that we expect ../configure to edit.
35# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
82c3d67a
AS
36srcdir = @srcdir@
37abs_builddir = @abs_builddir@
38VPATH = $(srcdir)
39CC = @CC@
40CPP = @CPP@
41CFLAGS = @CFLAGS@
42CPPFLAGS = @CPPFLAGS@
43LDFLAGS = @LDFLAGS@
44LN_S = @LN_S@
45EXEEXT = @EXEEXT@
46version = @version@
a0528984
EZ
47# Substitute an assignment for the MAKE variable, because
48# BSD doesn't have it as a default.
49@SET_MAKE@
50# Don't use LIBS. configure puts stuff in it that either shouldn't be
51# linked with Emacs or is duplicated by the cpp stuff below.
52# LIBS = @LIBS@
53LIBOBJS = @LIBOBJS@
54
60a3d7ee 55lispsource = ${srcdir}/../lisp/
60a3d7ee
DN
56libsrc = ../lib-src/
57etc = ../etc/
58oldXMenudir = ../oldXMenu/
59lwlibdir = ../lwlib/
60lispdir = ../lisp/
a0528984
EZ
61
62# Configuration files for .o files to depend on.
63M_FILE = ${srcdir}/@machfile@
64S_FILE = ${srcdir}/@opsysfile@
65config_h = config.h $(M_FILE) $(S_FILE)
66
82c3d67a 67bootstrap_exe = ${abs_builddir}/bootstrap-emacs${EXEEXT}
7763401b 68
005bd5a2
DN
69OTHER_FILES = @OTHER_FILES@
70
0dc2e11d
GM
71LIBTIFF=@LIBTIFF@
72LIBJPEG=@LIBJPEG@
73LIBPNG=@LIBPNG@
74LIBGIF=@LIBGIF@
75LIBXPM=@LIBXPM@
76XFT_LIBS=@XFT_LIBS@
77
8d9c8ece
DN
78C_SWITCH_SYSTEM=@c_switch_system@
79C_SWITCH_MACHINE=@c_switch_machine@
80
81C_SWITCH_X_SITE=@C_SWITCH_X_SITE@
82
19d4c244
DN
83DBUS_CFLAGS = @DBUS_CFLAGS@
84DBUS_LIBS = @DBUS_LIBS@
85
86GCONF_CFLAGS = @GCONF_CFLAGS@
87GCONF_LIBS = @GCONF_LIBS@
88
89LIBSOUND= @LIBSOUND@
90CFLAGS_SOUND= @CFLAGS_SOUND@
91
92RSVG_LIBS= @RSVG_LIBS@
93RSVG_CFLAGS= @RSVG_CFLAGS@
94
95INTERVALS_H = dispextern.h intervals.h composite.h
96
97GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
98
99RUN_TEMACS = `/bin/pwd`/temacs
100
a0528984
EZ
101# ========================== start of cpp stuff =======================
102/* From here on, comments must be done in C syntax. */
103
a0528984
EZ
104/* just to be sure the sh is used */
105SHELL=/bin/sh
106
107#define THIS_IS_MAKEFILE
a0528984
EZ
108#define NOT_C_CODE
109#include "config.h"
110
a53cfbe5
JD
111#ifdef AUTO_DEPEND
112DEPFLAGS = -MMD -MF deps/$*.d
113#endif
114
b9465836
DN
115/* Undefine until the user can be moved in the non-cpp section. */
116#undef C_SWITCH_SYSTEM
117#undef C_SWITCH_MACHINE
118#undef C_SWITCH_X_SITE
119
be9b5a60 120/* Do not let the file name mktime.c get messed up. */
a0528984
EZ
121#ifdef mktime
122#undef mktime
123#endif
124
125/* Use HAVE_X11 as an alias for X11 in this file
126 to avoid problems with X11 as a subdirectory name
127 in -I and other such options which pass through this file. */
128
129#ifdef X11
130#define HAVE_X11
131#undef X11
132#endif
133
134/* On some machines #define register is done in config;
be9b5a60 135 do not let it interfere with this file. */
a0528984
EZ
136#undef register
137
be9b5a60 138/* Some machines do not find the standard C libraries in the usual place. */
a0528984
EZ
139#ifndef ORDINARY_LINK
140#ifndef LIB_STANDARD
141#define LIB_STANDARD -lc
142#endif
143#else
144#ifndef LIB_STANDARD
145#define LIB_STANDARD
146#endif
147#endif
148
edfda783 149/* Under GNUstep, putting libc on the link line causes problems. */
122e9f8f 150#ifdef NS_IMPL_GNUSTEP
facfbbbd 151#undef LIB_STANDARD
edfda783
AR
152#define LIB_STANDARD
153#endif
154
a0528984
EZ
155/* Some s/SYSTEM.h files define this to request special libraries. */
156#ifndef LIBS_SYSTEM
157#define LIBS_SYSTEM
158#endif
159
160/* Some m/MACHINE.h files define this to request special libraries. */
161#ifndef LIBS_MACHINE
162#define LIBS_MACHINE
163#endif
164
165#ifndef LIB_MATH
166# define LIB_MATH -lm
167#endif /* LIB_MATH */
168
169/* Some s/SYSTEM.h files define this to request special switches in ld. */
170#ifndef LD_SWITCH_SYSTEM
deeaffe1 171#if !defined (__GNUC__) && ((defined (BSD_SYSTEM) && !defined (COFF)))
a0528984 172#define LD_SWITCH_SYSTEM -X
deeaffe1 173#else /* (defined (BSD_SYSTEM) && !defined (COFF)) */
a0528984 174#define LD_SWITCH_SYSTEM
deeaffe1 175#endif /* (defined (BSD_SYSTEM) && !defined (COFF)) */
a0528984
EZ
176#endif /* LD_SWITCH_SYSTEM */
177
178/* This holds special options for linking temacs
179 that should be used for linking anything else. */
180#ifndef LD_SWITCH_SYSTEM_TEMACS
181#define LD_SWITCH_SYSTEM_TEMACS
182#endif
183
184/* Some m/MACHINE.h files define this to request special switches in ld. */
185#ifndef LD_SWITCH_MACHINE
186#define LD_SWITCH_MACHINE
187#endif
188
189/* This holds special options for linking temacs
190 that should be used for linking anything else. */
191#ifndef LD_SWITCH_MACHINE_TEMACS
192#define LD_SWITCH_MACHINE_TEMACS
193#endif
194
a0528984
EZ
195/* These macros are for switches specifically related to X Windows. */
196#ifndef C_SWITCH_X_MACHINE
197#define C_SWITCH_X_MACHINE
198#endif
199
200#ifndef C_SWITCH_X_SYSTEM
201#define C_SWITCH_X_SYSTEM
202#endif
203
a0528984
EZ
204#ifndef LD_SWITCH_X_SITE
205#define LD_SWITCH_X_SITE
206#endif
207
208#ifndef LD_SWITCH_X_DEFAULT
209#define LD_SWITCH_X_DEFAULT
210#endif
211
a0528984
EZ
212#ifndef ORDINARY_LINK
213
a0528984
EZ
214#ifndef START_FILES
215#ifdef NO_REMAP
a0528984 216#define START_FILES pre-crt0.o /lib/crt0.o
a0528984
EZ
217#else /* ! defined (NO_REMAP) */
218#define START_FILES ecrt0.o
219#endif /* ! defined (NO_REMAP) */
220#endif /* START_FILES */
221STARTFILES = START_FILES
222
223#else /* ORDINARY_LINK */
224
225/* config.h might want to force START_FILES anyway */
226#ifdef START_FILES
227STARTFILES = START_FILES
228#endif /* START_FILES */
229
230#endif /* not ORDINARY_LINK */
231
232
122e9f8f 233#ifdef NS_IMPL_GNUSTEP
edfda783
AR
234/* Pull in stuff from GNUstep-make. */
235FOUNDATION_LIB=gnu
236GUI_LIB=gnu
facfbbbd
SM
237include @GNUSTEP_MAKEFILES@/Additional/base.make
238include @GNUSTEP_MAKEFILES@/Additional/gui.make
edfda783
AR
239shared=no
240#endif
241
033b73e2 242#ifdef HAVE_DBUS
033b73e2
MA
243DBUS_OBJ = dbusbind.o
244#endif
245
574c05e2
KK
246#ifdef HAVE_LIBSELINUX
247LIBSELINUX_LIBS = @LIBSELINUX_LIBS@
248#endif
249
a0528984
EZ
250/* DO NOT use -R. There is a special hack described in lastfile.c
251 which is used instead. Some initialized data areas are modified
252 at initial startup, then labeled as part of the text area when
253 Emacs is dumped for the first time, and never changed again. */
254
255/* -Demacs is needed to make some files produce the correct version
256 for use in Emacs.
257
258 -DHAVE_CONFIG_H is needed for some other files to take advantage of
5aa17bb2 259 the information in ``config.h''. */
a0528984 260
c9b389c0
JD
261#undef C_SWITCH_MACHINE
262#undef C_SWITCH_SYSTEM
263#undef C_SWITCH_X_SITE
264
a0528984
EZ
265/* C_SWITCH_X_SITE must come before C_SWITCH_X_MACHINE and C_SWITCH_X_SYSTEM
266 since it may have -I options that should override those two. */
e18006e5 267ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I${srcdir} $(C_SWITCH_MACHINE) $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM ${CFLAGS_SOUND} ${RSVG_CFLAGS} ${DBUS_CFLAGS} ${GCONF_CFLAGS} ${CFLAGS} @FREETYPE_CFLAGS@ @FONTCONFIG_CFLAGS@ @LIBOTF_CFLAGS@ @M17N_FLT_CFLAGS@ ${DEPFLAGS}
48fad8e8
DN
268ALL_OBJC_CFLAGS=$(ALL_CFLAGS) @GNU_OBJC_CFLAGS@
269
edfda783 270.SUFFIXES: .m
a0528984 271.c.o:
a53cfbe5 272#ifdef AUTO_DEPEND
5d1e70a2 273 @-test -d deps || mkdir deps
a53cfbe5 274#endif
a0528984 275 $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
edfda783 276.m.o:
a53cfbe5 277#ifdef AUTO_DEPEND
5d1e70a2 278 @-test -d deps || mkdir deps
a53cfbe5 279#endif
48fad8e8 280 $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $<
a0528984 281
a0528984
EZ
282#ifndef LIB_X11_LIB
283#define LIB_X11_LIB -lX11
284#endif
285
286#ifdef HAVE_X_WINDOWS
edfda783 287XMENU_OBJ = xmenu.o
637fa988 288XOBJ= xterm.o xfns.o xselect.o xrdb.o fontset.o xsmfns.o fringe.o image.o \
872870b2 289 xsettings.o xgselect.o
6b61353c 290
a0528984
EZ
291#ifdef HAVE_MENUS
292
488dd4c4 293#ifdef USE_GTK
6b61353c 294GTK_OBJ= gtkutil.o
488dd4c4 295#endif
a0528984
EZ
296
297/* The X Menu stuff is present in the X10 distribution, but missing
298 from X11. If we have X10, just use the installed library;
299 otherwise, use our own copy. */
300#ifdef HAVE_X11
301#ifdef USE_X_TOOLKIT
302OLDXMENU=${lwlibdir}liblw.a
303LIBXMENU= $(OLDXMENU)
304#else /* not USE_X_TOOLKIT */
305OLDXMENU= ${oldXMenudir}libXMenu11.a
306LIBXMENU= $(OLDXMENU)
307#endif /* not USE_X_TOOLKIT */
308#else /* not HAVE_X11 */
309LIBXMENU= -lXMenu
310#endif /* not HAVE_X11 */
311
312#else /* not HAVE_MENUS */
313
be9b5a60 314/* Otherwise, do not worry about the menu library at all. */
a0528984
EZ
315LIBXMENU=
316#endif /* not HAVE_MENUS */
317
318#ifdef USE_X_TOOLKIT
73d798d5
SM
319# define @X_TOOLKIT_TYPE@
320# if HAVE_XAW3D
321LUCID_LIBW= -lXaw3d
322# else
323LUCID_LIBW= -lXaw
324# endif
325# if defined (HAVE_MOTIF_2_1) && defined (HAVE_LIBXP)
326# define LIB_MOTIF_EXTRA -lXp
327# else
328# define LIB_MOTIF_EXTRA
329# endif
330# ifdef LIB_MOTIF
331MOTIF_LIBW= LIB_MOTIF LIB_MOTIF_EXTRA
332# else
333MOTIF_LIBW= -lXm LIB_MOTIF_EXTRA
334# endif
335LIBW=$(@X_TOOLKIT_TYPE@_LIBW)
a0528984
EZ
336
337#ifdef HAVE_X11XTR6
338#ifdef NEED_LIBW
339LIBXTR6 = -lSM -lICE -lw
340#else
341LIBXTR6 = -lSM -lICE
342#endif
343#endif
344
345#ifndef LIBXMU
346#define LIBXMU -lXmu
347#endif
348
a0528984 349LIBXT= $(LIBW) LIBXMU -lXt $(LIBXTR6) -lXext
a0528984
EZ
350
351#else /* not USE_X_TOOLKIT */
488dd4c4
JD
352
353#ifdef USE_GTK
354LIBW=@GTK_LIBS@
355OLDXMENU=
356LIBXMENU=
357#endif /* USE_GTK */
358
618c30cb 359#ifdef HAVE_X_SM
488dd4c4 360LIBXT=$(LIBW) -lSM -lICE
618c30cb 361#else
488dd4c4 362LIBXT=$(LIBW)
618c30cb 363#endif
a0528984
EZ
364#endif /* not USE_X_TOOLKIT */
365
a0528984
EZ
366#ifdef HAVE_X11
367/* LD_SWITCH_X_DEFAULT comes after everything else that specifies
368 options for where to find X libraries, but before those libraries. */
369X11_LDFLAGS = LD_SWITCH_X_SITE LD_SWITCH_X_DEFAULT
8224f93d 370LIBX= $(LIBXMENU) $(X11_LDFLAGS) $(LIBXT) $(LIBTIFF) $(LIBJPEG) $(LIBPNG) $(LIBGIF) $(LIBXPM) LIB_X11_LIB $(XFT_LIBS)
a0528984 371#else /* not HAVE_X11 */
c22140f6 372LIBX= $(LIBXMENU) LD_SWITCH_X_SITE
a0528984
EZ
373#endif /* not HAVE_X11 */
374#endif /* not HAVE_X_WINDOWS */
375
a0528984
EZ
376#ifndef ORDINARY_LINK
377/* Fix linking if compiled with GCC. */
378#ifdef __GNUC__
379
a0528984
EZ
380#ifdef LINKER
381#define LINKER_WAS_SPECIFIED
382#endif
383
384/* Versions of GCC >= 2.0 put their library, libgcc.a, in obscure
385 places that are difficult to figure out at make time. Fortunately,
386 these same versions allow you to pass arbitrary flags on to the
be9b5a60 387 linker, so there is no reason not to use it as a linker.
a0528984 388
be9b5a60 389 Well, it is not quite perfect. The "-nostdlib" keeps GCC from
a0528984
EZ
390 searching for libraries in its internal directories, so we have to
391 ask GCC explicitly where to find libgcc.a. */
392
393#ifndef LINKER
394#define LINKER $(CC) -nostdlib
395#endif
396
397#ifndef LIB_GCC
398/* Ask GCC where to find libgcc.a. */
399#define LIB_GCC `$(CC) -print-libgcc-file-name`
400#endif /* not LIB_GCC */
401
402GNULIB_VAR = LIB_GCC
403
404#ifndef LINKER_WAS_SPECIFIED
405/* GCC passes any argument prefixed with -Xlinker directly to the
be9b5a60 406 linker. See prefix-args.c for an explanation of why we do not do
5aa17bb2 407 this with the shell''s ``for'' construct.
be9b5a60 408 Note that some people do not have '.' in their paths, so we must
a0528984
EZ
409 use ./prefix-args. */
410#define YMF_PASS_LDFLAGS(flags) `./prefix-args -Xlinker flags`
411#else
412#define YMF_PASS_LDFLAGS(flags) flags
413#endif
414
a0528984
EZ
415#else /* not __GNUC__ */
416GNULIB_VAR =
417
418#endif /* not __GNUC__ */
419#endif /* not ORDINARY_LINK */
420
a0528984
EZ
421#ifdef ORDINARY_LINK
422LD = $(CC)
423#else
a0528984
EZ
424#ifdef LINKER
425LD=LINKER
426#else /* not LINKER */
427LD=ld
428#endif /* not LINKER */
a0528984
EZ
429#endif /* not ORDINARY_LINK */
430
dfe15ea3 431/* Flags to pass to LD only for temacs. */
be9b5a60 432/* Do not split this line with a backslash. That can cause trouble with
afb44cc2 433 some cpps. */
77ccee09 434TEMACS_LDFLAGS = LD_SWITCH_SYSTEM LD_SWITCH_SYSTEM_TEMACS LD_SWITCH_MACHINE LD_SWITCH_MACHINE_TEMACS
a0528984
EZ
435
436/* A macro which other sections of Makefile can redefine to munge the
be9b5a60 437 flags before they are passed to LD. This is helpful if you have
a0528984
EZ
438 redefined LD to something odd, like "gcc".
439 (The YMF prefix is a holdover from the old name "ymakefile".)
440 */
441#ifndef YMF_PASS_LDFLAGS
442#define YMF_PASS_LDFLAGS(flags) flags
443#endif
444
a0528984
EZ
445#ifdef MSDOS
446#ifdef HAVE_X_WINDOWS
005e19a5 447MSDOS_OBJ = dosfns.o msdos.o xmenu.o
a0528984 448#else
073589f4 449MSDOS_OBJ = dosfns.o msdos.o w16select.o xmenu.o termcap.o
a0528984
EZ
450#endif
451#endif
452
6b61353c
KH
453#ifdef CYGWIN
454CYGWIN_OBJ = sheap.o
455#endif
456
edfda783 457#ifdef HAVE_NS
06b62770
AR
458ns_appdir=@ns_appdir@/
459ns_appbindir=@ns_appbindir@/
460ns_appresdir=@ns_appresdir@/
461ns_appsrc=@ns_appsrc@
edfda783
AR
462/* Object files for NeXTstep */
463NS_OBJ= nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
464 fontset.o fringe.o image.o
edfda783
AR
465#endif /* HAVE_NS */
466
7de94409 467#ifdef HAVE_WINDOW_SYSTEM
7de94409
KH
468#ifdef HAVE_X_WINDOWS
469#if defined (HAVE_XFT)
0f91ebe6 470FONT_DRIVERS = xfont.o ftfont.o xftfont.o ftxfont.o
7de94409 471#elif defined (HAVE_FREETYPE)
0f91ebe6 472FONT_DRIVERS = xfont.o ftfont.o ftxfont.o
7de94409 473#else /* ! defined (HAVE_XFT) && ! defined (HAVE_FREETYPE) */
0f91ebe6 474FONT_DRIVERS = xfont.o
7de94409 475#endif /* ! defined (HAVE_XFT) && ! defined (HAVE_FREETYPE) */
0f91ebe6 476#endif /* HAVE_X_WINDOWS */
7de94409
KH
477#endif /* HAVE_WINDOW_SYSTEM */
478
a0528984
EZ
479/* lastfile must follow all files
480 whose initialized data areas should be dumped as pure by dump-emacs. */
01ef9d36 481obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
f44e260c 482 charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \
033b73e2 483 cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
a0528984
EZ
484 emacs.o keyboard.o macros.o keymap.o sysdep.o \
485 buffer.o filelock.o insdel.o marker.o \
486 minibuf.o fileio.o dired.o filemode.o \
487 cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
488 alloc.o data.o doc.o editfns.o callint.o \
0f91ebe6 489 eval.o floatfns.o fns.o font.o print.o lread.o \
e047f448 490 syntax.o UNEXEC bytecode.o \
a0528984
EZ
491 process.o callproc.o \
492 region-cache.o sound.o atimer.o \
493 doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
9e2a2647 494 $(MSDOS_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_DRIVERS)
a0528984
EZ
495
496/* Object files used on some machine or other.
497 These go in the DOC file on all machines
498 in case they are needed there. */
04a697fe 499SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
d87a9ab8 500 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
25c72475 501 fontset.o dbusbind.o \
a68fda4a 502 nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
c9fc02c7 503 w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
0f91ebe6 504 w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_DRIVERS)
a0528984
EZ
505
506
507#ifdef TERMINFO
508/* Used to be -ltermcap here. If your machine needs that,
509 define LIBS_TERMCAP in the m/MACHINE.h file. */
510#ifndef LIBS_TERMCAP
511#define LIBS_TERMCAP -lcurses
512#endif /* LIBS_TERMCAP */
513termcapobj = terminfo.o
514#else /* ! defined (TERMINFO) */
515#ifndef LIBS_TERMCAP
516#define LIBS_TERMCAP
a0528984 517#endif /* LIBS_TERMCAP */
073589f4 518termcapobj = tparam.o
a0528984
EZ
519#endif /* ! defined (TERMINFO) */
520
521
522#ifndef SYSTEM_MALLOC
523
2fa0eedf
RS
524#ifndef DOUG_LEA_MALLOC
525gmallocobj = gmalloc.o
526#endif
527
a0528984 528#ifdef REL_ALLOC
2fa0eedf
RS
529rallocobj = ralloc.o
530#endif
531
532mallocobj = $(gmallocobj) $(rallocobj) vm-limit.o
a0528984
EZ
533
534#endif /* SYSTEM_MALLOC */
535
536
a0528984
EZ
537#ifdef USE_X_TOOLKIT
538widgetobj= widget.o
539#else /* not USE_X_TOOLKIT */
540widgetobj=
541#endif /* not USE_X_TOOLKIT */
542
543
544/* define otherobj as list of object files that make-docfile
545 should not be told about. */
6b61353c
KH
546#ifdef CYGWIN
547/* Cygwin differs because of its unexec(). */
67d20687 548otherobj= $(termcapobj) $(gmallocobj) $(rallocobj) lastfile.o vm-limit.o $(widgetobj) $(LIBOBJS)
6b61353c 549#else
67d20687 550otherobj= $(termcapobj) lastfile.o $(mallocobj) $(widgetobj) $(LIBOBJS)
6b61353c 551#endif
a0528984
EZ
552
553#ifdef HAVE_MOUSE
554#define MOUSE_SUPPORT ${lispsource}mouse.elc \
555 ${lispsource}select.elc ${lispsource}scroll-bar.elc
556#else
dd7c5963
NR
557#ifdef HAVE_GPM
558#define MOUSE_SUPPORT ${lispsource}mouse.elc
559#else
a0528984
EZ
560#define MOUSE_SUPPORT
561#endif
dd7c5963 562#endif
a0528984 563
a0528984
EZ
564#ifdef MSDOS
565#define MSDOS_SUPPORT ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
e227ba05 566 ${lispsource}dos-fns.elc ${lispsource}dos-w32.elc ${lispsource}dos-vars.elc \
b7d552d6 567 ${lispsource}term/internal.elc ${lispsource}term/pc-win.elc
a0528984
EZ
568
569#else
570#define MSDOS_SUPPORT
571#endif
572
414546fb
NR
573#ifdef HAVE_WINDOW_SYSTEM
574#ifdef HAVE_X_WINDOWS
d76c7a77 575#define WINDOW_SUPPORT ${lispsource}fringe.elc ${lispsource}image.elc \
414546fb 576 ${lispsource}international/fontset.elc ${lispsource}dnd.elc \
b7d552d6 577 ${lispsource}tool-bar.elc ${lispsource}mwheel.elc ${lispsource}x-dnd.elc \
749cebc3
JD
578 ${lispsource}term/common-win.elc ${lispsource}term/x-win.elc \
579 ${lispsource}font-setting.elc
414546fb 580#else
d76c7a77 581#define WINDOW_SUPPORT ${lispsource}fringe.elc ${lispsource}image.elc \
414546fb
NR
582 ${lispsource}international/fontset.elc ${lispsource}dnd.elc \
583 ${lispsource}tool-bar.elc ${lispsource}mwheel.elc
584#endif
585#else
586#define WINDOW_SUPPORT
587#endif
588
a0528984 589#ifdef WINDOWSNT
1f1bce0e
JR
590#define WINNT_SUPPORT ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
591 ${lispsource}dos-w32.elc ${lispsource}w32-vars.elc \
b7d552d6
GM
592 ${lispsource}w32-fns.elc ${lispsource}term/common-win.elc \
593 ${lispsource}term/w32-win.elc
a0528984
EZ
594#else
595#define WINNT_SUPPORT
596#endif
597
875baa34
LT
598#ifdef HAVE_WINDOW_SYSTEM
599#define TOOLTIP_SUPPORT ${lispsource}tooltip.elc
600#else
601#define TOOLTIP_SUPPORT
602#endif
603
b7d552d6
GM
604#ifdef HAVE_NS
605#define NS_SUPPORT ${lispsource}emacs-lisp/easymenu.elc \
606 ${lispsource}term/ns-win.elc
607#else
608#define NS_SUPPORT
609#endif
610
00e2f46c
GM
611/* This is the platform-specific list of Lisp files loaded into the
612 dumped Emacs. It is arranged like this because it is easier to generate
613 it semi-mechanically from loadup.el this way.
a0528984
EZ
614
615 Note that this list should not include lisp files which might not
616 be present, like site-load.el and site-init.el; this makefile
617 expects them all to be either present or buildable.
618
00e2f46c
GM
619 Files which are loaded unconditionally (i.e., on all platforms) should
620 also be in shortlisp. Files which are loaded conditionally (i.e., only
621 on some platforms) should instead be in SOME_MACHINE_LISP. */
a0528984 622
c045cf6e 623/* Place loaddefs.el first, so it gets generated first, since it is on
b4945b95
SM
624 the critical path (relevant in parallel compilations). */
625
a0528984 626lisp= \
b4945b95 627 ${lispsource}loaddefs.el \
a0528984
EZ
628 ${lispsource}abbrev.elc \
629 ${lispsource}buff-menu.elc \
aae5b722 630 ${lispsource}button.elc \
f984e73e 631 ${lispsource}emacs-lisp/byte-run.elc \
731055f5 632 ${lispsource}composite.elc \
bfcf6dbe 633 ${lispsource}cus-face.elc \
d381a855 634 ${lispsource}cus-start.elc \
a0528984 635 ${lispsource}custom.elc \
6e860d15 636 ${lispsource}emacs-lisp/backquote.elc \
a0528984
EZ
637 ${lispsource}emacs-lisp/lisp-mode.elc \
638 ${lispsource}emacs-lisp/lisp.elc \
639 ${lispsource}env.elc \
640 ${lispsource}faces.elc \
641 ${lispsource}files.elc \
642 ${lispsource}format.elc \
643 ${lispsource}facemenu.elc \
644 MOUSE_SUPPORT \
f984e73e 645 ${lispsource}emacs-lisp/float-sup.elc \
af0ad939 646 ${lispsource}frame.elc \
a0528984
EZ
647 ${lispsource}help.elc \
648 ${lispsource}indent.elc \
649 ${lispsource}isearch.elc \
29f05691 650 ${lispsource}rfn-eshadow.elc \
a0528984 651 ${lispsource}loadup.el \
aae5b722 652 ${lispsource}bindings.elc \
f984e73e 653 ${lispsource}emacs-lisp/map-ynp.elc \
a0528984
EZ
654 ${lispsource}menu-bar.elc \
655 ${lispsource}international/mule.elc \
e118d2be 656 ${lispsource}international/mule-conf.elc \
a0528984
EZ
657 ${lispsource}international/mule-cmds.elc \
658 ${lispsource}international/characters.elc \
15e2814c 659 ${lispsource}international/charprop.el \
a0528984 660 ${lispsource}case-table.elc \
e118d2be
AS
661 ${lispsource}language/chinese.elc \
662 ${lispsource}language/cyrillic.elc \
7e694795 663 ${lispsource}language/indian.elc \
cc8d1311 664 ${lispsource}language/sinhala.el \
74fc84af 665 ${lispsource}language/english.el \
a0528984
EZ
666 ${lispsource}language/ethiopic.elc \
667 ${lispsource}language/european.elc \
74fc84af
EZ
668 ${lispsource}language/czech.el \
669 ${lispsource}language/slovak.el \
670 ${lispsource}language/romanian.el \
671 ${lispsource}language/greek.el \
672 ${lispsource}language/hebrew.el \
673 ${lispsource}language/japanese.el \
674 ${lispsource}language/korean.el \
675 ${lispsource}language/lao.el \
c9228487 676 ${lispsource}language/cham.el \
16460a76 677 ${lispsource}language/tai-viet.el \
74fc84af 678 ${lispsource}language/thai.el \
a0528984 679 ${lispsource}language/tibetan.elc \
e118d2be 680 ${lispsource}language/vietnamese.elc \
74fc84af 681 ${lispsource}language/misc-lang.el \
1e9a6186
DL
682 ${lispsource}language/utf-8-lang.el \
683 ${lispsource}language/georgian.el \
0e45710c 684 ${lispsource}language/khmer.el \
7f6519c5 685 ${lispsource}language/burmese.el \
a0528984
EZ
686 ${lispsource}paths.el \
687 ${lispsource}register.elc \
688 ${lispsource}replace.elc \
689 ${lispsource}simple.elc \
32bae13c 690 ${lispsource}minibuffer.elc \
a0528984
EZ
691 ${lispsource}startup.elc \
692 ${lispsource}subr.elc \
693 ${lispsource}term/tty-colors.elc \
bfcf6dbe 694 ${lispsource}font-core.elc \
1f7b1131
DN
695 ${lispsource}emacs-lisp/syntax.elc \
696 ${lispsource}font-lock.elc \
697 ${lispsource}jit-lock.elc \
a0528984
EZ
698 ${lispsource}textmodes/fill.elc \
699 ${lispsource}textmodes/page.elc \
700 ${lispsource}textmodes/paragraphs.elc \
701 ${lispsource}textmodes/text-mode.elc \
f984e73e 702 ${lispsource}emacs-lisp/timer.elc \
6e6851b0 703 ${lispsource}jka-cmpr-hook.elc \
a0528984
EZ
704 ${lispsource}vc-hooks.elc \
705 ${lispsource}ediff-hook.elc \
86914123 706 ${lispsource}epa-hook.elc \
875baa34 707 TOOLTIP_SUPPORT \
a0528984
EZ
708 MSDOS_SUPPORT \
709 WINNT_SUPPORT \
414546fb 710 WINDOW_SUPPORT \
b7d552d6 711 NS_SUPPORT \
a0528984
EZ
712 ${lispsource}widget.elc \
713 ${lispsource}window.elc \
714 ${lispsource}version.el
715
00e2f46c
GM
716/* List of relative names for those files from $lisp that are loaded
717 unconditionally (i.e. on all platforms). Files from $lisp that
718 are only loaded on some platforms should instead be placed in
719 SOME_MACHINE_LISP. The only reason this variable exists is to prevent
720 the make-docfile command-line getting too long for some systems. */
a0528984 721shortlisp= \
b4945b95 722 ../lisp/loaddefs.el \
a0528984
EZ
723 ../lisp/abbrev.elc \
724 ../lisp/buff-menu.elc \
aae5b722 725 ../lisp/button.elc \
f984e73e 726 ../lisp/emacs-lisp/byte-run.elc \
731055f5 727 ../lisp/composite.elc \
bfcf6dbe 728 ../lisp/cus-face.elc \
d381a855 729 ../lisp/cus-start.elc \
a0528984 730 ../lisp/custom.elc \
f7d5d963 731 ../lisp/emacs-lisp/backquote.elc \
a0528984
EZ
732 ../lisp/emacs-lisp/lisp-mode.elc \
733 ../lisp/emacs-lisp/lisp.elc \
734 ../lisp/facemenu.elc \
735 ../lisp/faces.elc \
736 ../lisp/files.elc \
f984e73e 737 ../lisp/emacs-lisp/float-sup.elc \
a0528984
EZ
738 ../lisp/format.elc \
739 ../lisp/frame.elc \
740 ../lisp/help.elc \
741 ../lisp/indent.elc \
742 ../lisp/isearch.elc \
29f05691 743 ../lisp/rfn-eshadow.elc \
a0528984 744 ../lisp/loadup.el \
aae5b722 745 ../lisp/bindings.elc \
f984e73e 746 ../lisp/emacs-lisp/map-ynp.elc \
a0528984
EZ
747 ../lisp/env.elc \
748 ../lisp/international/mule.elc \
e118d2be 749 ../lisp/international/mule-conf.elc \
a0528984
EZ
750 ../lisp/international/mule-cmds.elc \
751 ../lisp/international/characters.elc \
752 ../lisp/case-table.elc \
e118d2be
AS
753 ../lisp/language/chinese.elc \
754 ../lisp/language/cyrillic.elc \
7e694795 755 ../lisp/language/indian.elc \
cc8d1311 756 ../lisp/language/sinhala.el \
74fc84af 757 ../lisp/language/english.el \
a0528984
EZ
758 ../lisp/language/ethiopic.elc \
759 ../lisp/language/european.elc \
74fc84af
EZ
760 ../lisp/language/czech.el \
761 ../lisp/language/slovak.el \
762 ../lisp/language/romanian.el \
763 ../lisp/language/greek.el \
764 ../lisp/language/hebrew.el \
765 ../lisp/language/japanese.el \
766 ../lisp/language/korean.el \
767 ../lisp/language/lao.el \
c9228487 768 ../lisp/language/cham.el \
16460a76 769 ../lisp/language/tai-viet.el \
74fc84af 770 ../lisp/language/thai.el \
a0528984 771 ../lisp/language/tibetan.elc \
e118d2be 772 ../lisp/language/vietnamese.elc \
74fc84af 773 ../lisp/language/misc-lang.el \
1e9a6186
DL
774 ../lisp/language/utf-8-lang.el \
775 ../lisp/language/georgian.el \
0e45710c 776 ../lisp/language/khmer.el \
7f6519c5 777 ../lisp/language/burmese.el \
f7d5d963 778 ../lisp/menu-bar.elc \
a0528984
EZ
779 ../lisp/paths.el \
780 ../lisp/register.elc \
781 ../lisp/replace.elc \
782 ../lisp/simple.elc \
32bae13c 783 ../lisp/minibuffer.elc \
a0528984
EZ
784 ../lisp/startup.elc \
785 ../lisp/subr.elc \
786 ../lisp/term/tty-colors.elc \
59809627 787 ../lisp/font-core.elc \
1f7b1131
DN
788 ../lisp/emacs-lisp/syntax.elc \
789 ../lisp/font-lock.elc \
790 ../lisp/jit-lock.elc \
a0528984
EZ
791 ../lisp/textmodes/fill.elc \
792 ../lisp/textmodes/page.elc \
793 ../lisp/textmodes/paragraphs.elc \
794 ../lisp/textmodes/text-mode.elc \
f984e73e 795 ../lisp/emacs-lisp/timer.elc \
a0528984 796 ../lisp/vc-hooks.elc \
6e6851b0 797 ../lisp/jka-cmpr-hook.elc \
a0528984 798 ../lisp/ediff-hook.elc \
86914123 799 ../lisp/epa-hook.elc \
a0528984
EZ
800 ../lisp/widget.elc \
801 ../lisp/window.elc \
802 ../lisp/version.el
803
00e2f46c
GM
804/* Like $shortlisp, but includes only those files from $lisp that are loaded
805 conditionally (i.e., only on some platforms). */
60a3d7ee
DN
806SOME_MACHINE_LISP = ../lisp/mouse.elc \
807 ../lisp/select.elc ../lisp/scroll-bar.elc \
60a3d7ee
DN
808 ../lisp/ls-lisp.elc ../lisp/dos-fns.elc \
809 ../lisp/w32-fns.elc ../lisp/dos-w32.elc \
810 ../lisp/disp-table.elc ../lisp/dos-vars.elc \
811 ../lisp/tooltip.elc ../lisp/image.elc \
812 ../lisp/fringe.elc ../lisp/dnd.elc \
813 ../lisp/mwheel.elc ../lisp/tool-bar.elc \
749cebc3 814 ../lisp/x-dnd.elc ../lisp/font-setting.elc \
60a3d7ee 815 ../lisp/international/ccl.elc \
60a3d7ee
DN
816 ../lisp/international/fontset.elc \
817 ../lisp/mouse.elc \
24ed93fb 818 ../lisp/term/common-win.elc \
7206e7b7 819 ../lisp/term/x-win.elc \
e227ba05 820 ../lisp/term/pc-win.elc ../lisp/term/internal.elc \
b7d552d6
GM
821 ../lisp/term/ns-win.elc ../lisp/term/w32-win.elc \
822 ../lisp/emacs-lisp/easymenu.elc
a0528984
EZ
823
824/* Construct full set of libraries to be linked.
825 Note that SunOS needs -lm to come before -lc; otherwise, you get
826 duplicated symbols. If the standard libraries were compiled
827 with GCC, we might need gnulib again after them. */
edfda783 828
033b73e2 829LIBES = $(LOADLIBES) $(LIBS) $(LIBX) $(LIBSOUND) $(RSVG_LIBS) $(DBUS_LIBS) \
aded53ff 830 @LIBGPM@ @LIBRESOLV@ LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP \
574c05e2 831 $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \
ac96711a 832 @FREETYPE_LIBS@ @FONTCONFIG_LIBS@ @LIBOTF_LIBS@ @M17N_FLT_LIBS@ \
22f5bb01 833 $(GNULIB_VAR) LIB_MATH LIB_STANDARD $(GNULIB_VAR)
a0528984 834
005bd5a2 835all: emacs${EXEEXT} $(OTHER_FILES)
a0528984 836
0c2b6f8e 837emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
a0528984 838#ifdef CANNOT_DUMP
108c7c97
AS
839 rm -f emacs${EXEEXT}
840 ln temacs${EXEEXT} emacs${EXEEXT}
c8edcc01 841 -EMACSLOADPATH=${lispsource} ./emacs -q -batch -f list-load-path-shadows
a0528984 842#else
83f1cb94 843 LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump
fc46d219
SM
844 @: This new Emacs is as functional and more efficient then
845 @: bootstrap-emacs, so let us replace it.
846 -ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
a0528984 847 -./emacs -q -batch -f list-load-path-shadows
c8edcc01 848#endif /* ! defined (CANNOT_DUMP) */
a0528984
EZ
849
850/* We run make-docfile twice because the command line may get too long
851 on some systems. */
852/* ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may
853 or may not be included in ${obj}, but they are always included in
854 ${SOME_MACHINE_OBJECTS}. Since a file is processed when it is mentioned
855 for the first time, this prevents any variation between configurations
856 in the contents of the DOC file.
857 Likewise for ${SOME_MACHINE_LISP}. */
d7c664f3
SM
858/* Most of this Makefile refers to Lisp files via ${lispsource}, so
859 we also use ${lisp} rather than ${shortlisp} for the dependency since
860 the Makefile uses string equality to decide when we talk about identical
861 files. Apparently we pass ${shortlisp} rather than ${lisp} to make-docfile
862 only in order to reduce the command line length. --Stef */
863${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
a0528984
EZ
864 -rm -f ${etc}DOC
865 ${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
866 ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
867
108c7c97
AS
868${libsrc}make-docfile${EXEEXT}:
869 cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile${EXEEXT}
a0528984 870
878bde49 871buildobj.h: Makefile
005bd5a2 872 echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h
878bde49 873
005bd5a2 874temacs${EXEEXT}: $(LOCALCPP) $(STARTFILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT}
122e9f8f 875#ifdef NS_IMPL_GNUSTEP
a2d3af1c 876 $(CC) -rdynamic YMF_PASS_LDFLAGS ( ${TEMACS_LDFLAGS} \
f412b180 877 -L@GNUSTEP_SYSTEM_LIBRARIES@ -lgnustep-gui -lgnustep-base \
a2d3af1c 878 -lobjc $(CONFIG_SYSTEM_LIBS) -lpthread ) -o temacs \
005bd5a2 879 ${obj} ${otherobj} ${LIBES}
edfda783 880#else
dfe15ea3 881 $(LD) YMF_PASS_LDFLAGS (${STARTFLAGS} ${TEMACS_LDFLAGS}) $(LDFLAGS) \
a0528984 882 -o temacs ${STARTFILES} ${obj} ${otherobj} \
005bd5a2 883 ${LIBES}
edfda783 884#endif
a0528984 885
be9b5a60 886/* We do not use ALL_LDFLAGS because LD_SWITCH_SYSTEM and LD_SWITCH_MACHINE
5aa17bb2 887 often contain options that have to do with using Emacs''s crt0,
a0528984 888 which are only good with temacs. */
a53cfbe5 889prefix-args${EXEEXT}: prefix-args.o $(config_h)
f4c21026 890 $(CC) $(LDFLAGS) prefix-args.o -o prefix-args
a0528984 891
a51f4969 892#if defined (HAVE_X_WINDOWS) && defined (HAVE_X11) && defined (HAVE_MENUS) && ! defined (USE_GTK)
a0528984
EZ
893
894/* We use stamp-xmenu with these two deps
895 to both ensure that lwlib gets remade based on its dependencies
896 in its own makefile,
897 and remake temacs if lwlib gets changed by this. */
c60ee5e7 898stamp-oldxmenu: ${OLDXMENU} ../src/$(OLDXMENU)
a0528984
EZ
899 touch stamp-oldxmenu
900/* Supply an ordering for parallel make. */
901../src/$(OLDXMENU): ${OLDXMENU}
902
a0528984
EZ
903/* Encode the values of these two macros in Make variables,
904 so we can use $(...) to substitute their values within "...". */
a0528984
EZ
905C_SWITCH_X_MACHINE_1 = C_SWITCH_X_MACHINE
906C_SWITCH_X_SYSTEM_1 = C_SWITCH_X_SYSTEM
deeaffe1
DN
907
908#ifdef USE_X_TOOLKIT
909$(OLDXMENU): really-lwlib
910
a0528984 911really-lwlib:
6b61353c 912 cd ${lwlibdir}; ${MAKE} ${MFLAGS} \
a0528984 913 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' \
a0528984 914 "C_SWITCH_X_MACHINE=$(C_SWITCH_X_MACHINE_1)" \
8d9c8ece 915 "C_SWITCH_X_SYSTEM=$(C_SWITCH_X_SYSTEM_1)"
a0528984
EZ
916 @true /* make -t should not create really-lwlib. */
917.PHONY: really-lwlib
918#else /* not USE_X_TOOLKIT */
919$(OLDXMENU): really-oldXMenu
920
a0528984 921really-oldXMenu:
9c28b587 922 cd ${oldXMenudir}; ${MAKE} ${MFLAGS} \
a0528984 923 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' \
a0528984 924 "C_SWITCH_X_MACHINE=$(C_SWITCH_X_MACHINE_1)" \
8d9c8ece 925 "C_SWITCH_X_SYSTEM=$(C_SWITCH_X_SYSTEM_1)"
a0528984
EZ
926 @true /* make -t should not create really-oldXMenu. */
927.PHONY: really-oldXMenu
928#endif /* not USE_X_TOOLKIT */
a51f4969 929#else /* not (HAVE_X_WINDOWS && HAVE_X11 && HAVE_MENUS && ! USE_GTK) */
a0528984 930
5aa17bb2 931/* We don''t really need this, but satisfy the dependency. */
a0528984
EZ
932stamp-oldxmenu:
933 touch stamp-oldxmenu
a51f4969 934#endif /* not (HAVE_X_WINDOWS && HAVE_X11 && HAVE_MENUS && ! USE_GTK) */
a0528984
EZ
935
936../config.status:: epaths.in
937 @echo "The file epaths.h needs to be set up from epaths.in."
938 @echo "Please run the `configure' script again."
939 exit 1
940
941../config.status:: config.in
942 @echo "The file config.h needs to be set up from config.in."
943 @echo "Please run the `configure' script again."
944 exit 1
945
a53cfbe5 946ecrt0.o: ecrt0.c $(config_h)
cfc86c7a
JD
947#ifdef AUTO_DEPEND
948 @-test -d deps || mkdir deps
949#endif
19d4c244 950 $(CC) -c $(ALL_CFLAGS) ${srcdir}/ecrt0.c
a53cfbe5
JD
951doc.o: buildobj.h
952
953#ifndef AUTO_DEPEND
a0528984 954
3f670e9a
EZ
955atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \
956 $(config_h)
ad55bd46 957bidi.o: bidi.c buffer.h character.h dispextern.h lisp.h $(config_h)
a0528984 958buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \
3f670e9a
EZ
959 $(INTERVALS_H) blockinput.h atimer.h systime.h character.h \
960 indent.h keyboard.h coding.h keymap.h frame.h lisp.h $(config_h)
21065c92 961callint.o: callint.c window.h commands.h buffer.h keymap.h \
3f670e9a 962 keyboard.h dispextern.h systime.h coding.h composite.h lisp.h $(config_h)
0a5d24ae 963callproc.o: callproc.c epaths.h buffer.h commands.h lisp.h $(config_h) \
8f924df7 964 process.h systty.h syssignal.h character.h coding.h ccl.h msdos.h \
3f670e9a
EZ
965 composite.h w32.h blockinput.h atimer.h systime.h frame.h termhooks.h \
966 buffer.h
85969c22 967casefiddle.o: casefiddle.c syntax.h commands.h buffer.h character.h \
3f670e9a
EZ
968 composite.h keymap.h lisp.h $(config_h)
969casetab.o: casetab.c buffer.h character.h lisp.h $(config_h)
a63aa692 970category.o: category.c category.h buffer.h charset.h keymap.h \
0a5d24ae 971 character.h lisp.h $(config_h)
3f670e9a 972ccl.o: ccl.c ccl.h charset.h character.h coding.h composite.h lisp.h $(config_h)
85969c22 973character.o: character.c character.h buffer.h charset.h composite.h disptab.h \
0a5d24ae 974 lisp.h $(config_h)
85969c22 975charset.o: charset.c charset.h character.h buffer.h coding.h composite.h \
0a5d24ae 976 disptab.h lisp.h $(config_h)
3f670e9a
EZ
977chartab.o: charset.h character.h ccl.h lisp.h $(config_h)
978coding.o: coding.c coding.h ccl.h buffer.h character.h charset.h composite.h \
0a5d24ae 979 window.h dispextern.h frame.h termhooks.h lisp.h $(config_h)
3f670e9a 980cm.o: cm.c frame.h cm.h termhooks.h termchar.h dispextern.h lisp.h $(config_h)
0a5d24ae 981cmds.o: cmds.c syntax.h buffer.h character.h commands.h window.h lisp.h $(config_h) \
3f670e9a
EZ
982 msdos.h dispextern.h keyboard.h keymap.h systime.h coding.h frame.h \
983 composite.h
a0528984 984pre-crt0.o: pre-crt0.c
0a5d24ae
DN
985dbusbind.o: dbusbind.c termhooks.h frame.h keyboard.h lisp.h $(config_h)
986dired.o: dired.c commands.h buffer.h lisp.h $(config_h) character.h charset.h \
3f670e9a
EZ
987 coding.h regex.h systime.h blockinput.h atimer.h composite.h
988dispnew.o: dispnew.c systime.h commands.h process.h frame.h coding.h \
989 window.h buffer.h termchar.h termopts.h termhooks.h cm.h \
bd7bbf29 990 disptab.h indent.h $(INTERVALS_H) \
3f670e9a 991 xterm.h blockinput.h atimer.h character.h msdos.h keyboard.h \
0a5d24ae 992 syssignal.h lisp.h $(config_h)
3f670e9a
EZ
993doc.o: doc.c lisp.h $(config_h) epaths.h buffer.h keyboard.h keymap.h \
994 character.h systime.h coding.h composite.h
0a5d24ae 995doprnt.o: doprnt.c character.h lisp.h $(config_h)
21065c92 996dosfns.o: buffer.h termchar.h termhooks.h frame.h blockinput.h window.h \
ffb72b67 997 msdos.h dosfns.h dispextern.h charset.h coding.h atimer.h systime.h \
0a5d24ae 998 lisp.h $(config_h)
bd7bbf29 999editfns.o: editfns.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
3f670e9a 1000 coding.h frame.h blockinput.h atimer.h lisp.h $(config_h)
a0528984 1001emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \
0a5d24ae 1002 termhooks.h buffer.h atimer.h systime.h $(INTERVALS_H) lisp.h $(config_h) \
3f670e9a 1003 window.h dispextern.h keyboard.h keymap.h frame.h coding.h
bd7bbf29 1004fileio.o: fileio.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
3f670e9a
EZ
1005 coding.h msdos.h blockinput.h atimer.h lisp.h $(config_h) frame.h commands.h
1006filelock.o: filelock.c buffer.h character.h coding.h systime.h composite.h \
1007 lisp.h $(config_h)
1008filemode.o: filemode.c $(config_h)
a0528984 1009frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
08b3caa9 1010 blockinput.h atimer.h systime.h buffer.h character.h fontset.h font.h \
3f670e9a
EZ
1011 msdos.h dosfns.h dispextern.h w32term.h termchar.h coding.h composite.h \
1012 lisp.h $(config_h) termhooks.h ccl.h
1013fringe.o: fringe.c dispextern.h frame.h window.h buffer.h termhooks.h \
1014 blockinput.h atimer.h systime.h lisp.h $(config_h)
08b1e593 1015font.o: font.c dispextern.h frame.h window.h ccl.h character.h charset.h \
3f670e9a 1016 font.h lisp.h $(config_h) buffer.h composite.h fontset.h xterm.h
6b7f0860 1017ftfont.o: dispextern.h frame.h character.h charset.h composite.h font.h \
3f670e9a
EZ
1018 lisp.h $(config_h) blockinput.h atimer.h systime.h coding.h fontset.h \
1019 ccl.h ftfont.h
1020fontset.o: fontset.c fontset.h ccl.h buffer.h character.h \
1021 charset.h frame.h keyboard.h termhooks.h font.h lisp.h $(config_h) \
1022 blockinput.h atimer.h systime.h coding.h $(INTERVALS_H) window.h xterm.h
a0528984 1023getloadavg.o: getloadavg.c $(config_h)
0a5d24ae 1024gtkutil.o: gtkutil.c gtkutil.h xterm.h lisp.h frame.h lisp.h $(config_h) \
b9fd67bd 1025 blockinput.h window.h atimer.h systime.h termhooks.h keyboard.h \
3f670e9a 1026 charset.h coding.h syssignal.h dispextern.h composite.h
6b61353c 1027image.o: image.c frame.h window.h dispextern.h blockinput.h atimer.h \
3f670e9a
EZ
1028 systime.h xterm.h w32term.h w32gui.h font.h epaths.h character.h coding.h \
1029 nsterm.h nsgui.h lisp.h $(config_h) composite.h termhooks.h ccl.h
0a5d24ae 1030indent.o: indent.c frame.h window.h indent.h buffer.h lisp.h $(config_h) termchar.h \
3f670e9a
EZ
1031 termopts.h disptab.h region-cache.h character.h category.h \
1032 keyboard.h systime.h coding.h $(INTERVALS_H)
bd7bbf29 1033insdel.o: insdel.c window.h buffer.h $(INTERVALS_H) blockinput.h character.h \
0a5d24ae 1034 dispextern.h atimer.h systime.h region-cache.h lisp.h $(config_h)
85969c22 1035keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \
a0528984 1036 commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \
3f670e9a
EZ
1037 systime.h syntax.h $(INTERVALS_H) blockinput.h atimer.h composite.h \
1038 xterm.h puresize.h msdos.h keymap.h w32term.h nsterm.h coding.h \
0a5d24ae 1039 lisp.h $(config_h)
a0528984 1040keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \
bd7bbf29 1041 atimer.h systime.h puresize.h character.h charset.h $(INTERVALS_H) keymap.h window.h \
3f670e9a 1042 coding.h frame.h lisp.h $(config_h)
0a5d24ae 1043lastfile.o: lastfile.c $(config_h)
a0528984 1044macros.o: macros.c window.h buffer.h commands.h macros.h keyboard.h \
3f670e9a 1045 dispextern.h lisp.h $(config_h) systime.h coding.h composite.h
a0528984 1046gmalloc.o: gmalloc.c $(config_h)
0a5d24ae
DN
1047ralloc.o: ralloc.c lisp.h $(config_h)
1048vm-limit.o: vm-limit.c mem-limits.h lisp.h $(config_h)
1049marker.o: marker.c buffer.h character.h lisp.h $(config_h)
39c9a034 1050md5.o: md5.c md5.h $(config_h)
3f670e9a 1051minibuf.o: minibuf.c syntax.h frame.h window.h keyboard.h systime.h \
bd7bbf29 1052 buffer.h commands.h character.h msdos.h $(INTERVALS_H) keymap.h \
3f670e9a 1053 termhooks.h lisp.h $(config_h) coding.h
a0528984 1054mktime.o: mktime.c $(config_h)
a0528984 1055msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \
85969c22 1056 termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \
0a5d24ae 1057 keyboard.h $(INTERVALS_H) buffer.h commands.h blockinput.h atimer.h lisp.h $(config_h)
55737942 1058nsfns.o: nsfns.m charset.h nsterm.h nsgui.h frame.h window.h buffer.h \
bd7bbf29 1059 dispextern.h nsgui.h fontset.h $(INTERVALS_H) keyboard.h blockinput.h \
0a5d24ae
DN
1060 atimer.h systime.h epaths.h termhooks.h coding.h systime.h lisp.h $(config_h)
1061nsfont.o: nsterm.h dispextern.h frame.h lisp.h lisp.h $(config_h)
1062nsimage.o: nsimage.m nsterm.h lisp.h $(config_h)
55737942
AR
1063nsmenu.o: nsmenu.m termhooks.h frame.h window.h dispextern.h \
1064 nsgui.h keyboard.h blockinput.h atimer.h systime.h buffer.h \
0a5d24ae 1065 nsterm.h lisp.h $(config_h)
55737942
AR
1066nsterm.o: nsterm.m blockinput.h atimer.h systime.h syssignal.h nsterm.h \
1067 nsgui.h frame.h charset.h ccl.h dispextern.h fontset.h termhooks.h \
1068 termopts.h termchar.h disptab.h buffer.h window.h keyboard.h \
0a5d24ae
DN
1069 $(INTERVALS_H) process.h coding.h lisp.h $(config_h)
1070nsselect.o: nsselect.m blockinput.h nsterm.h nsgui.h frame.h lisp.h $(config_h)
a0528984
EZ
1071process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \
1072 commands.h syssignal.h systime.h systty.h syswait.h frame.h dispextern.h \
1073 blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \
3f670e9a
EZ
1074 keyboard.h lisp.h $(config_h) character.h xgselect.h sysselect.h
1075regex.o: regex.c syntax.h buffer.h lisp.h $(config_h) regex.h category.h character.h
0a5d24ae 1076region-cache.o: region-cache.c buffer.h region-cache.h lisp.h $(config_h)
a0528984 1077scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \
3f670e9a 1078 termhooks.h lisp.h $(config_h) systime.h coding.h composite.h window.h
a0528984 1079search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \
6660e3a8 1080 blockinput.h atimer.h systime.h category.h character.h charset.h \
3f670e9a 1081 $(INTERVALS_H) \
0a5d24ae 1082 lisp.h $(config_h)
3f670e9a 1083sound.o: sound.c dispextern.h syssignal.h lisp.h $(config_h) atimer.h systime.h
a0528984 1084strftime.o: strftime.c $(config_h)
85969c22 1085syntax.o: syntax.c syntax.h buffer.h commands.h category.h character.h \
3f670e9a 1086 keymap.h regex.h $(INTERVALS_H) lisp.h $(config_h)
4524691f 1087sysdep.o: sysdep.c syssignal.h systty.h systime.h syswait.h blockinput.h \
3f670e9a
EZ
1088 process.h dispextern.h termhooks.h termchar.h termopts.h coding.h \
1089 frame.h atimer.h window.h msdos.h dosfns.h keyboard.h cm.h lisp.h $(config_h) \
1090 composite.h
0a5d24ae 1091term.o: term.c termchar.h termhooks.h termopts.h lisp.h $(config_h) cm.h frame.h \
3f670e9a 1092 disptab.h keyboard.h character.h charset.h coding.h ccl.h xterm.h \
f78c2c97 1093 msdos.h window.h keymap.h blockinput.h atimer.h systime.h systty.h \
3f670e9a 1094 syssignal.h $(INTERVALS_H) buffer.h
0a5d24ae 1095termcap.o: termcap.c lisp.h $(config_h)
ed8dad6b 1096terminal.o: terminal.c frame.h termchar.h termhooks.h charset.h coding.h \
3f670e9a 1097 keyboard.h lisp.h $(config_h) dispextern.h composite.h systime.h
0a5d24ae
DN
1098terminfo.o: terminfo.c lisp.h $(config_h)
1099tparam.o: tparam.c lisp.h $(config_h)
3f670e9a 1100undo.o: undo.c buffer.h commands.h window.h dispextern.h lisp.h $(config_h)
0a5d24ae 1101unexaix.o: unexaix.c lisp.h $(config_h)
f2a77c3a 1102unexalpha.o: unexalpha.c $(config_h)
0a5d24ae
DN
1103unexcw.o: unexcw.c lisp.h $(config_h)
1104unexec.o: unexec.c lisp.h $(config_h)
f2a77c3a
DN
1105unexelf.o: unexelf.c $(config_h)
1106unexhp9k800.o: unexhp9k800.c $(config_h)
1107unexmacosx.o: unexmacosx.c $(config_h)
0a5d24ae 1108unexsol.o: unexsol.c lisp.h $(config_h)
f2a77c3a 1109unexw32.o: unexw32.c $(config_h)
a0528984 1110w16select.o: w16select.c dispextern.h frame.h blockinput.h atimer.h systime.h \
0a5d24ae 1111 msdos.h buffer.h charset.h coding.h composite.h lisp.h $(config_h)
a0528984 1112widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \
0a5d24ae 1113 $(srcdir)/../lwlib/lwlib.h lisp.h $(config_h)
a0528984 1114window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \
3f670e9a 1115 disptab.h keyboard.h msdos.h coding.h termhooks.h \
bd7bbf29 1116 keymap.h blockinput.h atimer.h systime.h $(INTERVALS_H) \
0a5d24ae 1117 xterm.h w32term.h nsterm.h lisp.h $(config_h)
a63aa692
MB
1118xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h \
1119 coding.h termchar.h frame.h window.h disptab.h termhooks.h character.h \
0a5d24ae 1120 charset.h lisp.h $(config_h) keyboard.h $(INTERVALS_H) region-cache.h xterm.h \
3f670e9a 1121 w32term.h nsterm.h msdos.h composite.h fontset.h ccl.h \
08b3caa9 1122 blockinput.h atimer.h systime.h keymap.h font.h
a63aa692
MB
1123xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \
1124 window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \
3f670e9a 1125 systime.h keyboard.h fontset.h w32term.h nsterm.h coding.h ccl.h \
0a5d24ae 1126 $(INTERVALS_H) termchar.h termhooks.h font.h lisp.h $(config_h)
a0528984
EZ
1127xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \
1128 $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \
0a5d24ae 1129 character.h charset.h coding.h gtkutil.h lisp.h $(config_h) termhooks.h \
3f670e9a 1130 fontset.h termchar.h font.h xsettings.h $(INTERVALS_H) ccl.h
7de94409 1131xfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \
3f670e9a 1132 font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h
7de94409 1133xftfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \
3f670e9a 1134 font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h ftfont.h
7de94409 1135ftxfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \
3f670e9a 1136 font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h
71015b45 1137menu.o: menu.c lisp.h keyboard.h keymap.h frame.h termhooks.h blockinput.h \
e7c9048f 1138 dispextern.h $(srcdir)/../lwlib/lwlib.h xterm.h gtkutil.h menu.h \
3f670e9a 1139 lisp.h $(config_h) systime.h coding.h composite.h window.h atimer.h
c2d0b18a 1140xmenu.o: xmenu.c xterm.h termhooks.h window.h dispextern.h frame.h buffer.h \
85969c22 1141 charset.h keyboard.h $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h \
3f670e9a
EZ
1142 systime.h gtkutil.h msdos.h coding.h menu.h lisp.h $(config_h) composite.h \
1143 keymap.h sysselect.h
c2d0b18a 1144xterm.o: xterm.c xterm.h termhooks.h termopts.h termchar.h window.h buffer.h \
85969c22 1145 dispextern.h frame.h disptab.h blockinput.h atimer.h systime.h syssignal.h \
73f838ad 1146 keyboard.h emacs-icon.h character.h charset.h ccl.h fontset.h composite.h \
3f670e9a
EZ
1147 coding.h process.h gtkutil.h font.h fontset.h lisp.h $(config_h) \
1148 xsettings.h intervals.h keymap.h xgselect.h sysselect.h
4524691f 1149xselect.o: xselect.c process.h dispextern.h frame.h xterm.h blockinput.h \
3f670e9a
EZ
1150 buffer.h atimer.h systime.h termhooks.h lisp.h $(config_h) keyboard.h \
1151 coding.h composite.h
1152xgselect.o: xgselect.h systime.h sysselect.h lisp.h $(config_h)
0a5d24ae
DN
1153xrdb.o: xrdb.c lisp.h $(config_h) epaths.h
1154xsmfns.o: xsmfns.c lisp.h $(config_h) systime.h sysselect.h termhooks.h xterm.h \
3f670e9a
EZ
1155 lisp.h termopts.h frame.h dispextern.h
1156xsettings.o: xterm.h xsettings.h lisp.h frame.h termhooks.h $(config_h) \
1157 dispextern.h keyboard.h systime.h coding.h composite.h blockinput.h atimer.h \
1158 termopts.h
a0528984
EZ
1159/* The files of Lisp proper */
1160
3f670e9a
EZ
1161alloc.o: alloc.c process.h frame.h window.h buffer.h puresize.h syssignal.h \
1162 keyboard.h blockinput.h atimer.h systime.h character.h lisp.h $(config_h) \
49105cd0 1163 $(INTERVALS_H) termhooks.h
a63aa692 1164bytecode.o: bytecode.c buffer.h syntax.h character.h window.h dispextern.h \
0a5d24ae 1165 frame.h xterm.h lisp.h $(config_h)
a63aa692 1166data.o: data.c buffer.h puresize.h character.h syssignal.h keyboard.h frame.h \
3f670e9a
EZ
1167 termhooks.h systime.h coding.h composite.h dispextern.h font.h ccl.h \
1168 lisp.h $(config_h)
a0528984 1169eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h \
3f670e9a 1170 dispextern.h lisp.h $(config_h) coding.h composite.h xterm.h
0a5d24ae
DN
1171floatfns.o: floatfns.c syssignal.h lisp.h $(config_h)
1172fns.o: fns.c commands.h lisp.h $(config_h) frame.h buffer.h character.h keyboard.h \
3f670e9a
EZ
1173 keymap.h window.h dispextern.h $(INTERVALS_H) coding.h md5.h \
1174 blockinput.h atimer.h systime.h xterm.h
85969c22 1175print.o: print.c process.h frame.h window.h buffer.h keyboard.h character.h \
3f670e9a
EZ
1176 lisp.h $(config_h) termchar.h $(INTERVALS_H) msdos.h termhooks.h \
1177 blockinput.h atimer.h systime.h font.h charset.h coding.h ccl.h
85969c22 1178lread.o: lread.c commands.h keyboard.h buffer.h epaths.h character.h \
3f670e9a
EZ
1179 charset.h lisp.h $(config_h) $(INTERVALS_H) termhooks.h coding.h msdos.h \
1180 systime.h frame.h blockinput.h atimer.h
a0528984
EZ
1181
1182/* Text properties support */
3f670e9a 1183composite.o: composite.c buffer.h character.h coding.h font.h ccl.h \
0a5d24ae 1184 frame.h termhooks.h $(INTERVALS_H) window.h lisp.h $(config_h)
bd7bbf29 1185intervals.o: intervals.c buffer.h $(INTERVALS_H) keyboard.h puresize.h \
3f670e9a
EZ
1186 keymap.h lisp.h $(config_h) systime.h coding.h
1187textprop.o: textprop.c buffer.h window.h $(INTERVALS_H) \
0a5d24ae 1188 lisp.h $(config_h)
a0528984 1189
a53cfbe5
JD
1190#endif /* ! AUTO_DEPEND */
1191
a0528984 1192/* System-specific programs to be made.
005bd5a2 1193 OTHER_FILES
a0528984
EZ
1194 select which of these should be compiled. */
1195
edfda783 1196#ifdef HAVE_NS
b330336c
AR
1197/* In fact, every .o file depends directly or indirectly on dispextern.h
1198 and hence nsgui.h under NS. But the ones that actually use stuff there
1199 are more limited. */
1200dispnew.o font.o fontset.o frame.o fringe.o image.o keyboard.o menu.o \
1201 window.o xdisp.o xfaces.o: nsgui.h
edfda783 1202
06b62770
AR
1203${ns_appdir}: ${ns_appsrc}
1204 rm -fr ${ns_appdir}
1205 mkdir -p ${ns_appdir}
1206 ( cd ${ns_appsrc} ; tar cfh - . ) | ( cd ${ns_appdir} ; tar xf - )
e5e2baab 1207 ( cd ${ns_appdir} ; for subdir in `find . -type d ! -name CVS -print` ; do \
06b62770
AR
1208 chmod a+rx $${subdir} ; \
1209 rm -rf $${subdir}/CVS ; \
1210 rm -f $${subdir}/.cvsignore ; done ; )
edfda783 1211
06b62770
AR
1212${ns_appbindir}Emacs: emacs${EXEEXT}
1213 mkdir -p ${ns_appbindir}
1214 cp -f emacs${EXEEXT} ${ns_appbindir}Emacs
edfda783 1215
06b62770 1216ns-app: ${ns_appdir} ${ns_appbindir}Emacs
edfda783
AR
1217
1218#endif /* HAVE_NS */
e0f712ba 1219
a0528984 1220mostlyclean:
108c7c97 1221 rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a
a0528984 1222 rm -f ../etc/DOC
b4945b95 1223 rm -f bootstrap-emacs${EXEEXT} emacs-${version}${EXEEXT}
878bde49 1224 rm -f buildobj.h
a0528984 1225clean: mostlyclean
03bd3c1f 1226 rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT}
a53cfbe5 1227 -rm -rf deps
5c976973
AR
1228#ifdef HAVE_NS
1229 rm -fr ${ns_appdir}
5c976973 1230#endif
49f6eb95
SM
1231/* bootstrap-clean is used to clean up just before a bootstrap.
1232 It should remove all files generated during a compilation/bootstrap,
1233 but not things like config.status or TAGS. */
fd13748d
AS
1234bootstrap-clean: clean
1235 rm -f epaths.h config.h Makefile.c config.stamp stamp-oldxmenu ../etc/DOC-*
1236 if test -f ./.gdbinit; then \
1237 mv ./.gdbinit ./.gdbinit.save; \
1238 if test -f "${srcdir}/.gdbinit"; then rm -f ./.gdbinit.save; \
1239 else mv ./.gdbinit.save ./.gdbinit; fi; \
1240 fi
1241/**/# This is used in making a distribution.
1242/**/# Do not use it on development directories!
1243distclean: bootstrap-clean
1244 rm -f Makefile
a0528984
EZ
1245maintainer-clean: distclean
1246 @echo "This command is intended for maintainers to use;"
1247 @echo "it deletes files that may require special tools to rebuild."
1248 rm -f TAGS
1249versionclean:
03bd3c1f 1250 -rm -f emacs${EXEEXT} emacs-*.*.*${EXEEXT} ../etc/DOC*
a0528984
EZ
1251extraclean: distclean
1252 -rm -f *~ \#* m/?*~ s/?*~
1253
a0528984
EZ
1254/* Arrange to make a tags table TAGS-LISP for ../lisp,
1255 plus TAGS for the C files, which includes ../lisp/TAGS by reference. */
1256
50da4e56
SM
1257ctagsfiles1 = [xyzXYZ]*.[hcm]
1258ctagsfiles2 = [a-wA-W]*.[hcm]
a0528984
EZ
1259
1260TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
1261 ../lib-src/etags --include=TAGS-LISP --include=${lwlibdir}/TAGS \
1262 --regex='/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \
1263 $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
1264frc:
1265TAGS-LISP: frc
99b7e543 1266 $(MAKE) -f ${lispdir}Makefile TAGS-LISP ETAGS=../lib-src/etags
a0528984
EZ
1267
1268$(lwlibdir)TAGS:
1269 (cd $(lwlibdir); $(MAKE) -f $(lwlibdir)Makefile tags ETAGS=../lib-src/etags)
1270
1271tags: TAGS TAGS-LISP $(lwlibdir)TAGS
1272.PHONY: tags
1273
1274
1275/* Bootstrapping. */
fc46d219
SM
1276/* Bootstrapping right is difficult because of the circular dependencies.
1277 Furthermore, we have to deal with the fact that many compilation targets
1278 such as loaddefs.el or *.elc can typically be produced by any old
1279 Emacs executable, so we would like to avoid rebuilding them whenever
1280 we build a new Emacs executable.
1281 To solve the circularity, we use 2 different Emacs executables,
1282 "emacs" is the main target and "bootstrap-emacs" is the one used
1283 to build the *.elc and loaddefs.el files.
b4945b95
SM
1284 To solve the freshness issue, we used to use a third file "witness-emacs"
1285 which was used to witness the fact that there is a bootstrap-emacs
1286 executable, and then have dependencies on witness-emacs rather than
1287 bootstrap-emacs, but that lead to problems in parallel builds (because
1288 witness-emacs needed to be free from dependencies (to avoid rebuilding
1289 it), so it was compiled in parallel, leading typically to having 2
1290 processes dumping bootstrap-emacs at the same time).
1291 So instead, we replace the witness-emacs dependencies by conditional
1292 bootstrap-dependencies (via ${BOOTSTRAPEMACS}). Of course, since we do
1293 not want to rely on GNU Make features, we have to rely on an external
1294 script to do the conditional part of the dependency
1295 (i.e. see the ${SUBDIR} rule ../Makefile.in). */
fc46d219 1296
36565815
GM
1297.SUFFIXES: .elc .el
1298
b4945b95
SM
1299/* These suffix rules do not allow additional dependencies, sadly, so
1300 instead of adding a $(BOOTSTRAPEMACS) dependency here, we add it
1301 separately below.
1302 With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)" */
fc46d219 1303.el.elc:
82c3d67a
AS
1304 @cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \
1305 THEFILE=$< EMACS=${bootstrap_exe}
fc46d219 1306
b4945b95
SM
1307/* Since the .el.elc rule cannot specify an extra dependency, we do it here. */
1308${lisp} ${SOME_MACHINE_LISP}: $(BOOTSTRAPEMACS)
fc46d219 1309
56f6f760 1310${lispsource}loaddefs.el: $(BOOTSTRAPEMACS)
82c3d67a 1311 cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=${bootstrap_exe}
49f6eb95 1312
c60ee5e7 1313/* Dump an Emacs executable named bootstrap-emacs containing the
a0528984
EZ
1314 files from loadup.el in source form. */
1315
fc46d219 1316bootstrap-emacs${EXEEXT}: temacs${EXEEXT}
b4945b95 1317 cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs
a0528984 1318#ifdef CANNOT_DUMP
11d8ec4a 1319 ln -f temacs${EXEEXT} bootstrap-emacs${EXEEXT}
a0528984 1320#else
83f1cb94 1321 $(RUN_TEMACS) --batch --load loadup bootstrap
108c7c97 1322 mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
a0528984 1323#endif /* ! defined (CANNOT_DUMP) */
768efd84 1324 @: Compile some files earlier to speed up further compilation.
82c3d67a 1325 cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe}
a53cfbe5
JD
1326
1327#ifdef AUTO_DEPEND
1328ALLOBJS=$(STARTFILES) ${obj} ${otherobj} prefix-args.o
1329-include $(ALLOBJS:%.o=deps/%.d)
1330#endif