Makefile.in 43.6 KB
Newer Older
1
# Makefile for GNU Emacs.
2
# Copyright (C) 1985, 1987, 1988, 1993, 1994, 1995, 1999, 2000, 2001, 2002,
Glenn Morris's avatar
Glenn Morris committed
3
#               2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Glenn Morris's avatar
Glenn Morris committed
4
#               Free Software Foundation, Inc.
5 6 7

# 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 11
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
12 13 14 15 16 17 18

# GNU Emacs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
19
# along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
20 21 22 23 24 25


# Note that this file is edited by msdos/sed1v2.inp for MSDOS.  That
# script may need modifying in sync with changes made here.  Try to
# avoid shell-ism because the DOS build has to use the DOS shell.

Pavel Janík's avatar
Pavel Janík committed
26
# Don't try to replace the cpp processing using autoconf facilities,
27
# says rms.
28 29 30 31 32
# Replacing a particular part of the conditionals to work via autoconf
# is OK.
# Some of the conditionals might be dead now.  Finding them and
# deleting them would be fine.

33 34 35

# Here are the things that we expect ../configure to edit.
# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
36 37 38 39 40 41 42 43 44
srcdir = @srcdir@
abs_builddir = @abs_builddir@
VPATH = $(srcdir)
CC = @CC@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
EXEEXT = @EXEEXT@
version = @version@
45 46 47 48 49 50 51 52
# Substitute an assignment for the MAKE variable, because
# BSD doesn't have it as a default.
@SET_MAKE@
# Don't use LIBS.  configure puts stuff in it that either shouldn't be
# linked with Emacs or is duplicated by the cpp stuff below.
# LIBS = @LIBS@
LIBOBJS = @LIBOBJS@

53 54 55 56 57 58
lispsource = ${srcdir}/../lisp/
libsrc = ../lib-src/
etc = ../etc/
oldXMenudir = ../oldXMenu/
lwlibdir = ../lwlib/
lispdir = ../lisp/
59 60 61 62 63 64

# Configuration files for .o files to depend on.
M_FILE = ${srcdir}/@machfile@
S_FILE = ${srcdir}/@opsysfile@
config_h = config.h $(M_FILE) $(S_FILE)

65
bootstrap_exe = ${abs_builddir}/bootstrap-emacs${EXEEXT}
Glenn Morris's avatar
Glenn Morris committed
66

67 68
OTHER_FILES = @OTHER_FILES@

Glenn Morris's avatar
Glenn Morris committed
69 70
CRT_DIR=@CRT_DIR@

71 72 73 74
## Machine-specific CFLAGS.
C_SWITCH_MACHINE=@C_SWITCH_MACHINE@
## System-specific CFLAGS.
C_SWITCH_SYSTEM=@C_SWITCH_SYSTEM@
75
## This holds any special options for linking temacs only (ie, not
76 77 78
## used by configure).  Not used elsewhere because it sometimes
## contains options that have to do with using Emacs's crt0, 
## which are only good with temacs.
79
LD_SWITCH_SYSTEM_TEMACS=@LD_SWITCH_SYSTEM_TEMACS@
80 81 82 83 84
## Next two must come before LD_SWITCH_SYSTEM.
## If needed, a -R option that says where to find X windows at run time.
LD_SWITCH_X_SITE_AUX=@LD_SWITCH_X_SITE_AUX@
## As above, but using -rpath instead.
LD_SWITCH_X_SITE_AUX_RPATH=@LD_SWITCH_X_SITE_AUX_RPATH@
85 86 87 88 89
## System-specific LDFLAGS.
LD_SWITCH_SYSTEM=@LD_SWITCH_SYSTEM@
LD_SWITCH_SYSTEM_EXTRA=@LD_SWITCH_SYSTEM_EXTRA@
## Flags to pass to ld only for temacs.
TEMACS_LDFLAGS = $(LD_SWITCH_SYSTEM) $(LD_SWITCH_SYSTEM_EXTRA) $(LD_SWITCH_SYSTEM_TEMACS)
90

91 92 93 94 95 96
LIBTIFF=@LIBTIFF@
LIBJPEG=@LIBJPEG@
LIBPNG=@LIBPNG@
LIBGIF=@LIBGIF@
LIBXPM=@LIBXPM@
XFT_LIBS=@XFT_LIBS@
97
LIBX_EXTRA=$(LIBTIFF) $(LIBJPEG) $(LIBPNG) $(LIBGIF) $(LIBXPM) -lX11 $(XFT_LIBS)
98

99 100
DBUS_CFLAGS = @DBUS_CFLAGS@
DBUS_LIBS = @DBUS_LIBS@
101
DBUS_OBJ = @DBUS_OBJ@
102 103 104 105

GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@

106 107
GTK_OBJ=@GTK_OBJ@

108 109
LIBXMU=@LIBXMU@

110 111
LIBXSM=@LIBXSM@

112 113
LIBXTR6=@LIBXTR6@

114 115 116 117
## $(LIBXMU) -lXt $(LIBXTR6) -lXext if USE_X_TOOLKIT, else $(LIBXSM).
## Only used if HAVE_X_WINDOWS.
LIBXT_OTHER=@LIBXT_OTHER@

118 119 120
XMENU_OBJ=@XMENU_OBJ@
XOBJ=@XOBJ@

121
TOOLKIT_LIBW=@TOOLKIT_LIBW@
122

123 124 125 126 127 128
LIBSOUND= @LIBSOUND@
CFLAGS_SOUND= @CFLAGS_SOUND@

RSVG_LIBS= @RSVG_LIBS@
RSVG_CFLAGS= @RSVG_CFLAGS@

129 130 131
## widget.o if USE_X_TOOLKIT, otherwise empty.
WIDGET_OBJ=@WIDGET_OBJ@

