Handle CANNOT_DUMP (partially) with 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 SHELL = /bin/sh
34
35 # Here are the things that we expect ../configure to edit.
36 # We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
37 srcdir = @srcdir@
38 abs_builddir = @abs_builddir@
39 VPATH = $(srcdir)
40 CC = @CC@
41 CFLAGS = @CFLAGS@
42 CPPFLAGS = @CPPFLAGS@
43 LDFLAGS = @LDFLAGS@
44 EXEEXT = @EXEEXT@
45 version = @version@
46 # Substitute an assignment for the MAKE variable, because
47 # BSD doesn't have it as a default.
48 @SET_MAKE@
49 # Don't use LIBS. configure puts stuff in it that either shouldn't be
50 # linked with Emacs or is duplicated by the cpp stuff below.
51 # LIBS = @LIBS@
52 LIBOBJS = @LIBOBJS@
53
54 lispsource = ${srcdir}/../lisp/
55 libsrc = ../lib-src/
56 etc = ../etc/
57 oldXMenudir = ../oldXMenu/
58 lwlibdir = ../lwlib/
59 lispdir = ../lisp/
60
61 # Configuration files for .o files to depend on.
62 M_FILE = ${srcdir}/@machfile@
63 S_FILE = ${srcdir}/@opsysfile@
64 config_h = config.h $(M_FILE) $(S_FILE)
65
66 bootstrap_exe = ${abs_builddir}/bootstrap-emacs${EXEEXT}
67
68 ## ns-app if HAVE_NS, else empty.
69 OTHER_FILES = @OTHER_FILES@
70
71 CRT_DIR=@CRT_DIR@
72
73 ## Machine-specific CFLAGS.
74 C_SWITCH_MACHINE=@C_SWITCH_MACHINE@
75 ## System-specific CFLAGS.
76 C_SWITCH_SYSTEM=@C_SWITCH_SYSTEM@
77
78 ## Currently only set if NS_IMPL_GNUSTEP.
79 ## C_SWITCH_X_SITE may override this.
80 C_SWITCH_X_SYSTEM=@C_SWITCH_X_SYSTEM@
81
82 ## Define C_SWITCH_X_SITE to contain any special flags your compiler
83 ## may need to deal with X Windows. For instance, if you've defined
84 ## HAVE_X_WINDOWS and your X include files aren't in a place that your
85 ## compiler can find on its own, you might want to add "-I/..." or
86 ## something similar. This is normally set by configure.
87 ## This is used before C_SWITCH_X_SYSTEM and may override it.
88 C_SWITCH_X_SITE=@C_SWITCH_X_SITE@
89
90 ## Define LD_SWITCH_X_SITE to contain any special flags your loader
91 ## may need to deal with X Windows. For instance, if your X libraries
92 ## aren't in a place that your loader can find on its own, you might
93 ## want to add "-L/..." or something similar. Only used if
94 ## HAVE_X_WINDOWS.
95 ## FIXME? configure sets a value for this, but it has never been
96 ## substituted in this or any other Makefile. Cf C_SWITCH_X_SITE.
97 LD_SWITCH_X_SITE=
98
99 ## This holds any special options for linking temacs only (ie, not
100 ## used by configure). Not used elsewhere because it sometimes
101 ## contains options that have to do with using Emacs's crt0,
102 ## which are only good with temacs.
103 LD_SWITCH_SYSTEM_TEMACS=@LD_SWITCH_SYSTEM_TEMACS@
104
105 ## Next two must come before LD_SWITCH_SYSTEM.
106 ## If needed, a -R option that says where to find X windows at run time.
107 LD_SWITCH_X_SITE_AUX=@LD_SWITCH_X_SITE_AUX@
108 ## As above, but using -rpath instead.
109 LD_SWITCH_X_SITE_AUX_RPATH=@LD_SWITCH_X_SITE_AUX_RPATH@
110
111 ## System-specific LDFLAGS.
112 LD_SWITCH_SYSTEM=@LD_SWITCH_SYSTEM@
113 LD_SWITCH_SYSTEM_EXTRA=@LD_SWITCH_SYSTEM_EXTRA@
114
115 ## Flags to pass to ld only for temacs.
116 TEMACS_LDFLAGS = $(LD_SWITCH_SYSTEM) $(LD_SWITCH_SYSTEM_EXTRA) $(LD_SWITCH_SYSTEM_TEMACS)
117
118 ## $LDFLAGS, or empty if NS_IMPL_GNUSTEP (for some reason).
119 TEMACS_LDFLAGS2 = @TEMACS_LDFLAGS2@
120
121 ## Some systems define this to request special libraries.
122 LIBS_SYSTEM=@LIBS_SYSTEM@
123
124 ## Where to find libgcc.a, if using gcc and necessary.
125 LIB_GCC=@LIB_GCC@
126
127 LD=@LINKER@
128
129 ## May use $CRT_DIR.
130 LIB_STANDARD=@LIB_STANDARD@
131
132 ## -lm, or empty.
133 LIB_MATH=@LIB_MATH@
134
135 LIBTIFF=@LIBTIFF@
136 LIBJPEG=@LIBJPEG@
137 LIBPNG=@LIBPNG@
138 LIBGIF=@LIBGIF@
139 LIBXPM=@LIBXPM@
140 XFT_LIBS=@XFT_LIBS@
141 LIBX_EXTRA=$(LIBTIFF) $(LIBJPEG) $(LIBPNG) $(LIBGIF) $(LIBXPM) -lX11 $(XFT_LIBS)
142
143 FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
144 FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
145 FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
146 FREETYPE_LIBS = @FREETYPE_LIBS@
147 LIBOTF_CFLAGS = @LIBOTF_CFLAGS@
148 LIBOTF_LIBS = @LIBOTF_LIBS@
149 M17N_FLT_CFLAGS = @M17N_FLT_CFLAGS@
150 M17N_FLT_LIBS = @M17N_FLT_LIBS@
151
152 DBUS_CFLAGS = @DBUS_CFLAGS@
153 DBUS_LIBS = @DBUS_LIBS@
154 DBUS_OBJ = @DBUS_OBJ@
155
156 GCONF_CFLAGS = @GCONF_CFLAGS@
157 GCONF_LIBS = @GCONF_LIBS@
158
159 GTK_OBJ=@GTK_OBJ@
160
161 ## -ltermcap, or -lncurses, or -lcurses, or "".
162 LIBS_TERMCAP=@LIBS_TERMCAP@
163 ## terminfo.o if TERMINFO, else tparam.o.
164 TERMCAP_OBJ=@TERMCAP_OBJ@
165
166 LIBXMU=@LIBXMU@
167
168 LIBXSM=@LIBXSM@
169
170 LIBXTR6=@LIBXTR6@
171
172 ## $(LIBXMU) -lXt $(LIBXTR6) -lXext if USE_X_TOOLKIT, else $(LIBXSM).
173 ## Only used if HAVE_X_WINDOWS.
174 LIBXT_OTHER=@LIBXT_OTHER@
175
176 ## Only used if HAVE_X11 && !USE_GTK.
177 ## really-lwlib if USE_X_TOOLKIT, else really-oldxmenu.
178 OLDXMENU_TARGET=@OLDXMENU_TARGET@
179
180 ## If !HAVE_X11 || USE_GTK, empty.
181 ## Else if USE_X_TOOLKIT, ${lwlibdir}liblw.a.
182 ## Else ${oldXMenudir}libXMenu11.a.
183 OLDXMENU=@OLDXMENU@
184
185 ## If HAVE_X11 && !USE_GTK, ${OLDXMENU} ../src/${OLDXMENU}; else empty.
186 ## We use stamp-xmenu with these two deps to both ensure that lwlib
187 ## gets remade based on its dependencies in its own makefile,
188 ## and remake temacs if lwlib gets changed by this.
189 OLDXMENU_DEPS=@OLDXMENU_DEPS@
190
191 ## If !HAVE_X11 && HAVE_X_WINDOWS, -lXMenu (this case no longer possible).
192 ## Else if !HAVE_X11 || USE_GTK, empty.
193 ## Else $(OLDXMENU).
194 LIBXMENU=@LIBXMENU@
195
196 XMENU_OBJ=@XMENU_OBJ@
197 XOBJ=@XOBJ@
198
199 TOOLKIT_LIBW=@TOOLKIT_LIBW@
200
201 ## Only used if HAVE_X11, in LIBX_OTHER.
202 LIBXT=$(TOOLKIT_LIBW) $(LIBXT_OTHER)
203
204 ## If HAVE_X11, $(LIBXT) $(LIBX_EXTRA), else empty.
205 LIBX_OTHER=@LIBX_OTHER@
206
207 ## LIBXMENU is nil if !HAVE_X_WINDOWS.
208 ## LD_SWITCH_X_SITE should not be used if not using X, but nothing
209 ## sets it at present, and if something ever does, it should be
210 ## configure, which should set it to nil in non-X builds.
211 LIBX_BASE=$(LIBXMENU) $(LD_SWITCH_X_SITE)
212
213 LIBSOUND= @LIBSOUND@
214 CFLAGS_SOUND= @CFLAGS_SOUND@
215
216 RSVG_LIBS= @RSVG_LIBS@
217 RSVG_CFLAGS= @RSVG_CFLAGS@
218
219 ## widget.o if USE_X_TOOLKIT, otherwise empty.
220 WIDGET_OBJ=@WIDGET_OBJ@
221
222 ## sheap.o if CYGWIN, otherwise empty.
223 CYGWIN_OBJ=@CYGWIN_OBJ@
224
225 ## dosfns.o msdos.o w16select.o if MSDOS.
226 MSDOS_OBJ =
227 ## w16select.o termcap.o if MSDOS && HAVE_X_WINDOWS.
228 MSDOS_X_OBJ =
229 MSDOS_SUPPORT_REAL = ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
230 ${lispsource}dos-fns.elc ${lispsource}dos-w32.elc ${lispsource}dos-vars.elc \
231 ${lispsource}term/internal.elc ${lispsource}term/pc-win.elc
232 ## $MSDOS_SUPPORT_REAL if MSDOS.
233 MSDOS_SUPPORT =
234
235 ns_appdir=@ns_appdir@
236 ns_appbindir=@ns_appbindir@
237 ns_appsrc=@ns_appsrc@
238 NS_OBJ=@NS_OBJ@
239 NS_SUPPORT=@NS_SUPPORT@
240 ## Only set if NS_IMPL_GNUSTEP.
241 GNU_OBJC_CFLAGS=@GNU_OBJC_CFLAGS@
242
243 ## Empty if !HAVE_X_WINDOWS
244 ## xfont.o ftfont.o xftfont.o ftxfont.o if HAVE_XFT
245 ## xfont.o ftfont.o ftxfont.o if HAVE_FREETYPE
246 ## else xfont.o
247 FONT_OBJ=@FONT_OBJ@
248
249 ## Used if HAVE_MOUSE.
250 REAL_MOUSE_SUPPORT=${lispsource}mouse.elc ${lispsource}select.elc \
251 ${lispsource}scroll-bar.elc
252 ## Used if HAVE_GPM && !HAVE_MOUSE
253 GPM_MOUSE_SUPPORT=${lispsource}mouse.elc
254 LIBGPM = @LIBGPM@
255 ## Either of the two preceding options, or empty.
256 MOUSE_SUPPORT=@MOUSE_SUPPORT@
257
258 ## ${lispsource}tooltip.elc if HAVE_WINDOW_SYSTEM, else empty.
259 TOOLTIP_SUPPORT=@TOOLTIP_SUPPORT@
260
261 BASE_WINDOW_SUPPORT=${lispsource}fringe.elc ${lispsource}image.elc \
262 ${lispsource}international/fontset.elc ${lispsource}dnd.elc \
263 ${lispsource}tool-bar.elc ${lispsource}mwheel.elc
264
265 X_WINDOW_SUPPORT=${lispsource}x-dnd.elc ${lispsource}term/common-win.elc \
266 ${lispsource}term/x-win.elc ${lispsource}dynamic-setting.elc
267
268 ## If HAVE_X_WINDOWS, both the above
269 ## else if HAVE_WINDOW_SYSTEM (ie, HAVE_NS) just the former; else empty.
270 WINDOW_SUPPORT=@WINDOW_SUPPORT@
271
272 ## -lresolv, or empty.
273 LIBRESOLV = @LIBRESOLV@
274
275 LIBSELINUX_LIBS = @LIBSELINUX_LIBS@
276
277 INTERVALS_H = dispextern.h intervals.h composite.h
278
279 GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
280
281 RUN_TEMACS = `/bin/pwd`/temacs
282
283 START_FILES = @START_FILES@
284
285 UNEXEC_OBJ = @unexec@
286
287 CANNOT_DUMP=@cannot_dump@
288
289 DEPDIR=deps
290 ## -MMD -MF ${DEPDIR}/$*.d if AUTO_DEPEND; else empty.
291 DEPFLAGS=@DEPFLAGS@
292 ## test -d ${DEPDIR} || mkdir ${DEPDIR} (if AUTO_DEPEND); else ':'.
293 MKDEPDIR=@MKDEPDIR@
294
295 # ========================== start of cpp stuff =======================
296 /* From here on, comments must be done in C syntax. */
297
298 #define NOT_C_CODE
299 #include "config.h"
300
301 /* If NS_IMPL_GNUSTEP, some definitions and includes are expanded here. */
302 @NS_IMPL_GNUSTEP_INC@
303
304 /* FIXME move to LD_SWITCH_SYSTEM_TEMACS?
305 This uses ${CONFIG_SYSTEM_LIBS}, presumably set by the above include. */
306 NS_IMPL_GNUSTEP_TEMACS_LDFLAGS=@NS_IMPL_GNUSTEP_TEMACS_LDFLAGS@
307
308 /* DO NOT use -R. There is a special hack described in lastfile.c
309 which is used instead. Some initialized data areas are modified
310 at initial startup, then labeled as part of the text area when
311 Emacs is dumped for the first time, and never changed again. */
312
313 /* -Demacs is needed to make some files produce the correct version
314 for use in Emacs.
315
316 -DHAVE_CONFIG_H is needed for some other files to take advantage of
317 the information in ``config.h''. */
318
319 /* C_SWITCH_X_SITE must come before C_SWITCH_X_SYSTEM
320 since it may have -I options that should override those. */
321 /* MYCPPFLAGS only referenced in etc/DEBUG. */
322 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}
323 ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
324
325 .SUFFIXES: .m
326 .c.o:
327 @$(MKDEPDIR)
328 $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
329 .m.o:
330 @$(MKDEPDIR)
331 $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $<
332
333
334 /* lastfile must follow all files whose initialized data areas should
335 be dumped as pure by dump-emacs. */
336 obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
337 charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \
338 cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
339 emacs.o keyboard.o macros.o keymap.o sysdep.o \
340 buffer.o filelock.o insdel.o marker.o \
341 minibuf.o fileio.o dired.o filemode.o \
342 cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
343 alloc.o data.o doc.o editfns.o callint.o \
344 eval.o floatfns.o fns.o font.o print.o lread.o \
345 syntax.o $(UNEXEC_OBJ) bytecode.o \
346 process.o callproc.o \
347 region-cache.o sound.o atimer.o \
348 doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
349 $(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ)
350
351 /* Object files used on some machine or other.
352 These go in the DOC file on all machines in case they are needed. */
353 SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
354 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
355 fontset.o dbusbind.o \
356 nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
357 w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
358 w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_OBJ)
359
360 /* gmalloc.o if !SYSTEM_MALLOC && !DOUG_LEA_MALLOC, else empty. */
361 GMALLOC_OBJ=@GMALLOC_OBJ@
362
363 /* vm-limit.o if !SYSTEM_MALLOC, else empty. */
364 VMLIMIT_OBJ=@VMLIMIT_OBJ@
365
366 /* ralloc.o if !SYSTEM_MALLOC && REL_ALLOC, else empty. */
367 RALLOC_OBJ=@RALLOC_OBJ@
368
369 /* Empty on Cygwin, lastfile.o elsewhere. */
370 PRE_ALLOC_OBJ=@PRE_ALLOC_OBJ@
371 /* lastfile.o on Cygwin, empty elsewhere. */
372 POST_ALLOC_OBJ=@POST_ALLOC_OBJ@
373
374 /* List of object files that make-docfile should not be told about. */
375 otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \
376 $(POST_ALLOC_OBJ) $(VMLIMIT_OBJ) $(WIDGET_OBJ) $(LIBOBJS)
377
378 /* This is the platform-specific list of Lisp files loaded into the
379 dumped Emacs. It is arranged like this because it is easier to generate
380 it semi-mechanically from loadup.el this way.
381
382 Note that this list should not include lisp files which might not
383 be present, like site-load.el and site-init.el; this makefile
384 expects them all to be either present or buildable.
385
386 Files which are loaded unconditionally (i.e., on all platforms) should
387 also be in shortlisp. Files which are loaded conditionally (i.e., only
388 on some platforms) should instead be in SOME_MACHINE_LISP. */
389
390 /* Place loaddefs.el first, so it gets generated first, since it is on
391 the critical path (relevant in parallel compilations). */
392
393 lisp= \
394 ${lispsource}loaddefs.el \
395 ${lispsource}abbrev.elc \
396 ${lispsource}buff-menu.elc \
397 ${lispsource}button.elc \
398 ${lispsource}emacs-lisp/byte-run.elc \
399 ${lispsource}composite.elc \
400 ${lispsource}cus-face.elc \
401 ${lispsource}cus-start.elc \
402 ${lispsource}custom.elc \
403 ${lispsource}emacs-lisp/backquote.elc \
404 ${lispsource}emacs-lisp/lisp-mode.elc \
405 ${lispsource}emacs-lisp/lisp.elc \
406 ${lispsource}env.elc \
407 ${lispsource}faces.elc \
408 ${lispsource}files.elc \
409 ${lispsource}format.elc \
410 ${lispsource}facemenu.elc \
411 ${MOUSE_SUPPORT} \
412 ${lispsource}emacs-lisp/float-sup.elc \
413 ${lispsource}frame.elc \
414 ${lispsource}help.elc \
415 ${lispsource}indent.elc \
416 ${lispsource}isearch.elc \
417 ${lispsource}rfn-eshadow.elc \
418 ${lispsource}loadup.el \
419 ${lispsource}bindings.elc \
420 ${lispsource}emacs-lisp/map-ynp.elc \
421 ${lispsource}menu-bar.elc \
422 ${lispsource}international/mule.elc \
423 ${lispsource}international/mule-conf.elc \
424 ${lispsource}international/mule-cmds.elc \
425 ${lispsource}international/characters.elc \
426 ${lispsource}international/charprop.el \
427 ${lispsource}case-table.elc \
428 ${lispsource}language/chinese.elc \
429 ${lispsource}language/cyrillic.elc \
430 ${lispsource}language/indian.elc \
431 ${lispsource}language/sinhala.el \
432 ${lispsource}language/english.el \
433 ${lispsource}language/ethiopic.elc \
434 ${lispsource}language/european.elc \
435 ${lispsource}language/czech.el \
436 ${lispsource}language/slovak.el \
437 ${lispsource}language/romanian.el \
438 ${lispsource}language/greek.el \
439 ${lispsource}language/hebrew.el \
440 ${lispsource}language/japanese.el \
441 ${lispsource}language/korean.el \
442 ${lispsource}language/lao.el \
443 ${lispsource}language/cham.el \
444 ${lispsource}language/tai-viet.el \
445 ${lispsource}language/thai.el \
446 ${lispsource}language/tibetan.elc \
447 ${lispsource}language/vietnamese.elc \
448 ${lispsource}language/misc-lang.el \
449 ${lispsource}language/utf-8-lang.el \
450 ${lispsource}language/georgian.el \
451 ${lispsource}language/khmer.el \
452 ${lispsource}language/burmese.el \
453 ${lispsource}paths.el \
454 ${lispsource}register.elc \
455 ${lispsource}replace.elc \
456 ${lispsource}simple.elc \
457 ${lispsource}minibuffer.elc \
458 ${lispsource}startup.elc \
459 ${lispsource}subr.elc \
460 ${lispsource}term/tty-colors.elc \
461 ${lispsource}font-core.elc \
462 ${lispsource}emacs-lisp/syntax.elc \
463 ${lispsource}font-lock.elc \
464 ${lispsource}jit-lock.elc \
465 ${lispsource}textmodes/fill.elc \
466 ${lispsource}textmodes/page.elc \
467 ${lispsource}textmodes/paragraphs.elc \
468 ${lispsource}textmodes/text-mode.elc \
469 ${lispsource}emacs-lisp/timer.elc \
470 ${lispsource}jka-cmpr-hook.elc \
471 ${lispsource}vc-hooks.elc \
472 ${lispsource}ediff-hook.elc \
473 ${lispsource}epa-hook.elc \
474 ${TOOLTIP_SUPPORT} \
475 ${MSDOS_SUPPORT} \
476 ${WINDOW_SUPPORT} \
477 ${NS_SUPPORT} \
478 ${lispsource}widget.elc \
479 ${lispsource}window.elc \
480 ${lispsource}version.el
481
482 /* List of relative names for those files from $lisp that are loaded
483 unconditionally (i.e. on all platforms). Files from $lisp that
484 are only loaded on some platforms should instead be placed in
485 SOME_MACHINE_LISP. The only reason this variable exists is to prevent
486 the make-docfile command-line getting too long for some systems. */
487 shortlisp= \
488 ../lisp/loaddefs.el \
489 ../lisp/abbrev.elc \
490 ../lisp/buff-menu.elc \
491 ../lisp/button.elc \
492 ../lisp/emacs-lisp/byte-run.elc \
493 ../lisp/composite.elc \
494 ../lisp/cus-face.elc \
495 ../lisp/cus-start.elc \
496 ../lisp/custom.elc \
497 ../lisp/emacs-lisp/backquote.elc \
498 ../lisp/emacs-lisp/lisp-mode.elc \
499 ../lisp/emacs-lisp/lisp.elc \
500 ../lisp/facemenu.elc \
501 ../lisp/faces.elc \
502 ../lisp/files.elc \
503 ../lisp/emacs-lisp/float-sup.elc \
504 ../lisp/format.elc \
505 ../lisp/frame.elc \
506 ../lisp/help.elc \
507 ../lisp/indent.elc \
508 ../lisp/isearch.elc \
509 ../lisp/rfn-eshadow.elc \
510 ../lisp/loadup.el \
511 ../lisp/bindings.elc \
512 ../lisp/emacs-lisp/map-ynp.elc \
513 ../lisp/env.elc \
514 ../lisp/international/mule.elc \
515 ../lisp/international/mule-conf.elc \
516 ../lisp/international/mule-cmds.elc \
517 ../lisp/international/characters.elc \
518 ../lisp/case-table.elc \
519 ../lisp/language/chinese.elc \
520 ../lisp/language/cyrillic.elc \
521 ../lisp/language/indian.elc \
522 ../lisp/language/sinhala.el \
523 ../lisp/language/english.el \
524 ../lisp/language/ethiopic.elc \
525 ../lisp/language/european.elc \
526 ../lisp/language/czech.el \
527 ../lisp/language/slovak.el \
528 ../lisp/language/romanian.el \
529 ../lisp/language/greek.el \
530 ../lisp/language/hebrew.el \
531 ../lisp/language/japanese.el \
532 ../lisp/language/korean.el \
533 ../lisp/language/lao.el \
534 ../lisp/language/cham.el \
535 ../lisp/language/tai-viet.el \
536 ../lisp/language/thai.el \
537 ../lisp/language/tibetan.elc \
538 ../lisp/language/vietnamese.elc \
539 ../lisp/language/misc-lang.el \
540 ../lisp/language/utf-8-lang.el \
541 ../lisp/language/georgian.el \
542 ../lisp/language/khmer.el \
543 ../lisp/language/burmese.el \
544 ../lisp/menu-bar.elc \
545 ../lisp/paths.el \
546 ../lisp/register.elc \
547 ../lisp/replace.elc \
548 ../lisp/simple.elc \
549 ../lisp/minibuffer.elc \
550 ../lisp/startup.elc \
551 ../lisp/subr.elc \
552 ../lisp/term/tty-colors.elc \
553 ../lisp/font-core.elc \
554 ../lisp/emacs-lisp/syntax.elc \
555 ../lisp/font-lock.elc \
556 ../lisp/jit-lock.elc \
557 ../lisp/textmodes/fill.elc \
558 ../lisp/textmodes/page.elc \
559 ../lisp/textmodes/paragraphs.elc \
560 ../lisp/textmodes/text-mode.elc \
561 ../lisp/emacs-lisp/timer.elc \
562 ../lisp/vc-hooks.elc \
563 ../lisp/jka-cmpr-hook.elc \
564 ../lisp/ediff-hook.elc \
565 ../lisp/epa-hook.elc \
566 ../lisp/widget.elc \
567 ../lisp/window.elc \
568 ../lisp/version.el
569
570 /* Like $shortlisp, but includes only those files from $lisp that are loaded
571 conditionally (i.e., only on some platforms). */
572 SOME_MACHINE_LISP = ../lisp/mouse.elc \
573 ../lisp/select.elc ../lisp/scroll-bar.elc \
574 ../lisp/ls-lisp.elc ../lisp/dos-fns.elc \
575 ../lisp/w32-fns.elc ../lisp/dos-w32.elc \
576 ../lisp/disp-table.elc ../lisp/dos-vars.elc \
577 ../lisp/tooltip.elc ../lisp/image.elc \
578 ../lisp/fringe.elc ../lisp/dnd.elc \
579 ../lisp/mwheel.elc ../lisp/tool-bar.elc \
580 ../lisp/x-dnd.elc ../lisp/dynamic-setting.elc \
581 ../lisp/international/ccl.elc \
582 ../lisp/international/fontset.elc \
583 ../lisp/mouse.elc \
584 ../lisp/term/common-win.elc \
585 ../lisp/term/x-win.elc \
586 ../lisp/term/pc-win.elc ../lisp/term/internal.elc \
587 ../lisp/term/ns-win.elc ../lisp/term/w32-win.elc \
588 ../lisp/emacs-lisp/easymenu.elc
589
590 /* Construct full set of libraries to be linked.
591 Note that SunOS needs -lm to come before -lc; otherwise, you get
592 duplicated symbols. If the standard libraries were compiled
593 with GCC, we might need LIB_GCC again after them. */
594
595 LIBES = $(LOADLIBES) $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \
596 $(RSVG_LIBS) $(DBUS_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \
597 $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \
598 $(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \
599 $(LIB_GCC) $(LIB_MATH) $(LIB_STANDARD) $(LIB_GCC)
600
601 all: emacs${EXEEXT} $(OTHER_FILES)
602
603 /* Does anyone ever pay attention to the load-path-shadows output here? */
604 /* FIXME Add EXEEXT for load-path-shadows? */
605 /* The dumped Emacs is as functional and more efficient than
606 bootstrap-emacs, so we replace the latter with the former. */
607 emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
608 if test "${CANNOT_DUMP}" = "yes"; then \
609 ln -f temacs${EXEEXT} emacs${EXEEXT}; \
610 EMACSLOADPATH=${lispsource} ./emacs -q -batch \
611 -f list-load-path-shadows || true; \
612 else \
613 LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump || exit 1; \
614 ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}; \
615 ./emacs -q -batch -f list-load-path-shadows || true; \
616 fi
617
618 /* We run make-docfile twice because the command line may get too long
619 on some systems. */
620 /* ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may
621 or may not be included in ${obj}, but they are always included in
622 ${SOME_MACHINE_OBJECTS}. Since a file is processed when it is mentioned
623 for the first time, this prevents any variation between configurations
624 in the contents of the DOC file.
625 Likewise for ${SOME_MACHINE_LISP}. */
626 /* Most of this Makefile refers to Lisp files via ${lispsource}, so
627 we also use ${lisp} rather than ${shortlisp} for the dependency since
628 the Makefile uses string equality to decide when we talk about identical
629 files. Apparently we pass ${shortlisp} rather than ${lisp} to make-docfile
630 only in order to reduce the command line length. --Stef */
631 ${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
632 -rm -f ${etc}DOC
633 ${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
634 ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
635
636 ${libsrc}make-docfile${EXEEXT}:
637 cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile${EXEEXT}
638
639 buildobj.h: Makefile
640 echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h
641
642 #define YMF_PASS_LDFLAGS(flags) @YMF_PASS_LDFLAGS@
643
644 temacs${EXEEXT}: $(START_FILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT}
645 $(LD) YMF_PASS_LDFLAGS ( ${TEMACS_LDFLAGS} \
646 ${NS_IMPL_GNUSTEP_TEMACS_LDFLAGS} ) \
647 ${TEMACS_LDFLAGS2} \
648 -o temacs ${START_FILES} ${obj} ${otherobj} ${LIBES}
649
650 prefix-args${EXEEXT}: prefix-args.o $(config_h)
651 $(CC) $(LDFLAGS) prefix-args.o -o prefix-args
652
653
654 /* Only (possibly) used if HAVE_X11 && !USE_GTK, but no harm in always
655 defining. */
656 really-lwlib:
657 cd ${lwlibdir}; ${MAKE} ${MFLAGS} \
658 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
659 @true /* make -t should not create really-lwlib. */
660 .PHONY: really-lwlib
661
662 really-oldXMenu:
663 cd ${oldXMenudir}; ${MAKE} ${MFLAGS} \
664 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
665 @true /* make -t should not create really-oldXMenu. */
666 .PHONY: really-oldXMenu
667
668 /* We don''t really need this when OLDXMENU_DEPS is empty, but as
669 things stand we need something to satisfy the temacs dependency. */
670 stamp-oldxmenu: ${OLDXMENU_DEPS}
671 touch stamp-oldxmenu
672
673 /* HAVE_X11 implies HAVE_X_WINDOWS and HAVE_MENUS. */
674 #if defined (HAVE_X11) && ! defined (USE_GTK)
675 /* Supply an ordering for parallel make. */
676 ../src/$(OLDXMENU): ${OLDXMENU}
677
678 $(OLDXMENU): $(OLDXMENU_TARGET)
679 #endif /* HAVE_X11 && !USE_GTK */
680
681 ../config.status:: epaths.in
682 @echo "The file epaths.h needs to be set up from epaths.in."
683 @echo "Please run the `configure' script again."
684 exit 1
685
686 ../config.status:: config.in
687 @echo "The file config.h needs to be set up from config.in."
688 @echo "Please run the `configure' script again."
689 exit 1
690
691 ecrt0.o: ecrt0.c $(config_h)
692 @$(MKDEPDIR)
693 $(CC) -c $(ALL_CFLAGS) ${srcdir}/ecrt0.c
694 doc.o: buildobj.h
695
696
697 /* System-specific programs to be made.
698 OTHER_FILES select which of these should be compiled. */
699
700 #ifdef HAVE_NS
701 ${ns_appdir}: ${ns_appsrc}
702 rm -fr ${ns_appdir}
703 mkdir -p ${ns_appdir}
704 ( cd ${ns_appsrc} ; tar cfh - . ) | ( cd ${ns_appdir} ; umask 022; tar xf - )
705 #endif /* HAVE_NS */
706
707 /* These are only used if HAVE_NS, but no harm in always defining them. */
708 ${ns_appbindir}Emacs: emacs${EXEEXT}
709 mkdir -p ${ns_appbindir}
710 cp -f emacs${EXEEXT} ${ns_appbindir}Emacs
711
712 ns-app: ${ns_appdir} ${ns_appbindir}Emacs
713
714 mostlyclean:
715 rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a
716 rm -f ../etc/DOC
717 rm -f bootstrap-emacs${EXEEXT} emacs-${version}${EXEEXT}
718 rm -f buildobj.h
719 clean: mostlyclean
720 rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT}
721 -rm -rf ${DEPDIR}
722 test "X${ns_appdir}" = "X" || rm -rf ${ns_appdir}
723
724 /* bootstrap-clean is used to clean up just before a bootstrap.
725 It should remove all files generated during a compilation/bootstrap,
726 but not things like config.status or TAGS. */
727 bootstrap-clean: clean
728 rm -f epaths.h config.h Makefile.c config.stamp stamp-oldxmenu ../etc/DOC-*
729 if test -f ./.gdbinit; then \
730 mv ./.gdbinit ./.gdbinit.save; \
731 if test -f "${srcdir}/.gdbinit"; then rm -f ./.gdbinit.save; \
732 else mv ./.gdbinit.save ./.gdbinit; fi; \
733 fi
734 /**/# This is used in making a distribution.
735 /**/# Do not use it on development directories!
736 distclean: bootstrap-clean
737 rm -f Makefile
738 maintainer-clean: distclean
739 @echo "This command is intended for maintainers to use;"
740 @echo "it deletes files that may require special tools to rebuild."
741 rm -f TAGS
742 versionclean:
743 -rm -f emacs${EXEEXT} emacs-*.*.*${EXEEXT} ../etc/DOC*
744 extraclean: distclean
745 -rm -f *~ \#* m/?*~ s/?*~
746
747 /* Arrange to make a tags table TAGS-LISP for ../lisp,
748 plus TAGS for the C files, which includes ../lisp/TAGS by reference. */
749
750 ctagsfiles1 = [xyzXYZ]*.[hcm]
751 ctagsfiles2 = [a-wA-W]*.[hcm]
752
753 TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
754 ../lib-src/etags --include=TAGS-LISP --include=${lwlibdir}/TAGS \
755 --regex='/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \
756 $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
757 frc:
758 TAGS-LISP: frc
759 $(MAKE) -f ${lispdir}Makefile TAGS-LISP ETAGS=../lib-src/etags
760
761 $(lwlibdir)TAGS:
762 (cd $(lwlibdir); $(MAKE) -f $(lwlibdir)Makefile tags ETAGS=../lib-src/etags)
763
764 tags: TAGS TAGS-LISP $(lwlibdir)TAGS
765 .PHONY: tags
766
767
768 /* Bootstrapping. */
769 /* Bootstrapping right is difficult because of the circular dependencies.
770 Furthermore, we have to deal with the fact that many compilation targets
771 such as loaddefs.el or *.elc can typically be produced by any old
772 Emacs executable, so we would like to avoid rebuilding them whenever
773 we build a new Emacs executable.
774 To solve the circularity, we use 2 different Emacs executables,
775 "emacs" is the main target and "bootstrap-emacs" is the one used
776 to build the *.elc and loaddefs.el files.
777 To solve the freshness issue, we used to use a third file "witness-emacs"
778 which was used to witness the fact that there is a bootstrap-emacs
779 executable, and then have dependencies on witness-emacs rather than
780 bootstrap-emacs, but that lead to problems in parallel builds (because
781 witness-emacs needed to be free from dependencies (to avoid rebuilding
782 it), so it was compiled in parallel, leading typically to having 2
783 processes dumping bootstrap-emacs at the same time).
784 So instead, we replace the witness-emacs dependencies by conditional
785 bootstrap-dependencies (via ${BOOTSTRAPEMACS}). Of course, since we do
786 not want to rely on GNU Make features, we have to rely on an external
787 script to do the conditional part of the dependency
788 (i.e. see the ${SUBDIR} rule ../Makefile.in). */
789
790 .SUFFIXES: .elc .el
791
792 /* These suffix rules do not allow additional dependencies, sadly, so
793 instead of adding a $(BOOTSTRAPEMACS) dependency here, we add it
794 separately below.
795 With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)" */
796 .el.elc:
797 @cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \
798 THEFILE=$< EMACS=${bootstrap_exe}
799
800 /* Since the .el.elc rule cannot specify an extra dependency, we do it here. */
801 ${lisp} ${SOME_MACHINE_LISP}: $(BOOTSTRAPEMACS)
802
803 /* VCSWITNESS points to the file that holds info about the current checkout.
804 We use it as a heuristic to decide when to rebuild loaddefs.el. */
805 ${lispsource}loaddefs.el: $(BOOTSTRAPEMACS) $(VCSWITNESS)
806 cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=${bootstrap_exe}
807
808 /* Dump an Emacs executable named bootstrap-emacs containing the
809 files from loadup.el in source form. */
810
811 bootstrap-emacs${EXEEXT}: temacs${EXEEXT}
812 cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs
813 if test "${CANNOT_DUMP}" = "yes"; then \
814 ln -f temacs${EXEEXT} bootstrap-emacs${EXEEXT}; \
815 else \
816 $(RUN_TEMACS) --batch --load loadup bootstrap || exit 1; \
817 mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}; \
818 fi
819 @: Compile some files earlier to speed up further compilation.
820 cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe}
821
822 ## Insert either autodeps.mk (if AUTO_DEPEND), else deps.mk.
823 @deps_frag@