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
/* This test needs to say in cpp for the time being, since s/msdos.h
   defines HAVE_MENUS, and does not use the configure script.  */
245 246 247
#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
324 325
MSDOS_OBJ = dosfns.o msdos.o
#define LIBS_SYSTEM -lxext -lsys
326
#else
327
MSDOS_OBJ = dosfns.o msdos.o w16select.o termcap.o
328 329 330
#endif
#endif

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

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

344 345
/* lastfile must follow all files
   whose initialized data areas should be dumped as pure by dump-emacs.  */
346
obj=    dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
347
	charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \
348
	cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
349 350 351 352 353
	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 \
354
	eval.o floatfns.o fns.o font.o print.o lread.o \
Dan Nicolaescu's avatar
Dan Nicolaescu committed
355
	syntax.o @unexec@ bytecode.o \
356 357 358
	process.o callproc.o \
	region-cache.o sound.o atimer.o \
	doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
359
	$(MSDOS_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_DRIVERS)
360 361 362 363

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


#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 */
383
termcapobj = tparam.o
384 385
#endif /* ! defined (TERMINFO) */

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

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

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

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

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

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

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

#else
#define MSDOS_SUPPORT
#endif

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

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

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

Glenn Morris's avatar
Glenn Morris committed
451 452 453
/* 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.
454 455 456 457 458

   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
459 460 461
   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.  */
462

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

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

Glenn Morris's avatar
Glenn Morris committed
556 557 558 559 560
/* 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.  */
561
shortlisp= \
562
	../lisp/loaddefs.el \
563 564
	../lisp/abbrev.elc \
	../lisp/buff-menu.elc \
565
	../lisp/button.elc \
566
	../lisp/emacs-lisp/byte-run.elc \
567
	../lisp/composite.elc \
568
	../lisp/cus-face.elc \
569
	../lisp/cus-start.elc \
570
	../lisp/custom.elc \
571
	../lisp/emacs-lisp/backquote.elc \
572 573 574 575 576
	../lisp/emacs-lisp/lisp-mode.elc \
	../lisp/emacs-lisp/lisp.elc \
	../lisp/facemenu.elc \
	../lisp/faces.elc \
	../lisp/files.elc \
577
	../lisp/emacs-lisp/float-sup.elc \
578 579 580 581 582
	../lisp/format.elc \
	../lisp/frame.elc \
	../lisp/help.elc \
	../lisp/indent.elc \
	../lisp/isearch.elc \
583
	../lisp/rfn-eshadow.elc \
584
	../lisp/loadup.el \
585
	../lisp/bindings.elc \
586
	../lisp/emacs-lisp/map-ynp.elc \
587 588
	../lisp/env.elc \
	../lisp/international/mule.elc \
589
	../lisp/international/mule-conf.elc \
590 591 592
	../lisp/international/mule-cmds.elc \
	../lisp/international/characters.elc \
	../lisp/case-table.elc \
593 594
	../lisp/language/chinese.elc \
	../lisp/language/cyrillic.elc \
595
	../lisp/language/indian.elc \
596
	../lisp/language/sinhala.el \
597
	../lisp/language/english.el \
598 599
	../lisp/language/ethiopic.elc \
	../lisp/language/european.elc \
600 601 602 603 604 605 606 607
	../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
608
	../lisp/language/cham.el \
609
	../lisp/language/tai-viet.el \
610
	../lisp/language/thai.el \
611
	../lisp/language/tibetan.elc \
612
	../lisp/language/vietnamese.elc \
613
	../lisp/language/misc-lang.el \
614 615
	../lisp/language/utf-8-lang.el \
	../lisp/language/georgian.el \
616
	../lisp/language/khmer.el \
617
	../lisp/language/burmese.el \
618
	../lisp/menu-bar.elc \
619 620 621 622
	../lisp/paths.el \
	../lisp/register.elc \
	../lisp/replace.elc \
	../lisp/simple.elc \
623
	../lisp/minibuffer.elc \
624 625 626
	../lisp/startup.elc \
	../lisp/subr.elc \
	../lisp/term/tty-colors.elc \
Colin Walters's avatar
Colin Walters committed
627
	../lisp/font-core.elc \
628 629 630
	../lisp/emacs-lisp/syntax.elc \
	../lisp/font-lock.elc \
	../lisp/jit-lock.elc \