132 133 134
## sheap.o if CYGWIN, otherwise empty.
CYGWIN_OBJ=@CYGWIN_OBJ@

135 136 137
NS_OBJ=@NS_OBJ@
NS_SUPPORT=@NS_SUPPORT@

138 139 140
## Only used if HAVE_X_WINDOWS and HAVE_WINDOW_SYSTEM.
FONT_OBJ=@FONT_OBJ@

141 142 143 144
## ${lispsource}mouse.elc if HAVE_GPM, otherwise empty.
## Not used if HAVE_MOUSE.
GPM_MOUSE_SUPPORT=@GPM_MOUSE_SUPPORT@

145 146 147 148 149 150 151
BASE_WINDOW_SUPPORT=${lispsource}fringe.elc ${lispsource}image.elc \
  ${lispsource}international/fontset.elc ${lispsource}dnd.elc \
  ${lispsource}tool-bar.elc ${lispsource}mwheel.elc

X_WINDOW_SUPPORT=${lispsource}x-dnd.elc ${lispsource}term/common-win.elc \
  ${lispsource}term/x-win.elc ${lispsource}dynamic-setting.elc

152 153
LIBSELINUX_LIBS = @LIBSELINUX_LIBS@

154 155 156 157 158 159
INTERVALS_H = dispextern.h intervals.h composite.h

GETLOADAVG_LIBS = @GETLOADAVG_LIBS@

RUN_TEMACS = `/bin/pwd`/temacs

160 161
START_FILES = @START_FILES@

162 163 164 165 166 167 168 169 170 171
# ========================== start of cpp stuff =======================
/* From here on, comments must be done in C syntax.  */

/* just to be sure the sh is used */
SHELL=/bin/sh

#define THIS_IS_MAKEFILE
#define NOT_C_CODE
#include "config.h"

172 173 174 175
#ifdef AUTO_DEPEND
DEPFLAGS = -MMD -MF deps/$*.d
#endif

176
/* Do not let the file name mktime.c get messed up.  */
177 178 179 180 181 182 183 184 185 186 187 188 189 190
#ifdef mktime
#undef mktime
#endif

/* Use HAVE_X11 as an alias for X11 in this file
   to avoid problems with X11 as a subdirectory name
   in -I and other such options which pass through this file. */

#ifdef X11
#define HAVE_X11
#undef X11
#endif

/* On some machines #define register is done in config;
191
   do not let it interfere with this file.  */
192 193 194 195 196 197 198
#undef register

/* Some s/SYSTEM.h files define this to request special libraries.  */
#ifndef LIBS_SYSTEM
#define LIBS_SYSTEM
#endif

199
/* This macro is for switches specifically related to X Windows.  */
200 201 202 203
#ifndef LD_SWITCH_X_SITE
#define LD_SWITCH_X_SITE
#endif

204
#ifdef NS_IMPL_GNUSTEP
205 206 207
/* Pull in stuff from GNUstep-make. */
FOUNDATION_LIB=gnu
GUI_LIB=gnu
208 209
include @GNUSTEP_MAKEFILES@/Additional/base.make
include @GNUSTEP_MAKEFILES@/Additional/gui.make
210 211 212
shared=no
#endif

213 214 215 216 217 218 219 220 221
/* DO NOT use -R.  There is a special hack described in lastfile.c
   which is used instead.  Some initialized data areas are modified
   at initial startup, then labeled as part of the text area when
   Emacs is dumped for the first time, and never changed again. */

/* -Demacs is needed to make some files produce the correct version
   for use in Emacs.

   -DHAVE_CONFIG_H is needed for some other files to take advantage of
222
   the information in ``config.h''.  */
223

224
/* C_SWITCH_X_SITE must come before C_SWITCH_X_SYSTEM
225
   since it may have -I options that should override those two.  */
226
/* MYCPPFLAGS only referenced in etc/DEBUG.  */
227
ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I${srcdir} ${C_SWITCH_MACHINE} ${C_SWITCH_SYSTEM} @C_SWITCH_X_SITE@ @C_SWITCH_X_SYSTEM@ ${CFLAGS_SOUND} ${RSVG_CFLAGS} ${DBUS_CFLAGS} ${GCONF_CFLAGS} ${CFLAGS} @FREETYPE_CFLAGS@ @FONTCONFIG_CFLAGS@ @LIBOTF_CFLAGS@ @M17N_FLT_CFLAGS@ ${DEPFLAGS}
228 229
ALL_OBJC_CFLAGS=$(ALL_CFLAGS) @GNU_OBJC_CFLAGS@

230
.SUFFIXES: .m
231
.c.o:
232
#ifdef AUTO_DEPEND
233
	@-test -d deps || mkdir deps
234
#endif
235
	$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
236
.m.o:
237
#ifdef AUTO_DEPEND
238
	@-test -d deps || mkdir deps
