*** empty log message ***
[bpt/emacs.git] / src / Makefile.in
CommitLineData
b06f07c0 1# Makefile for GNU Emacs.
33fef74e 2# Copyright (C) 1985, 87, 88, 93, 94, 95, 99, 2000 Free Software Foundation, Inc.
ec558adc 3
b06f07c0 4# This file is part of GNU Emacs.
ae3bed12 5
b06f07c0
RS
6# GNU Emacs is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 2, or (at your option)
9# any later version.
ae3bed12 10
b06f07c0
RS
11# GNU Emacs is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
ae3bed12 15
b06f07c0
RS
16# You should have received a copy of the GNU General Public License
17# along with GNU Emacs; see the file COPYING. If not, write to
3b7ad313
EN
18# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19# Boston, MA 02111-1307, USA.
ae3bed12 20
cd667a18
DL
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
26# Don't try to replace the ccp processing using autoconf facilities,
27# says rms.
28
b06f07c0 29# Here are the things that we expect ../configure to edit.
8f393ef9 30# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
ae3bed12
BF
31srcdir=@srcdir@
32VPATH=@srcdir@
33CC=@CC@
34CPP=@CPP@
35CFLAGS=@CFLAGS@
d5600d49
RS
36CPPFLAGS=@CPPFLAGS@
37LDFLAGS=@LDFLAGS@
ae3bed12 38LN_S=@LN_S@
b06f07c0
RS
39# Substitute an assignment for the MAKE variable, because
40# BSD doesn't have it as a default.
3bdaa06a 41@SET_MAKE@
cd667a18
DL
42# Don't use LIBS. configure puts stuff in it that either shouldn't be
43# linked with Emacs or is duplicated by the cpp stuff below.
44# LIBS = @LIBS@
f6a92bd8 45LIBOBJS = @LIBOBJS@
ae3bed12 46
b06f07c0 47# On Xenix and the IBM RS6000, double-dot gets screwed up.
ae3bed12 48dot = .
449d572b 49dotdot = ${dot}${dot}
02ae1501 50lispsource = ${srcdir}/$(dot)$(dot)/lisp/
ae3bed12
BF
51libsrc = $(dot)$(dot)/lib-src/
52etc = $(dot)$(dot)/etc/
ae3bed12 53oldXMenudir = $(dot)$(dot)/oldXMenu/
3e285e4d 54lwlibdir = $(dot)$(dot)/lwlib/
2a3c6d11 55
b06f07c0 56# Configuration files for .o files to depend on.
2a3c6d11
RS
57M_FILE = ${srcdir}/@machfile@
58S_FILE = ${srcdir}/@opsysfile@
59config_h = config.h $(M_FILE) $(S_FILE)
ae3bed12 60
db188a61 61# ========================== start of cpp stuff =======================
b06f07c0
RS
62/* From here on, comments must be done in C syntax. */
63
02e8e167
RS
64C_SWITCH_SYSTEM=
65
ae3bed12
BF
66/* just to be sure the sh is used */
67SHELL=/bin/sh
68
449d572b 69#define THIS_IS_MAKEFILE
ae3bed12 70#define NO_SHORTNAMES
ae3bed12
BF
71#define NOT_C_CODE
72#include "config.h"
73
4622fe48
RS
74/* We won't really call alloca;
75 don't let the file name alloca.c get messed up. */
76#ifdef alloca
77#undef alloca
78#endif
79
57a6d773
PE
80/* Don't let the file name mktime.c get messed up. */
81#ifdef mktime
82#undef mktime
83#endif
84
ae3bed12
BF
85/* Use HAVE_X11 as an alias for X11 in this file
86 to avoid problems with X11 as a subdirectory name
87 in -I and other such options which pass through this file. */
88
89#ifdef X11
90#define HAVE_X11
91#undef X11
92#endif
93
94/* On some machines #define register is done in config;
95 don't let it interfere with this file. */
96#undef register
97
98/* On some systems we may not be able to use the system make command. */
99#ifdef MAKE_COMMAND
100MAKE = MAKE_COMMAND
ae3bed12
BF
101#endif
102
103#ifdef C_COMPILER
104CC = C_COMPILER
105#endif
106
5520f84f
RS
107/* GNU libc requires ORDINARY_LINK so that its own crt0 is used.
108 Linux is an exception because it uses a funny variant of GNU libc. */
109#ifdef __GNU_LIBRARY__
110#ifndef LINUX
111#define ORDINARY_LINK
112#endif
113#endif
114
ae3bed12
BF
115/* Some machines don't find the standard C libraries in the usual place. */
116#ifndef ORDINARY_LINK
117#ifndef LIB_STANDARD
118#define LIB_STANDARD -lc
119#endif
120#else
121#ifndef LIB_STANDARD
122#define LIB_STANDARD
123#endif
124#endif
125
126/* Unless inhibited or changed, use -lg to link for debugging. */
127#ifndef LIBS_DEBUG
128#define LIBS_DEBUG -lg
129#endif
130
f11c1c14 131/* Some s/SYSTEM.h files define this to request special libraries. */
ae3bed12
BF
132#ifndef LIBS_SYSTEM
133#define LIBS_SYSTEM
134#endif
135
f11c1c14 136/* Some m/MACHINE.h files define this to request special libraries. */
ae3bed12
BF
137#ifndef LIBS_MACHINE
138#define LIBS_MACHINE
139#endif
140
141#ifndef LIB_MATH
ae3bed12 142# define LIB_MATH -lm
ae3bed12
BF
143#endif /* LIB_MATH */
144
f11c1c14 145/* Some s/SYSTEM.h files define this to request special switches in ld. */
ae3bed12 146#ifndef LD_SWITCH_SYSTEM
488b7cb3 147#if !defined (__GNUC__) && (defined(COFF_ENCAPSULATE) || (defined (BSD_SYSTEM) && !defined (COFF)))
ae3bed12 148#define LD_SWITCH_SYSTEM -X
488b7cb3 149#else /* ! defined(COFF_ENCAPSULATE) || (defined (BSD_SYSTEM) && !defined (COFF)) */
ae3bed12 150#define LD_SWITCH_SYSTEM
488b7cb3 151#endif /* ! defined(COFF_ENCAPSULATE) || (defined (BSD_SYSTEM) && !defined (COFF)) */
ae3bed12
BF
152#endif /* LD_SWITCH_SYSTEM */
153
0273f2e5
RS
154/* This holds special options for linking temacs
155 that should be used for linking anything else. */
156#ifndef LD_SWITCH_SYSTEM_TEMACS
157#define LD_SWITCH_SYSTEM_TEMACS
158#endif
159
f11c1c14 160/* Some m/MACHINE.h files define this to request special switches in ld. */
ae3bed12
BF
161#ifndef LD_SWITCH_MACHINE
162#define LD_SWITCH_MACHINE
163#endif
164
5be75283
KH
165/* This holds special options for linking temacs
166 that should be used for linking anything else. */
167#ifndef LD_SWITCH_MACHINE_TEMACS
168#define LD_SWITCH_MACHINE_TEMACS
169#endif
170
f11c1c14 171/* Some m/MACHINE.h files define this to request special switches in cc. */
ae3bed12
BF
172#ifndef C_SWITCH_MACHINE
173#define C_SWITCH_MACHINE
174#endif
175
f11c1c14 176/* Some s/SYSTEM.h files define this to request special switches in cc. */
ae3bed12
BF
177#ifndef C_SWITCH_SYSTEM
178#define C_SWITCH_SYSTEM
179#endif
180
181/* These macros are for switches specifically related to X Windows. */
182#ifndef C_SWITCH_X_MACHINE
183#define C_SWITCH_X_MACHINE
184#endif
185
186#ifndef C_SWITCH_X_SYSTEM
187#define C_SWITCH_X_SYSTEM
188#endif
189
190#ifndef C_SWITCH_X_SITE
191#define C_SWITCH_X_SITE
192#endif
193
194#ifndef LD_SWITCH_X_SITE
195#define LD_SWITCH_X_SITE
196#endif
197
d2e75974
RS
198#ifndef LD_SWITCH_X_DEFAULT
199#define LD_SWITCH_X_DEFAULT
200#endif
201
ae3bed12
BF
202/* These can be passed in from config.h to define special load and
203 compile switches needed by individual sites */
204#ifndef LD_SWITCH_SITE
205#define LD_SWITCH_SITE
206#endif
207
208#ifndef C_SWITCH_SITE
209#define C_SWITCH_SITE
210#endif
211
212#ifndef ORDINARY_LINK
9e012fc3 213
ae3bed12 214#ifndef CRT0_COMPILE
8f641052 215#define CRT0_COMPILE $(CC) -c $(ALL_CFLAGS) C_SWITCH_ASM
ae3bed12
BF
216#endif
217
218#ifndef START_FILES
219#ifdef NO_REMAP
220#ifdef COFF_ENCAPSULATE
221#define START_FILES pre-crt0.o /usr/local/lib/gcc-crt0.o
222#else /* ! defined (COFF_ENCAPSULATE) */
223#define START_FILES pre-crt0.o /lib/crt0.o
224#endif /* ! defined (COFF_ENCAPSULATE) */
225#else /* ! defined (NO_REMAP) */
1c738407 226#define START_FILES ecrt0.o
ae3bed12
BF
227#endif /* ! defined (NO_REMAP) */
228#endif /* START_FILES */
229STARTFILES = START_FILES
230
231#else /* ORDINARY_LINK */
232
233/* config.h might want to force START_FILES anyway */
234#ifdef START_FILES
235STARTFILES = START_FILES
236#endif /* START_FILES */
237
238#endif /* not ORDINARY_LINK */
239
240
241/* cc switches needed to make `asm' keyword work.
242 Nothing special needed on most machines. */
243#ifndef C_SWITCH_ASM
244#define C_SWITCH_ASM
245#endif
246
52ee0561 247#ifdef USE_X_TOOLKIT
7ee4884a 248#define USE_@X_TOOLKIT_TYPE@
52ee0561
KH
249TOOLKIT_DEFINES = -DUSE_@X_TOOLKIT_TYPE@
250#else
251TOOLKIT_DEFINES =
252#endif
253
ae3bed12
BF
254/* DO NOT use -R. There is a special hack described in lastfile.c
255 which is used instead. Some initialized data areas are modified
256 at initial startup, then labeled as part of the text area when
257 Emacs is dumped for the first time, and never changed again. */
258
ae3bed12
BF
259/* -Demacs is needed to make some files produce the correct version
260 for use in Emacs.
261
262 -DHAVE_CONFIG_H is needed for some other files to take advantage of
263 the information in `config.h'. */
644ab589 264
ae3bed12
BF
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. */
52ee0561 267ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(TOOLKIT_DEFINES) $(MYCPPFLAG) -I. -I${srcdir} C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_SITE C_SWITCH_X_SITE C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM ${CFLAGS}
ae3bed12
BF
268.c.o:
269 $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
270
271#ifndef LIBX10_MACHINE
272#define LIBX10_MACHINE
273#endif
274
275#ifndef LIBX11_MACHINE
276#define LIBX11_MACHINE
277#endif
278
279#ifndef LIBX10_SYSTEM
280#define LIBX10_SYSTEM
281#endif
282
283#ifndef LIBX11_SYSTEM
284#define LIBX11_SYSTEM
285#endif
286
287#ifndef LIB_X11_LIB
288#define LIB_X11_LIB -lX11
289#endif
290
291#ifdef HAVE_X_WINDOWS
46c0ddcf 292#ifdef HAVE_MENUS
ae3bed12
BF
293
294/* Include xmenu.o in the list of X object files. */
5bfd038e 295XOBJ= xterm.o xfns.o xselect.o xrdb.o fontset.o
ae3bed12
BF
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
3e285e4d 301#ifdef USE_X_TOOLKIT
f489d526 302OLDXMENU=${lwlibdir}liblw.a
3e285e4d
RS
303LIBXMENU= $(OLDXMENU)
304#else /* not USE_X_TOOLKIT */
f489d526 305OLDXMENU= ${oldXMenudir}libXMenu11.a
ae3bed12 306LIBXMENU= $(OLDXMENU)
3e285e4d
RS
307#endif /* not USE_X_TOOLKIT */
308#else /* not HAVE_X11 */
ae3bed12 309LIBXMENU= -lXMenu
3e285e4d 310#endif /* not HAVE_X11 */
ae3bed12 311
46c0ddcf 312#else /* not HAVE_MENUS */
ae3bed12
BF
313
314/* Otherwise, omit xmenu.o from the list of X object files, and
315 don't worry about the menu library at all. */
5bfd038e 316XOBJ= xterm.o xfns.o xselect.o xrdb.o fontset.o
ae3bed12 317LIBXMENU=
46c0ddcf 318#endif /* not HAVE_MENUS */
3e285e4d
RS
319
320#ifdef USE_X_TOOLKIT
b1fc21c5
RS
321#define @X_TOOLKIT_TYPE@
322#if defined (LUCID) || defined (ATHENA)
04e209dc
GM
323#if HAVE_XAW3D
324LIBW= -lXaw3d
325#else
b1fc21c5
RS
326LIBW= -lXaw
327#endif
04e209dc 328#endif
b1fc21c5 329#ifdef MOTIF
6389f670 330#if defined (HAVE_MOTIF_2_1) && defined (HAVE_LIBXP)
2790bdd8
RS
331#define LIB_MOTIF_EXTRA -lXp
332#else
333#define LIB_MOTIF_EXTRA
334#endif
b1fc21c5 335#ifdef LIB_MOTIF
2790bdd8 336LIBW= LIB_MOTIF LIB_MOTIF_EXTRA
b1fc21c5 337#else
2790bdd8 338LIBW= -lXm LIB_MOTIF_EXTRA
b1fc21c5
RS
339#endif
340#endif
341#ifdef OPEN_LOOK
342LIBW= -lXol
343#endif
344
b036baef 345#ifdef HAVE_X11XTR6
a0efd887
RS
346#ifdef NEED_LIBW
347LIBXTR6 = -lSM -lICE -lw
348#else
8b550e92
RS
349LIBXTR6 = -lSM -lICE
350#endif
a0efd887 351#endif
8b550e92 352
eb6a9dca
RS
353#ifndef LIBXMU
354#define LIBXMU -lXmu
355#endif
356
449d572b
KH
357#ifdef LIBXT_STATIC
358/* We assume the config files have defined STATIC_OPTION
359 since that might depend on the operating system.
360 (Don't forget you need different definitions with and without __GNUC__.) */
8f641052 361LIBXT= STATIC_OPTION $(LIBW) LIBXMU -lXt $(LIBXTR6) -lXext DYNAMIC_OPTION
449d572b 362#else /* not LIBXT_STATIC */
eb6a9dca 363LIBXT= $(LIBW) LIBXMU -lXt $(LIBXTR6) -lXext
449d572b
KH
364#endif /* not LIBXT_STATIC */
365
366#else /* not USE_X_TOOLKIT */
3e285e4d 367LIBXT=
449d572b 368#endif /* not USE_X_TOOLKIT */
ae3bed12 369
04e209dc
GM
370#if HAVE_XPM
371#ifndef LIBXPM
372#define LIBXPM -lXpm
373#endif /* not defined LIBXPM */
374#else /* not HAVE_XPM */
375#define LIBXPM
376#endif /* not HAVE_XPM */
377
378#if HAVE_JPEG
379#ifndef LIBJPEG
380#define LIBJPEG -ljpeg
381#endif /* not defined LIBJPEG */
382#else /* not HAVE_JPEG */
383#define LIBJPEG
384#endif /* not HAVE_JPEG */
385
386#if HAVE_PNG
387#ifndef LIBPNG
388#define LIBPNG -lpng -lz -lm
389#endif /* not defined LIBPNG */
390#else /* not HAVE_PNG */
391#define LIBPNG
392#endif /* not HAVE_PNG */
393
394#if HAVE_TIFF
395#ifndef LIBTIFF
5dd6aea8 396#define LIBTIFF -ltiff
04e209dc
GM
397#endif /* not defined LIBTIFF */
398#else /* not HAVE_TIFF */
399#define LIBTIFF
400#endif /* not HAVE_TIFF */
401
402#if HAVE_GIF
403#ifndef LIBGIF
404#define LIBGIF -lungif
405#endif /* not defined LIBGIF */
406#else /* not HAVE_GIF */
407#define LIBGIF
408#endif /* not HAVE_GIF */
409
ae3bed12 410#ifdef HAVE_X11
d2e75974
RS
411/* LD_SWITCH_X_DEFAULT comes after everything else that specifies
412 options for where to find X libraries, but before those libraries. */
fe9f955a 413X11_LDFLAGS = LD_SWITCH_X_SITE LD_SWITCH_X_DEFAULT
81459ac9 414LIBX= $(LIBXMENU) $(X11_LDFLAGS) $(LIBXT) LIBTIFF LIBJPEG LIBPNG LIBGIF LIBXPM LIB_X11_LIB LIBX11_MACHINE LIBX11_SYSTEM
3e285e4d 415#else /* not HAVE_X11 */
ae3bed12 416LIBX= $(LIBXMENU) LD_SWITCH_X_SITE -lX10 LIBX10_MACHINE LIBX10_SYSTEM
3e285e4d
RS
417#endif /* not HAVE_X11 */
418#endif /* not HAVE_X_WINDOWS */
ae3bed12 419
80fcd514
KR
420LIBSOUND= @LIBSOUND@
421
ae3bed12
BF
422#ifndef ORDINARY_LINK
423/* Fix linking if compiled with GCC. */
424#ifdef __GNUC__
425
426#if __GNUC__ > 1
427
ab8fbbf7
RS
428#ifdef LINKER
429#define LINKER_WAS_SPECIFIED
430#endif
431
ae3bed12
BF
432/* Versions of GCC >= 2.0 put their library, libgcc.a, in obscure
433 places that are difficult to figure out at make time. Fortunately,
434 these same versions allow you to pass arbitrary flags on to the
435 linker, so there's no reason not to use it as a linker.
436
437 Well, it's not quite perfect. The `-nostdlib' keeps GCC from
438 searching for libraries in its internal directories, so we have to
439 ask GCC explicitly where to find libgcc.a. */
9e012fc3 440
ae3bed12
BF
441#ifndef LINKER
442#define LINKER $(CC) -nostdlib
443#endif
0c22fbca 444
ae3bed12
BF
445#ifndef LIB_GCC
446/* Ask GCC where to find libgcc.a. */
447#define LIB_GCC `$(CC) -print-libgcc-file-name`
3e285e4d 448#endif /* not LIB_GCC */
c8ff0e1b 449
ae3bed12 450GNULIB_VAR = LIB_GCC
5627d72e 451
ab8fbbf7 452#ifndef LINKER_WAS_SPECIFIED
ae3bed12
BF
453/* GCC passes any argument prefixed with -Xlinker directly to the
454 linker. See prefix-args.c for an explanation of why we don't do
455 this with the shell's `for' construct.
456 Note that some people don't have '.' in their paths, so we must
457 use ./prefix-args. */
458#define YMF_PASS_LDFLAGS(flags) `./prefix-args -Xlinker flags`
ab8fbbf7
RS
459#else
460#define YMF_PASS_LDFLAGS(flags) flags
461#endif
9e012fc3 462
ae3bed12 463#else /* __GNUC__ < 2 */
c8ff0e1b 464
ae3bed12
BF
465#ifndef LIB_GCC
466#define LIB_GCC /usr/local/lib/gcc-gnulib
3e285e4d 467#endif /* not LIB_GCC */
ae3bed12
BF
468GNULIB_VAR = `if [ -f LIB_GCC ] ; then echo LIB_GCC; else echo; fi`
469#endif /* __GNUC__ < 2 */
3e285e4d 470#else /* not __GNUC__ */
8f641052 471GNULIB_VAR =
c8ff0e1b 472
3e285e4d 473#endif /* not __GNUC__ */
ae3bed12
BF
474#endif /* not ORDINARY_LINK */
475
476/* Specify address for ld to start loading at,
477 if requested by configuration. */
478#ifdef LD_TEXT_START_ADDR
479STARTFLAGS = -T LD_TEXT_START_ADDR -e __start
480#endif
481
482#ifdef ORDINARY_LINK
483LD = $(CC)
484#else
485#ifdef COFF_ENCAPSULATE
486LD=$(CC) -nostdlib
487#else /* not ORDINARY_LINK */
488#ifdef LINKER
489LD=LINKER
3e285e4d 490#else /* not LINKER */
ae3bed12 491LD=ld
3e285e4d
RS
492#endif /* not LINKER */
493#endif /* not COFF_ENCAPSULATE */
ae3bed12
BF
494#endif /* not ORDINARY_LINK */
495
2f5ee43f 496ALL_LDFLAGS = LD_SWITCH_SYSTEM LD_SWITCH_SYSTEM_TEMACS LD_SWITCH_MACHINE \
5be75283 497 LD_SWITCH_MACHINE_TEMACS LD_SWITCH_SITE $(LDFLAGS)
ae3bed12 498
907d2190 499/* A macro which other sections of Makefile can redefine to munge the
ae3bed12 500 flags before they're passed to LD. This is helpful if you have
907d2190
KH
501 redefined LD to something odd, like "gcc".
502 (The YMF prefix is a holdover from the old name "ymakefile".)
503 */
ae3bed12
BF
504#ifndef YMF_PASS_LDFLAGS
505#define YMF_PASS_LDFLAGS(flags) flags
506#endif
507
508/* Allow config.h to specify a replacement file for unexec.c. */
509#ifndef UNEXEC
510#define UNEXEC unexec.o
511#endif
512#ifndef UNEXEC_SRC
513#define UNEXEC_SRC unexec.c
514#endif
515
33fef74e 516INTERVAL_SRC = intervals.h composite.h
ae3bed12 517
a308416f 518GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
cd667a18 519
87485d6f
MW
520#ifdef MSDOS
521#ifdef HAVE_X_WINDOWS
07c6adec 522MSDOS_OBJ = dosfns.o msdos.o
87485d6f 523#else
07c6adec 524MSDOS_OBJ = dosfns.o msdos.o w16select.o
87485d6f 525#endif
87485d6f
MW
526#endif
527
528
ae3bed12 529/* lastfile must follow all files
dddff397
RS
530 whose initialized data areas should be dumped as pure by dump-emacs. */
531obj= dispnew.o frame.o scroll.o xdisp.o xmenu.o window.o \
713c0574 532 charset.o coding.o category.o ccl.o\
5bfd038e 533 cm.o term.o xfaces.o $(XOBJ) \
ae3bed12 534 emacs.o keyboard.o macros.o keymap.o sysdep.o \
33fef74e 535 buffer.o filelock.o insdel.o marker.o \
ae3bed12
BF
536 minibuf.o fileio.o dired.o filemode.o \
537 cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
538 alloc.o data.o doc.o editfns.o callint.o \
539 eval.o floatfns.o fns.o print.o lread.o \
540 abbrev.o syntax.o UNEXEC mocklisp.o bytecode.o \
541 process.o callproc.o \
e77ab12e 542 region-cache.o sound.o atimer.o \
d06b8688 543 doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
07c6adec 544 $(MSDOS_OBJ)
ae3bed12 545
229c1c6a
RS
546/* Object files used on some machine or other.
547 These go in the DOC file on all machines
548 in case they are needed there. */
33fef74e
DL
549SOME_MACHINE_OBJECTS = sunfns.o dosfns.o msdos.o \
550 xterm.o xfns.o xmenu.o xselect.o xrdb.o
149cbcb0 551
229c1c6a 552
ae3bed12
BF
553#ifdef TERMINFO
554/* Used to be -ltermcap here. If your machine needs that,
f11c1c14 555 define LIBS_TERMCAP in the m/MACHINE.h file. */
ae3bed12
BF
556#ifndef LIBS_TERMCAP
557#define LIBS_TERMCAP -lcurses
558#endif /* LIBS_TERMCAP */
559termcapobj = terminfo.o
560#else /* ! defined (TERMINFO) */
561#ifndef LIBS_TERMCAP
562#define LIBS_TERMCAP
563termcapobj = termcap.o tparam.o
564#else /* LIBS_TERMCAP */
565termcapobj = tparam.o
566#endif /* LIBS_TERMCAP */
567#endif /* ! defined (TERMINFO) */
568
569
570#ifndef SYSTEM_MALLOC
571
b1377d7f
RS
572#ifdef DOUG_LEA_MALLOC
573#ifdef REL_ALLOC
574mallocobj = ralloc.o vm-limit.o
575#else /* ! defined (REL_ALLOC) */
27d77e96 576mallocobj = vm-limit.o
b1377d7f
RS
577#endif /* ! defined (REL_ALLOC) */
578#else /* ! defined (DOUG_LEA_MALLOC) */
ae3bed12
BF
579#ifdef REL_ALLOC
580mallocobj = gmalloc.o ralloc.o vm-limit.o
581#else /* ! defined (REL_ALLOC) */
582mallocobj = gmalloc.o vm-limit.o
583#endif /* ! defined (REL_ALLOC) */
b1377d7f 584#endif /* ! defined (DOUG_LEA_MALLOC) */
ae3bed12
BF
585
586#endif /* SYSTEM_MALLOC */
587
588
589#ifndef HAVE_ALLOCA
590allocaobj = alloca.o
591#else
592allocaobj =
593#endif
594
3e285e4d
RS
595#ifdef USE_X_TOOLKIT
596widgetobj= widget.o
597#else /* not USE_X_TOOLKIT */
598widgetobj=
599#endif /* not USE_X_TOOLKIT */
600
ae3bed12
BF
601
602/* define otherobj as list of object files that make-docfile
603 should not be told about. */
9f2bbc92 604otherobj= $(termcapobj) lastfile.o $(mallocobj) $(allocaobj) $(widgetobj) $(LIBOBJS)
ae3bed12 605
ce339dfb 606#ifdef HAVE_MOUSE
94636ed5 607#define MOUSE_SUPPORT ${lispsource}mouse.elc \
02ae1501 608 ${lispsource}select.elc ${lispsource}scroll-bar.elc
ce339dfb
KH
609#else
610#define MOUSE_SUPPORT
611#endif
612
ae3bed12 613#ifdef VMS
02ae1501 614#define VMS_SUPPORT ${lispsource}vmsproc.elc ${lispsource}vms-patch.elc
ae3bed12
BF
615#else
616#define VMS_SUPPORT
617#endif
618
d95ebf76 619#ifdef MSDOS
dc32bb91 620#define MSDOS_SUPPORT ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
9aeb39fa
EZ
621 ${lispsource}dos-fns.elc ${lispsource}dos-w32.elc ${lispsource}dos-vars.elc \
622 ${lispsource}international/ccl.elc ${lispsource}international/codepage.elc
623
d95ebf76
RS
624#else
625#define MSDOS_SUPPORT
626#endif
627
ce339dfb 628#ifdef WINDOWSNT
489f9371
GV
629#define WINNT_SUPPORT ${lispsource}ls-lisp.elc ${lispsource}w32-fns.elc \
630 ${lispsource}dos-w32.elc
ce339dfb
KH
631#else
632#define WINNT_SUPPORT
633#endif
634
ae3bed12
BF
635/* List of Lisp files loaded into the dumped Emacs. It's arranged
636 like this because it's easier to generate it semi-mechanically from
637 loadup.el this way.
638
639 Note that this list should not include lisp files which might not
640 be present, like site-load.el and site-init.el; this makefile
449d572b
KH
641 expects them all to be either present or buildable.
642
df36c262
RS
643 Files which are loaded unconditionally should be in shortlisp as well.
644 Files included conditionally here should be included (unconditionally)
645 in SOME_MACHINE_LISP. */
449d572b 646
ae3bed12 647lisp= \
02ae1501
KH
648 ${lispsource}abbrev.elc \
649 ${lispsource}buff-menu.elc \
650 ${lispsource}byte-run.elc \
7b30f6cf 651 ${lispsource}cus-start.el \
94636ed5 652 ${lispsource}custom.elc \
de732ea7
RS
653 ${lispsource}emacs-lisp/lisp-mode.elc \
654 ${lispsource}emacs-lisp/lisp.elc \
55a9f648 655 ${lispsource}env.elc \
5bfd038e 656 ${lispsource}faces.elc \
02ae1501 657 ${lispsource}files.elc \
02ae1501 658 ${lispsource}format.elc \
33fef74e 659 ${lispsource}facemenu.elc \
ce339dfb 660 MOUSE_SUPPORT \
33fef74e 661 ${lispsource}float-sup.elc \
e3678b64 662 ${lispsource}frame.elc\
02ae1501
KH
663 ${lispsource}help.elc \
664 ${lispsource}indent.elc \
665 ${lispsource}isearch.elc \
7ee4884a 666 ${lispsource}loadup.el \
02ae1501 667 ${lispsource}loaddefs.el \
d23ad362 668 ${lispsource}bindings.el \
02ae1501 669 ${lispsource}map-ynp.elc \
94636ed5 670 ${lispsource}menu-bar.elc \
29fad69a
RS
671 ${lispsource}international/mule.elc \
672 ${lispsource}international/mule-conf.el \
673 ${lispsource}international/mule-cmds.elc \
674 ${lispsource}international/characters.elc \
d23ad362 675 ${lispsource}case-table.elc \
713c0574
KH
676 ${lispsource}language/chinese.elc \
677 ${lispsource}language/cyrillic.elc \
f9185491 678 ${lispsource}language/indian.elc \
713c0574 679 ${lispsource}language/devanagari.elc \
3604fd00 680 ${lispsource}language/english.elc \
713c0574
KH
681 ${lispsource}language/ethiopic.elc \
682 ${lispsource}language/european.elc \
f9185491
KH
683 ${lispsource}language/czech.elc \
684 ${lispsource}language/slovak.elc \
685 ${lispsource}language/romanian.elc \
713c0574
KH
686 ${lispsource}language/greek.elc \
687 ${lispsource}language/hebrew.elc \
713c0574
KH
688 ${lispsource}language/japanese.elc \
689 ${lispsource}language/korean.elc \
57647d09 690 ${lispsource}language/lao.elc \
713c0574 691 ${lispsource}language/thai.elc \
3604fd00 692 ${lispsource}language/tibetan.elc \
713c0574
KH
693 ${lispsource}language/vietnamese.elc \
694 ${lispsource}language/misc-lang.elc \
02ae1501
KH
695 ${lispsource}paths.el \
696 ${lispsource}register.elc \
697 ${lispsource}replace.elc \
698 ${lispsource}simple.elc \
699 ${lispsource}startup.elc \
700 ${lispsource}subr.elc \
2d764c78 701 ${lispsource}term/tty-colors.elc \
de732ea7
RS
702 ${lispsource}textmodes/fill.elc \
703 ${lispsource}textmodes/page.elc \
704 ${lispsource}textmodes/paragraphs.elc \
705 ${lispsource}textmodes/text-mode.elc \
02ae1501 706 ${lispsource}vc-hooks.elc \
730cce4a 707 ${lispsource}ediff-hook.elc \
ae3bed12 708 VMS_SUPPORT \
d95ebf76 709 MSDOS_SUPPORT \
ce339dfb 710 WINNT_SUPPORT \
0273f2e5 711 ${lispsource}widget.elc \
02ae1501
KH
712 ${lispsource}window.elc \
713 ${lispsource}version.el
ae3bed12 714
449d572b
KH
715/* These are relative file names for the Lisp files
716 that are loaded unconditionally. This is used in make-docfile.
717 It need not contain the files that are loaded conditionally
718 because SOME_MACHINE_LISP has those. */
719shortlisp= \
720 ../lisp/abbrev.elc \
721 ../lisp/buff-menu.elc \
722 ../lisp/byte-run.elc \
7b30f6cf 723 ../lisp/cus-start.el \
df36c262 724 ../lisp/custom.elc \
de732ea7
RS
725 ../lisp/emacs-lisp/lisp-mode.elc \
726 ../lisp/emacs-lisp/lisp.elc \
33fef74e 727 ../lisp/facemenu.elc \
5bfd038e 728 ../lisp/faces.elc \
449d572b 729 ../lisp/files.elc \
33fef74e 730 ../lisp/float-sup.elc \
449d572b 731 ../lisp/format.elc \
33fef74e 732 ../lisp/frame.elc \
449d572b
KH
733 ../lisp/help.elc \
734 ../lisp/indent.elc \
735 ../lisp/isearch.elc \
449d572b
KH
736 ../lisp/loadup.el \
737 ../lisp/loaddefs.el \
d23ad362 738 ../lisp/bindings.el \
449d572b 739 ../lisp/map-ynp.elc \
29fad69a
RS
740 ../lisp/international/mule.elc \
741 ../lisp/international/mule-conf.el \
742 ../lisp/international/mule-cmds.elc \
d32515cd 743 ../lisp/international/characters.elc \
d23ad362 744 ../lisp/case-table.elc \
713c0574
KH
745 ../lisp/language/chinese.elc \
746 ../lisp/language/cyrillic.elc \
f9185491 747 ../lisp/language/indian.elc \
713c0574 748 ../lisp/language/devanagari.elc \
3604fd00 749 ../lisp/language/english.elc \
713c0574
KH
750 ../lisp/language/ethiopic.elc \
751 ../lisp/language/european.elc \
f9185491
KH
752 ../lisp/language/czech.elc \
753 ../lisp/language/slovak.elc \
754 ../lisp/language/romanian.elc \
713c0574
KH
755 ../lisp/language/greek.elc \
756 ../lisp/language/hebrew.elc \
713c0574
KH
757 ../lisp/language/japanese.elc \
758 ../lisp/language/korean.elc \
57647d09 759 ../lisp/language/lao.elc \
713c0574 760 ../lisp/language/thai.elc \
3604fd00 761 ../lisp/language/tibetan.elc \
713c0574
KH
762 ../lisp/language/vietnamese.elc \
763 ../lisp/language/misc-lang.elc \
449d572b
KH
764 ../lisp/paths.el \
765 ../lisp/register.elc \
766 ../lisp/replace.elc \
767 ../lisp/simple.elc \
768 ../lisp/startup.elc \
769 ../lisp/subr.elc \
2d764c78 770 ../lisp/term/tty-colors.elc \
de732ea7
RS
771 ../lisp/textmodes/fill.elc \
772 ../lisp/textmodes/page.elc \
773 ../lisp/textmodes/paragraphs.elc \
774 ../lisp/textmodes/text-mode.elc \
449d572b
KH
775 ../lisp/vc-hooks.elc \
776 ../lisp/ediff-hook.elc \
0273f2e5 777 ../lisp/widget.elc \
449d572b
KH
778 ../lisp/window.elc \
779 ../lisp/version.el
780
f9d6b3c9 781/* Lisp files that may or may not be used.
8f641052 782 We must unconditionally put them in the DOC file.
449d572b
KH
783 We use ../lisp/ to start the file names
784 to reduce the size of the argument list for make-docfile
785 for the sake of systems which can't handle large ones. */
33fef74e 786SOME_MACHINE_LISP = ${dotdot}/lisp/menu-bar.elc ${dotdot}/lisp/mouse.elc \
449d572b
KH
787 ${dotdot}/lisp/select.elc ${dotdot}/lisp/scroll-bar.elc \
788 ${dotdot}/lisp/vmsproc.elc ${dotdot}/lisp/vms-patch.elc \
789 ${dotdot}/lisp/ls-lisp.elc ${dotdot}/lisp/dos-fns.elc \
9aeb39fa
EZ
790 ${dotdot}/lisp/w32-fns.elc ${dotdot}/lisp/dos-w32.elc \
791 ${dotdot}/lisp/disp-table.elc ${dotdot}/lisp/dos-vars.elc \
792 ${dotdot}/lisp/international/ccl.elc \
793 ${dotdot}/lisp/international/codepage.elc
f9d6b3c9 794
ae3bed12
BF
795/* Construct full set of libraries to be linked.
796 Note that SunOS needs -lm to come before -lc; otherwise, you get
709f7c1f
RM
797 duplicated symbols. If the standard libraries were compiled
798 with GCC, we might need gnulib again after them. */
80fcd514
KR
799LIBES = $(LOADLIBES) $(LIBS) $(LIBX) $(LIBSOUND) \
800 LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP \
a308416f
DL
801 LIBS_DEBUG $(GETLOADAVG_LIBS) $(GNULIB_VAR) LIB_MATH LIB_STANDARD \
802 $(GNULIB_VAR)
ae3bed12
BF
803
804/* Enable recompilation of certain other files depending on system type. */
805
806#ifndef OTHER_FILES
807#define OTHER_FILES
808#endif
809
ae3bed12
BF
810#ifndef OBJECTS_MACHINE
811#define OBJECTS_MACHINE
812#endif
813
814all: emacs OTHER_FILES
815
816emacs: temacs ${etc}DOC ${lisp}
817#ifdef CANNOT_DUMP
2bbc6b0a 818 rm -f emacs
ae3bed12
BF
819 ln temacs emacs
820#else
821#ifdef HAVE_SHM
68c45bf0 822 LC_ALL=C ./temacs -nl -batch -l loadup dump
ae3bed12 823#else /* ! defined (HAVE_SHM) */
68c45bf0 824 LC_ALL=C ./temacs -batch -l loadup dump
ae3bed12
BF
825#endif /* ! defined (HAVE_SHM) */
826#endif /* ! defined (CANNOT_DUMP) */
3b366769 827 -./emacs -q -batch -f list-load-path-shadows
ae3bed12 828
847bb755
RS
829/* We run make-docfile twice because the command line may get too long
830 on some systems. */
633796fe
RS
831/* ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may
832 or may not be included in ${obj}, but they are always included in
833 ${SOME_MACHINE_OBJECTS}. Since a file is processed when it is mentioned
834 for the first time, this prevents any variation between configurations
f9d6b3c9
RS
835 in the contents of the DOC file.
836 Likewise for ${SOME_MACHINE_LISP}. */
80b233a9 837${etc}DOC: ${libsrc}make-docfile ${obj} ${lisp}
d95ebf76 838 -rm -f ${etc}DOC
633796fe 839 ${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
449d572b 840 ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
ae3bed12
BF
841
842${libsrc}make-docfile:
918a80cf 843 cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile
ae3bed12
BF
844
845/* Some systems define this to cause parallel Make-ing. */
846#ifndef MAKE_PARALLEL
847#define MAKE_PARALLEL
848#endif
849
33fef74e 850temacs: MAKE_PARALLEL $(LOCALCPP) $(STARTFILES) stamp-oldxmenu ${obj} ${otherobj} OBJECTS_MACHINE prefix-args
6ed56568 851 $(LD) YMF_PASS_LDFLAGS (${STARTFLAGS} ${ALL_LDFLAGS}) \
ae3bed12 852 -o temacs ${STARTFILES} ${obj} ${otherobj} \
33fef74e 853 OBJECTS_MACHINE ${LIBES}
ae3bed12 854
f6190d46
RS
855/* We don't use ALL_LDFLAGS because LD_SWITCH_SYSTEM and LD_SWITCH_MACHINE
856 often contain options that have to do with using Emacs's crt0,
857 which are only good with temacs. */
ae3bed12 858prefix-args: prefix-args.c $(config_h)
f6190d46 859 $(CC) $(ALL_CFLAGS) $(LDFLAGS) ${srcdir}/prefix-args.c -o prefix-args
ae3bed12 860
ae3bed12
BF
861/* Don't lose if this was not defined. */
862#ifndef OLDXMENU_OPTIONS
863#define OLDXMENU_OPTIONS
864#endif
865
3e285e4d
RS
866/* Don't lose if this was not defined. */
867#ifndef LWLIB_OPTIONS
868#define LWLIB_OPTIONS
869#endif
870
6c6c2f69
RM
871#if defined (HAVE_X_WINDOWS) && defined (HAVE_X11) && defined (HAVE_MENUS)
872
084f76ff
RS
873/* We use stamp-xmenu with these two deps
874 to both ensure that lwlib gets remade based on its dependencies
875 in its own makefile,
876 and remake temacs if lwlib gets changed by this. */
877stamp-oldxmenu: ${OLDXMENU} ../src/$(OLDXMENU)
878 touch stamp-oldxmenu
ee371b01
RS
879/* Supply an ordering for parallel make. */
880../src/$(OLDXMENU): ${OLDXMENU}
084f76ff 881
3e285e4d
RS
882#ifdef USE_X_TOOLKIT
883$(OLDXMENU): really-lwlib
3e285e4d
RS
884
885/* Encode the values of these two macros in Make variables,
886 so we can use $(...) to substitute their values within "...". */
887C_SWITCH_MACHINE_1 = C_SWITCH_MACHINE
888C_SWITCH_SYSTEM_1 = C_SWITCH_SYSTEM
889C_SWITCH_SITE_1 = C_SWITCH_SITE
890C_SWITCH_X_SITE_1 = C_SWITCH_X_SITE
891C_SWITCH_X_MACHINE_1 = C_SWITCH_X_MACHINE
892C_SWITCH_X_SYSTEM_1 = C_SWITCH_X_SYSTEM
893really-lwlib:
894 cd ${lwlibdir}; ${MAKE} ${MFLAGS} LWLIB_OPTIONS \
895 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' \
896 "C_SWITCH_X_SITE=$(C_SWITCH_X_SITE_1)" \
897 "C_SWITCH_X_MACHINE=$(C_SWITCH_X_MACHINE_1)" \
898 "C_SWITCH_X_SYSTEM=$(C_SWITCH_X_SYSTEM_1)" \
899 "C_SWITCH_SITE=$(C_SWITCH_SITE_1)" \
900 "C_SWITCH_MACHINE=$(C_SWITCH_MACHINE_1)" \
901 "C_SWITCH_SYSTEM=$(C_SWITCH_SYSTEM_1)"
902 @true /* make -t should not create really-lwlib. */
b1e9ff69 903.PHONY: really-lwlib
3e285e4d 904#else /* not USE_X_TOOLKIT */
ae3bed12 905$(OLDXMENU): really-oldXMenu
ae3bed12
BF
906
907/* Encode the values of these two macros in Make variables,
908 so we can use $(...) to substitute their values within "...". */
909C_SWITCH_MACHINE_1 = C_SWITCH_MACHINE
910C_SWITCH_SYSTEM_1 = C_SWITCH_SYSTEM
911C_SWITCH_SITE_1 = C_SWITCH_SITE
912C_SWITCH_X_SITE_1 = C_SWITCH_X_SITE
913C_SWITCH_X_MACHINE_1 = C_SWITCH_X_MACHINE
914C_SWITCH_X_SYSTEM_1 = C_SWITCH_X_SYSTEM
915really-oldXMenu:
916 cd ${oldXMenudir}; ${MAKE} ${MFLAGS} OLDXMENU_OPTIONS \
917 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' \
918 "C_SWITCH_X_SITE=$(C_SWITCH_X_SITE_1)" \
919 "C_SWITCH_X_MACHINE=$(C_SWITCH_X_MACHINE_1)" \
920 "C_SWITCH_X_SYSTEM=$(C_SWITCH_X_SYSTEM_1)" \
921 "C_SWITCH_SITE=$(C_SWITCH_SITE_1)" \
922 "C_SWITCH_MACHINE=$(C_SWITCH_MACHINE_1)" \
923 "C_SWITCH_SYSTEM=$(C_SWITCH_SYSTEM_1)"
924 @true /* make -t should not create really-oldXMenu. */
b1e9ff69 925.PHONY: really-oldXMenu
3e285e4d 926#endif /* not USE_X_TOOLKIT */
4e7c142c
RS
927#else /* not (HAVE_X_WINDOWS && HAVE_X11 && HAVE_MENUS) */
928
929/* We don't really need this, but satisfy the dependency. */
930stamp-oldxmenu:
931 touch stamp-oldxmenu
932#endif /* not (HAVE_X_WINDOWS && HAVE_X11 && HAVE_MENUS) */
ae3bed12 933
affb9299
RS
934../config.status:: epaths.in
935 @echo "The file epaths.h needs to be set up from epaths.in."
9ee83b02 936 @echo "Please run the `configure' script again."
ae3bed12
BF
937 exit 1
938
9ee83b02 939../config.status:: config.in
66ac18ab 940 @echo "The file config.h needs to be set up from config.in."
9ee83b02 941 @echo "Please run the `configure' script again."
ae3bed12
BF
942 exit 1
943
944/* Some machines have alloca built-in.
945 They should define HAVE_ALLOCA, or may just let alloca.s
946 be used but generate no code.
947 Some have it written in assembler in alloca.s.
948 Some use the C version in alloca.c (these define C_ALLOCA in config.h).
949 */
950
951#ifdef C_ALLOCA
952/* We could put something in alloca.c to #define free and malloc
953 whenever emacs was #defined, but that's not appropriate for all
954 users of alloca in Emacs. Check out ../lib-src/getopt.c. */
955alloca.o : alloca.c
00edcd1d 956 $(CC) -c $(CPPFLAGS) -DEMACS_FREE=xfree \
ae3bed12
BF
957 $(ALL_CFLAGS) ${srcdir}/alloca.c
958#else
959#ifndef HAVE_ALLOCA
2a3c6d11 960alloca.o : alloca.s $(config_h)
ae3bed12
BF
961/* $(CPP) is cc -E, which may get confused by filenames
962 that do not end in .c. So copy file to a safe name. */
38a31f61 963 -rm -f allocatem.c
ae3bed12
BF
964 cp ${srcdir}/alloca.s allocatem.c
965/* Remove any ^L, blank lines, and preprocessor comments,
966 since some assemblers barf on them. Use a different basename for the
967 output file, since some stupid compilers (Green Hill's) use that
968 name for the intermediate assembler file. */
969 $(CPP) $(CPPFLAGS) $(ALL_CFLAGS) allocatem.c | \
970 sed -e 's/\f//' -e 's/^#.*//' | \
971 sed -n -e '/^..*$$/p' > allocax.s
972 -rm -f alloca.o
973/* Xenix, in particular, needs to run assembler via cc. */
974 $(CC) -c allocax.s
975 mv allocax.o alloca.o
f194e509 976 -rm -f allocax.s allocatem.c
ae3bed12
BF
977#endif /* HAVE_ALLOCA */
978#endif /* ! defined (C_ALLOCA) */
979
980/* Nearly all the following files depend on lisp.h,
981 but it is not included as a dependency because
982 it is so often changed in ways that do not require any recompilation
983 and so rarely changed in ways that do require any. */
984
00edcd1d
GM
985abbrev.o: abbrev.c buffer.h window.h dispextern.h commands.h charset.h \
986 $(config_h)
e8951513 987buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \
bbcf05c1
DL
988 dispextern.h $(INTERVAL_SRC) blockinput.h atimer.h systime.h charset.h \
989 $(config_h)
656828cf 990callint.o: callint.c window.h commands.h buffer.h mocklisp.h \
00edcd1d 991 keyboard.h dispextern.h $(config_h)
affb9299 992callproc.o: callproc.c epaths.h buffer.h commands.h $(config_h) \
f4cda61e
KH
993 process.h systty.h syssignal.h charset.h coding.h ccl.h msdos.h \
994 composite.h
5b2f4dca 995casefiddle.o: casefiddle.c syntax.h commands.h buffer.h composite.h $(config_h)
656828cf 996casetab.o: casetab.c buffer.h $(config_h)
713c0574
KH
997category.o: category.c category.h buffer.h charset.h $(config_h)
998ccl.o: ccl.c ccl.h charset.h coding.h $(config_h)
0a42d134
KH
999charset.o: charset.c charset.h buffer.h coding.h composite.h disptab.h \
1000 $(config_h)
f1653e8f 1001coding.o: coding.c coding.h ccl.h buffer.h charset.h $(config_h)
656828cf 1002cm.o: cm.c cm.h termhooks.h $(config_h)
c26949c3 1003cmds.o: cmds.c syntax.h buffer.h charset.h commands.h window.h $(config_h) \
00edcd1d 1004 msdos.h dispextern.h
656828cf 1005pre-crt0.o: pre-crt0.c
1c738407
RS
1006ecrt0.o: ecrt0.c $(config_h)
1007 CRT0_COMPILE ${srcdir}/ecrt0.c
68c45bf0
PE
1008dired.o: dired.c commands.h buffer.h $(config_h) charset.h coding.h regex.h \
1009 systime.h
713c0574 1010dispnew.o: dispnew.c commands.h frame.h window.h buffer.h dispextern.h \
c07d3a87 1011 termchar.h termopts.h termhooks.h cm.h disptab.h systty.h systime.h \
e931344e
EZ
1012 xterm.h blockinput.h atimer.h charset.h msdos.h composite.h keyboard.h \
1013 $(config_h)
5b2f4dca 1014doc.o: doc.c $(config_h) epaths.h buffer.h keyboard.h charset.h
713c0574 1015doprnt.o: doprnt.c charset.h $(config_h)
87485d6f 1016dosfns.o: buffer.h termchar.h termhooks.h frame.h msdos.h dosfns.h $(config_h)
33fef74e 1017editfns.o: editfns.c window.h buffer.h systime.h $(INTERVAL_SRC) charset.h \
00edcd1d 1018 coding.h dispextern.h $(config_h)
6bda48a4 1019emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \
bbcf05c1 1020 termhooks.h buffer.h atimer.h systime.h $(INTERVAL_SRC) $(config_h)
33fef74e 1021fileio.o: fileio.c window.h buffer.h systime.h $(INTERVAL_SRC) charset.h \
00edcd1d 1022 coding.h ccl.h msdos.h dispextern.h $(config_h)
affb9299 1023filelock.o: filelock.c buffer.h systime.h epaths.h $(config_h)
656828cf 1024filemode.o: filemode.c $(config_h)
da6b134c 1025frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
00edcd1d 1026 buffer.h charset.h fontset.h msdos.h dosfns.h dispextern.h $(config_h)
e931344e
EZ
1027fontset.o: dispextern.h fontset.h fontset.c ccl.h charset.h frame.h \
1028 keyboard.h $(config_h)
656828cf
RS
1029getloadavg.o: getloadavg.c $(config_h)
1030indent.o: indent.c frame.h window.h indent.h buffer.h $(config_h) termchar.h \
e931344e
EZ
1031 termopts.h disptab.h region-cache.h charset.h composite.h dispextern.h \
1032 keyboard.h
33fef74e 1033insdel.o: insdel.c window.h buffer.h $(INTERVAL_SRC) blockinput.h charset.h\
bbcf05c1 1034 dispextern.h atimer.h systime.h $(config_h)
713c0574 1035keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h charset.h \
ae3bed12 1036 commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \
33fef74e 1037 systty.h systime.h dispextern.h syntax.h $(INTERVAL_SRC) blockinput.h \
bbcf05c1 1038 atimer.h xterm.h puresize.h msdos.h $(config_h)
656828cf 1039keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \
bbcf05c1 1040 atimer.h systime.h puresize.h charset.h intervals.h $(config_h)
656828cf 1041lastfile.o: lastfile.c $(config_h)
00edcd1d
GM
1042macros.o: macros.c window.h buffer.h commands.h macros.h keyboard.h \
1043 dispextern.h $(config_h)
656828cf
RS
1044malloc.o: malloc.c $(config_h)
1045gmalloc.o: gmalloc.c $(config_h)
1046ralloc.o: ralloc.c $(config_h)
8f641052 1047vm-limit.o: vm-limit.c mem-limits.h $(config_h)
3fa51c4e 1048marker.o: marker.c buffer.h charset.h $(config_h)
e931344e 1049minibuf.o: minibuf.c syntax.h dispextern.h frame.h window.h keyboard.h \
c26949c3 1050 buffer.h commands.h charset.h msdos.h $(config_h)
da6b134c 1051mktime.o: mktime.c $(config_h)
656828cf 1052mocklisp.o: mocklisp.c buffer.h $(config_h)
d2442270 1053msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \
b2feb1d4
EZ
1054 termopts.h termchar.h charset.h coding.h ccl.h disptab.h window.h \
1055 keyboard.h $(config_h)
656828cf 1056process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \
00edcd1d 1057 commands.h syssignal.h systime.h systty.h syswait.h frame.h dispextern.h \
e931344e
EZ
1058 blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \
1059 keyboard.h $(config_h)
713c0574 1060regex.o: regex.c syntax.h buffer.h $(config_h) regex.h category.h charset.h
e8951513 1061region-cache.o: region-cache.c buffer.h region-cache.h
e931344e
EZ
1062scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \
1063 $(config_h)
e8951513 1064search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \
bbcf05c1 1065 blockinput.h atimer.h systime.h category.h charset.h composite.h $(config_h)
0df7d18a 1066strftime.o: strftime.c $(config_h)
713c0574 1067syntax.o: syntax.c syntax.h buffer.h commands.h category.h charset.h \
5b2f4dca 1068 composite.h $(config_h)
656828cf 1069sysdep.o: sysdep.c $(config_h) dispextern.h termhooks.h termchar.h termopts.h \
bbcf05c1 1070 frame.h syssignal.h systty.h systime.h syswait.h blockinput.h atimer.h \
e931344e 1071 window.h msdos.h dosfns.h keyboard.h
656828cf 1072term.o: term.c termchar.h termhooks.h termopts.h $(config_h) cm.h frame.h \
7dd2a2b2 1073 disptab.h dispextern.h keyboard.h charset.h coding.h ccl.h msdos.h
656828cf
RS
1074termcap.o: termcap.c $(config_h)
1075terminfo.o: terminfo.c $(config_h)
1076tparam.o: tparam.c $(config_h)
8f641052 1077undo.o: undo.c buffer.h commands.h $(config_h)
c04d7da3
RS
1078/* This hack is to discard any space that cpp might put at the beginning
1079 of UNEXEC when substituting it in. */
1080UNEXEC_ALIAS=UNEXEC
656828cf 1081$(UNEXEC_ALIAS): UNEXEC_SRC $(config_h)
bbcf05c1 1082w16select.o: w16select.c dispextern.h frame.h blockinput.h atimer.h systime.h \
c26949c3 1083 msdos.h $(config_h)
2c01dfb7 1084widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \
8f393ef9 1085 $(srcdir)/../lwlib/lwlib.h $(config_h)
656828cf 1086window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \
5b2f4dca
KH
1087 termhooks.h disptab.h keyboard.h dispextern.h msdos.h composite.h \
1088 $(config_h)
2d3fa435 1089xdisp.o: xdisp.c macros.h commands.h indent.h buffer.h dispextern.h coding.h \
c26949c3 1090 termchar.h frame.h window.h disptab.h termhooks.h charset.h $(config_h) \
e651b9a2 1091 msdos.h composite.h fontset.h
656828cf 1092xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \
bbcf05c1 1093 window.h charset.h msdos.h dosfns.h composite.h atimer.h systime.h $(config_h)
00edcd1d 1094xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \
bbcf05c1
DL
1095 $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \
1096 charset.h $(config_h)
690b03fe 1097xmenu.o: xmenu.c xterm.h termhooks.h window.h dispextern.h frame.h keyboard.h \
bbcf05c1
DL
1098 $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h msdos.h \
1099 $(config_h)
656828cf 1100xterm.o: xterm.c xterm.h termhooks.h termopts.h termchar.h window.h \
bbcf05c1 1101 dispextern.h frame.h disptab.h blockinput.h atimer.h systime.h syssignal.h \
5b2f4dca 1102 keyboard.h gnu.h sink.h sinkmask.h charset.h ccl.h fontset.h composite.h \
e931344e 1103 coding.h $(config_h)
713c0574 1104xselect.o: xselect.c dispextern.h frame.h xterm.h blockinput.h charset.h \
bbcf05c1 1105 coding.h ccl.h buffer.h atimer.h systime.h $(config_h)
affb9299 1106xrdb.o: xrdb.c $(config_h) epaths.h
656828cf 1107hftctl.o: hftctl.c $(config_h)
d21bd3fb 1108sound.o: sound.c dispextern.h $(config_h)
8476c2f8 1109atimer.o: atimer.c atimer.h systime.h $(config_h)
ae3bed12
BF
1110
1111/* The files of Lisp proper */
1112
65b6ac4f 1113alloc.o: alloc.c frame.h window.h buffer.h puresize.h syssignal.h keyboard.h \
bbcf05c1 1114 blockinput.h atimer.h systime.h charset.h dispextern.h $(config_h) $(INTERVAL_SRC)
94c02a5e 1115bytecode.o: bytecode.c buffer.h syntax.h charset.h $(config_h)
713c0574 1116data.o: data.c buffer.h puresize.h charset.h syssignal.h keyboard.h $(config_h)
bbcf05c1
DL
1117eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h \
1118 $(config_h)
656828cf 1119floatfns.o: floatfns.c $(config_h)
b195b25d 1120fns.o: fns.c commands.h $(config_h) frame.h buffer.h charset.h keyboard.h \
00edcd1d 1121 frame.h window.h dispextern.h $(INTERVAL_SRC)
713c0574 1122print.o: print.c process.h frame.h window.h buffer.h keyboard.h charset.h\
5b2f4dca 1123 $(config_h) dispextern.h msdos.h composite.h
affb9299 1124lread.o: lread.c commands.h keyboard.h buffer.h epaths.h charset.h $(config_h) \
c26949c3 1125 termhooks.h msdos.h
ae3bed12
BF
1126
1127/* Text properties support */
00edcd1d
GM
1128textprop.o: textprop.c buffer.h window.h dispextern.h $(INTERVAL_SRC) \
1129 $(config_h)
33fef74e
DL
1130intervals.o: intervals.c buffer.h $(INTERVAL_SRC) keyboard.h puresize.h $(config_h)
1131composite.o: composite.c buffer.h charset.h $(INTERVAL_SRC) $(config_h)
ae3bed12
BF
1132
1133/* System-specific programs to be made.
33fef74e 1134 OTHER_FILES and OBJECTS_MACHINE
ae3bed12
BF
1135 select which of these should be compiled. */
1136
00edcd1d 1137sunfns.o: sunfns.c buffer.h window.h dispextern.h $(config_h)
ae3bed12
BF
1138
1139${libsrc}emacstool: ${libsrc}emacstool.c
1140 cd ${libsrc}; ${MAKE} ${MFLAGS} emacstool
bfb7b570 1141mostlyclean:
3320cc50 1142 rm -f temacs prefix-args core *.core \#* *.o libXMenu11.a liblw.a
bfb7b570
JB
1143 rm -f ../etc/DOC
1144clean: mostlyclean
3320cc50 1145 rm -f emacs-* emacs bootstrap-emacs
ae3bed12
BF
1146/**/# This is used in making a distribution.
1147/**/# Do not use it on development directories!
bfb7b570 1148distclean: clean
affb9299 1149 rm -f epaths.h config.h Makefile Makefile.c config.stamp stamp-oldxmenu ../etc/DOC-*
40d4f149
RS
1150maintainer-clean: distclean
1151 @echo "This command is intended for maintainers to use;"
1152 @echo "it deletes files that may require special tools to rebuild."
bfb7b570 1153 rm -f TAGS
c3d80a47
ER
1154versionclean:
1155 -rm -f emacs emacs-* ../etc/DOC*
9e012fc3 1156extraclean: distclean
22e5421f 1157 -rm -f *~ \#* m/?*~ s/?*~
9e012fc3 1158
ae3bed12
BF
1159/* The rule for the [sm] files has to be written a little funny to
1160 avoid looking like a C comment to CPP. */
4322e608 1161SOURCES = *.[ch] [sm]/?* COPYING Makefile.in \
affb9299 1162 config.in epaths.in README COPYING ChangeLog vms.pp-trans
a6af8696
ER
1163unlock:
1164 chmod u+w $(SOURCES)
1165
1166relock:
1167 chmod -w $(SOURCES)
affb9299 1168 chmod +w epaths.h
dd6e8a8d 1169
becf3db3
RS
1170/* Arrange to make a tags table TAGS-LISP for ../lisp,
1171 plus TAGS for the C files, which includes ../lisp/TAGS by reference. */
04e209dc
GM
1172ctagsfiles1 = [xyzXYZ]*.[hc]
1173ctagsfiles2 = [a-wA-W]*.[hc]
74e89fc9 1174TAGS: $(srcdir)/$(ctagsfiles)
847115ad 1175 ../lib-src/etags --include=TAGS-LISP --include=${lwlibdir}/TAGS \
6f940ba1 1176 --regex='/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \
04e209dc 1177 $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
becf3db3
RS
1178frc:
1179TAGS-LISP: frc
67ed07c3 1180 $(MAKE) -f ${lispsource}Makefile TAGS-LISP ETAGS=../lib-src/etags
becf3db3 1181tags: TAGS TAGS-LISP
ac21ec40 1182.PHONY: tags
2d2e4a9f
GM
1183
1184
1185/* Bootstrapping. */
1186
1187bootstrap: bootstrap-emacs
1188
1189/* Build a temacs with a sufficiently large PURESIZE to load the
1190 Lisp files from loadup.el in source form. */
1191
1192bootstrap-temacs:
264f4c4b 1193 LC_ALL=C $(MAKE) $(MFLAGS) temacs ALL_CFLAGS="$(ALL_CFLAGS) -DPURESIZE=5000000 -I../src"
2d2e4a9f
GM
1194
1195/* Dump an Emacs executable named bootstrap-emacs containing the
1196 files from loadup.el in source form. */
1197
1198bootstrap-emacs: bootstrap-temacs
1199#ifdef CANNOT_DUMP
1200 ln temacs bootstrap-emacs
1201#else
1202#ifdef HAVE_SHM
1203 ./temacs -nl -batch -l loadup bootstrap
1204#else /* ! defined (HAVE_SHM) */
1205 ./temacs --batch --load loadup bootstrap
1206#endif /* ! defined (HAVE_SHM) */
1207#endif /* ! defined (CANNOT_DUMP) */
8170b125 1208 mv -f emacs bootstrap-emacs
2d2e4a9f
GM
1209 rm -f temacs
1210