Remove all uses of C_DEBUG_SWITCH and LIBS_DEBUG.
[emacs.git] / src / Makefile.in
blob1730158f7321bc16cc1ba1f2bda2226eef720a5d
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.
6 # This file is part of GNU Emacs.
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.
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.
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/>.
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.
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.
34 # Here are the things that we expect ../configure to edit.
35 # We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
36 srcdir = @srcdir@
37 abs_builddir = @abs_builddir@
38 VPATH = $(srcdir)
39 CC = @CC@
40 CPP = @CPP@
41 CFLAGS = @CFLAGS@
42 CPPFLAGS = @CPPFLAGS@
43 LDFLAGS = @LDFLAGS@
44 LN_S = @LN_S@
45 EXEEXT = @EXEEXT@
46 version = @version@
47 # Substitute an assignment for the MAKE variable, because
48 # BSD doesn't have it as a default.
49 @SET_MAKE@
50 # Don't use LIBS. configure puts stuff in it that either shouldn't be
51 # linked with Emacs or is duplicated by the cpp stuff below.
52 # LIBS = @LIBS@
53 LIBOBJS = @LIBOBJS@
55 lispsource = ${srcdir}/../lisp/
56 libsrc = ../lib-src/
57 etc = ../etc/
58 oldXMenudir = ../oldXMenu/
59 lwlibdir = ../lwlib/
60 lispdir = ../lisp/
62 # Configuration files for .o files to depend on.
63 M_FILE = ${srcdir}/@machfile@
64 S_FILE = ${srcdir}/@opsysfile@
65 config_h = config.h $(M_FILE) $(S_FILE)
67 bootstrap_exe = ${abs_builddir}/bootstrap-emacs${EXEEXT}
69 OTHER_FILES = @OTHER_FILES@
71 # ========================== start of cpp stuff =======================
72 /* From here on, comments must be done in C syntax. */
74 C_SWITCH_SYSTEM=
76 /* just to be sure the sh is used */
77 SHELL=/bin/sh
79 #define THIS_IS_MAKEFILE
80 #define NOT_C_CODE
81 #include "config.h"
83 #ifdef AUTO_DEPEND
84 DEPFLAGS = -MMD -MF deps/$*.d
85 #endif
87 /* Do not let the file name mktime.c get messed up. */
88 #ifdef mktime
89 #undef mktime
90 #endif
92 /* Use HAVE_X11 as an alias for X11 in this file
93 to avoid problems with X11 as a subdirectory name
94 in -I and other such options which pass through this file. */
96 #ifdef X11
97 #define HAVE_X11
98 #undef X11
99 #endif
101 /* On some machines #define register is done in config;
102 do not let it interfere with this file. */
103 #undef register
105 /* GNU libc requires ORDINARY_LINK so that its own crt0 is used.
106 GNU/Linux is an exception because it uses a funny variant of GNU libc. */
107 #ifdef __GNU_LIBRARY__
108 #ifndef GNU_LINUX
109 #define ORDINARY_LINK
110 #endif
111 #endif
113 /* Some machines do not find the standard C libraries in the usual place. */
114 #ifndef ORDINARY_LINK
115 #ifndef LIB_STANDARD
116 #define LIB_STANDARD -lc
117 #endif
118 #else
119 #ifndef LIB_STANDARD
120 #define LIB_STANDARD
121 #endif
122 #endif
124 /* Under GNUstep, putting libc on the link line causes problems. */
125 #ifdef NS_IMPL_GNUSTEP
126 #undef LIB_STANDARD
127 #define LIB_STANDARD
128 #endif
130 /* Some s/SYSTEM.h files define this to request special libraries. */
131 #ifndef LIBS_SYSTEM
132 #define LIBS_SYSTEM
133 #endif
135 /* Some m/MACHINE.h files define this to request special libraries. */
136 #ifndef LIBS_MACHINE
137 #define LIBS_MACHINE
138 #endif
140 #ifndef LIB_MATH
141 # define LIB_MATH -lm
142 #endif /* LIB_MATH */
144 /* Some s/SYSTEM.h files define this to request special switches in ld. */
145 #ifndef LD_SWITCH_SYSTEM
146 #if !defined (__GNUC__) && ((defined (BSD_SYSTEM) && !defined (COFF)))
147 #define LD_SWITCH_SYSTEM -X
148 #else /* (defined (BSD_SYSTEM) && !defined (COFF)) */
149 #define LD_SWITCH_SYSTEM
150 #endif /* (defined (BSD_SYSTEM) && !defined (COFF)) */
151 #endif /* LD_SWITCH_SYSTEM */
153 /* This holds special options for linking temacs
154 that should be used for linking anything else. */
155 #ifndef LD_SWITCH_SYSTEM_TEMACS
156 #define LD_SWITCH_SYSTEM_TEMACS
157 #endif
159 /* Some s/SYSTEM.h files define this to request special switches
160 for compiling temacs. */
161 #ifndef C_SWITCH_SYSTEM_TEMACS
162 #define C_SWITCH_SYSTEM_TEMACS
163 #endif
165 /* Some m/MACHINE.h files define this to request special switches in ld. */
166 #ifndef LD_SWITCH_MACHINE
167 #define LD_SWITCH_MACHINE
168 #endif
170 /* This holds special options for linking temacs
171 that should be used for linking anything else. */
172 #ifndef LD_SWITCH_MACHINE_TEMACS
173 #define LD_SWITCH_MACHINE_TEMACS
174 #endif
176 /* Some m/MACHINE.h files define this to request special switches in cc. */
177 #ifndef C_SWITCH_MACHINE
178 #define C_SWITCH_MACHINE
179 #endif
181 /* Some s/SYSTEM.h files define this to request special switches in cc. */
182 #ifndef C_SWITCH_SYSTEM
183 #define C_SWITCH_SYSTEM
184 #endif
186 /* These macros are for switches specifically related to X Windows. */
187 #ifndef C_SWITCH_X_MACHINE
188 #define C_SWITCH_X_MACHINE
189 #endif
191 #ifndef C_SWITCH_X_SYSTEM
192 #define C_SWITCH_X_SYSTEM
193 #endif
195 #ifndef C_SWITCH_X_SITE
196 #define C_SWITCH_X_SITE
197 #endif
199 #ifndef LD_SWITCH_X_SITE
200 #define LD_SWITCH_X_SITE
201 #endif
203 #ifndef LD_SWITCH_X_DEFAULT
204 #define LD_SWITCH_X_DEFAULT
205 #endif
207 #ifndef ORDINARY_LINK
209 #ifndef CRT0_COMPILE
210 #define CRT0_COMPILE $(CC) -c $(ALL_CFLAGS)
211 #endif
213 #ifndef START_FILES
214 #ifdef NO_REMAP
215 #define START_FILES pre-crt0.o /lib/crt0.o
216 #else /* ! defined (NO_REMAP) */
217 #define START_FILES ecrt0.o
218 #endif /* ! defined (NO_REMAP) */
219 #endif /* START_FILES */
220 STARTFILES = START_FILES
222 #else /* ORDINARY_LINK */
224 /* config.h might want to force START_FILES anyway */
225 #ifdef START_FILES
226 STARTFILES = START_FILES
227 #endif /* START_FILES */
229 #endif /* not ORDINARY_LINK */
232 #ifdef NS_IMPL_GNUSTEP
233 /* Pull in stuff from GNUstep-make. */
234 FOUNDATION_LIB=gnu
235 GUI_LIB=gnu
236 include @GNUSTEP_MAKEFILES@/Additional/base.make
237 include @GNUSTEP_MAKEFILES@/Additional/gui.make
238 shared=no
239 #endif
241 #ifdef HAVE_DBUS
242 DBUS_CFLAGS = @DBUS_CFLAGS@
243 DBUS_LIBS = @DBUS_LIBS@
244 DBUS_OBJ = dbusbind.o
245 #endif
247 #ifdef HAVE_GCONF
248 GCONF_CFLAGS = @GCONF_CFLAGS@
249 GCONF_LIBS = @GCONF_LIBS@
250 #endif
252 /* DO NOT use -R. There is a special hack described in lastfile.c
253 which is used instead. Some initialized data areas are modified
254 at initial startup, then labeled as part of the text area when
255 Emacs is dumped for the first time, and never changed again. */
257 /* -Demacs is needed to make some files produce the correct version
258 for use in Emacs.
260 -DHAVE_CONFIG_H is needed for some other files to take advantage of
261 the information in ``config.h''. */
263 /* C_SWITCH_X_SITE must come before C_SWITCH_X_MACHINE and C_SWITCH_X_SYSTEM
264 since it may have -I options that should override those two. */
265 ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I${srcdir} C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_X_SITE C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM C_SWITCH_SYSTEM_TEMACS ${CFLAGS_SOUND} ${RSVG_CFLAGS} ${DBUS_CFLAGS} ${GCONF_CFLAGS} ${CFLAGS} @FREETYPE_CFLAGS@ @FONTCONFIG_CFLAGS@ @LIBOTF_CFLAGS@ @M17N_FLT_CFLAGS@ ${DEPFLAGS}
266 ALL_OBJC_CFLAGS=$(ALL_CFLAGS) @GNU_OBJC_CFLAGS@
268 .SUFFIXES: .m
269 .c.o:
270 #ifdef AUTO_DEPEND
271 @-test -d deps || mkdir deps
272 #endif
273 $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
274 .m.o:
275 #ifdef AUTO_DEPEND
276 @-test -d deps || mkdir deps
277 #endif
278 $(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $<
280 #ifndef LIBX11_SYSTEM
281 #define LIBX11_SYSTEM
282 #endif
284 #ifndef LIB_X11_LIB
285 #define LIB_X11_LIB -lX11
286 #endif
288 #ifdef HAVE_X_WINDOWS
289 XMENU_OBJ = xmenu.o
290 XOBJ= xterm.o xfns.o xselect.o xrdb.o fontset.o xsmfns.o fringe.o image.o \
291 xsettings.o xgselect.o
293 #ifdef HAVE_MENUS
295 #ifdef USE_GTK
296 GTK_OBJ= gtkutil.o
297 #endif
299 /* The X Menu stuff is present in the X10 distribution, but missing
300 from X11. If we have X10, just use the installed library;
301 otherwise, use our own copy. */
302 #ifdef HAVE_X11
303 #ifdef USE_X_TOOLKIT
304 OLDXMENU=${lwlibdir}liblw.a
305 LIBXMENU= $(OLDXMENU)
306 #else /* not USE_X_TOOLKIT */
307 OLDXMENU= ${oldXMenudir}libXMenu11.a
308 LIBXMENU= $(OLDXMENU)
309 #endif /* not USE_X_TOOLKIT */
310 #else /* not HAVE_X11 */
311 LIBXMENU= -lXMenu
312 #endif /* not HAVE_X11 */
314 #else /* not HAVE_MENUS */
316 /* Otherwise, do not worry about the menu library at all. */
317 LIBXMENU=
318 #endif /* not HAVE_MENUS */
320 #ifdef USE_X_TOOLKIT
321 # define @X_TOOLKIT_TYPE@
322 # if HAVE_XAW3D
323 LUCID_LIBW= -lXaw3d
324 # else
325 LUCID_LIBW= -lXaw
326 # endif
327 # if defined (HAVE_MOTIF_2_1) && defined (HAVE_LIBXP)
328 # define LIB_MOTIF_EXTRA -lXp
329 # else
330 # define LIB_MOTIF_EXTRA
331 # endif
332 # ifdef LIB_MOTIF
333 MOTIF_LIBW= LIB_MOTIF LIB_MOTIF_EXTRA
334 # else
335 MOTIF_LIBW= -lXm LIB_MOTIF_EXTRA
336 # endif
337 LIBW=$(@X_TOOLKIT_TYPE@_LIBW)
339 #ifdef HAVE_X11XTR6
340 #ifdef NEED_LIBW
341 LIBXTR6 = -lSM -lICE -lw
342 #else
343 LIBXTR6 = -lSM -lICE
344 #endif
345 #endif
347 #ifndef LIBXMU
348 #define LIBXMU -lXmu
349 #endif
351 LIBXT= $(LIBW) LIBXMU -lXt $(LIBXTR6) -lXext
353 #else /* not USE_X_TOOLKIT */
355 #ifdef USE_GTK
356 LIBW=@GTK_LIBS@
357 OLDXMENU=
358 LIBXMENU=
359 #endif /* USE_GTK */
361 #ifdef HAVE_X_SM
362 LIBXT=$(LIBW) -lSM -lICE
363 #else
364 LIBXT=$(LIBW)
365 #endif
366 #endif /* not USE_X_TOOLKIT */
368 #ifdef HAVE_X11
369 /* LD_SWITCH_X_DEFAULT comes after everything else that specifies
370 options for where to find X libraries, but before those libraries. */
371 X11_LDFLAGS = LD_SWITCH_X_SITE LD_SWITCH_X_DEFAULT
372 LIBX= $(LIBXMENU) $(X11_LDFLAGS) $(LIBXT) @LIBTIFF@ @LIBJPEG@ @LIBPNG@ @LIBGIF@ @LIBXPM@ LIB_X11_LIB LIBX11_SYSTEM @XFT_LIBS@
373 #else /* not HAVE_X11 */
374 LIBX= $(LIBXMENU) LD_SWITCH_X_SITE
375 #endif /* not HAVE_X11 */
376 #endif /* not HAVE_X_WINDOWS */
378 LIBSOUND= @LIBSOUND@
379 CFLAGS_SOUND= @CFLAGS_SOUND@
381 RSVG_LIBS= @RSVG_LIBS@
382 RSVG_CFLAGS= @RSVG_CFLAGS@
384 #ifndef ORDINARY_LINK
385 /* Fix linking if compiled with GCC. */
386 #ifdef __GNUC__
388 #ifdef LINKER
389 #define LINKER_WAS_SPECIFIED
390 #endif
392 /* Versions of GCC >= 2.0 put their library, libgcc.a, in obscure
393 places that are difficult to figure out at make time. Fortunately,
394 these same versions allow you to pass arbitrary flags on to the
395 linker, so there is no reason not to use it as a linker.
397 Well, it is not quite perfect. The "-nostdlib" keeps GCC from
398 searching for libraries in its internal directories, so we have to
399 ask GCC explicitly where to find libgcc.a. */
401 #ifndef LINKER
402 #define LINKER $(CC) -nostdlib
403 #endif
405 #ifndef LIB_GCC
406 /* Ask GCC where to find libgcc.a. */
407 #define LIB_GCC `$(CC) -print-libgcc-file-name`
408 #endif /* not LIB_GCC */
410 GNULIB_VAR = LIB_GCC
412 #ifndef LINKER_WAS_SPECIFIED
413 /* GCC passes any argument prefixed with -Xlinker directly to the
414 linker. See prefix-args.c for an explanation of why we do not do
415 this with the shell''s ``for'' construct.
416 Note that some people do not have '.' in their paths, so we must
417 use ./prefix-args. */
418 #define YMF_PASS_LDFLAGS(flags) `./prefix-args -Xlinker flags`
419 #else
420 #define YMF_PASS_LDFLAGS(flags) flags
421 #endif
423 #else /* not __GNUC__ */
424 GNULIB_VAR =
426 #endif /* not __GNUC__ */
427 #endif /* not ORDINARY_LINK */
429 #ifdef ORDINARY_LINK
430 LD = $(CC)
431 #else
432 #ifdef LINKER
433 LD=LINKER
434 #else /* not LINKER */
435 LD=ld
436 #endif /* not LINKER */
437 #endif /* not ORDINARY_LINK */
439 /* Flags to pass to LD only for temacs. */
440 /* Do not split this line with a backslash. That can cause trouble with
441 some cpps. */
442 TEMACS_LDFLAGS = LD_SWITCH_SYSTEM LD_SWITCH_SYSTEM_TEMACS LD_SWITCH_MACHINE LD_SWITCH_MACHINE_TEMACS
444 /* A macro which other sections of Makefile can redefine to munge the
445 flags before they are passed to LD. This is helpful if you have
446 redefined LD to something odd, like "gcc".
447 (The YMF prefix is a holdover from the old name "ymakefile".)
449 #ifndef YMF_PASS_LDFLAGS
450 #define YMF_PASS_LDFLAGS(flags) flags
451 #endif
453 /* Allow config.h to specify a replacement file for unexec.c. */
454 #ifndef UNEXEC
455 #define UNEXEC unexec.o
456 #endif
458 INTERVALS_H = dispextern.h intervals.h composite.h
460 GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
462 #ifdef MSDOS
463 #ifdef HAVE_X_WINDOWS
464 MSDOS_OBJ = dosfns.o msdos.o xmenu.o
465 #else
466 MSDOS_OBJ = dosfns.o msdos.o w16select.o xmenu.o termcap.o
467 #endif
468 #endif
470 #ifdef CYGWIN
471 CYGWIN_OBJ = sheap.o
472 #endif
474 #ifdef HAVE_NS
475 ns_appdir=@ns_appdir@/
476 ns_appbindir=@ns_appbindir@/
477 ns_appresdir=@ns_appresdir@/
478 ns_appsrc=@ns_appsrc@
479 /* Object files for NeXTstep */
480 NS_OBJ= nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
481 fontset.o fringe.o image.o
482 #endif /* HAVE_NS */
484 #ifdef HAVE_WINDOW_SYSTEM
485 #ifdef HAVE_X_WINDOWS
486 #if defined (HAVE_XFT)
487 FONT_DRIVERS = xfont.o ftfont.o xftfont.o ftxfont.o
488 #elif defined (HAVE_FREETYPE)
489 FONT_DRIVERS = xfont.o ftfont.o ftxfont.o
490 #else /* ! defined (HAVE_XFT) && ! defined (HAVE_FREETYPE) */
491 FONT_DRIVERS = xfont.o
492 #endif /* ! defined (HAVE_XFT) && ! defined (HAVE_FREETYPE) */
493 #endif /* HAVE_X_WINDOWS */
494 #endif /* HAVE_WINDOW_SYSTEM */
496 /* lastfile must follow all files
497 whose initialized data areas should be dumped as pure by dump-emacs. */
498 obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
499 charset.o coding.o category.o ccl.o character.o chartab.o \
500 cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
501 emacs.o keyboard.o macros.o keymap.o sysdep.o \
502 buffer.o filelock.o insdel.o marker.o \
503 minibuf.o fileio.o dired.o filemode.o \
504 cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
505 alloc.o data.o doc.o editfns.o callint.o \
506 eval.o floatfns.o fns.o font.o print.o lread.o \
507 syntax.o UNEXEC bytecode.o \
508 process.o callproc.o \
509 region-cache.o sound.o atimer.o \
510 doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
511 $(MSDOS_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_DRIVERS)
513 /* Object files used on some machine or other.
514 These go in the DOC file on all machines
515 in case they are needed there. */
516 SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
517 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
518 fontset.o \
519 nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
520 w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
521 w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_DRIVERS)
524 #ifdef TERMINFO
525 /* Used to be -ltermcap here. If your machine needs that,
526 define LIBS_TERMCAP in the m/MACHINE.h file. */
527 #ifndef LIBS_TERMCAP
528 #define LIBS_TERMCAP -lcurses
529 #endif /* LIBS_TERMCAP */
530 termcapobj = terminfo.o
531 #else /* ! defined (TERMINFO) */
532 #ifndef LIBS_TERMCAP
533 #define LIBS_TERMCAP
534 #endif /* LIBS_TERMCAP */
535 termcapobj = tparam.o
536 #endif /* ! defined (TERMINFO) */
539 #ifndef SYSTEM_MALLOC
541 #ifndef DOUG_LEA_MALLOC
542 gmallocobj = gmalloc.o
543 #endif
545 #ifdef REL_ALLOC
546 rallocobj = ralloc.o
547 #endif
549 mallocobj = $(gmallocobj) $(rallocobj) vm-limit.o
551 #endif /* SYSTEM_MALLOC */
554 #ifdef USE_X_TOOLKIT
555 widgetobj= widget.o
556 #else /* not USE_X_TOOLKIT */
557 widgetobj=
558 #endif /* not USE_X_TOOLKIT */
561 /* define otherobj as list of object files that make-docfile
562 should not be told about. */
563 #ifdef CYGWIN
564 /* Cygwin differs because of its unexec(). */
565 otherobj= $(termcapobj) $(gmallocobj) $(rallocobj) lastfile.o vm-limit.o $(widgetobj) $(LIBOBJS)
566 #else
567 otherobj= $(termcapobj) lastfile.o $(mallocobj) $(widgetobj) $(LIBOBJS)
568 #endif
570 #ifdef HAVE_MOUSE
571 #define MOUSE_SUPPORT ${lispsource}mouse.elc \
572 ${lispsource}select.elc ${lispsource}scroll-bar.elc
573 #else
574 #ifdef HAVE_GPM
575 #define MOUSE_SUPPORT ${lispsource}mouse.elc
576 #else
577 #define MOUSE_SUPPORT
578 #endif
579 #endif
581 #ifdef MSDOS
582 #define MSDOS_SUPPORT ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
583 ${lispsource}dos-fns.elc ${lispsource}dos-w32.elc ${lispsource}dos-vars.elc \
584 ${lispsource}term/internal.elc ${lispsource}term/pc-win.elc
586 #else
587 #define MSDOS_SUPPORT
588 #endif
590 #ifdef HAVE_WINDOW_SYSTEM
591 #ifdef HAVE_X_WINDOWS
592 #define WINDOW_SUPPORT ${lispsource}fringe.elc ${lispsource}image.elc \
593 ${lispsource}international/fontset.elc ${lispsource}dnd.elc \
594 ${lispsource}tool-bar.elc ${lispsource}mwheel.elc ${lispsource}x-dnd.elc \
595 ${lispsource}term/common-win.elc ${lispsource}term/x-win.elc \
596 ${lispsource}font-setting.elc
597 #else
598 #define WINDOW_SUPPORT ${lispsource}fringe.elc ${lispsource}image.elc \
599 ${lispsource}international/fontset.elc ${lispsource}dnd.elc \
600 ${lispsource}tool-bar.elc ${lispsource}mwheel.elc
601 #endif
602 #else
603 #define WINDOW_SUPPORT
604 #endif
606 #ifdef WINDOWSNT
607 #define WINNT_SUPPORT ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
608 ${lispsource}dos-w32.elc ${lispsource}w32-vars.elc \
609 ${lispsource}w32-fns.elc ${lispsource}term/common-win.elc \
610 ${lispsource}term/w32-win.elc
611 #else
612 #define WINNT_SUPPORT
613 #endif
615 #ifdef HAVE_WINDOW_SYSTEM
616 #define TOOLTIP_SUPPORT ${lispsource}tooltip.elc
617 #else
618 #define TOOLTIP_SUPPORT
619 #endif
621 #ifdef HAVE_NS
622 #define NS_SUPPORT ${lispsource}emacs-lisp/easymenu.elc \
623 ${lispsource}term/ns-win.elc
624 #else
625 #define NS_SUPPORT
626 #endif
628 /* This is the platform-specific list of Lisp files loaded into the
629 dumped Emacs. It is arranged like this because it is easier to generate
630 it semi-mechanically from loadup.el this way.
632 Note that this list should not include lisp files which might not
633 be present, like site-load.el and site-init.el; this makefile
634 expects them all to be either present or buildable.
636 Files which are loaded unconditionally (i.e., on all platforms) should
637 also be in shortlisp. Files which are loaded conditionally (i.e., only
638 on some platforms) should instead be in SOME_MACHINE_LISP. */
640 /* Place loaddefs.el first, so it gets generated first, since it is on
641 the critical path (relevant in parallel compilations). */
643 lisp= \
644 ${lispsource}loaddefs.el \
645 ${lispsource}abbrev.elc \
646 ${lispsource}buff-menu.elc \
647 ${lispsource}button.elc \
648 ${lispsource}emacs-lisp/byte-run.elc \
649 ${lispsource}composite.elc \
650 ${lispsource}cus-face.elc \
651 ${lispsource}cus-start.elc \
652 ${lispsource}custom.elc \
653 ${lispsource}emacs-lisp/backquote.elc \
654 ${lispsource}emacs-lisp/lisp-mode.elc \
655 ${lispsource}emacs-lisp/lisp.elc \
656 ${lispsource}env.elc \
657 ${lispsource}faces.elc \
658 ${lispsource}files.elc \
659 ${lispsource}format.elc \
660 ${lispsource}facemenu.elc \
661 MOUSE_SUPPORT \
662 ${lispsource}emacs-lisp/float-sup.elc \
663 ${lispsource}frame.elc \
664 ${lispsource}help.elc \
665 ${lispsource}indent.elc \
666 ${lispsource}isearch.elc \
667 ${lispsource}rfn-eshadow.elc \
668 ${lispsource}loadup.el \
669 ${lispsource}bindings.elc \
670 ${lispsource}emacs-lisp/map-ynp.elc \
671 ${lispsource}menu-bar.elc \
672 ${lispsource}international/mule.elc \
673 ${lispsource}international/mule-conf.elc \
674 ${lispsource}international/mule-cmds.elc \
675 ${lispsource}international/characters.elc \
676 ${lispsource}international/charprop.el \
677 ${lispsource}case-table.elc \
678 ${lispsource}language/chinese.elc \
679 ${lispsource}language/cyrillic.elc \
680 ${lispsource}language/indian.elc \
681 ${lispsource}language/sinhala.el \
682 ${lispsource}language/english.el \
683 ${lispsource}language/ethiopic.elc \
684 ${lispsource}language/european.elc \
685 ${lispsource}language/czech.el \
686 ${lispsource}language/slovak.el \
687 ${lispsource}language/romanian.el \
688 ${lispsource}language/greek.el \
689 ${lispsource}language/hebrew.el \
690 ${lispsource}language/japanese.el \
691 ${lispsource}language/korean.el \
692 ${lispsource}language/lao.el \
693 ${lispsource}language/cham.el \
694 ${lispsource}language/tai-viet.el \
695 ${lispsource}language/thai.el \
696 ${lispsource}language/tibetan.elc \
697 ${lispsource}language/vietnamese.elc \
698 ${lispsource}language/misc-lang.el \
699 ${lispsource}language/utf-8-lang.el \
700 ${lispsource}language/georgian.el \
701 ${lispsource}language/khmer.el \
702 ${lispsource}language/burmese.el \
703 ${lispsource}paths.el \
704 ${lispsource}register.elc \
705 ${lispsource}replace.elc \
706 ${lispsource}simple.elc \
707 ${lispsource}minibuffer.elc \
708 ${lispsource}startup.elc \
709 ${lispsource}subr.elc \
710 ${lispsource}term/tty-colors.elc \
711 ${lispsource}font-core.elc \
712 ${lispsource}emacs-lisp/syntax.elc \
713 ${lispsource}font-lock.elc \
714 ${lispsource}jit-lock.elc \
715 ${lispsource}textmodes/fill.elc \
716 ${lispsource}textmodes/page.elc \
717 ${lispsource}textmodes/paragraphs.elc \
718 ${lispsource}textmodes/text-mode.elc \
719 ${lispsource}emacs-lisp/timer.elc \
720 ${lispsource}jka-cmpr-hook.elc \
721 ${lispsource}vc-hooks.elc \
722 ${lispsource}ediff-hook.elc \
723 ${lispsource}epa-hook.elc \
724 TOOLTIP_SUPPORT \
725 MSDOS_SUPPORT \
726 WINNT_SUPPORT \
727 WINDOW_SUPPORT \
728 NS_SUPPORT \
729 ${lispsource}widget.elc \
730 ${lispsource}window.elc \
731 ${lispsource}version.el
733 /* List of relative names for those files from $lisp that are loaded
734 unconditionally (i.e. on all platforms). Files from $lisp that
735 are only loaded on some platforms should instead be placed in
736 SOME_MACHINE_LISP. The only reason this variable exists is to prevent
737 the make-docfile command-line getting too long for some systems. */
738 shortlisp= \
739 ../lisp/loaddefs.el \
740 ../lisp/abbrev.elc \
741 ../lisp/buff-menu.elc \
742 ../lisp/button.elc \
743 ../lisp/emacs-lisp/byte-run.elc \
744 ../lisp/composite.elc \
745 ../lisp/cus-face.elc \
746 ../lisp/cus-start.elc \
747 ../lisp/custom.elc \
748 ../lisp/emacs-lisp/backquote.elc \
749 ../lisp/emacs-lisp/lisp-mode.elc \
750 ../lisp/emacs-lisp/lisp.elc \
751 ../lisp/facemenu.elc \
752 ../lisp/faces.elc \
753 ../lisp/files.elc \
754 ../lisp/emacs-lisp/float-sup.elc \
755 ../lisp/format.elc \
756 ../lisp/frame.elc \
757 ../lisp/help.elc \
758 ../lisp/indent.elc \
759 ../lisp/isearch.elc \
760 ../lisp/rfn-eshadow.elc \
761 ../lisp/loadup.el \
762 ../lisp/bindings.elc \
763 ../lisp/emacs-lisp/map-ynp.elc \
764 ../lisp/env.elc \
765 ../lisp/international/mule.elc \
766 ../lisp/international/mule-conf.elc \
767 ../lisp/international/mule-cmds.elc \
768 ../lisp/international/characters.elc \
769 ../lisp/case-table.elc \
770 ../lisp/language/chinese.elc \
771 ../lisp/language/cyrillic.elc \
772 ../lisp/language/indian.elc \
773 ../lisp/language/sinhala.el \
774 ../lisp/language/english.el \
775 ../lisp/language/ethiopic.elc \
776 ../lisp/language/european.elc \
777 ../lisp/language/czech.el \
778 ../lisp/language/slovak.el \
779 ../lisp/language/romanian.el \
780 ../lisp/language/greek.el \
781 ../lisp/language/hebrew.el \
782 ../lisp/language/japanese.el \
783 ../lisp/language/korean.el \
784 ../lisp/language/lao.el \
785 ../lisp/language/cham.el \
786 ../lisp/language/tai-viet.el \
787 ../lisp/language/thai.el \
788 ../lisp/language/tibetan.elc \
789 ../lisp/language/vietnamese.elc \
790 ../lisp/language/misc-lang.el \
791 ../lisp/language/utf-8-lang.el \
792 ../lisp/language/georgian.el \
793 ../lisp/language/khmer.el \
794 ../lisp/language/burmese.el \
795 ../lisp/menu-bar.elc \
796 ../lisp/paths.el \
797 ../lisp/register.elc \
798 ../lisp/replace.elc \
799 ../lisp/simple.elc \
800 ../lisp/minibuffer.elc \
801 ../lisp/startup.elc \
802 ../lisp/subr.elc \
803 ../lisp/term/tty-colors.elc \
804 ../lisp/font-core.elc \
805 ../lisp/emacs-lisp/syntax.elc \
806 ../lisp/font-lock.elc \
807 ../lisp/jit-lock.elc \
808 ../lisp/textmodes/fill.elc \
809 ../lisp/textmodes/page.elc \
810 ../lisp/textmodes/paragraphs.elc \
811 ../lisp/textmodes/text-mode.elc \
812 ../lisp/emacs-lisp/timer.elc \
813 ../lisp/vc-hooks.elc \
814 ../lisp/jka-cmpr-hook.elc \
815 ../lisp/ediff-hook.elc \
816 ../lisp/epa-hook.elc \
817 ../lisp/widget.elc \
818 ../lisp/window.elc \
819 ../lisp/version.el
821 /* Like $shortlisp, but includes only those files from $lisp that are loaded
822 conditionally (i.e., only on some platforms). */
823 SOME_MACHINE_LISP = ../lisp/mouse.elc \
824 ../lisp/select.elc ../lisp/scroll-bar.elc \
825 ../lisp/ls-lisp.elc ../lisp/dos-fns.elc \
826 ../lisp/w32-fns.elc ../lisp/dos-w32.elc \
827 ../lisp/disp-table.elc ../lisp/dos-vars.elc \
828 ../lisp/tooltip.elc ../lisp/image.elc \
829 ../lisp/fringe.elc ../lisp/dnd.elc \
830 ../lisp/mwheel.elc ../lisp/tool-bar.elc \
831 ../lisp/x-dnd.elc ../lisp/font-setting.elc \
832 ../lisp/international/ccl.elc \
833 ../lisp/international/fontset.elc \
834 ../lisp/mouse.elc \
835 ../lisp/term/common-win.elc \
836 ../lisp/term/x-win.elc \
837 ../lisp/term/pc-win.elc ../lisp/term/internal.elc \
838 ../lisp/term/ns-win.elc ../lisp/term/w32-win.elc \
839 ../lisp/emacs-lisp/easymenu.elc
841 /* Construct full set of libraries to be linked.
842 Note that SunOS needs -lm to come before -lc; otherwise, you get
843 duplicated symbols. If the standard libraries were compiled
844 with GCC, we might need gnulib again after them. */
846 LIBES = $(LOADLIBES) $(LIBS) $(LIBX) $(LIBSOUND) $(RSVG_LIBS) $(DBUS_LIBS) \
847 @LIBGPM@ @LIBRESOLV@ LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP \
848 $(GETLOADAVG_LIBS) ${GCONF_LIBS} \
849 @FREETYPE_LIBS@ @FONTCONFIG_LIBS@ @LIBOTF_LIBS@ @M17N_FLT_LIBS@ \
850 $(GNULIB_VAR) LIB_MATH LIB_STANDARD $(GNULIB_VAR)
852 RUN_TEMACS = `/bin/pwd`/temacs
854 all: emacs${EXEEXT} $(OTHER_FILES)
856 emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
857 #ifdef CANNOT_DUMP
858 rm -f emacs${EXEEXT}
859 ln temacs${EXEEXT} emacs${EXEEXT}
860 -EMACSLOADPATH=${lispsource} ./emacs -q -batch -f list-load-path-shadows
861 #else
862 LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump
863 @: This new Emacs is as functional and more efficient then
864 @: bootstrap-emacs, so let us replace it.
865 -ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
866 -./emacs -q -batch -f list-load-path-shadows
867 #endif /* ! defined (CANNOT_DUMP) */
869 /* We run make-docfile twice because the command line may get too long
870 on some systems. */
871 /* ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may
872 or may not be included in ${obj}, but they are always included in
873 ${SOME_MACHINE_OBJECTS}. Since a file is processed when it is mentioned
874 for the first time, this prevents any variation between configurations
875 in the contents of the DOC file.
876 Likewise for ${SOME_MACHINE_LISP}. */
877 /* Most of this Makefile refers to Lisp files via ${lispsource}, so
878 we also use ${lisp} rather than ${shortlisp} for the dependency since
879 the Makefile uses string equality to decide when we talk about identical
880 files. Apparently we pass ${shortlisp} rather than ${lisp} to make-docfile
881 only in order to reduce the command line length. --Stef */
882 ${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
883 -rm -f ${etc}DOC
884 ${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
885 ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
887 ${libsrc}make-docfile${EXEEXT}:
888 cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile${EXEEXT}
890 buildobj.h: Makefile
891 echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h
893 temacs${EXEEXT}: $(LOCALCPP) $(STARTFILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT}
894 #ifdef NS_IMPL_GNUSTEP
895 $(CC) -rdynamic YMF_PASS_LDFLAGS ( ${TEMACS_LDFLAGS} \
896 -L@GNUSTEP_SYSTEM_LIBRARIES@ -lgnustep-gui -lgnustep-base \
897 -lobjc $(CONFIG_SYSTEM_LIBS) -lpthread ) -o temacs \
898 ${obj} ${otherobj} ${LIBES}
899 #else
900 $(LD) YMF_PASS_LDFLAGS (${STARTFLAGS} ${TEMACS_LDFLAGS}) $(LDFLAGS) \
901 -o temacs ${STARTFILES} ${obj} ${otherobj} \
902 ${LIBES}
903 #endif
905 /* We do not use ALL_LDFLAGS because LD_SWITCH_SYSTEM and LD_SWITCH_MACHINE
906 often contain options that have to do with using Emacs''s crt0,
907 which are only good with temacs. */
908 prefix-args${EXEEXT}: prefix-args.o $(config_h)
909 $(CC) $(LDFLAGS) prefix-args.o -o prefix-args
911 #if defined (HAVE_X_WINDOWS) && defined (HAVE_X11) && defined (HAVE_MENUS) && ! defined (USE_GTK)
913 /* We use stamp-xmenu with these two deps
914 to both ensure that lwlib gets remade based on its dependencies
915 in its own makefile,
916 and remake temacs if lwlib gets changed by this. */
917 stamp-oldxmenu: ${OLDXMENU} ../src/$(OLDXMENU)
918 touch stamp-oldxmenu
919 /* Supply an ordering for parallel make. */
920 ../src/$(OLDXMENU): ${OLDXMENU}
922 /* Encode the values of these two macros in Make variables,
923 so we can use $(...) to substitute their values within "...". */
924 C_SWITCH_MACHINE_1 = C_SWITCH_MACHINE
925 C_SWITCH_SYSTEM_1 = C_SWITCH_SYSTEM
926 C_SWITCH_X_SITE_1 = C_SWITCH_X_SITE
927 C_SWITCH_X_MACHINE_1 = C_SWITCH_X_MACHINE
928 C_SWITCH_X_SYSTEM_1 = C_SWITCH_X_SYSTEM
930 #ifdef USE_X_TOOLKIT
931 $(OLDXMENU): really-lwlib
933 really-lwlib:
934 cd ${lwlibdir}; ${MAKE} ${MFLAGS} \
935 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' \
936 "C_SWITCH_X_SITE=$(C_SWITCH_X_SITE_1)" \
937 "C_SWITCH_X_MACHINE=$(C_SWITCH_X_MACHINE_1)" \
938 "C_SWITCH_X_SYSTEM=$(C_SWITCH_X_SYSTEM_1)" \
939 "C_SWITCH_MACHINE=$(C_SWITCH_MACHINE_1)" \
940 "C_SWITCH_SYSTEM=$(C_SWITCH_SYSTEM_1)"
941 @true /* make -t should not create really-lwlib. */
942 .PHONY: really-lwlib
943 #else /* not USE_X_TOOLKIT */
944 $(OLDXMENU): really-oldXMenu
946 really-oldXMenu:
947 cd ${oldXMenudir}; ${MAKE} ${MFLAGS} \
948 CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' \
949 "C_SWITCH_X_SITE=$(C_SWITCH_X_SITE_1)" \
950 "C_SWITCH_X_MACHINE=$(C_SWITCH_X_MACHINE_1)" \
951 "C_SWITCH_X_SYSTEM=$(C_SWITCH_X_SYSTEM_1)" \
952 "C_SWITCH_MACHINE=$(C_SWITCH_MACHINE_1)" \
953 "C_SWITCH_SYSTEM=$(C_SWITCH_SYSTEM_1)"
954 @true /* make -t should not create really-oldXMenu. */
955 .PHONY: really-oldXMenu
956 #endif /* not USE_X_TOOLKIT */
957 #else /* not (HAVE_X_WINDOWS && HAVE_X11 && HAVE_MENUS && ! USE_GTK) */
959 /* We don''t really need this, but satisfy the dependency. */
960 stamp-oldxmenu:
961 touch stamp-oldxmenu
962 #endif /* not (HAVE_X_WINDOWS && HAVE_X11 && HAVE_MENUS && ! USE_GTK) */
964 ../config.status:: epaths.in
965 @echo "The file epaths.h needs to be set up from epaths.in."
966 @echo "Please run the `configure' script again."
967 exit 1
969 ../config.status:: config.in
970 @echo "The file config.h needs to be set up from config.in."
971 @echo "Please run the `configure' script again."
972 exit 1
974 ecrt0.o: ecrt0.c $(config_h)
975 #ifdef AUTO_DEPEND
976 @-test -d deps || mkdir deps
977 #endif
978 CRT0_COMPILE ${srcdir}/ecrt0.c
979 doc.o: buildobj.h
981 #ifndef AUTO_DEPEND
983 atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \
984 $(config_h)
985 buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \
986 $(INTERVALS_H) blockinput.h atimer.h systime.h character.h \
987 indent.h keyboard.h coding.h keymap.h frame.h lisp.h $(config_h)
988 callint.o: callint.c window.h commands.h buffer.h keymap.h \
989 keyboard.h dispextern.h systime.h coding.h composite.h lisp.h $(config_h)
990 callproc.o: callproc.c epaths.h buffer.h commands.h lisp.h $(config_h) \
991 process.h systty.h syssignal.h character.h coding.h ccl.h msdos.h \
992 composite.h w32.h blockinput.h atimer.h systime.h frame.h termhooks.h \
993 buffer.h
994 casefiddle.o: casefiddle.c syntax.h commands.h buffer.h character.h \
995 composite.h keymap.h lisp.h $(config_h)
996 casetab.o: casetab.c buffer.h character.h lisp.h $(config_h)
997 category.o: category.c category.h buffer.h charset.h keymap.h \
998 character.h lisp.h $(config_h)
999 ccl.o: ccl.c ccl.h charset.h character.h coding.h composite.h lisp.h $(config_h)
1000 character.o: character.c character.h buffer.h charset.h composite.h disptab.h \
1001 lisp.h $(config_h)
1002 charset.o: charset.c charset.h character.h buffer.h coding.h composite.h \
1003 disptab.h lisp.h $(config_h)
1004 chartab.o: charset.h character.h ccl.h lisp.h $(config_h)
1005 coding.o: coding.c coding.h ccl.h buffer.h character.h charset.h composite.h \
1006 window.h dispextern.h frame.h termhooks.h lisp.h $(config_h)
1007 cm.o: cm.c frame.h cm.h termhooks.h termchar.h dispextern.h lisp.h $(config_h)
1008 cmds.o: cmds.c syntax.h buffer.h character.h commands.h window.h lisp.h $(config_h) \
1009 msdos.h dispextern.h keyboard.h keymap.h systime.h coding.h frame.h \
1010 composite.h
1011 pre-crt0.o: pre-crt0.c
1012 dbusbind.o: dbusbind.c termhooks.h frame.h keyboard.h lisp.h $(config_h)
1013 dired.o: dired.c commands.h buffer.h lisp.h $(config_h) character.h charset.h \
1014 coding.h regex.h systime.h blockinput.h atimer.h composite.h
1015 dispnew.o: dispnew.c systime.h commands.h process.h frame.h coding.h \
1016 window.h buffer.h termchar.h termopts.h termhooks.h cm.h \
1017 disptab.h indent.h $(INTERVALS_H) \
1018 xterm.h blockinput.h atimer.h character.h msdos.h keyboard.h \
1019 syssignal.h lisp.h $(config_h)
1020 doc.o: doc.c lisp.h $(config_h) epaths.h buffer.h keyboard.h keymap.h \
1021 character.h systime.h coding.h composite.h
1022 doprnt.o: doprnt.c character.h lisp.h $(config_h)
1023 dosfns.o: buffer.h termchar.h termhooks.h frame.h blockinput.h window.h \
1024 msdos.h dosfns.h dispextern.h charset.h coding.h atimer.h systime.h \
1025 lisp.h $(config_h)
1026 editfns.o: editfns.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
1027 coding.h frame.h blockinput.h atimer.h lisp.h $(config_h)
1028 emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \
1029 termhooks.h buffer.h atimer.h systime.h $(INTERVALS_H) lisp.h $(config_h) \
1030 window.h dispextern.h keyboard.h keymap.h frame.h coding.h
1031 fileio.o: fileio.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
1032 coding.h msdos.h blockinput.h atimer.h lisp.h $(config_h) frame.h commands.h
1033 filelock.o: filelock.c buffer.h character.h coding.h systime.h composite.h \
1034 lisp.h $(config_h)
1035 filemode.o: filemode.c $(config_h)
1036 frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
1037 blockinput.h atimer.h systime.h buffer.h character.h fontset.h font.h \
1038 msdos.h dosfns.h dispextern.h w32term.h termchar.h coding.h composite.h \
1039 lisp.h $(config_h) termhooks.h ccl.h
1040 fringe.o: fringe.c dispextern.h frame.h window.h buffer.h termhooks.h \
1041 blockinput.h atimer.h systime.h lisp.h $(config_h)
1042 font.o: font.c dispextern.h frame.h window.h ccl.h character.h charset.h \
1043 font.h lisp.h $(config_h) buffer.h composite.h fontset.h xterm.h
1044 ftfont.o: dispextern.h frame.h character.h charset.h composite.h font.h \
1045 lisp.h $(config_h) blockinput.h atimer.h systime.h coding.h fontset.h \
1046 ccl.h ftfont.h
1047 fontset.o: fontset.c fontset.h ccl.h buffer.h character.h \
1048 charset.h frame.h keyboard.h termhooks.h font.h lisp.h $(config_h) \
1049 blockinput.h atimer.h systime.h coding.h $(INTERVALS_H) window.h xterm.h
1050 getloadavg.o: getloadavg.c $(config_h)
1051 gtkutil.o: gtkutil.c gtkutil.h xterm.h lisp.h frame.h lisp.h $(config_h) \
1052 blockinput.h window.h atimer.h systime.h termhooks.h keyboard.h \
1053 charset.h coding.h syssignal.h dispextern.h composite.h
1054 image.o: image.c frame.h window.h dispextern.h blockinput.h atimer.h \
1055 systime.h xterm.h w32term.h w32gui.h font.h epaths.h character.h coding.h \
1056 nsterm.h nsgui.h lisp.h $(config_h) composite.h termhooks.h ccl.h
1057 indent.o: indent.c frame.h window.h indent.h buffer.h lisp.h $(config_h) termchar.h \
1058 termopts.h disptab.h region-cache.h character.h category.h \
1059 keyboard.h systime.h coding.h $(INTERVALS_H)
1060 insdel.o: insdel.c window.h buffer.h $(INTERVALS_H) blockinput.h character.h \
1061 dispextern.h atimer.h systime.h region-cache.h lisp.h $(config_h)
1062 keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \
1063 commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \
1064 systime.h syntax.h $(INTERVALS_H) blockinput.h atimer.h composite.h \
1065 xterm.h puresize.h msdos.h keymap.h w32term.h nsterm.h coding.h \
1066 lisp.h $(config_h)
1067 keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \
1068 atimer.h systime.h puresize.h character.h charset.h $(INTERVALS_H) keymap.h window.h \
1069 coding.h frame.h lisp.h $(config_h)
1070 lastfile.o: lastfile.c $(config_h)
1071 macros.o: macros.c window.h buffer.h commands.h macros.h keyboard.h \
1072 dispextern.h lisp.h $(config_h) systime.h coding.h composite.h
1073 gmalloc.o: gmalloc.c $(config_h)
1074 ralloc.o: ralloc.c lisp.h $(config_h)
1075 vm-limit.o: vm-limit.c mem-limits.h lisp.h $(config_h)
1076 marker.o: marker.c buffer.h character.h lisp.h $(config_h)
1077 md5.o: md5.c md5.h $(config_h)
1078 minibuf.o: minibuf.c syntax.h frame.h window.h keyboard.h systime.h \
1079 buffer.h commands.h character.h msdos.h $(INTERVALS_H) keymap.h \
1080 termhooks.h lisp.h $(config_h) coding.h
1081 mktime.o: mktime.c $(config_h)
1082 msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \
1083 termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \
1084 keyboard.h $(INTERVALS_H) buffer.h commands.h blockinput.h atimer.h lisp.h $(config_h)
1085 nsfns.o: nsfns.m charset.h nsterm.h nsgui.h frame.h window.h buffer.h \
1086 dispextern.h nsgui.h fontset.h $(INTERVALS_H) keyboard.h blockinput.h \
1087 atimer.h systime.h epaths.h termhooks.h coding.h systime.h lisp.h $(config_h)
1088 nsfont.o: nsterm.h dispextern.h frame.h lisp.h lisp.h $(config_h)
1089 nsimage.o: nsimage.m nsterm.h lisp.h $(config_h)
1090 nsmenu.o: nsmenu.m termhooks.h frame.h window.h dispextern.h \
1091 nsgui.h keyboard.h blockinput.h atimer.h systime.h buffer.h \
1092 nsterm.h lisp.h $(config_h)
1093 nsterm.o: nsterm.m blockinput.h atimer.h systime.h syssignal.h nsterm.h \
1094 nsgui.h frame.h charset.h ccl.h dispextern.h fontset.h termhooks.h \
1095 termopts.h termchar.h disptab.h buffer.h window.h keyboard.h \
1096 $(INTERVALS_H) process.h coding.h lisp.h $(config_h)
1097 nsselect.o: nsselect.m blockinput.h nsterm.h nsgui.h frame.h lisp.h $(config_h)
1098 process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \
1099 commands.h syssignal.h systime.h systty.h syswait.h frame.h dispextern.h \
1100 blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \
1101 keyboard.h lisp.h $(config_h) character.h xgselect.h sysselect.h
1102 regex.o: regex.c syntax.h buffer.h lisp.h $(config_h) regex.h category.h character.h
1103 region-cache.o: region-cache.c buffer.h region-cache.h lisp.h $(config_h)
1104 scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \
1105 termhooks.h lisp.h $(config_h) systime.h coding.h composite.h window.h
1106 search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \
1107 blockinput.h atimer.h systime.h category.h character.h charset.h \
1108 $(INTERVALS_H) \
1109 lisp.h $(config_h)
1110 sound.o: sound.c dispextern.h syssignal.h lisp.h $(config_h) atimer.h systime.h
1111 strftime.o: strftime.c $(config_h)
1112 syntax.o: syntax.c syntax.h buffer.h commands.h category.h character.h \
1113 keymap.h regex.h $(INTERVALS_H) lisp.h $(config_h)
1114 sysdep.o: sysdep.c syssignal.h systty.h systime.h syswait.h blockinput.h \
1115 process.h dispextern.h termhooks.h termchar.h termopts.h coding.h \
1116 frame.h atimer.h window.h msdos.h dosfns.h keyboard.h cm.h lisp.h $(config_h) \
1117 composite.h
1118 term.o: term.c termchar.h termhooks.h termopts.h lisp.h $(config_h) cm.h frame.h \
1119 disptab.h keyboard.h character.h charset.h coding.h ccl.h xterm.h \
1120 msdos.h window.h keymap.h blockinput.h atimer.h systime.h systty.h \
1121 syssignal.h $(INTERVALS_H) buffer.h
1122 termcap.o: termcap.c lisp.h $(config_h)
1123 terminal.o: terminal.c frame.h termchar.h termhooks.h charset.h coding.h \
1124 keyboard.h lisp.h $(config_h) dispextern.h composite.h systime.h
1125 terminfo.o: terminfo.c lisp.h $(config_h)
1126 tparam.o: tparam.c lisp.h $(config_h)
1127 undo.o: undo.c buffer.h commands.h window.h dispextern.h lisp.h $(config_h)
1128 unexaix.o: unexaix.c lisp.h $(config_h)
1129 unexalpha.o: unexalpha.c $(config_h)
1130 unexcw.o: unexcw.c lisp.h $(config_h)
1131 unexec.o: unexec.c lisp.h $(config_h)
1132 unexelf.o: unexelf.c $(config_h)
1133 unexhp9k800.o: unexhp9k800.c $(config_h)
1134 unexmacosx.o: unexmacosx.c $(config_h)
1135 unexsol.o: unexsol.c lisp.h $(config_h)
1136 unexw32.o: unexw32.c $(config_h)
1137 w16select.o: w16select.c dispextern.h frame.h blockinput.h atimer.h systime.h \
1138 msdos.h buffer.h charset.h coding.h composite.h lisp.h $(config_h)
1139 widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \
1140 $(srcdir)/../lwlib/lwlib.h lisp.h $(config_h)
1141 window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \
1142 disptab.h keyboard.h msdos.h coding.h termhooks.h \
1143 keymap.h blockinput.h atimer.h systime.h $(INTERVALS_H) \
1144 xterm.h w32term.h nsterm.h lisp.h $(config_h)
1145 xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h \
1146 coding.h termchar.h frame.h window.h disptab.h termhooks.h character.h \
1147 charset.h lisp.h $(config_h) keyboard.h $(INTERVALS_H) region-cache.h xterm.h \
1148 w32term.h nsterm.h msdos.h composite.h fontset.h ccl.h \
1149 blockinput.h atimer.h systime.h keymap.h font.h
1150 xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \
1151 window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \
1152 systime.h keyboard.h fontset.h w32term.h nsterm.h coding.h ccl.h \
1153 $(INTERVALS_H) termchar.h termhooks.h font.h lisp.h $(config_h)
1154 xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \
1155 $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \
1156 character.h charset.h coding.h gtkutil.h lisp.h $(config_h) termhooks.h \
1157 fontset.h termchar.h font.h xsettings.h $(INTERVALS_H) ccl.h
1158 xfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \
1159 font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h
1160 xftfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \
1161 font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h ftfont.h
1162 ftxfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \
1163 font.h lisp.h $(config_h) atimer.h systime.h fontset.h ccl.h
1164 menu.o: menu.c lisp.h keyboard.h keymap.h frame.h termhooks.h blockinput.h \
1165 dispextern.h $(srcdir)/../lwlib/lwlib.h xterm.h gtkutil.h menu.h \
1166 lisp.h $(config_h) systime.h coding.h composite.h window.h atimer.h
1167 xmenu.o: xmenu.c xterm.h termhooks.h window.h dispextern.h frame.h buffer.h \
1168 charset.h keyboard.h $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h \
1169 systime.h gtkutil.h msdos.h coding.h menu.h lisp.h $(config_h) composite.h \
1170 keymap.h sysselect.h
1171 xterm.o: xterm.c xterm.h termhooks.h termopts.h termchar.h window.h buffer.h \
1172 dispextern.h frame.h disptab.h blockinput.h atimer.h systime.h syssignal.h \
1173 keyboard.h emacs-icon.h character.h charset.h ccl.h fontset.h composite.h \
1174 coding.h process.h gtkutil.h font.h fontset.h lisp.h $(config_h) \
1175 xsettings.h intervals.h keymap.h xgselect.h sysselect.h
1176 xselect.o: xselect.c process.h dispextern.h frame.h xterm.h blockinput.h \
1177 buffer.h atimer.h systime.h termhooks.h lisp.h $(config_h) keyboard.h \
1178 coding.h composite.h
1179 xgselect.o: xgselect.h systime.h sysselect.h lisp.h $(config_h)
1180 xrdb.o: xrdb.c lisp.h $(config_h) epaths.h
1181 xsmfns.o: xsmfns.c lisp.h $(config_h) systime.h sysselect.h termhooks.h xterm.h \
1182 lisp.h termopts.h frame.h dispextern.h
1183 xsettings.o: xterm.h xsettings.h lisp.h frame.h termhooks.h $(config_h) \
1184 dispextern.h keyboard.h systime.h coding.h composite.h blockinput.h atimer.h \
1185 termopts.h
1186 /* The files of Lisp proper */
1188 alloc.o: alloc.c process.h frame.h window.h buffer.h puresize.h syssignal.h \
1189 keyboard.h blockinput.h atimer.h systime.h character.h lisp.h $(config_h) \
1190 $(INTERVALS_H) termhooks.h
1191 bytecode.o: bytecode.c buffer.h syntax.h character.h window.h dispextern.h \
1192 frame.h xterm.h lisp.h $(config_h)
1193 data.o: data.c buffer.h puresize.h character.h syssignal.h keyboard.h frame.h \
1194 termhooks.h systime.h coding.h composite.h dispextern.h font.h ccl.h \
1195 lisp.h $(config_h)
1196 eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h \
1197 dispextern.h lisp.h $(config_h) coding.h composite.h xterm.h
1198 floatfns.o: floatfns.c syssignal.h lisp.h $(config_h)
1199 fns.o: fns.c commands.h lisp.h $(config_h) frame.h buffer.h character.h keyboard.h \
1200 keymap.h window.h dispextern.h $(INTERVALS_H) coding.h md5.h \
1201 blockinput.h atimer.h systime.h xterm.h
1202 print.o: print.c process.h frame.h window.h buffer.h keyboard.h character.h \
1203 lisp.h $(config_h) termchar.h $(INTERVALS_H) msdos.h termhooks.h \
1204 blockinput.h atimer.h systime.h font.h charset.h coding.h ccl.h
1205 lread.o: lread.c commands.h keyboard.h buffer.h epaths.h character.h \
1206 charset.h lisp.h $(config_h) $(INTERVALS_H) termhooks.h coding.h msdos.h \
1207 systime.h frame.h blockinput.h atimer.h
1209 /* Text properties support */
1210 composite.o: composite.c buffer.h character.h coding.h font.h ccl.h \
1211 frame.h termhooks.h $(INTERVALS_H) window.h lisp.h $(config_h)
1212 intervals.o: intervals.c buffer.h $(INTERVALS_H) keyboard.h puresize.h \
1213 keymap.h lisp.h $(config_h) systime.h coding.h
1214 textprop.o: textprop.c buffer.h window.h $(INTERVALS_H) \
1215 lisp.h $(config_h)
1217 #endif /* ! AUTO_DEPEND */
1219 /* System-specific programs to be made.
1220 OTHER_FILES
1221 select which of these should be compiled. */
1223 #ifdef HAVE_NS
1224 /* In fact, every .o file depends directly or indirectly on dispextern.h
1225 and hence nsgui.h under NS. But the ones that actually use stuff there
1226 are more limited. */
1227 dispnew.o font.o fontset.o frame.o fringe.o image.o keyboard.o menu.o \
1228 window.o xdisp.o xfaces.o: nsgui.h
1230 ${ns_appdir}: ${ns_appsrc}
1231 rm -fr ${ns_appdir}
1232 mkdir -p ${ns_appdir}
1233 ( cd ${ns_appsrc} ; tar cfh - . ) | ( cd ${ns_appdir} ; tar xf - )
1234 ( cd ${ns_appdir} ; for subdir in `find . -type d ! -name CVS -print` ; do \
1235 chmod a+rx $${subdir} ; \
1236 rm -rf $${subdir}/CVS ; \
1237 rm -f $${subdir}/.cvsignore ; done ; )
1239 ${ns_appbindir}Emacs: emacs${EXEEXT}
1240 mkdir -p ${ns_appbindir}
1241 cp -f emacs${EXEEXT} ${ns_appbindir}Emacs
1243 ns-app: ${ns_appdir} ${ns_appbindir}Emacs
1245 #endif /* HAVE_NS */
1247 mostlyclean:
1248 rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a
1249 rm -f ../etc/DOC
1250 rm -f bootstrap-emacs${EXEEXT} emacs-${version}${EXEEXT}
1251 rm -f buildobj.h
1252 clean: mostlyclean
1253 rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT}
1254 -rm -rf deps
1255 #ifdef HAVE_NS
1256 rm -fr ${ns_appdir}
1257 #endif
1258 /* bootstrap-clean is used to clean up just before a bootstrap.
1259 It should remove all files generated during a compilation/bootstrap,
1260 but not things like config.status or TAGS. */
1261 bootstrap-clean: clean
1262 rm -f epaths.h config.h Makefile.c config.stamp stamp-oldxmenu ../etc/DOC-*
1263 if test -f ./.gdbinit; then \
1264 mv ./.gdbinit ./.gdbinit.save; \
1265 if test -f "${srcdir}/.gdbinit"; then rm -f ./.gdbinit.save; \
1266 else mv ./.gdbinit.save ./.gdbinit; fi; \
1268 /**/# This is used in making a distribution.
1269 /**/# Do not use it on development directories!
1270 distclean: bootstrap-clean
1271 rm -f Makefile
1272 maintainer-clean: distclean
1273 @echo "This command is intended for maintainers to use;"
1274 @echo "it deletes files that may require special tools to rebuild."
1275 rm -f TAGS
1276 versionclean:
1277 -rm -f emacs${EXEEXT} emacs-*.*.*${EXEEXT} ../etc/DOC*
1278 extraclean: distclean
1279 -rm -f *~ \#* m/?*~ s/?*~
1281 /* Arrange to make a tags table TAGS-LISP for ../lisp,
1282 plus TAGS for the C files, which includes ../lisp/TAGS by reference. */
1284 ctagsfiles1 = [xyzXYZ]*.[hcm]
1285 ctagsfiles2 = [a-wA-W]*.[hcm]
1287 TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
1288 ../lib-src/etags --include=TAGS-LISP --include=${lwlibdir}/TAGS \
1289 --regex='/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \
1290 $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
1291 frc:
1292 TAGS-LISP: frc
1293 $(MAKE) -f ${lispdir}Makefile TAGS-LISP ETAGS=../lib-src/etags
1295 $(lwlibdir)TAGS:
1296 (cd $(lwlibdir); $(MAKE) -f $(lwlibdir)Makefile tags ETAGS=../lib-src/etags)
1298 tags: TAGS TAGS-LISP $(lwlibdir)TAGS
1299 .PHONY: tags
1302 /* Bootstrapping. */
1303 /* Bootstrapping right is difficult because of the circular dependencies.
1304 Furthermore, we have to deal with the fact that many compilation targets
1305 such as loaddefs.el or *.elc can typically be produced by any old
1306 Emacs executable, so we would like to avoid rebuilding them whenever
1307 we build a new Emacs executable.
1308 To solve the circularity, we use 2 different Emacs executables,
1309 "emacs" is the main target and "bootstrap-emacs" is the one used
1310 to build the *.elc and loaddefs.el files.
1311 To solve the freshness issue, we used to use a third file "witness-emacs"
1312 which was used to witness the fact that there is a bootstrap-emacs
1313 executable, and then have dependencies on witness-emacs rather than
1314 bootstrap-emacs, but that lead to problems in parallel builds (because
1315 witness-emacs needed to be free from dependencies (to avoid rebuilding
1316 it), so it was compiled in parallel, leading typically to having 2
1317 processes dumping bootstrap-emacs at the same time).
1318 So instead, we replace the witness-emacs dependencies by conditional
1319 bootstrap-dependencies (via ${BOOTSTRAPEMACS}). Of course, since we do
1320 not want to rely on GNU Make features, we have to rely on an external
1321 script to do the conditional part of the dependency
1322 (i.e. see the ${SUBDIR} rule ../Makefile.in). */
1324 .SUFFIXES: .elc .el
1326 /* These suffix rules do not allow additional dependencies, sadly, so
1327 instead of adding a $(BOOTSTRAPEMACS) dependency here, we add it
1328 separately below.
1329 With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)" */
1330 .el.elc:
1331 @cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \
1332 THEFILE=$< EMACS=${bootstrap_exe}
1334 /* Since the .el.elc rule cannot specify an extra dependency, we do it here. */
1335 ${lisp} ${SOME_MACHINE_LISP}: $(BOOTSTRAPEMACS)
1337 ${lispsource}loaddefs.el: $(BOOTSTRAPEMACS)
1338 cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=${bootstrap_exe}
1340 /* Dump an Emacs executable named bootstrap-emacs containing the
1341 files from loadup.el in source form. */
1343 bootstrap-emacs${EXEEXT}: temacs${EXEEXT}
1344 cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs
1345 #ifdef CANNOT_DUMP
1346 ln -f temacs${EXEEXT} bootstrap-emacs${EXEEXT}
1347 #else
1348 $(RUN_TEMACS) --batch --load loadup bootstrap
1349 mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
1350 #endif /* ! defined (CANNOT_DUMP) */
1351 @: Compile some files earlier to speed up further compilation.
1352 cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe}
1354 #ifdef AUTO_DEPEND
1355 ALLOBJS=$(STARTFILES) ${obj} ${otherobj} prefix-args.o
1356 -include $(ALLOBJS:%.o=deps/%.d)
1357 #endif