239
#endif
240
	$(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $<
241 242

#ifdef HAVE_X_WINDOWS
243 244 245 246 247
/* This test needs to say in cpp for the time being, since s/ms-w32.h and
   s/msdos.h define HAVE_MENUS, possibly overriding configure.  */
#ifdef HAVE_MENUS
OLDXMENU=@OLDXMENU@
LIBXMENU=@LIBXMENU@
248
#else /* not HAVE_MENUS */
249
OLDXMENU=
250 251 252
LIBXMENU=
#endif /* not HAVE_MENUS */

253 254 255
LIBXT=$(TOOLKIT_LIBW) $(LIBXT_OTHER)
LIBX_BASE=$(LIBXMENU) LD_SWITCH_X_SITE
LIBX_OTHER=@LIBX_OTHER@
256 257 258 259 260 261 262 263 264 265 266 267 268
#endif /* not HAVE_X_WINDOWS */

#ifndef ORDINARY_LINK
/* Fix linking if compiled with GCC.  */
#ifdef __GNUC__

#ifdef LINKER
#define LINKER_WAS_SPECIFIED
#endif

/* Versions of GCC >= 2.0 put their library, libgcc.a, in obscure
   places that are difficult to figure out at make time.  Fortunately,
   these same versions allow you to pass arbitrary flags on to the
269
   linker, so there is no reason not to use it as a linker.
270

271
   Well, it is not quite perfect.  The "-nostdlib" keeps GCC from
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287
   searching for libraries in its internal directories, so we have to
   ask GCC explicitly where to find libgcc.a.  */

#ifndef LINKER
#define LINKER $(CC) -nostdlib
#endif

#ifndef LIB_GCC
/* Ask GCC where to find libgcc.a.  */
#define LIB_GCC `$(CC) -print-libgcc-file-name`
#endif /* not LIB_GCC */

GNULIB_VAR = LIB_GCC

#ifndef LINKER_WAS_SPECIFIED
/* GCC passes any argument prefixed with -Xlinker directly to the
288
   linker.  See prefix-args.c for an explanation of why we do not do
289
   this with the shell''s ``for'' construct.
290
   Note that some people do not have '.'  in their paths, so we must
291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313
   use ./prefix-args.  */
#define YMF_PASS_LDFLAGS(flags) `./prefix-args -Xlinker flags`
#else
#define YMF_PASS_LDFLAGS(flags) flags
#endif

#else /* not __GNUC__ */
GNULIB_VAR =

#endif /* not __GNUC__ */
#endif /* not ORDINARY_LINK */

#ifdef ORDINARY_LINK
LD = $(CC)
#else
#ifdef LINKER
LD=LINKER
#else /* not LINKER */
LD=ld
#endif /* not LINKER */
#endif /* not ORDINARY_LINK */

/* A macro which other sections of Makefile can redefine to munge the
314
   flags before they are passed to LD.  This is helpful if you have
315 316 317 318 319 320 321 322 323
   redefined LD to something odd, like "gcc".
   (The YMF prefix is a holdover from the old name "ymakefile".)
  */
#ifndef YMF_PASS_LDFLAGS
#define YMF_PASS_LDFLAGS(flags) flags
#endif

#ifdef MSDOS
#ifdef HAVE_X_WINDOWS
Eli Zaretskii's avatar
Eli Zaretskii committed
324
MSDOS_OBJ = dosfns.o msdos.o xmenu.o
325
#else
326
MSDOS_OBJ = dosfns.o msdos.o w16select.o xmenu.o termcap.o
327 328 329
#endif
#endif

330
#ifdef HAVE_NS
331 332 333 334
ns_appdir=@ns_appdir@/
ns_appbindir=@ns_appbindir@/
ns_appresdir=@ns_appresdir@/
ns_appsrc=@ns_appsrc@
335 336
#endif  /* HAVE_NS */

337 338
#ifdef HAVE_WINDOW_SYSTEM
#ifdef HAVE_X_WINDOWS
339
FONT_DRIVERS=$(FONT_OBJ)
340
#endif /* HAVE_X_WINDOWS */
341 342
#endif /* HAVE_WINDOW_SYSTEM */

343 344
/* lastfile must follow all files
   whose initialized data areas should be dumped as pure by dump-emacs.  */
345
obj=    dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
346
	charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \
347
	cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
348 349 350 351 352
	emacs.o keyboard.o macros.o keymap.o sysdep.o \
	buffer.o filelock.o insdel.o marker.o \
	minibuf.o fileio.o dired.o filemode.o \
	cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
	alloc.o data.o doc.o editfns.o callint.o \
353
	eval.o floatfns.o fns.o font.o print.o lread.o \
Dan Nicolaescu's avatar
Dan Nicolaescu committed
354
	syntax.o @unexec@ bytecode.o \
355 356 357
	process.o callproc.o \
	region-cache.o sound.o atimer.o \
	doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
358
	$(MSDOS_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_DRIVERS)
359 360 361 362

/* Object files used on some machine or other.
   These go in the DOC file on all machines
   in case they are needed there.  */
363
SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
364
  xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
Glenn Morris's avatar
Glenn Morris committed
365
  fontset.o dbusbind.o \
366
  nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
367
  w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
368
  w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_DRIVERS)
369 370 371 372 373 374 375 376 377 378 379 380 381


#ifdef TERMINFO
/* Used to be -ltermcap here.  If your machine needs that,
   define LIBS_TERMCAP in the m/MACHINE.h file.  */
#ifndef LIBS_TERMCAP
#define LIBS_TERMCAP -lcurses
#endif /* LIBS_TERMCAP */
termcapobj = terminfo.o
#else /* ! defined (TERMINFO) */
#ifndef LIBS_TERMCAP
#define LIBS_TERMCAP
#endif /* LIBS_TERMCAP */
382
termcapobj = tparam.o
383 384
#endif /* ! defined (TERMINFO) */

385 386 387
gmallocobj =
rallocobj =
vmlimitobj =
388
#ifndef SYSTEM_MALLOC
389 390 391 392
#ifndef DOUG_LEA_MALLOC
gmallocobj = gmalloc.o
#endif

393
#ifdef REL_ALLOC
394 395
rallocobj = ralloc.o
#endif
Glenn Morris's avatar
Glenn Morris committed
396 397

vmlimitobj = vm-limit.o
Glenn Morris's avatar
Glenn Morris committed
398
#endif /* !SYSTEM_MALLOC */
399