631 632 633 634
	../lisp/textmodes/fill.elc \
	../lisp/textmodes/page.elc \
	../lisp/textmodes/paragraphs.elc \
	../lisp/textmodes/text-mode.elc \
635
	../lisp/emacs-lisp/timer.elc \
636
	../lisp/vc-hooks.elc \
637
	../lisp/jka-cmpr-hook.elc \
638
	../lisp/ediff-hook.elc \
639
	../lisp/epa-hook.elc \
640 641 642 643
	../lisp/widget.elc \
	../lisp/window.elc \
	../lisp/version.el

Glenn Morris's avatar
Glenn Morris committed
644 645
/* Like $shortlisp, but includes only those files from $lisp that are loaded
   conditionally (i.e., only on some platforms).  */
646 647 648 649 650 651 652 653
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 \
654
  ../lisp/x-dnd.elc ../lisp/dynamic-setting.elc \
655 656 657
  ../lisp/international/ccl.elc \
  ../lisp/international/fontset.elc \
  ../lisp/mouse.elc \
658
  ../lisp/term/common-win.elc \
659
  ../lisp/term/x-win.elc \
660
  ../lisp/term/pc-win.elc ../lisp/term/internal.elc \
661 662
  ../lisp/term/ns-win.elc ../lisp/term/w32-win.elc \
  ../lisp/emacs-lisp/easymenu.elc
663 664 665 666 667

/* 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.  */
668

669 670
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
671
   $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \
672
   @FREETYPE_LIBS@ @FONTCONFIG_LIBS@ @LIBOTF_LIBS@ @M17N_FLT_LIBS@ \
673
   $(GNULIB_VAR) @LIB_MATH@ @LIB_STANDARD@ $(GNULIB_VAR)
674

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

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

/* 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}.  */
698 699 700 701 702 703
/* 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}
704 705 706 707
	-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}

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

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

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

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

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

/* 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
736
stamp-oldxmenu: ${OLDXMENU} ../src/$(OLDXMENU)
737 738 739 740
	touch stamp-oldxmenu
/* Supply an ordering for parallel make.  */
../src/$(OLDXMENU): ${OLDXMENU}

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

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

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

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

../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

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

#ifndef AUTO_DEPEND
783

784 785 786 787 788 789 790 791
/* 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.  */
792 793
atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \
 $(config_h)
794
bidi.o: bidi.c buffer.h character.h dispextern.h lisp.h $(config_h)
795
buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \
796 797
   $(INTERVALS_H) blockinput.h atimer.h systime.h character.h \
   indent.h keyboard.h coding.h keymap.h frame.h lisp.h $(config_h)
798
callint.o: callint.c window.h commands.h buffer.h keymap.h \
799
   keyboard.h dispextern.h systime.h coding.h composite.h lisp.h $(config_h)
800
callproc.o: callproc.c epaths.h buffer.h commands.h lisp.h $(config_h) \
Kenichi Handa's avatar
Kenichi Handa committed
801
	process.h systty.h syssignal.h character.h coding.h ccl.h msdos.h \
802 803
        composite.h w32.h blockinput.h atimer.h systime.h frame.h termhooks.h \
        buffer.h
804
casefiddle.o: casefiddle.c syntax.h commands.h buffer.h character.h \
805 806
   composite.h keymap.h lisp.h $(config_h)
casetab.o: casetab.c buffer.h character.h lisp.h $(config_h)
807
category.o: category.c category.h buffer.h charset.h keymap.h	\
808
	character.h lisp.h $(config_h)
809
ccl.o: ccl.c ccl.h charset.h character.h coding.h composite.h lisp.h $(config_h)
810
character.o: character.c character.h buffer.h charset.h composite.h disptab.h \
811
   lisp.h $(config_h)
812
charset.o: charset.c charset.h character.h buffer.h coding.h composite.h \
813
   disptab.h lisp.h $(config_h)
814 815
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 \
816
	window.h dispextern.h frame.h termhooks.h lisp.h $(config_h)
817
cm.o: cm.c frame.h cm.h termhooks.h termchar.h dispextern.h lisp.h $(config_h)
818
cmds.o: cmds.c syntax.h buffer.h character.h commands.h window.h lisp.h $(config_h) \
819 820
	msdos.h dispextern.h keyboard.h keymap.h systime.h coding.h frame.h \
        composite.h
821
pre-crt0.o: pre-crt0.c
822 823
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 \
824 825 826
   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 \
827
   disptab.h indent.h $(INTERVALS_H) nsgui.h \
