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