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