828
   xterm.h blockinput.h atimer.h character.h msdos.h keyboard.h \
829
   syssignal.h lisp.h $(config_h)
830 831
doc.o: doc.c lisp.h $(config_h) epaths.h buffer.h keyboard.h keymap.h \
   character.h systime.h coding.h composite.h
832
doprnt.o: doprnt.c character.h lisp.h $(config_h)
833
dosfns.o: buffer.h termchar.h termhooks.h frame.h blockinput.h window.h \
834
   msdos.h dosfns.h dispextern.h charset.h coding.h atimer.h systime.h \
835
   lisp.h $(config_h)
836
editfns.o: editfns.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
837
   coding.h frame.h blockinput.h atimer.h lisp.h $(config_h)
838
emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \
839
   termhooks.h buffer.h atimer.h systime.h $(INTERVALS_H) lisp.h $(config_h) \
840
   window.h dispextern.h keyboard.h keymap.h frame.h coding.h
841
fileio.o: fileio.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
842 843 844 845
   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)
846
frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
Miles Bader's avatar
Miles Bader committed
847
   blockinput.h atimer.h systime.h buffer.h character.h fontset.h font.h    \
848 849 850
   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 \
851
   blockinput.h atimer.h systime.h lisp.h $(config_h)
852
font.o: font.c dispextern.h frame.h window.h ccl.h character.h charset.h \
853
   font.h lisp.h $(config_h) buffer.h composite.h fontset.h xterm.h nsgui.h
854
ftfont.o: dispextern.h frame.h character.h charset.h composite.h font.h \
855 856 857 858
   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) \
859 860
   blockinput.h atimer.h systime.h coding.h $(INTERVALS_H) nsgui.h \
   window.h xterm.h
861
getloadavg.o: getloadavg.c $(config_h)
862
gtkutil.o: gtkutil.c gtkutil.h xterm.h lisp.h frame.h lisp.h $(config_h) \
Dan Nicolaescu's avatar
Dan Nicolaescu committed
863
  blockinput.h window.h atimer.h systime.h termhooks.h keyboard.h \
864
  charset.h coding.h syssignal.h dispextern.h composite.h
Kenichi Handa's avatar
Kenichi Handa committed
865
image.o: image.c frame.h window.h dispextern.h blockinput.h atimer.h \
866 867
   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
868
indent.o: indent.c frame.h window.h indent.h buffer.h lisp.h $(config_h) termchar.h \
869 870
   termopts.h disptab.h region-cache.h character.h category.h \
   keyboard.h systime.h coding.h $(INTERVALS_H)
871
insdel.o: insdel.c window.h buffer.h $(INTERVALS_H) blockinput.h character.h \
872
   dispextern.h atimer.h systime.h region-cache.h lisp.h $(config_h)
873
keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \
874
   commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \
875
   systime.h syntax.h $(INTERVALS_H) blockinput.h atimer.h composite.h \
876
   xterm.h puresize.h msdos.h keymap.h w32term.h nsterm.h nsgui.h coding.h \
877
   lisp.h $(config_h)
878
keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \
879
   atimer.h systime.h puresize.h character.h charset.h $(INTERVALS_H) keymap.h window.h \
880
   coding.h frame.h lisp.h $(config_h)
881
lastfile.o: lastfile.c $(config_h)
882
macros.o: macros.c window.h buffer.h commands.h macros.h keyboard.h \
883
	dispextern.h lisp.h $(config_h) systime.h coding.h composite.h
884
gmalloc.o: gmalloc.c $(config_h)
885 886 887
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)
888
md5.o: md5.c md5.h $(config_h)
889
minibuf.o: minibuf.c syntax.h frame.h window.h keyboard.h systime.h \
890
   buffer.h commands.h character.h msdos.h $(INTERVALS_H) keymap.h \
891
   termhooks.h lisp.h $(config_h) coding.h
892 893
mktime.o: mktime.c $(config_h)
msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \
894
   termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \
895
   keyboard.h $(INTERVALS_H) buffer.h commands.h blockinput.h atimer.h lisp.h $(config_h)
896
nsfns.o: nsfns.m charset.h nsterm.h nsgui.h frame.h window.h buffer.h \
897
  dispextern.h fontset.h $(INTERVALS_H) keyboard.h blockinput.h \
898 899 900
  atimer.h systime.h epaths.h termhooks.h coding.h systime.h lisp.h $(config_h)
nsfont.o