Merge from emacs-23
[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 #ifdef HAVE_X_WINDOWS
326 MSDOS_OBJ = dosfns.o msdos.o
327 #else
328 MSDOS_OBJ = dosfns.o msdos.o w16select.o termcap.o
329 #endif
330 #endif
331
332 #ifdef HAVE_NS
333 ns_appdir=@ns_appdir@/
334 ns_appbindir=@ns_appbindir@/
335 ns_appresdir=@ns_appresdir@/
336 ns_appsrc=@ns_appsrc@
337 #endif /* HAVE_NS */
338
339 #ifdef HAVE_WINDOW_SYSTEM
340 #ifdef HAVE_X_WINDOWS
341 FONT_DRIVERS=$(FONT_OBJ)
342 #endif /* HAVE_X_WINDOWS */
343 #endif /* HAVE_WINDOW_SYSTEM */
344
345 /* lastfile must follow all files
346 whose initialized data areas should be dumped as pure by dump-emacs. */
347 obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
348 charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \
349 cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
350 emacs.o keyboard.o macros.o keymap.o sysdep.o \
351 buffer.o filelock.o insdel.o marker.o \
352 minibuf.o fileio.o dired.o filemode.o \
353 cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
354 alloc.o data.o doc.o editfns.o callint.o \
355 eval.o floatfns.o fns.o font.o print.o lread.o \
356 syntax.o @unexec@ bytecode.o \
357 process.o callproc.o \
358 region-cache.o sound.o atimer.o \
359 doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
360 $(MSDOS_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_DRIVERS)
361
362 /* Object files used on some machine or other.
363 These go in the DOC file on all machines
364 in case they are needed there. */
365 SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
366 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
367 fontset.o dbusbind.o \
368 nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
369 w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
370 w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_DRIVERS)
371
372 gmallocobj =
373 rallocobj =
374 vmlimitobj =
375 #ifndef SYSTEM_MALLOC
376 #ifndef DOUG_LEA_MALLOC
377 gmallocobj = gmalloc.o
378 #endif
379
380 #ifdef REL_ALLOC
381 rallocobj = ralloc.o
382 #endif
383
384 vmlimitobj = vm-limit.o
385 #endif /* !SYSTEM_MALLOC */
386
387 /* Empty on Cygwin, lastfile.o elsewhere. */
388 PRE_ALLOC_OBJ=@PRE_ALLOC_OBJ@
389 /* lastfile.o vm-limit.o on Cygwin, $vmlimitobj elsewhere. */
390 POST_ALLOC_OBJ=@POST_ALLOC_OBJ@
391
392 /* List of object files that make-docfile should not be told about. */
393 otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(gmallocobj) $(rallocobj) \
394 $(POST_ALLOC_OBJ) $(WIDGET_OBJ) $(LIBOBJS)
395
396 #ifdef HAVE_MOUSE
397 #define MOUSE_SUPPORT ${lispsource}mouse.elc \
398 ${lispsource}select.elc ${lispsource}scroll-bar.elc
399 #else
400 #define MOUSE_SUPPORT $(GPM_MOUSE_SUPPORT)
401 #endif
402
403 #ifdef MSDOS
404 #define MSDOS_SUPPORT ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
405 ${lispsource}dos-fns.elc ${lispsource}dos-w32.elc ${lispsource}dos-vars.elc \
406 ${lispsource}term/internal.elc ${lispsource}term/pc-win.elc
407
408 #else
409 #define MSDOS_SUPPORT
410 #endif
411
412 #ifdef HAVE_WINDOW_SYSTEM
413 #ifdef HAVE_X_WINDOWS
414 #define WINDOW_SUPPORT $(BASE_WINDOW_SUPPORT) $(X_WINDOW_SUPPORT)
415 #else
416 #define WINDOW_SUPPORT $(BASE_WINDOW_SUPPORT)
417 #endif
418 #else
419 #define WINDOW_SUPPORT
420 #endif
421
422 #ifdef WINDOWSNT
423 #define WINNT_SUPPORT ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
424 ${lispsource}dos-w32.elc ${lispsource}w32-vars.elc \
425 ${lispsource}w32-fns.elc ${lispsource}term/common-win.elc \
426 ${lispsource}term/w32-win.elc
427 #else
428 #define WINNT_SUPPORT
429 #endif
430
431 #ifdef HAVE_WINDOW_SYSTEM
432 #define TOOLTIP_SUPPORT ${lispsource}tooltip.elc
433 #else
434 #define TOOLTIP_SUPPORT
435 #endif
436
437 /* This is the platform-specific list of Lisp files loaded into the
438 dumped Emacs. It is arranged like this because it is easier to generate
439 it semi-mechanically from loadup.el this way.
440
441 Note that this list should not include lisp files which might not
442 be present, like site-load.el and site-init.el; this makefile
443 expects them all to be either present or buildable.
444
445 Files which are loaded unconditionally (i.e., on all platforms) should
446 also be in shortlisp. Files which are loaded conditionally (i.e., only
447 on some platforms) should instead be in SOME_MACHINE_LISP. */
448
449 /* Place loaddefs.el first, so it gets generated first, since it is on
450 the critical path (relevant in parallel compilations). */
451
452 lisp= \
453 ${lispsource}loaddefs.el \
454 ${lispsource}abbrev.elc \
455 ${lispsource}buff-menu.elc \
456 ${lispsource}button.elc \
457 ${lispsource}emacs-lisp/byte-run.elc \
458 ${lispsource}composite.elc \
459 ${lispsource}cus-face.elc \
460 ${lispsource}cus-start.elc \
461 ${lispsource}custom.elc \
462 ${lispsource}emacs-lisp/backquote.elc \
463 ${lispsource}emacs-lisp/lisp-mode.elc \
464 ${lispsource}emacs-lisp/lisp.elc \
465 ${lispsource}env.elc \
466 ${lispsource}faces.elc \
467 ${lispsource}files.elc \
468 ${lispsource}format.elc \
469 ${lispsource}facemenu.elc \
470 MOUSE_SUPPORT \
471 ${lispsource}emacs-lisp/float-sup.elc \
472 ${lispsource}frame.elc \
473 ${lispsource}help.elc \
474 ${lispsource}indent.elc \
475 ${lispsource}isearch.elc \
476 ${lispsource}rfn-eshadow.elc \
477 ${lispsource}loadup.el \
478 ${lispsource}bindings.elc \
479 ${lispsource}emacs-lisp/map-ynp.elc \
480 ${lispsource}menu-bar.elc \
481 ${lispsource}international/mule.elc \
482 ${lispsource}international/mule-conf.elc \
483 ${lispsource}international/mule-cmds.elc \
484 ${lispsource}international/characters.elc \
485 ${lispsource}international/charprop.el \
486 ${lispsource}case-table.elc \
487 ${lispsource}language/chinese.elc \
488 ${lispsource}language/cyrillic.elc \
489 ${lispsource}language/indian.elc \
490 ${lispsource}language/sinhala.el \
491 ${lispsource}language/english.el \
492 ${lispsource}language/ethiopic.elc \
493 ${lispsource}language/european.elc \
494 ${lispsource}language/czech.el \
495 ${lispsource}language/slovak.el \
496 ${lispsource}language/romanian.el \
497 ${lispsource}language/greek.el \
498 ${lispsource}language/hebrew.el \
499 ${lispsource}language/japanese.el \
500 ${lispsource}language/korean.el \
501 ${lispsource}language/lao.el \
502 ${lispsource}language/cham.el \
503 ${lispsource}language/tai-viet.el \
504 ${lispsource}language/thai.el \
505 ${lispsource}language/tibetan.elc \
506 ${lispsource}language/vietnamese.elc \
507 ${lispsource}language/misc-lang.el \
508 ${lispsource}language/utf-8-lang.el \
509 ${lispsource}language/georgian.el \
510 ${lispsource}language/khmer.el \
511 ${lispsource}language/burmese.el \
512 ${lispsource}paths.el \
513 ${lispsource}register.elc \
514 ${lispsource}replace.elc \
515 ${lispsource}simple.elc \
516 ${lispsource}minibuffer.elc \
517 ${lispsource}startup.elc \
518 ${lispsource}subr.elc \
519 ${lispsource}term/tty-colors.elc \
520 ${lispsource}font-core.elc \
521 ${lispsource}emacs-lisp/syntax.elc \
522 ${lispsource}font-lock.elc \
523 ${lispsource}jit-lock.elc \
524 ${lispsource}textmodes/fill.elc \
525 ${lispsource}textmodes/page.elc \
526 ${lispsource}textmodes/paragraphs.elc \
527 ${lispsource}textmodes/text-mode.elc \
528 ${lispsource}emacs-lisp/timer.elc \
529 ${lispsource}jka-cmpr-hook.elc \
530 ${lispsource}vc-hooks.elc \
531 ${lispsource}ediff-hook.elc \
532 ${lispsource}epa-hook.elc \
533 TOOLTIP_SUPPORT \
534 MSDOS_SUPPORT \
535 WINNT_SUPPORT \
536 WINDOW_SUPPORT \
537 ${NS_SUPPORT} \
538 ${lispsource}widget.elc \
539 ${lispsource}window.elc \
540 ${lispsource}version.el
541
542 /* List of relative names for those files from $lisp that are loaded
543 unconditionally (i.e. on all platforms). Files from $lisp that
544 are only loaded on some platforms should instead be placed in
545 SOME_MACHINE_LISP. The only reason this variable exists is to prevent
546 the make-docfile command-line getting too long for some systems. */
547 shortlisp= \
548 ../lisp/loaddefs.el \
549 ../lisp/abbrev.elc \
550 ../lisp/buff-menu.elc \
551 ../lisp/button.elc \
552 ../lisp/emacs-lisp/byte-run.elc \
553 ../lisp/composite.elc \
554 ../lisp/cus-face.elc \
555 ../lisp/cus-start.elc \
556 ../lisp/custom.elc \
557 ../lisp/emacs-lisp/backquote.elc \
558 ../lisp/emacs-lisp/lisp-mode.elc \
559 ../lisp/emacs-lisp/lisp.elc \
560 ../lisp/facemenu.elc \
561 ../lisp/faces.elc \
562 ../lisp/files.elc \
563 ../lisp/emacs-lisp/float-sup.elc \
564 ../lisp/format.elc \
565 ../lisp/frame.elc \
566 ../lisp/help.elc \
567 ../lisp/indent.elc \
568 ../lisp/isearch.elc \
569 ../lisp/rfn-eshadow.elc \
570 ../lisp/loadup.el \
571 ../lisp/bindings.elc \
572 ../lisp/emacs-lisp/map-ynp.elc \
573 ../lisp/env.elc \
574 ../lisp/international/mule.elc \
575 ../lisp/international/mule-conf.elc \
576 ../lisp/international/mule-cmds.elc \
577 ../lisp/international/characters.elc \
578 ../lisp/case-table.elc \
579 ../lisp/language/chinese.elc \
580 ../lisp/language/cyrillic.elc \
581 ../lisp/language/indian.elc \
582 ../lisp/language/sinhala.el \
583 ../lisp/language/english.el \
584 ../lisp/language/ethiopic.elc \
585 ../lisp/language/european.elc \
586 ../lisp/language/czech.el \
587 ../lisp/language/slovak.el \
588 ../lisp/language/romanian.el \
589 ../lisp/language/greek.el \
590 ../lisp/language/hebrew.el \
591 ../lisp/language/japanese.el \
592 ../lisp/language/korean.el \
593 ../lisp/language/lao.el \
594 ../lisp/language/cham.el \
595 ../lisp/language/tai-viet.el \
596 ../lisp/language/thai.el \
597 ../lisp/language/tibetan.elc \
598 ../lisp/language/vietnamese.elc \
599 ../lisp/language/misc-lang.el \
600 ../lisp/language/utf-8-lang.el \
601 ../lisp/language/georgian.el \
602 ../lisp/language/khmer.el \
603 ../lisp/language/burmese.el \
604 ../lisp/menu-bar.elc \
605 ../lisp/paths.el \
606 ../lisp/register.elc \
607 ../lisp/replace.elc \
608 ../lisp/simple.elc \
609 ../lisp/minibuffer.elc \
610 ../lisp/startup.elc \
611 ../lisp/subr.elc \
612 ../lisp/term/tty-colors.elc \
613 ../lisp/font-core.elc \
614 ../lisp/emacs-lisp/syntax.elc \
615 ../lisp/font-lock.elc \
616 ../lisp/jit-lock.elc \
617 ../lisp/textmodes/fill.elc \
618 ../lisp/textmodes/page.elc \
619 ../lisp/textmodes/paragraphs.elc \
620 ../lisp/textmodes/text-mode.elc \
621 ../lisp/emacs-lisp/timer.elc \
622 ../lisp/vc-hooks.elc \
623 ../lisp/jka-cmpr-hook.elc \
624 ../lisp/ediff-hook.elc \
625 ../lisp/epa-hook.elc \
626 ../lisp/widget.elc \
627 ../lisp/window.elc \
628 ../lisp/version.el
629
630 /* Like $shortlisp, but includes only those files from $lisp that are loaded
631 conditionally (i.e., only on some platforms). */
632 SOME_MACHINE_LISP = ../lisp/mouse.elc \
633 ../lisp/select.elc ../lisp/scroll-bar.elc \
634 ../lisp/ls-lisp.elc ../lisp/dos-fns.elc \
635 ../lisp/w32-fns.elc ../lisp/dos-w32.elc \
636 ../lisp/disp-table.elc ../lisp/dos-vars.elc \
637 ../lisp/tooltip.elc ../lisp/image.elc \
638 ../lisp/fringe.elc ../lisp/dnd.elc \
639 ../lisp/mwheel.elc ../lisp/tool-bar.elc \
640 ../lisp/x-dnd.elc ../lisp/dynamic-setting.elc \
641 ../lisp/international/ccl.elc \
642 ../lisp/international/fontset.elc \
643 ../lisp/mouse.elc \
644 ../lisp/term/common-win.elc \
645 ../lisp/term/x-win.elc \
646 ../lisp/term/pc-win.elc ../lisp/term/internal.elc \
647 ../lisp/term/ns-win.elc ../lisp/term/w32-win.elc \
648 ../lisp/emacs-lisp/easymenu.elc
649
650 /* Construct full set of libraries to be linked.
651 Note that SunOS needs -lm to come before -lc; otherwise, you get
652 duplicated symbols. If the standard libraries were compiled
653 with GCC, we might need gnulib again after them. */
654
655 LIBES = $(LOADLIBES) $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \
656 $(RSVG_LIBS) $(DBUS_LIBS) @LIBGPM@ @LIBRESOLV@ $(LIBS_SYSTEM) \
657 $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \
658 @FREETYPE_LIBS@ @FONTCONFIG_LIBS@ @LIBOTF_LIBS@ @M17N_FLT_LIBS@ \
659 $(GNULIB_VAR) @LIB_MATH@ @LIB_STANDARD@ $(GNULIB_VAR)
660
661 all: emacs${EXEEXT} $(OTHER_FILES)
662
663 emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
664 #ifdef CANNOT_DUMP
665 rm -f emacs${EXEEXT}
666 ln temacs${EXEEXT} emacs${EXEEXT}
667 -EMACSLOADPATH=${lispsource} ./emacs -q -batch -f list-load-path-shadows
668 #else
669 LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump
670 @: This new Emacs is as functional and more efficient then
671 @: bootstrap-emacs, so let us replace it.
672 -ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
673 -./emacs -q -batch -f list-load-path-shadows
674 #endif /* ! defined (CANNOT_DUMP) */
675
676 /* We run make-docfile twice because the command line may get too long
677 on some systems. */
678 /* ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may
679 or may not be included in ${obj}, but they are always included in
680 ${SOME_MACHINE_OBJECTS}. Since a file is processed when it is mentioned
681 for the first time, this prevents any variation between configurations
682 in the contents of the DOC file.
683 Likewise for ${SOME_MACHINE_LISP}. */
684 /* Most of this Makefile refers to Lisp files via ${lispsource}, so
685 we also use ${lisp} rather than ${shortlisp} for the dependency since
686 the Makefile uses string equality to decide when we talk about identical
687 files. Apparently we pass ${shortlisp} rather than ${lisp} to make-docfile
688 only in order to reduce the command line length. --Stef */
689 ${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
690 -rm -f ${etc}DOC
691 ${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
692 ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
693
694 ${libsrc}make-docfile${EXEEXT}:
695 cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile${EXEEXT}
696
697 buildobj.h: Makefile
698 echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h
699
700 /* FIXME LOCALCPP not defined or mentioned anywhere. */
701 temacs${EXEEXT}: $(LOCALCPP) $(START_FILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT}
702 #ifdef NS_IMPL_GNUSTEP
703 $(CC) -rdynamic YMF_PASS_LDFLAGS ( ${TEMACS_LDFLAGS} \
704 -L@GNUSTEP_SYSTEM_LIBRARIES@ -lgnustep-gui -lgnustep-base \
705 -lobjc $(CONFIG_SYSTEM_LIBS) -lpthread ) -o temacs \
706 ${obj} ${otherobj} ${LIBES}
707 #else
708 $(LD) YMF_PASS_LDFLAGS (${STARTFLAGS} ${TEMACS_LDFLAGS}) $(LDFLAGS) \
709 -o temacs ${START_FILES} ${obj} ${otherobj} \
710 ${LIBES}
711 #endif
712
713 prefix-args${EXEEXT}: prefix-args.o $(config_h)
714 $(CC) $(LDFLAGS) prefix-args.o -o prefix-args
715
716 #if defined (HAVE_X_WINDOWS) && defined (HAVE_X11) && defined (HAVE_MENUS) && ! defined (USE_GTK)
717
718 /* We use stamp-xmenu with these two deps
719 to both ensure that lwlib gets remade based on its dependencies
720 in its own makefile,
721 and remake temacs if lwlib gets changed by this. */
722 stamp-oldxmenu: ${OLDXMENU} ../src/$(OLDXMENU)
723 touch stamp-oldxmenu
724 /* Supply an ordering for parallel make. */
725 ../src/$(OLDXMENU): ${OLDXMENU}
726
727 #ifdef USE_X_TOOLKIT
728 $(OLDXMENU): really-lwlib
729
730 really-lwlib:
731 cd ${lwlibdir}; ${MAKE} ${MFLAGS} \
732 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
733 @true /* make -t should not create really-lwlib. */
734 .PHONY: really-lwlib
735 #else /* not USE_X_TOOLKIT */
736 $(OLDXMENU): really-oldXMenu
737
738 really-oldXMenu:
739 cd ${oldXMenudir}; ${MAKE} ${MFLAGS} \
740 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
741 @true /* make -t should not create really-oldXMenu. */
742 .PHONY: really-oldXMenu
743 #endif /* not USE_X_TOOLKIT */
744 #else /* not (HAVE_X_WINDOWS && HAVE_X11 && HAVE_MENUS && ! USE_GTK) */
745
746 /* We don''t really need this, but satisfy the dependency. */
747 stamp-oldxmenu:
748 touch stamp-oldxmenu
749 #endif /* not (HAVE_X_WINDOWS && HAVE_X11 && HAVE_MENUS && ! USE_GTK) */
750
751 ../config.status:: epaths.in
752 @echo "The file epaths.h needs to be set up from epaths.in."
753 @echo "Please run the `configure' script again."
754 exit 1
755
756 ../config.status:: config.in
757 @echo "The file config.h needs to be set up from config.in."
758 @echo "Please run the `configure' script again."
759 exit 1
760
761 ecrt0.o: ecrt0.c $(config_h)
762 #ifdef AUTO_DEPEND
763 @-test -d deps || mkdir deps
764 #endif
765 $(CC) -c $(ALL_CFLAGS) ${srcdir}/ecrt0.c
766 doc.o: buildobj.h
767
768 #ifndef AUTO_DEPEND
769
770 /* FIXME some of these dependencies are platform-specific.
771 Eg callproc.c only depends on w32.h for WINDOWSNT builds.
772 One way to fix this would be to replace w32.h (etc) by $(W32_H),
773 a variable set by configure. Does not seem worth the trouble.
774
775 nsgui.h: In fact, every .o file depends directly or indirectly on
776 dispextern.h and hence nsgui.h under NS. But the ones that actually
777 use stuff there are more limited. */
778 atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \
779 $(config_h)
780 bidi.o: bidi.c buffer.h character.h dispextern.h lisp.h $(config_h)
781 buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \
782 $(INTERVALS_H) blockinput.h atimer.h systime.h character.h \
783 indent.h keyboard.h coding.h keymap.h frame.h lisp.h $(config_h)
784 callint.o: callint.c window.h commands.h buffer.h keymap.h \
785 keyboard.h dispextern.h systime.h coding.h composite.h lisp.h $(config_h)
786 callproc.o: callproc.c epaths.h buffer.h commands.h lisp.h $(config_h) \
787 process.h systty.h syssignal.h character.h coding.h ccl.h msdos.h \
788 composite.h w32.h blockinput.h atimer.h systime.h frame.h termhooks.h \
789 buffer.h
790 casefiddle.o: casefiddle.c syntax.h commands.h buffer.h character.h \
791 composite.h keymap.h lisp.h $(config_h)
792 casetab.o: casetab.c buffer.h character.h lisp.h $(config_h)
793 category.o: category.c category.h buffer.h charset.h keymap.h \
794 character.h lisp.h $(config_h)
795 ccl.o: ccl.c ccl.h charset.h character.h coding.h composite.h lisp.h $(config_h)
796 character.o: character.c character.h buffer.h charset.h composite.h disptab.h \
797 lisp.h $(config_h)
798 charset.o: charset.c charset.h character.h buffer.h coding.h composite.h \
799 disptab.h lisp.h $(config_h)
800 chartab.o: charset.h character.h ccl.h lisp.h $(config_h)
801 coding.o: coding.c coding.h ccl.h buffer.h character.h charset.h composite.h \
802 window.h dispextern.h frame.h termhooks.h lisp.h $(config_h)
803 cm.o: cm.c frame.h cm.h termhooks.h termchar.h dispextern.h lisp.h $(config_h)
804 cmds.o: cmds.c syntax.h buffer.h character.h commands.h window.h lisp.h $(config_h) \
805 msdos.h dispextern.h keyboard.h keymap.h systime.h coding.h frame.h \
806 composite.h
807 pre-crt0.o: pre-crt0.c
808 dbusbind.o: dbusbind.c termhooks.h frame.h keyboard.h lisp.h $(config_h)
809 dired.o: dired.c commands.h buffer.h lisp.h $(config_h) character.h charset.h \
810 coding.h regex.h systime.h blockinput.h atimer.h composite.h
811 dispnew.o: dispnew.c systime.h commands.h process.h frame.h coding.h \
812 window.h buffer.h termchar.h termopts.h termhooks.h cm.h \
813 disptab.h indent.h $(INTERVALS_H) nsgui.h \
814 xterm.h blockinput.h atimer.h character.h msdos.h keyboard.h \
815 syssignal.h lisp.h $(config_h)
816 doc.o: doc.c lisp.h $(config_h) epaths.h buffer.h keyboard.h keymap.h \
817 character.h systime.h coding.h composite.h
818 doprnt.o: doprnt.c character.h lisp.h $(config_h)
819 dosfns.o: buffer.h termchar.h termhooks.h frame.h blockinput.h window.h \
820 msdos.h dosfns.h dispextern.h charset.h coding.h atimer.h systime.h \
821 lisp.h $(config_h)
822 editfns.o: editfns.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
823 coding.h frame.h blockinput.h atimer.h lisp.h $(config_h)
824 emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \
825 termhooks.h buffer.h atimer.h systime.h $(INTERVALS_H) lisp.h $(config_h) \
826 window.h dispextern.h keyboard.h keymap.h frame.h coding.h
827 fileio.o: fileio.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
828 coding.h msdos.h blockinput.h atimer.h lisp.h $(config_h) frame.h commands.h
829 filelock.o: filelock.c buffer.h character.h coding.h systime.h composite.h \
830 lisp.h $(config_h)
831 filemode.o: filemode.c $(config_h)
832 frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
833 blockinput.h atimer.h systime.h buffer.h character.h fontset.h font.h \
834 msdos.h dosfns.h dispextern.h w32term.h nsgui.h termchar.h coding.h \
835 composite.h lisp.h $(config_h) termhooks.h ccl.h
836 fringe.o: fringe.c dispextern.h nsgui.h frame.h window.h buffer.h termhooks.h \
837 blockinput.h atimer.h systime.h lisp.h $(config_h)
838 font.o: font.c dispextern.h frame.h window.h ccl.h character.h charset.h \
839 font.h lisp.h $(config_h) buffer.h composite.h fontset.h xterm.h nsgui.h
840 ftfont.o: dispextern.h frame.h character.h charset.h composite.h font.h \
841 lisp.h $(config_h) blockinput.h atimer.h systime.h coding.h fontset.h \
842 ccl.h ftfont.h
843 fontset.o: fontset.c fontset.h ccl.h buffer.h character.h \
844 charset.h frame.h keyboard.h termhooks.h font.h lisp.h $(config_h) \
845 blockinput.h atimer.h systime.h coding.h $(INTERVALS_H) nsgui.h \
846 window.h xterm.h
847 getloadavg.o: getloadavg.c $(config_h)
848 gtkutil.o: gtkutil.c gtkutil.h xterm.h lisp.h frame.h lisp.h $(config_h) \
849 blockinput.h window.h atimer.h systime.h termhooks.h keyboard.h \
850 charset.h coding.h syssignal.h dispextern.h composite.h
851 image.o: image.c frame.h window.h dispextern.h blockinput.h atimer.h \
852 systime.h xterm.h w32term.h w32gui.h font.h epaths.h character.h coding.h \
853 nsterm.h nsgui.h lisp.h $(config_h) composite.h termhooks.h ccl.h
854 indent.o: indent.c frame.h window.h indent.h buffer.h lisp.h $(config_h) termchar.h \
855 termopts.h disptab.h region-cache.h character.h category.h \
856 keyboard.h systime.h coding.h $(INTERVALS_H)
857 insdel.o: insdel.c window.h buffer.h $(INTERVALS_H) blockinput.h character.h \
858 dispextern.h atimer.h systime.h region-cache.h lisp.h $(config_h)
859 keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \
860 commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \
861 systime.h syntax.h $(INTERVALS_H) blockinput.h atimer.h composite.h \
862 xterm.h puresize.h msdos.h keymap.h w32term.h nsterm.h nsgui.h coding.h \
863 lisp.h $(config_h)
864 keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \
865 atimer.h systime.h puresize.h character.h charset.h $(INTERVALS_H) keymap.h window.h \
866 coding.h frame.h lisp.h $(config_h)
867 lastfile.o: lastfile.c $(config_h)
868 macros.o: macros.c window.h buffer.h commands.h macros.h keyboard.h \
869 dispextern.h lisp.h $(config_h) systime.h coding.h composite.h
870 gmalloc.o: gmalloc.c $(config_h)
871 ralloc.o: ralloc.c lisp.h $(config_h)
872 vm-limit.o: vm-limit.c mem-limits.h lisp.h $(config_h)
873 marker.o: marker.c buffer.h character.h lisp.h $(config_h)
874 md5.o: md5.c md5.h $(config_h)
875 minibuf.o: minibuf.c syntax.h frame.h window.h keyboard.h systime.h \
876 buffer.h commands.h character.h msdos.h $(INTERVALS_H) keymap.h \
877 termhooks.h lisp.h $(config_h) coding.h
878 mktime.o: mktime.c $(config_h)
879 msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \
880 termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \
881 keyboard.h $(INTERVALS_H) buffer.h commands.h blockinput.h atimer.h lisp.h $(config_h)
882 nsfns.o: nsfns.m charset.h nsterm.h nsgui.h frame.h window.h buffer.h \
883 dispextern.h fontset.h $(INTERVALS_H) keyboard.h blockinput.h \
884 atimer.h systime.h epaths.h termhooks.h coding.h systime.h lisp.h $(config_h)
885 nsfont.o: nsterm.h dispextern.h frame.h lisp.h lisp.h $(config_h)
886 nsimage.o: nsimage.m nsterm.h lisp.h $(config_h)
887 nsmenu.o: nsmenu.m termhooks.h frame.h window.h dispextern.h \
888 nsgui.h keyboard.h blockinput.h atimer.h systime.h buffer.h \
889 nsterm.h lisp.h $(config_h)
890 nsterm.o: nsterm.m blockinput.h atimer.h systime.h syssignal.h nsterm.h \
891 nsgui.h frame.h charset.h ccl.h dispextern.h fontset.h termhooks.h \
892 termopts.h termchar.h disptab.h buffer.h window.h keyboard.h \
893 $(INTERVALS_H) process.h coding.h lisp.h $(config_h)
894 nsselect.o: nsselect.m blockinput.h nsterm.h nsgui.h frame.h lisp.h $(config_h)
895 process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \
896 commands.h syssignal.h systime.h systty.h syswait.h frame.h dispextern.h \
897 blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \
898 keyboard.h lisp.h $(config_h) character.h xgselect.h sysselect.h
899 regex.o: regex.c syntax.h buffer.h lisp.h $(config_h) regex.h category.h character.h
900 region-cache.o: region-cache.c buffer.h region-cache.h lisp.h $(config_h)
901 scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \
902 termhooks.h lisp.h $(config_h) systime.h coding.h composite.h window.h
903 search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \
904 blockinput.h atimer.h systime.h category.h character.h charset.h \
905 $(INTERVALS_H) \
906 lisp.h $(config_h)
907 sound.o: sound.c dispextern.h syssignal.h lisp.h $(config_h) atimer.h systime.h
908 strftime.o: strftime.c $(config_h)
909 syntax.o: syntax.c syntax.h buffer.h commands.h category.h character.h \
910 keymap.h regex.h $(INTERVALS_H) lisp.h $(config_h)
911 sysdep.o: sysdep.c syssignal.h systty.h systime.h syswait.h blockinput.h \
912 process.h dispextern.h termhooks.h termchar.h termopts.h coding.h \
913 frame.h atimer.h window.h msdos.h dosfns.h keyboard.h cm.h lisp.h $(config_h) \
914 composite.h
915 term.o: term.c termchar.h termhooks.h termopts.h lisp.h $(config_h) cm.h frame.h \
916 disptab.h keyboard.h character.h charset.h coding.h ccl.h xterm.h \
917 msdos.h window.h keymap.h blockinput.h atimer.h systime.h systty.h \
918 syssignal.h $(INTERVALS_H) buffer.h
919 termcap.o: termcap.c lisp.h $(config_h)
920 terminal.o: terminal.c frame.h termchar.h termhooks.h charset.h coding.h \
921 keyboard.h lisp.h $(config_h) dispextern.h composite.h systime.h
922 terminfo.o: terminfo.c lisp.h $(config_h)
923 tparam.o: tparam.c lisp.h $(config_h)
924 undo.o: undo.c buffer.h commands.h window.h dispextern.h lisp.h $(config_h)
925 unexaix.o: unexaix.c lisp.h $(config_h)
926 unexalpha.o: unexalpha.c $(config_h)
927 unexcw.o: unexcw.c lisp.h $(config_h)
928 unexec.o: unexec.c lisp.h $(config_h)
929 unexelf.o: unexelf.c $(config_h)
930 unexhp9k800.o: unexhp9k800.c $(config_h)
931 unexmacosx.o: unexmacosx.c $(config_h)
932 unexsol.o: unexsol.c lisp.h $(config_h)
933 unexw32.o: unexw32.c $(config_h)
934 w16select.o: w16select.c dispextern.h frame.h blockinput.h atimer.h systime.h \
935 msdos.h buffer.h charset.h coding.h composite.h lisp.h $(config_h)
936 widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \
937 $(srcdir)/../lwlib/lwlib.h lisp.h $(config_h)
938 window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \
939 disptab.h keyboard.h msdos.h coding.h termhooks.h \
940 keymap.h blockinput.h atimer.h systime.h $(INTERVALS_H) \
941 xterm.h w32term.h nsterm.h nsgui.h lisp.h $(config_h)
942 xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h \
943 coding.h termchar.h frame.h window.h disptab.h termhooks.h character.h \
944 charset.h lisp.h $(config_h) keyboard.h $(INTERVALS_H) region-cache.h \
945 xterm.h w32term.h nsterm.h nsgui.h msdos.h composite.h fontset.h ccl.h \
946 blockinput.h atimer.h systime.h keymap.h font.h
947 xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \
948 window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \
949 systime.h keyboard.h fontset.h w32term.h nsterm.h coding.h ccl.h \
950 $(INTERVALS_H) nsgui.h termchar.h termhooks.h font.h lisp.h $(config_h)
951 xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \
952 $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \
953 character.h charset.h coding.h gtkutil.h lisp.h $(config_h) termhooks.h \
954 fontset.h termchar.h font.h xsettings.h $(INTERVALS_H) ccl.h
955 xfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \
956 font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h
957 xftfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \
958 font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h ftfont.h
959 ftxfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \
960 font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h
961 menu.o: menu.c lisp.h keyboard.h keymap.h frame.h termhooks.h blockinput.h \
962 dispextern.h $(srcdir)/../lwlib/lwlib.h xterm.h gtkutil.h menu.h \
963 lisp.h $(config_h) systime.h coding.h composite.h window.h atimer.h nsgui.h
964 xmenu.o: xmenu.c xterm.h termhooks.h window.h dispextern.h frame.h buffer.h \
965 charset.h keyboard.h $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h \
966 systime.h gtkutil.h msdos.h coding.h menu.h lisp.h $(config_h) composite.h \
967 keymap.h sysselect.h
968 xterm.o: xterm.c xterm.h termhooks.h termopts.h termchar.h window.h buffer.h \
969 dispextern.h frame.h disptab.h blockinput.h atimer.h systime.h syssignal.h \
970 keyboard.h emacs-icon.h character.h charset.h ccl.h fontset.h composite.h \
971 coding.h process.h gtkutil.h font.h fontset.h lisp.h $(config_h) \
972 xsettings.h intervals.h keymap.h xgselect.h sysselect.h
973 xselect.o: xselect.c process.h dispextern.h frame.h xterm.h blockinput.h \
974 buffer.h atimer.h systime.h termhooks.h lisp.h $(config_h) keyboard.h \
975 coding.h composite.h
976 xgselect.o: xgselect.h systime.h sysselect.h lisp.h $(config_h)
977 xrdb.o: xrdb.c lisp.h $(config_h) epaths.h
978 xsmfns.o: xsmfns.c lisp.h $(config_h) systime.h sysselect.h termhooks.h xterm.h \
979 lisp.h termopts.h frame.h dispextern.h
980 xsettings.o: xterm.h xsettings.h lisp.h frame.h termhooks.h $(config_h) \
981 dispextern.h keyboard.h systime.h coding.h composite.h blockinput.h atimer.h \
982 termopts.h
983 /* The files of Lisp proper */
984
985 alloc.o: alloc.c process.h frame.h window.h buffer.h puresize.h syssignal.h \
986 keyboard.h blockinput.h atimer.h systime.h character.h lisp.h $(config_h) \
987 $(INTERVALS_H) termhooks.h
988 bytecode.o: bytecode.c buffer.h syntax.h character.h window.h dispextern.h \
989 frame.h xterm.h lisp.h $(config_h)
990 data.o: data.c buffer.h puresize.h character.h syssignal.h keyboard.h frame.h \
991 termhooks.h systime.h coding.h composite.h dispextern.h font.h ccl.h \
992 lisp.h $(config_h)
993 eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h \
994 dispextern.h lisp.h $(config_h) coding.h composite.h xterm.h
995 floatfns.o: floatfns.c syssignal.h lisp.h $(config_h)
996 fns.o: fns.c commands.h lisp.h $(config_h) frame.h buffer.h character.h keyboard.h \
997 keymap.h window.h dispextern.h $(INTERVALS_H) coding.h md5.h \
998 blockinput.h atimer.h systime.h xterm.h
999 print.o: print.c process.h frame.h window.h buffer.h keyboard.h character.h \
1000 lisp.h $(config_h) termchar.h $(INTERVALS_H) msdos.h termhooks.h \
1001 blockinput.h atimer.h systime.h font.h charset.h coding.h ccl.h
1002 lread.o: lread.c commands.h keyboard.h buffer.h epaths.h character.h \
1003 charset.h lisp.h $(config_h) $(INTERVALS_H) termhooks.h coding.h msdos.h \
1004 systime.h frame.h blockinput.h atimer.h
1005
1006 /* Text properties support */
1007 composite.o: composite.c buffer.h character.h coding.h font.h ccl.h \
1008 frame.h termhooks.h $(INTERVALS_H) window.h lisp.h $(config_h)
1009 intervals.o: intervals.c buffer.h $(INTERVALS_H) keyboard.h puresize.h \
1010 keymap.h lisp.h $(config_h) systime.h coding.h
1011 textprop.o: textprop.c buffer.h window.h $(INTERVALS_H) \
1012 lisp.h $(config_h)
1013
1014 #endif /* ! AUTO_DEPEND */
1015
1016 /* System-specific programs to be made.
1017 OTHER_FILES
1018 select which of these should be compiled. */
1019
1020 #ifdef HAVE_NS
1021 ${ns_appdir}: ${ns_appsrc}
1022 rm -fr ${ns_appdir}
1023 mkdir -p ${ns_appdir}
1024 ( cd ${ns_appsrc} ; tar cfh - . ) | ( cd ${ns_appdir} ; tar xf - )
1025 ( cd ${ns_appdir} ; for subdir in `find . -type d ! -name CVS -print` ; do \
1026 chmod a+rx $${subdir} ; \
1027 rm -rf $${subdir}/CVS ; \
1028 rm -f $${subdir}/.cvsignore ; done ; )
1029
1030 ${ns_appbindir}Emacs: emacs${EXEEXT}
1031 mkdir -p ${ns_appbindir}
1032 cp -f emacs${EXEEXT} ${ns_appbindir}Emacs
1033
1034 ns-app: ${ns_appdir} ${ns_appbindir}Emacs
1035
1036 #endif /* HAVE_NS */
1037
1038 mostlyclean:
1039 rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a
1040 rm -f ../etc/DOC
1041 rm -f bootstrap-emacs${EXEEXT} emacs-${version}${EXEEXT}
1042 rm -f buildobj.h
1043 clean: mostlyclean
1044 rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT}
1045 -rm -rf deps
1046 #ifdef HAVE_NS
1047 rm -fr ${ns_appdir}
1048 #endif
1049 /* bootstrap-clean is used to clean up just before a bootstrap.
1050 It should remove all files generated during a compilation/bootstrap,
1051 but not things like config.status or TAGS. */
1052 bootstrap-clean: clean
1053 rm -f epaths.h config.h Makefile.c config.stamp stamp-oldxmenu ../etc/DOC-*
1054 if test -f ./.gdbinit; then \
1055 mv ./.gdbinit ./.gdbinit.save; \
1056 if test -f "${srcdir}/.gdbinit"; then rm -f ./.gdbinit.save; \
1057 else mv ./.gdbinit.save ./.gdbinit; fi; \
1058 fi
1059 /**/# This is used in making a distribution.
1060 /**/# Do not use it on development directories!
1061 distclean: bootstrap-clean
1062 rm -f Makefile
1063 maintainer-clean: distclean
1064 @echo "This command is intended for maintainers to use;"
1065 @echo "it deletes files that may require special tools to rebuild."
1066 rm -f TAGS
1067 versionclean:
1068 -rm -f emacs${EXEEXT} emacs-*.*.*${EXEEXT} ../etc/DOC*
1069 extraclean: distclean
1070 -rm -f *~ \#* m/?*~ s/?*~
1071
1072 /* Arrange to make a tags table TAGS-LISP for ../lisp,
1073 plus TAGS for the C files, which includes ../lisp/TAGS by reference. */
1074
1075 ctagsfiles1 = [xyzXYZ]*.[hcm]
1076 ctagsfiles2 = [a-wA-W]*.[hcm]
1077
1078 TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
1079 ../lib-src/etags --include=TAGS-LISP --include=${lwlibdir}/TAGS \
1080 --regex='/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \
1081 $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
1082 frc:
1083 TAGS-LISP: frc
1084 $(MAKE) -f ${lispdir}Makefile TAGS-LISP ETAGS=../lib-src/etags
1085
1086 $(lwlibdir)TAGS:
1087 (cd $(lwlibdir); $(MAKE) -f $(lwlibdir)Makefile tags ETAGS=../lib-src/etags)
1088
1089 tags: TAGS TAGS-LISP $(lwlibdir)TAGS
1090 .PHONY: tags
1091
1092
1093 /* Bootstrapping. */
1094 /* Bootstrapping right is difficult because of the circular dependencies.
1095 Furthermore, we have to deal with the fact that many compilation targets
1096 such as loaddefs.el or *.elc can typically be produced by any old
1097 Emacs executable, so we would like to avoid rebuilding them whenever
1098 we build a new Emacs executable.
1099 To solve the circularity, we use 2 different Emacs executables,
1100 "emacs" is the main target and "bootstrap-emacs" is the one used
1101 to build the *.elc and loaddefs.el files.
1102 To solve the freshness issue, we used to use a third file "witness-emacs"
1103 which was used to witness the fact that there is a bootstrap-emacs
1104 executable, and then have dependencies on witness-emacs rather than
1105 bootstrap-emacs, but that lead to problems in parallel builds (because
1106 witness-emacs needed to be free from dependencies (to avoid rebuilding
1107 it), so it was compiled in parallel, leading typically to having 2
1108 processes dumping bootstrap-emacs at the same time).
1109 So instead, we replace the witness-emacs dependencies by conditional
1110 bootstrap-dependencies (via ${BOOTSTRAPEMACS}). Of course, since we do
1111 not want to rely on GNU Make features, we have to rely on an external
1112 script to do the conditional part of the dependency
1113 (i.e. see the ${SUBDIR} rule ../Makefile.in). */
1114
1115 .SUFFIXES: .elc .el
1116
1117 /* These suffix rules do not allow additional dependencies, sadly, so
1118 instead of adding a $(BOOTSTRAPEMACS) dependency here, we add it
1119 separately below.
1120 With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)" */
1121 .el.elc:
1122 @cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \
1123 THEFILE=$< EMACS=${bootstrap_exe}
1124
1125 /* Since the .el.elc rule cannot specify an extra dependency, we do it here. */
1126 ${lisp} ${SOME_MACHINE_LISP}: $(BOOTSTRAPEMACS)
1127
1128 ${lispsource}loaddefs.el: $(BOOTSTRAPEMACS)
1129 cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=${bootstrap_exe}
1130
1131 /* Dump an Emacs executable named bootstrap-emacs containing the
1132 files from loadup.el in source form. */
1133
1134 bootstrap-emacs${EXEEXT}: temacs${EXEEXT}
1135 cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs
1136 #ifdef CANNOT_DUMP
1137 ln -f temacs${EXEEXT} bootstrap-emacs${EXEEXT}
1138 #else
1139 $(RUN_TEMACS) --batch --load loadup bootstrap
1140 mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
1141 #endif /* ! defined (CANNOT_DUMP) */
1142 @: Compile some files earlier to speed up further compilation.
1143 cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe}
1144
1145 #ifdef AUTO_DEPEND
1146 ALLOBJS=$(START_FILES) ${obj} ${otherobj} prefix-args.o
1147 -include $(ALLOBJS:%.o=deps/%.d)
1148 #endif