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