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