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