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