|
|
1.1 root 1: /* Makefile for GNU Emacs.
2: Copyright (C) 1985, 1987 Free Software Foundation, Inc.
3:
4: This file is part of GNU Emacs.
5:
6: GNU Emacs is distributed in the hope that it will be useful,
7: but WITHOUT ANY WARRANTY. No author or distributor
8: accepts responsibility to anyone for the consequences of using it
9: or for whether it serves any particular purpose or works at all,
10: unless he says so in writing. Refer to the GNU Emacs General Public
11: License for full details.
12:
13: Everyone is granted permission to copy, modify and redistribute
14: GNU Emacs, but only under the conditions described in the
15: GNU Emacs General Public License. A copy of this license is
16: supposed to have been given to you along with GNU Emacs so you
17: can know your rights and responsibilities. It should be in a
18: file named COPYING. Among other things, the copyright notice
19: and this notice must be preserved on all copies. */
20:
21:
22: lispdir = ../lisp/
23: etcdir = ../etc/
24: shortnamesdir = ../shortnames/
25: cppdir = ../cpp/
26:
27: #define NO_SHORTNAMES
28: #include "config.h"
29:
30: /* Some machines don't find the standard C libraries in the usual place. */
31: #ifndef LIB_STANDARD
32: #define LIB_STANDARD -lc
33: #endif
34:
35: /* Unless inhibited or changed, use -lg to link for debugging. */
36: #ifndef LIBS_DEBUG
37: #define LIBS_DEBUG -lg
38: #endif
39:
40: /* Some s- files define this to request special libraries. */
41: #ifndef LIBS_SYSTEM
42: #define LIBS_SYSTEM
43: #endif
44:
45: /* Some m- files define this to request special libraries. */
46: #ifndef LIBS_MACHINE
47: #define LIBS_MACHINE
48: #endif
49:
50: /* Some s- files define this to request special switches in ld. */
51: #ifndef LD_SWITCH_SYSTEM
52: #if defined (BSD) && !defined (COFF)
53: #define LD_SWITCH_SYSTEM -X
54: #else
55: #define LD_SWITCH_SYSTEM
56: #endif /* COFF, or not BSD */
57: #endif
58:
59: /* Some m- files define this to request special switches in ld. */
60: #ifndef LD_SWITCH_MACHINE
61: #define LD_SWITCH_MACHINE
62: #endif
63:
64: /* Some m- files define this to request special switches in cc. */
65: #ifndef C_SWITCH_MACHINE
66: #define C_SWITCH_MACHINE
67: #endif
68:
69: #ifndef START_FILES
70: #ifdef NO_REMAP
71: #define START_FILES pre-crt0.o /lib/crt0.o
72: #else
73: #define START_FILES crt0.o
74: #endif
75: #endif /* have START_FILES */
76: STARTFILES = START_FILES
77:
78: /* Unless inhibited or changed, use -g to compile for debugging. */
79: #ifndef C_DEBUG_SWITCH
80: #define C_DEBUG_SWITCH -g
81: #endif
82:
83: /* If user wants to optimize, this is how. */
84: #ifndef C_OPTIMIZE_SWITCH
85: #define C_OPTIMIZE_SWITCH -O
86: #endif
87:
88: /* Specify address for ld to start loading at,
89: if requested by configuration. */
90:
91: #ifdef LD_TEXT_START_ADDR
92: STARTFLAGS = -T LD_TEXT_START_ADDR -e LD_TEXT_START_ADDR
93: #endif
94:
95: LDFLAGS = LD_SWITCH_SYSTEM LD_SWITCH_MACHINE
96:
97: /* Figure out whether the system cpp can handle long names.
98: Do it by testing it right now.
99: If it loses, arrange to use the GNU cpp. */
100:
101: #define LONGNAMEBBBFOOX
102: #ifdef LONGNAMEBBBARFOOX
103: /* Installed cpp fails to distinguish those names! */
104: /* Arrange to compile the GNU cpp later on */
105: #define NEED_CPP
106: /* Cause cc to invoke the cpp that comes with Emacs,
107: which will be in a file named localcpp. */
108: MYCPPFLAG= -Blocal
109: /* LOCALCPP is the local one or nothing.
110: CPP is the local one or the standardone. */
111: LOCALCPP= localcpp
112: #endif /* NEED_CPP */
113:
114: #ifdef SHORTNAMES
115: SHORT= shortnames
116: #endif /* SHORTNAMES */
117:
118:
119: #ifdef X11
120: CFLAGS= ${INCLUDES} C_DEBUG_SWITCH -Demacs $(MYCPPFLAG) C_SWITCH_MACHINE
121: #else
122: CFLAGS= C_DEBUG_SWITCH -Demacs $(MYCPPFLAG) C_SWITCH_MACHINE
123: #endif
124:
125: /* DO NOT use -R. There is a special hack described in lastfile.c
126: which is used instead. Some initialized data areas are modified
127: at initial startup, then labeled as part of the text area when
128: Emacs is dumped for the first time, and never changed again. */
129:
130: /* You may replace C_DEBUG_SWITCH with C_OPTIMIZE_SWITCH
131: if you don't believe in debugging. */
132:
133: /* -Demacs is needed to make some files produce the
134: correct version for use in Emacs. */
135:
136:
137: #ifdef HAVE_X_WINDOWS
138: #ifdef X11
139: XOBJ= xterm.o xfns.o xmenu.o
140: LIBX= ${OLDXMENULIB} ${XLIB}
141: #else
142: XOBJ= xterm_10.o xfns_10.o xmenu_10.o
143: LIBX= /usr/lib/X10/libXMenu.a /usr/lib/X10/libX.a
144: #endif /* X11 */
145: #endif /* HAVE_X_WINDOWS */
146:
147: #ifdef MAINTAIN_ENVIRONMENT
148: environobj = environ.o
149: #endif MAINTAIN_ENVIRONMENT
150:
151: /* lastfile must follow all files
152: whose initialized data areas should be dumped as pure by dump-emacs. */
153: obj= dispnew.o scroll.o xdisp.o window.o \
154: term.o cm.o keyboard.o $(XOBJ) \
155: emacs.o macros.o keymap.o sysdep.o \
156: buffer.o filelock.o insdel.o marker.o \
157: minibuf.o fileio.o dired.o filemode.o \
158: cmds.o casefiddle.o indent.o search.o regex.o undo.o \
159: alloc.o data.o doc.o editfns.o callint.o \
160: eval.o fns.o print.o lread.o \
161: abbrev.o syntax.o unexec.o mocklisp.o bytecode.o \
162: process.o callproc.o $(environobj) \
163: doprnt.o
164:
165: #ifdef TERMINFO
166: /* Used to be -ltermcap here. If your machine needs that,
167: define LIBS_TERMCAP in the m- file. */
168: #ifndef LIBS_TERMCAP
169: #define LIBS_TERMCAP -lcurses
170: #endif
171: termcapobj = terminfo.o
172: #else
173: #ifndef LIBS_TERMCAP
174: #define LIBS_TERMCAP
175: termcapobj = termcap.o tparam.o
176: #else
177: termcapobj = tparam.o
178: #endif
179: #endif
180:
181: #ifndef SYSTEM_MALLOC
182: #ifdef HAVE_ALLOCA
183: mallocobj = malloc.o
184: #else
185: mallocobj = alloca.o malloc.o
186: #endif
187: #endif
188:
189: /* define otherobj as list of object files that make-docfile
190: should not be told about. */
191: otherobj= $(termcapobj) lastfile.o $(mallocobj)
192:
193: /* List of Lisp files loaded into the dumped Emacs. */
194: lisp= ${lispdir}simple.elc ${lispdir}help.elc \
195: ${lispdir}files.elc ${lispdir}window.elc \
196: ${lispdir}indent.elc ${lispdir}loaddefs.el ${lispdir}paths.el \
197: ${lispdir}startup.elc ${lispdir}lisp.elc \
198: ${lispdir}page.elc ${lispdir}register.elc \
199: ${lispdir}paragraphs.elc ${lispdir}lisp-mode.elc \
200: ${lispdir}text-mode.elc ${lispdir}fill.elc \
201: ${lispdir}c-mode.elc ${lispdir}isearch.elc \
202: ${lispdir}replace.elc ${lispdir}abbrev.elc \
203: ${lispdir}buff-menu.elc ${lispdir}subr.elc \
204: ${lispdir}site-load.elc
205:
206: /* just to be sure the sh is used */
207: SHELL=/bin/sh
208:
209: /* Construct full set of libraries to be linked. */
210: LIBES = LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP $(LIBX) LIBS_DEBUG LIB_STANDARD
211:
212: /* Enable recompilation of certain other files depending on system type. */
213:
214: #ifndef OTHER_FILES
215: #define OTHER_FILES
216: #endif
217:
218: all: xemacs OTHER_FILES
219:
220: xemacs: temacs ${etcdir}DOC ${lisp}
221: #ifdef CANNOT_DUMP
222: mv temacs xemacs
223: #else
224: cp ../lisp/version_/**/BLDTYPE.el ../lisp/version.el
225: ./temacs -batch -l inc-vers
226: cp ../lisp/version.el ../lisp/version_/**/BLDTYPE.el
227: ./temacs -batch -l loadup.el dump
228: #endif /* not CANNOT_DUMP */
229:
230: ${etcdir}DOC: ${etcdir}make-docfile ${obj} ${lisp}
231: rm -f ${etcdir}DOC
232: ${etcdir}make-docfile ${obj} ${lisp} ${lispdir}version.el > ${etcdir}DOC
233:
234: ${etcdir}make-docfile:
235: cd ${etcdir}; make ${MFLAGS} make-docfile
236:
237: #if defined(sequent) /* for parallel make */
238: PARALLEL=&
239: #endif /* sequent */
240:
241: temacs: $(PARALLEL) $(LOCALCPP) $(SHORT) $(STARTFILES) ${obj} ${otherobj}
242: ld ${STARTFLAGS} ${LDFLAGS} -o temacs ${STARTFILES} ${obj} ${otherobj} ${LIBES}
243:
244: /* These are needed for C compilation, on the systems that need them */
245: #ifdef NEED_CPP
246: CPP = ./localcpp
247: localcpp:
248: cd ${cppdir}; make ${MFLAGS} EMACS=-DEMACS
249: ln ${cppdir}cpp localcpp /* Name where CFLAGS will refer to it */
250: /* cc appears to be cretinous and require all of these to exist
251: if -B is specified -- we can't use one local pass and let the
252: others be the standard ones. What a loser.
253: We can't even use ln, since they are probably
254: on different disks. */
255: cp /lib/ccom localccom
256: -cp /lib/optim localoptim
257: -cp /lib/c2 localc2
258: cp /bin/as localas
259: #else /* not NEED_CPP */
260: CPP = cc -E
261: #endif /* need NEED_CPP */
262:
263: #ifdef SHORTNAMES
264: shortnames:
265: cd ${shortnamesdir}; make ${MFLAGS}
266: #endif /* SHORTNAMES */
267:
268: paths.h: paths.h-dist
269: @sh -c "if test -r $@; then echo $? is newer than $@; exit 1;\
270: else exit 0; fi"
271: cp $? $@
272:
273: config.h: config.h-dist
274: @sh -c "if test -r $@; then echo $? is newer than $@; exit 1;\
275: else exit 0; fi"
276: cp $? $@
277:
278: /* Some machines have alloca built-in.
279: They should define HAVE_ALLOCA, or may just let alloca.s
280: be used but generate no code.
281: Some have it written in assembler in alloca.s.
282: Some use the C version in alloca.c (these define C_ALLOCA in config.h).
283: */
284:
285: #ifdef C_ALLOCA
286: alloca.o : alloca.c
287: #else
288: #ifndef HAVE_ALLOCA
289: alloca.o : alloca.s config.h
290: /* $(CPP) is cc -E, which may get confused by filenames
291: that do not end in .c. So copy file to a safe name. */
292: cp alloca.s allocatem.c
293: $(CPP) allocatem.c | \
294: /* remove any ^L, blank lines, and preprocessor comments,
295: since some assemblers barf on them */
296: sed -e 's///' -e 's/^#.*//' | \
297: sed -n -e '/^..*$$/p' > alloca.t
298: as -o alloca.o alloca.t
299: rm alloca.t allocatem.c
300: #endif /* HAVE_ALLOCA */
301: #endif /* not C_ALLOCA */
302:
303: /* Nearly all the following files depend on lisp.h,
304: but it is not included as a dependency because
305: it is so often changed in ways that do not require any recompilation
306: and so rarely changed in ways that do require any. */
307:
308: abbrev.o : abbrev.c buffer.h commands.h config.h
309: buffer.o : buffer.c syntax.h buffer.h commands.h window.h config.h
310: callint.o : callint.c window.h commands.h buffer.h config.h
311: callproc.o : callproc.c paths.h buffer.h commands.h config.h
312: casefiddle.o : casefiddle.c syntax.h commands.h buffer.h config.h
313: cm.o : cm.c cm.h termhooks.h config.h
314: cmds.o : cmds.c syntax.h buffer.h commands.h config.h
315: crt0.o : crt0.c config.h
316: dired.o : dired.c commands.h buffer.h config.h
317: dispnew.o : dispnew.c commands.h window.h buffer.h dispextern.h termchar.h termopts.h cm.h config.h
318: doc.o : doc.c config.h paths.h
319: doprnt.o : doprnt.c
320: editfns.o : editfns.c window.h buffer.h config.h
321: emacs.o : emacs.c commands.h config.h
322: #ifdef MAINTAIN_ENVIRONMENT
323: environ.o : environ.c buffer.h commands.h config.h
324: #endif MAINTAIN_ENVIRONMENT
325: fileio.o : fileio.c window.h buffer.h config.h
326: filelock.o : filelock.c buffer.h paths.h config.h
327: filemode.o : filemode.c
328: indent.o : indent.c window.h indent.h buffer.h config.h termchar.h termopts.h
329: insdel.o : insdel.c window.h buffer.h config.h
330: keyboard.o : keyboard.c termchar.h termhooks.h termopts.h buffer.h commands.h window.h macros.h config.h
331: keymap.o : keymap.c buffer.h commands.h config.h
332: lastfile.o : lastfile.c
333: macros.o : macros.c window.h buffer.h commands.h macros.h config.h
334: malloc.o : malloc.c config.h
335: marker.o : marker.c buffer.h config.h
336: minibuf.o : minibuf.c syntax.h window.h buffer.h commands.h config.h
337: mocklisp.o : mocklisp.c buffer.h config.h
338: process.o : process.c process.h buffer.h window.h termhooks.h commands.h config.h
339: regex.o : regex.c syntax.h buffer.h config.h regex.h
340: scroll.o : scroll.c termchar.h config.h dispextern.h
341: search.o : search.c regex.h commands.h buffer.h syntax.h config.h
342: syntax.o : syntax.c syntax.h buffer.h commands.h config.h
343: sysdep.o : sysdep.c config.h dispextern.h termhooks.h termchar.h termopts.h window.h
344: term.o : term.c termchar.h termhooks.h termopts.h config.h cm.h
345: termcap.o : termcap.c
346: terminfo.o : terminfo.c config.h
347: tparam.o : tparam.c
348: undo.o : undo.c buffer.h commands.h undo.h config.h
349: unexec.o : unexec.c config.h
350: window.o : window.c indent.h commands.h window.h buffer.h config.h termchar.h
351: xdisp.o : xdisp.c macros.h commands.h indent.h buffer.h dispextern.h termchar.h window.h config.h
352: #ifdef X11
353: xfns.o : xfns.c window.h config.h
354: xterm.o : xterm.c xterm.h dispextern.h config.h
355: #else
356: xfns_10.o : xfns_10.c window.h config.h
357: xterm_10.o : xterm_10.c xterm_10.h dispextern.h config.h
358: xmenu_10.o : xmenu_10.c xterm_10.h window.h dispextern.h config.h
359: xchdisp_10.o : xchdisp_10.c
360: #endif /* X11 */
361:
362: /* The files of Lisp proper */
363:
364: alloc.o : alloc.c window.h buffer.h config.h
365: bytecode.o : bytecode.c buffer.h config.h
366: data.o : data.c buffer.h config.h
367: eval.o : eval.c commands.h config.h
368: fns.o : fns.c commands.h config.h
369: print.o : print.c process.h window.h buffer.h config.h
370: lread.o : lread.c buffer.h paths.h config.h
371:
372: /* System-specific programs to be made.
373: OTHER_FILES selects which of these should actually be made. */
374:
375: ${etcdir}/emacstool: ${etcdir}/emacstool.c \
376: cd ${etcdir}; cc emacstool.c -o emacstool -g -lsuntool -lsunwindow -lpixrect
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.