400 401 402 403
## Empty on Cygwin, lastfile.o elsewhere.
PRE_ALLOC_OBJ=@PRE_ALLOC_OBJ@
## lastfile.o vm-limit.o on Cygwin, $vmlimitobj elsewhere.
POST_ALLOC_OBJ=@POST_ALLOC_OBJ@
Glenn Morris's avatar
Glenn Morris committed
404

Glenn Morris's avatar
Glenn Morris committed
405
/* List of object files that make-docfile should not be told about.  */
406 407
otherobj= $(termcapobj) $(PRE_ALLOC_OBJ) $(gmallocobj) $(rallocobj) \
  $(POST_ALLOC_OBJ) $(WIDGET_OBJ) $(LIBOBJS)
408 409 410 411 412

#ifdef HAVE_MOUSE
#define MOUSE_SUPPORT ${lispsource}mouse.elc \
  ${lispsource}select.elc ${lispsource}scroll-bar.elc
#else
413
#define MOUSE_SUPPORT $(GPM_MOUSE_SUPPORT)
414
#endif
415 416 417

#ifdef MSDOS
#define MSDOS_SUPPORT ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
418
 ${lispsource}dos-fns.elc ${lispsource}dos-w32.elc ${lispsource}dos-vars.elc \
419
 ${lispsource}term/internal.elc ${lispsource}term/pc-win.elc
420 421 422 423 424

#else
#define MSDOS_SUPPORT
#endif

425 426
#ifdef HAVE_WINDOW_SYSTEM
#ifdef HAVE_X_WINDOWS
427
#define WINDOW_SUPPORT $(BASE_WINDOW_SUPPORT) $(X_WINDOW_SUPPORT)
428
#else
429
#define WINDOW_SUPPORT $(BASE_WINDOW_SUPPORT)
430 431 432 433 434
#endif
#else
#define WINDOW_SUPPORT
#endif

435
#ifdef WINDOWSNT
436 437
#define WINNT_SUPPORT ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
  ${lispsource}dos-w32.elc ${lispsource}w32-vars.elc \
438 439
  ${lispsource}w32-fns.elc ${lispsource}term/common-win.elc \
  ${lispsource}term/w32-win.elc
440 441 442 443
#else
#define WINNT_SUPPORT
#endif

444 445 446 447 448 449
#ifdef HAVE_WINDOW_SYSTEM
#define TOOLTIP_SUPPORT ${lispsource}tooltip.elc
#else
#define TOOLTIP_SUPPORT
#endif

Glenn Morris's avatar
Glenn Morris committed
450 451 452
/* This is the platform-specific list of Lisp files loaded into the
   dumped Emacs.  It is arranged like this because it is easier to generate
   it semi-mechanically from loadup.el this way.
453 454 455 456 457

   Note that this list should not include lisp files which might not
   be present, like site-load.el and site-init.el; this makefile
   expects them all to be either present or buildable.

Glenn Morris's avatar
Glenn Morris committed
458 459 460
   Files which are loaded unconditionally (i.e., on all platforms) should
   also be in shortlisp.  Files which are loaded conditionally (i.e., only
   on some platforms) should instead be in SOME_MACHINE_LISP.  */
461

Glenn Morris's avatar
Glenn Morris committed
462
/* Place loaddefs.el first, so it gets generated first, since it is on
463 464
   the critical path (relevant in parallel compilations).  */

465
lisp= \
466
	${lispsource}loaddefs.el \
467 468
	${lispsource}abbrev.elc \
	${lispsource}buff-menu.elc \
469
	${lispsource}button.elc \
470
	${lispsource}emacs-lisp/byte-run.elc \
471
	${lispsource}composite.elc \
472
	${lispsource}cus-face.elc \
473
	${lispsource}cus-start.elc \
474
	${lispsource}custom.elc \
475
	${lispsource}emacs-lisp/backquote.elc \
476 477 478 479 480 481 482 483
	${lispsource}emacs-lisp/lisp-mode.elc \
	${lispsource}emacs-lisp/lisp.elc \
	${lispsource}env.elc \
	${lispsource}faces.elc \
	${lispsource}files.elc \
	${lispsource}format.elc \
	${lispsource}facemenu.elc \
	MOUSE_SUPPORT \
484
	${lispsource}emacs-lisp/float-sup.elc \
485
	${lispsource}frame.elc \
486 487 488
	${lispsource}help.elc \
	${lispsource}indent.elc \
	${lispsource}isearch.elc \
489
	${lispsource}rfn-eshadow.elc \
490
	${lispsource}loadup.el \
491
	${lispsource}bindings.elc \
492
	${lispsource}emacs-lisp/map-ynp.elc \
493 494
	${lispsource}menu-bar.elc \
	${lispsource}international/mule.elc \
495
	${lispsource}international/mule-conf.elc \
496 497
	${lispsource}international/mule-cmds.elc \
	${lispsource}international/characters.elc \
Kenichi Handa's avatar
Kenichi Handa committed
498
	${lispsource}international/charprop.el \
499
	${lispsource}case-table.elc \
500 501
	${lispsource}language/chinese.elc \
	${lispsource}language/cyrillic.elc \
502
	${lispsource}language/indian.elc \
503
	${lispsource}language/sinhala.el \
504
	${lispsource}language/english.el \
505 506
	${lispsource}language/ethiopic.elc \
	${lispsource}language/european.elc \
507 508 509 510 511 512 513 514
	${lispsource}language/czech.el \
	${lispsource}language/slovak.el \
	${lispsource}language/romanian.el \
	${lispsource}language/greek.el \
	${lispsource}language/hebrew.el \
	${lispsource}language/japanese.el \
	${lispsource}language/korean.el \
	${lispsource}language/lao.el \
Kenichi Handa's avatar
Kenichi Handa committed
515
	${lispsource}language/cham.el \
