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