516
	${lispsource}language/tai-viet.el \
517
	${lispsource}language/thai.el \
518
	${lispsource}language/tibetan.elc \
519
	${lispsource}language/vietnamese.elc \
520
	${lispsource}language/misc-lang.el \
521 522
	${lispsource}language/utf-8-lang.el \
	${lispsource}language/georgian.el \
523
	${lispsource}language/khmer.el \
524
	${lispsource}language/burmese.el \
525 526 527 528
	${lispsource}paths.el \
	${lispsource}register.elc \
	${lispsource}replace.elc \
	${lispsource}simple.elc \
529
	${lispsource}minibuffer.elc \
530 531 532
	${lispsource}startup.elc \
	${lispsource}subr.elc \
	${lispsource}term/tty-colors.elc \
533
	${lispsource}font-core.elc \
534 535 536
	${lispsource}emacs-lisp/syntax.elc \
	${lispsource}font-lock.elc \
	${lispsource}jit-lock.elc \
537 538 539 540
	${lispsource}textmodes/fill.elc \
	${lispsource}textmodes/page.elc \
	${lispsource}textmodes/paragraphs.elc \
	${lispsource}textmodes/text-mode.elc \
541
	${lispsource}emacs-lisp/timer.elc \
542
	${lispsource}jka-cmpr-hook.elc \
543 544
	${lispsource}vc-hooks.elc \
	${lispsource}ediff-hook.elc \
545
	${lispsource}epa-hook.elc \
546
	TOOLTIP_SUPPORT \
547 548
	MSDOS_SUPPORT \
	WINNT_SUPPORT \
549
	WINDOW_SUPPORT \
550
	${NS_SUPPORT} \
551 552 553 554
	${lispsource}widget.elc \
	${lispsource}window.elc \
	${lispsource}version.el

Glenn Morris's avatar
Glenn Morris committed
555 556 557 558 559
/* List of relative names for those files from $lisp that are loaded
   unconditionally (i.e. on all platforms).  Files from $lisp that
   are only loaded on some platforms should instead be placed in
   SOME_MACHINE_LISP.  The only reason this variable exists is to prevent
   the make-docfile command-line getting too long for some systems.  */
560
shortlisp= \
561
	../lisp/loaddefs.el \
562 563
	../lisp/abbrev.elc \
	../lisp/buff-menu.elc \
564
	../lisp/button.elc \
565
	../lisp/emacs-lisp/byte-run.elc \
566
	../lisp/composite.elc \
567
	../lisp/cus-face.elc \
568
	../lisp/cus-start.elc \
569
	../lisp/custom.elc \
570
	../lisp/emacs-lisp/backquote.elc \
571 572 573 574 575
	../lisp/emacs-lisp/lisp-mode.elc \
	../lisp/emacs-lisp/lisp.elc \
	../lisp/facemenu.elc \
	../lisp/faces.elc \
	../lisp/files.elc \
576
	../lisp/emacs-lisp/float-sup.elc \
577 578 579 580 581
	../lisp/format.elc \
	../lisp/frame.elc \
	../lisp/help.elc \
	../lisp/indent.elc \
	../lisp/isearch.elc \
582
	../lisp/rfn-eshadow.elc \
583
	../lisp/loadup.el \
584
	../lisp/bindings.elc \
585
	../lisp/emacs-lisp/map-ynp.elc \
586 587
	../lisp/env.elc \
	../lisp/international/mule.elc \
588
	../lisp/international/mule-conf.elc \
589 590 591
	../lisp/international/mule-cmds.elc \
	../lisp/international/characters.elc \
	../lisp/case-table.elc \
592 593
	../lisp/language/chinese.elc \
	../lisp/language/cyrillic.elc \
594
	../lisp/language/indian.elc \
595
	../lisp/language/sinhala.el \
596
	../lisp/language/english.el \
597 598
	../lisp/language/ethiopic.elc \
	../lisp/language/european.elc \
599 600 601 602 603 604 605 606
	../lisp/language/czech.el \
	../lisp/language/slovak.el \
	../lisp/language/romanian.el \
	../lisp/language/greek.el \
	../lisp/language/hebrew.el \
	../lisp/language/japanese.el \
	../lisp/language/korean.el \
	../lisp/language/lao.el \
Kenichi Handa's avatar
Kenichi Handa committed
607
	../lisp/language/cham.el \
608
	../lisp/language/tai-viet.el \
609
	../lisp/language/thai.el \
610
	../lisp/language/tibetan.elc \
611
	../lisp/language/vietnamese.elc \
612
	../lisp/language/misc-lang.el \
613 614
	../lisp/language/utf-8-lang.el \
	../lisp/language/georgian.el \
615
	../lisp/language/khmer.el \
616
	../lisp/language/burmese.el \
617
	../lisp/menu-bar.elc \
618 619 620 621
	../lisp/paths.el \
	../lisp/register.elc \
	../lisp/replace.elc \
	../lisp/simple.elc \
622
	../lisp/minibuffer.elc \
623 624 625
	../lisp/startup.elc \
	../lisp/subr.elc \
	../lisp/term/tty-colors.elc \
Colin Walters's avatar
Colin Walters committed
626
	../lisp/font-core.elc \
627 628 629
	../lisp/emacs-lisp/syntax.elc \
	../lisp/font-lock.elc \
	../lisp/jit-lock.elc \
630 631 632 633
	../lisp/textmodes/fill.elc \
	../lisp/textmodes/page.elc \
	../lisp/textmodes/paragraphs.elc \
	../lisp/textmodes/text-mode.elc \
634
	../lisp/emacs-lisp/timer.elc \
635
	../lisp/vc-hooks.elc \
636
	../lisp/jka-cmpr-hook.elc \
637
	../lisp/ediff-hook.elc \
638
	../lisp/epa-hook.elc \
639 640 641 642
	../lisp/widget.elc \
	../lisp/window.elc \
	../lisp/version.el

Glenn Morris's avatar
Glenn Morris committed
643 644
/* Like $shortlisp, but includes only those files from $lisp that are loaded
   conditionally (i.e., only on some platforms).  */
645 646 647 648 649 650 651 652
SOME_MACHINE_LISP = ../lisp/mouse.elc \
  ../lisp/select.elc ../lisp/scroll-bar.elc \
  ../lisp/ls-lisp.elc ../lisp/dos-fns.elc \
  ../lisp/w32-fns.elc ../lisp/dos-w32.elc \
  ../lisp/disp-table.elc ../lisp/dos-vars.elc \
  ../lisp/tooltip.elc ../lisp/image.elc \
  ../lisp/fringe.elc ../lisp/dnd.elc \
  ../lisp/mwheel.elc ../lisp/tool-bar.elc \
653
  ../lisp/x-dnd.elc ../lisp/dynamic-setting.elc \
654 655 656
  ../lisp/international/ccl.elc \
  ../lisp/international/fontset.elc \
  ../lisp/mouse.elc \
657
  ../lisp/term/common-win.elc \
658
  ../lisp/term/x-win.elc \
659
  ../lisp/term/pc-win.elc ../lisp/term/internal.elc \
660 661
  ../lisp/term/ns-win.elc ../lisp/term/w32-win.elc \
  ../lisp/emacs-lisp/easymenu.elc
662 663 664 665 666

/* Construct full set of libraries to be linked.
   Note that SunOS needs -lm to come before -lc; otherwise, you get
   duplicated symbols.  If the standard libraries were compiled
   with GCC, we might need gnulib again after them.  */
667

668 669
LIBES = $(LOADLIBES) $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \
   $(RSVG_LIBS) $(DBUS_LIBS) @LIBGPM@ @LIBRESOLV@ LIBS_SYSTEM LIBS_TERMCAP \
Karel Klíc's avatar
Karel Klíc committed
670
   $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \
671
   @FREETYPE_LIBS@ @FONTCONFIG_LIBS@ @LIBOTF_LIBS@ @M17N_FLT_LIBS@ \
672
   $(GNULIB_VAR) @LIB_MATH@ @LIB_STANDARD@ $(GNULIB_VAR)
673

674
all: emacs${EXEEXT} $(OTHER_FILES)
675

676
emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
677
#ifdef CANNOT_DUMP
678 679
	rm -f emacs${EXEEXT}
	ln temacs${EXEEXT} emacs${EXEEXT}
680
	-EMACSLOADPATH=${lispsource} ./emacs -q -batch -f list-load-path-shadows
681
#else
Jan Djärv's avatar
Jan Djärv committed
682
	LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump
683 684 685
	@: This new Emacs is as functional and more efficient then
	@: bootstrap-emacs, so let us replace it.
	-ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
686
	-./emacs -q -batch -f list-load-path-shadows
687
#endif /* ! defined (CANNOT_DUMP) */
688 689 690 691 692 693 694 695 696

/* We run make-docfile twice because the command line may get too long
   on some systems.  */
/* ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may
   or may not be included in ${obj}, but they are always included in
   ${SOME_MACHINE_OBJECTS}.  Since a file is processed when it is mentioned
   for the first time, this prevents any variation between configurations
   in the contents of the DOC file.
   Likewise for ${SOME_MACHINE_LISP}.  */
697 698 699 700 701 702
/* Most of this Makefile refers to Lisp files via ${lispsource}, so
   we also use ${lisp} rather than ${shortlisp} for the dependency since
   the Makefile uses string equality to decide when we talk about identical
   files.  Apparently we pass ${shortlisp} rather than ${lisp} to make-docfile
   only in order to reduce the command line length.  --Stef  */
${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
703 704 705 706
	-rm -f ${etc}DOC
	${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
	${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}

707 708
${libsrc}make-docfile${EXEEXT}:
	cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile${EXEEXT}
709

710
buildobj.h: Makefile
711
	echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h
712

713
/* FIXME LOCALCPP not defined or mentioned anywhere.  */
714
temacs${EXEEXT}: $(LOCALCPP) $(START_FILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT}
715
#ifdef NS_IMPL_GNUSTEP
716
	$(CC) -rdynamic YMF_PASS_LDFLAGS ( ${TEMACS_LDFLAGS} \
717
	-L@GNUSTEP_SYSTEM_LIBRARIES@ -lgnustep-gui -lgnustep-base \
718
	-lobjc $(CONFIG_SYSTEM_LIBS) -lpthread ) -o temacs \
719
	${obj} ${otherobj} ${LIBES}
720
#else
721
	$(LD) YMF_PASS_LDFLAGS (${STARTFLAGS} ${TEMACS_LDFLAGS}) $(LDFLAGS) \
722
    -o temacs ${START_FILES} ${obj} ${otherobj}  \
723
    ${LIBES}
724
#endif
725

726
prefix-args${EXEEXT}: prefix-args.o $(config_h)
727
	$(CC) $(LDFLAGS) prefix-args.o -o prefix-args
728

729
#if defined (HAVE_X_WINDOWS) && defined (HAVE_X11) && defined (HAVE_MENUS) && ! defined (USE_GTK)
730 731 732 733 734

/* We use stamp-xmenu with these two deps
   to both ensure that lwlib gets remade based on its dependencies
   in its own makefile,
   and remake temacs if lwlib gets changed by this.  */
Juanma Barranquero's avatar
Juanma Barranquero committed
735
stamp-oldxmenu: ${OLDXMENU} ../src/$(OLDXMENU)
736 737 738 739
	touch stamp-oldxmenu
/* Supply an ordering for parallel make.  */
../src/$(OLDXMENU): ${OLDXMENU}

740 741 742
#ifdef USE_X_TOOLKIT
$(OLDXMENU): really-lwlib

743
really-lwlib:
Kenichi Handa's avatar
Kenichi Handa committed
744
	cd ${lwlibdir}; ${MAKE} ${MFLAGS} \
Dan Nicolaescu's avatar
Dan Nicolaescu committed
745
    CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
746 747 748 749 750 751
	@true  /* make -t should not create really-lwlib.  */
.PHONY: really-lwlib
#else /* not USE_X_TOOLKIT */
$(OLDXMENU): really-oldXMenu

really-oldXMenu:
752
	cd ${oldXMenudir}; ${MAKE} ${MFLAGS} \
Dan Nicolaescu's avatar
Dan Nicolaescu committed
753
    CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
754 755 756
	@true  /* make -t should not create really-oldXMenu.  */
.PHONY: really-oldXMenu
#endif /* not USE_X_TOOLKIT */
757
#else /* not (HAVE_X_WINDOWS && HAVE_X11 && HAVE_MENUS && ! USE_GTK) */
758

759
/* We don''t really need this, but satisfy the dependency.  */
760 761
stamp-oldxmenu:
	touch stamp-oldxmenu
762
#endif /* not (HAVE_X_WINDOWS && HAVE_X11 && HAVE_MENUS && ! USE_GTK) */
763 764 765 766 767 768 769 770 771 772 773

../config.status:: epaths.in
	@echo "The file epaths.h needs to be set up from epaths.in."
	@echo "Please run the `configure' script again."
	exit 1

../config.status:: config.in
	@echo "The file config.h needs to be set up from config.in."
	@echo "Please run the `configure' script again."
	exit 1

774
ecrt0.o: ecrt0.c $(config_h)
775 776 777
#ifdef AUTO_DEPEND
	@-test -d deps || mkdir deps
#endif
778
	$(CC) -c $(ALL_CFLAGS) ${srcdir}/ecrt0.c
779 780 781
doc.o: buildobj.h

#ifndef AUTO_DEPEND
782

783 784 785 786 787 788 789 790
/* FIXME some of these dependencies are platform-specific.
Eg callproc.c only depends on w32.h for WINDOWSNT builds.
One way to fix this would be to replace w32.h (etc) by $(W32_H),
a variable set by configure.  Does not seem worth the trouble.

nsgui.h: In fact, every .o file depends directly or indirectly on
dispextern.h and hence nsgui.h under NS.  But the ones that actually
use stuff there are more limited.  */
791 792
atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \
 $(config_h)
793
bidi.o: bidi.c buffer.h character.h dispextern.h lisp.h $(config_h)
794
buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \
795 796
   $(INTERVALS_H) blockinput.h atimer.h systime.h character.h \
   indent.h keyboard.h coding.h keymap.h frame.h lisp.h $(config_h)
797
callint.o: callint.c window.h commands.h buffer.h keymap.h \
798
   keyboard.h dispextern.h systime.h coding.h composite.h lisp.h $(config_h)
799
callproc.o: callproc.c epaths.h buffer.h commands.h lisp.h $(config_h) \
Kenichi Handa's avatar
Kenichi Handa committed
800
	process.h systty.h syssignal.h character.h coding.h ccl.h msdos.h \
801 802
        composite.h w32.h blockinput.h atimer.h systime.h frame.h termhooks.h \
        buffer.h
803
casefiddle.o: casefiddle.c syntax.h commands.h buffer.h character.h \
804 805
   composite.h keymap.h lisp.h $(config_h)
casetab.o: casetab.c buffer.h character.h lisp.h $(config_h)
806
category.o: category.c category.h buffer.h charset.h keymap.h	\
807
	character.h lisp.h $(config_h)
808
ccl.o: ccl.c ccl.h charset.h character.h coding.h composite.h lisp.h $(config_h)
809
character.o: character.c character.h buffer.h charset.h composite.h disptab.h \
810
   lisp.h $(config_h)
811
charset.o: charset.c charset.h character.h buffer.h coding.h composite.h \
812
   disptab.h lisp.h $(config_h)
813 814
chartab.o: charset.h character.h ccl.h lisp.h $(config_h)
coding.o: coding.c coding.h ccl.h buffer.h character.h charset.h composite.h \
815
	window.h dispextern.h frame.h termhooks.h lisp.h $(config_h)
816
cm.o: cm.c frame.h cm.h termhooks.h termchar.h dispextern.h lisp.h $(config_h)
817
cmds.o: cmds.c syntax.h buffer.h character.h commands.h window.h lisp.h $(config_h) \
818 819
	msdos.h dispextern.h keyboard.h keymap.h systime.h coding.h frame.h \
        composite.h
820
pre-crt0.o: pre-crt0.c
821 822
dbusbind.o: dbusbind.c termhooks.h frame.h keyboard.h lisp.h $(config_h)
dired.o: dired.c commands.h buffer.h lisp.h $(config_h) character.h charset.h \
823 824 825
   coding.h regex.h systime.h blockinput.h atimer.h composite.h
dispnew.o: dispnew.c systime.h commands.h process.h frame.h coding.h \
   window.h buffer.h termchar.h termopts.h termhooks.h cm.h \
826
   disptab.h indent.h $(INTERVALS_H) nsgui.h \
827
   xterm.h blockinput.h atimer.h character.h msdos.h keyboard.h \
828
   syssignal.h lisp.h $(config_h)
829 830
doc.o: doc.c lisp.h $(config_h) epaths.h buffer.h keyboard.h keymap.h \
   character.h systime.h coding.h composite.h
831
doprnt.o: doprnt.c character.h lisp.h $(config_h)
832
dosfns.o: buffer.h termchar.h termhooks.h frame.h blockinput.h window.h \
833
   msdos.h dosfns.h dispextern.h charset.h coding.h atimer.h systime.h \
834
   lisp.h $(config_h)
835
editfns.o: editfns.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
836
   coding.h frame.h blockinput.h atimer.h lisp.h $(config_h)
837
emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \
838
   termhooks.h buffer.h atimer.h systime.h $(INTERVALS_H) lisp.h $(config_h) \
839
   window.h dispextern.h keyboard.h keymap.h frame.h coding.h
840
fileio.o: fileio.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
841 842 843 844
   coding.h msdos.h blockinput.h atimer.h lisp.h $(config_h) frame.h commands.h
filelock.o: filelock.c buffer.h character.h coding.h systime.h composite.h \
   lisp.h $(config_h)
filemode.o: filemode.c $(config_h)
845
frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
Miles Bader's avatar
Miles Bader committed
846
   blockinput.h atimer.h systime.h buffer.h character.h fontset.h font.h    \
847 848 849
   msdos.h dosfns.h dispextern.h w32term.h nsgui.h termchar.h coding.h \
   composite.h lisp.h $(config_h) termhooks.h ccl.h
fringe.o: fringe.c dispextern.h nsgui.h frame.h window.h buffer.h termhooks.h \
850
   blockinput.h atimer.h systime.h lisp.h $(config_h)
851
font.o: font.c dispextern.h frame.h window.h ccl.h character.h charset.h \
852
   font.h lisp.h $(config_h) buffer.h composite.h fontset.h xterm.h nsgui.h
853
ftfont.o: dispextern.h frame.h character.h charset.h composite.h font.h \
854 855 856 857
   lisp.h $(config_h) blockinput.h atimer.h systime.h coding.h fontset.h \
   ccl.h ftfont.h
fontset.o: fontset.c fontset.h ccl.h buffer.h character.h \
   charset.h frame.h keyboard.h termhooks.h font.h lisp.h $(config_h) \
858 859
   blockinput.h atimer.h systime.h coding.h $(INTERVALS_H) nsgui.h \
   window.h xterm.h
860
getloadavg.o: getloadavg.c $(config_h)
861
gtkutil.o: gtkutil.c gtkutil.h xterm.h lisp.h frame.h lisp.h $(config_h) \
Dan Nicolaescu's avatar
Dan Nicolaescu committed
862
  blockinput.h window.h atimer.h systime.h termhooks.h keyboard.h \
863
  charset.h coding.h syssignal.h dispextern.h composite.h
Kenichi Handa's avatar
Kenichi Handa committed
864
image.o: image.c frame.h window.h dispextern.h blockinput.h atimer.h \
865 866
   systime.h xterm.h w32term.h w32gui.h font.h epaths.h character.h coding.h \
   nsterm.h nsgui.h lisp.h $(config_h) composite.h termhooks.h ccl.h
867
indent.o: indent.c frame.h window.h indent.h buffer.h lisp.h $(config_h) termchar.h \
868 869
   termopts.h disptab.h region-cache.h character.h category.h \
   keyboard.h systime.h coding.h $(INTERVALS_H)
870
insdel.o: insdel.c window.h buffer.h $(INTERVALS_H) blockinput.h character.h \
871
   dispextern.h atimer.h systime.h region-cache.h lisp.h $(config_h)
872
keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \
873
   commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \
874
   systime.h syntax.h $(INTERVALS_H) blockinput.h atimer.h composite.h \
875
   xterm.h puresize.h msdos.h keymap.h w32term.h nsterm.h nsgui.h coding.h \
876
   lisp.h $(config_h)
877
keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \
878
   atimer.h systime.h puresize.h character.h charset.h $(INTERVALS_H) keymap.h window.h \
879
   coding.h frame.h lisp.h $(config_h)
880
lastfile.o: lastfile.c $(config_h)
881
macros.o: macros.c window.h buffer.h commands.h macros.h keyboard.h \
882
	dispextern.h lisp.h $(config_h) systime.h coding.h composite.h
883
gmalloc.o: gmalloc.c $(config_h)
884 885 886
ralloc.o: ralloc.c lisp.h $(config_h)
vm-limit.o: vm-limit.c mem-limits.h lisp.h $(config_h)
marker.o: marker.c buffer.h character.h lisp.h $(config_h)
887
md5.o: md5.c md5.h $(config_h)
888
minibuf.o: minibuf.c syntax.h frame.h window.h keyboard.h systime.h \
889
   buffer.h commands.h character.h msdos.h $(INTERVALS_H) keymap.h \
890
   termhooks.h lisp.h $(config_h) coding.h
891 892
mktime.o: mktime.c $(config_h)
msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \
893
   termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \
894
   keyboard.h $(INTERVALS_H) buffer.h commands.h blockinput.h atimer.h lisp.h $(config_h)
895
nsfns.o: nsfns.m charset.h nsterm.h nsgui.h frame.h window.h buffer.h \
896
  dispextern.h fontset.h $(INTERVALS_H) keyboard.h blockinput.h \
897 898 899
  atimer.h systime.h epaths.h termhooks.h coding.h systime.h lisp.h $(config_h)
nsfont.o: nsterm.h dispextern.h frame.h lisp.h lisp.h $(config_h)
nsimage.o: nsimage.m nsterm.h lisp.h $(config_h)
900 901
nsmenu.o: nsmenu.m termhooks.h frame.h window.h dispextern.h \
  nsgui.h keyboard.h blockinput.h atimer.h systime.h buffer.h \
902
  nsterm.h lisp.h $(config_h)