|
|
1.1 root 1: /* Makefile for GNU Emacs.
2: Copyright (C) 1985 Richard M. Stallman.
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: #define NO_SHORTNAMES
23: #include "config.h"
24:
25: /* library that contains select () and related stuff, on some system V's.
26: I suspect that it is true for Uniplus and not others. */
27: #ifdef UNIPLUS
28: LIBNET= -lnet
29: #endif
30:
31: /* 4.1 has a jobs library that has to do with simulating some
32: stuff that is standard in 4.2. */
33: #ifdef BSD4_1
34: LIBJOBS= -ljobs
35: #endif
36:
37: #ifdef HPUX
38: LIBBSD= -lBSD
39: LIBG= /usr/lib/end.o
40: #endif
41:
42: /* -lg makes dbx work. Maybe on sysV it makes sdb work. */
43: #if !defined (APOLLO) && (defined (BSD) || defined (UNIPLUS))
44: LIBG= -lg
45: #endif
46:
47: /* Some machines don't find the standard C libraries in the usual place. */
48: #ifdef LIB_STANDARD
49: LIBSTD= LIB_STANDARD
50: #else
51: LIBSTD= -lc
52: #endif
53:
54: /* -gx makes dbx work properly on a pyramid. */
55: #ifdef pyramid
56: DEBUGSWITCH= -gx
57: #else
58: DEBUGSWITCH= -g
59: #endif
60:
61: /* -N is used on some USG systems to avoid a gap in addresses
62: between the end of the text and the start of the data segment. */
63: #ifdef LOADER_N_SWITCH
64: LDNSWITCH= -N
65: #endif
66:
67: /* Specify address for ld to start loading at,
68: if requested by configuration. */
69:
70: #ifdef TEXT_START_ADDR
71: STARTFLAGS = -T TEXT_START_ADDR -e TEXT_START_ADDR
72: #endif
73:
74: #if defined (BSD) && !defined (COFF)
75: #ifdef celerity
76: LDFLAGS= -X -k100000
77: #else
78: LDFLAGS= -X
79: #endif
80: #else /* COFF, or not BSD */
81: #ifdef UNIPLUS
82: /* On the dual box under 5.2, ld must have -N and /usr/lib/unshared.ld to
83: make an unshared version, and /usr/lib/shared.ld to make a shared version.
84: The shared version is the only way to go, but initially there were
85: problems with malloc.c for shared programs.
86: fnf@Unisoft */
87: LDFLAGS= $(LDNSWITCH) -L/lib/libg /usr/lib/unshared.ld
88: #else
89: /* For system V */
90: LDFLAGS= $(LDNSWITCH)
91: #endif
92: #endif /* COFF, or not BSD */
93:
94: #ifdef UMAX
95: /* Guarantee that text and data are aligned on 1 K boundaries */
96: ALIGNMENT= align.umax
97: #endif
98:
99: /* Figure out whether the system cpp can handle long names.
100: Do it by testing it right now.
101: If it loses, arrange to use the GNU cpp. */
102:
103: #define LONGNAMEBBBFOOX
104: #ifdef LONGNAMEBBBARFOOX
105: /* Installed cpp fails to distinguish those names! */
106: /* Arrange to compile the GNU cpp later on */
107: #define NEED_CPP
108: /* Cause cc to invoke the cpp that comes with Emacs,
109: which will be in a file named localcpp. */
110: MYCPPFLAG= -Blocal
111: /* LOCALCPP is the local one or nothing.
112: CPP is the local one or the standardone. */
113: LOCALCPP= localcpp
114: #endif /* NEED_CPP */
115:
116: #ifdef SHORTNAMES
117: SHORT= shortnames
118: #endif /* SHORTNAMES */
119:
120: CFLAGS= $(DEBUGSWITCH) -Demacs $(MYCPPFLAG)
121: /* DO NOT use -R. There is a special hack described in lastfile.c
122: which is used instead. Some initialized data areas are modified
123: at initial startup, then labeled as part of the text area when
124: Emacs is dumped for the first time, and never changed again. */
125:
126: /* You may replace $(DEBUGSWITCH) with -O if you don't believe in debugging. */
127:
128: /* -Demacs is needed to make some files produce the
129: correct version for use in Emacs. */
130:
131:
132: #ifdef HAVE_X_WINDOWS
133: XOBJ= xterm.o xfns.o
134: LIBX= -lX
135: #endif /* HAVE_X_WINDOWS */
136:
137: /* lastfile must follow all files
138: whose initialized data areas should be dumped as pure by dump-emacs. */
139: obj= dispnew.o scroll.o xdisp.o window.o \
140: term.o cm.o $(XOBJ) \
141: emacs.o keyboard.o macros.o keymap.o sysdep.o \
142: buffer.o filelock.o insdel.o marker.o \
143: minibuf.o fileio.o dired.o filemode.o \
144: cmds.o casefiddle.o indent.o search.o regex.o undo.o \
145: alloc.o data.o doc.o editfns.o callint.o \
146: eval.o fns.o print.o lread.o \
147: abbrev.o syntax.o unexec.o mocklisp.o bytecode.o \
148: process.o callproc.o \
149: doprnt.o
150:
151: /* define otherobj as list of object files that make-docfile
152: should not be told about. */
153: #ifdef APOLLO
154: otherobj= termcap.o tparam.o lastfile.o
155: LTERMCAP= -ltermcap
156: #endif /* APOLLO */
157: #ifdef sun
158: /* SUN puts funny things in their termcap; must not replace it. */
159: otherobj= tparam.o lastfile.o alloca.o malloc.o
160: LTERMCAP= -ltermcap
161: #endif /* sun */
162: #ifdef TERMINFO
163: otherobj= terminfo.o lastfile.o alloca.o malloc.o
164: LTERMCAP= -ltermcap
165: #endif /* TERMINFO */
166:
167: #if !defined (APOLLO) && !defined (sun) && !defined (TERMINFO)
168: otherobj= termcap.o tparam.o lastfile.o alloca.o malloc.o
169: #endif
170:
171: /* List of Lisp files loaded into the dumped Emacs. */
172: lisp= ../lisp/simple.elc ../lisp/files.elc ../lisp/window.elc \
173: ../lisp/indent.elc ../lisp/loaddefs.el ../lisp/paths.el \
174: ../lisp/startup.elc ../lisp/lisp.elc \
175: ../lisp/page.elc ../lisp/register.elc \
176: ../lisp/paragraphs.elc ../lisp/lisp-mode.elc \
177: ../lisp/text-mode.elc ../lisp/fill.elc \
178: ../lisp/c-mode.elc ../lisp/isearch.elc \
179: ../lisp/replace.elc ../lisp/abbrev.elc \
180: ../lisp/buff-menu.elc ../lisp/subr.elc
181:
182: /* just to be sure the sh is used */
183: SHELL=/bin/sh
184:
185: /* Construct full set of libraries to be linked. */
186: LIBES= $(LIBNET) $(LIBJOBS) $(LTERMCAP) $(LIBX) $(LIBBSD) $(LIBSTD) $(LIBG)
187:
188: all: xemacs
189:
190: xemacs: temacs ../etc/DOC ${lisp}
191: #ifdef CANNOT_DUMP
192: mv temacs xemacs
193: #else
194: ./temacs -batch -l inc-vers
195: ./temacs -batch -l loadup.el dump
196: #endif /* not CANNOT_DUMP */
197:
198: ../etc/DOC: ../etc/make-docfile ${obj} ${lisp} auxdoc.c
199: ../etc/make-docfile auxdoc.c ${obj} ${lisp} ../lisp/version.el > ../etc/DOC
200:
201: ../etc/make-docfile:
202: cd ../etc; make ${MFLAGS} make-docfile
203:
204: #if defined(sequent) /* for parallel make */
205: PARALLEL=&
206: #endif /* sequent */
207:
208: temacs: $(PARALLEL) $(LOCALCPP) $(SHORT) crt0.o ${obj} ${otherobj}
209: ld ${STARTFLAGS} ${LDFLAGS} -o temacs crt0.o ${obj} ${otherobj} ${LIBES} ${ALIGNMENT}
210:
211: /* These are needed for C compilation, on the systems that need them */
212: #ifdef NEED_CPP
213: CPP = ./localcpp
214: localcpp:
215: cd ../cpp; make ${MFLAGS} EMACS=-DEMACS
216: ln ../cpp/cpp localcpp /* Name where CFLAGS will refer to it */
217: /* cc appears to be cretinous and require all of these to exist
218: if -B is specified -- we can't use one local pass and let the
219: others be the standard ones. What a loser.
220: We can't even use ln, since they are probably
221: on different disks. */
222: cp /lib/ccom localccom
223: -cp /lib/optim localoptim
224: -cp /lib/c2 localc2
225: cp /bin/as localas
226: #else /* not NEED_CPP */
227: CPP = /lib/cpp
228: #endif /* need NEED_CPP */
229:
230: #ifdef SHORTNAMES
231: shortnames:
232: cd ../shortnames; make ${MFLAGS}
233: #endif /* SHORTNAMES */
234:
235: paths.h: paths.h.dist
236: @sh -c "if test -r $@; then echo $? is newer than $@; exit 1;\
237: else exit 0; fi"
238: cp $? $@
239:
240: config.h: config.h.dist
241: @sh -c "if test -r $@; then echo $? is newer than $@; exit 1;\
242: else exit 0; fi"
243: cp $? $@
244:
245: /* Some machines have alloca built-in.
246: They may define HAVE_ALLOCA, or may just let alloca.s
247: be used but generate no code.
248: Some have it written in assembler in alloca.s.
249: Some use the C version in alloca.c (these define C_ALLOCA in config.h).
250: */
251:
252: #ifdef C_ALLOCA
253: alloca.o : alloca.c
254: #else
255: alloca.o : alloca.s config.h
256: $(CPP) -E alloca.s | \
257: /* remove any ^L, blank lines, and preprocessor comments,
258: since some assemblers barf on them */
259: sed -e 's///' -e 's/^#.*//' | \
260: sed -n -e '/^..*$$/p' > alloca.t
261: as -o alloca.o alloca.t
262: rm alloca.t
263: #endif /* not C_ALLOCA */
264:
265: /* Nearly all the following files depend on lisp.h,
266: but it is not included as a dependency because
267: it is so often changed in ways that do not require any recompilation
268: and so rarely changed in ways that do require any. */
269:
270: abbrev.o : abbrev.c buffer.h commands.h config.h
271: buffer.o : buffer.c syntax.h buffer.h commands.h window.h config.h
272: callint.o : callint.c window.h commands.h buffer.h config.h
273: callproc.o : callproc.c paths.h buffer.h commands.h config.h
274: casefiddle.o : casefiddle.c syntax.h commands.h buffer.h config.h
275: cm.o : cm.c cm.h termhooks.h config.h
276: cmds.o : cmds.c syntax.h buffer.h commands.h config.h
277: crt0.o : crt0.c config.h
278: dired.o : dired.c commands.h buffer.h config.h
279: dispnew.o : dispnew.c commands.h window.h buffer.h dispextern.h termchar.h termopts.h cm.h config.h
280: doc.o : doc.c config.h paths.h
281: doprnt.o : doprnt.c
282: editfns.o : editfns.c window.h buffer.h config.h
283: emacs.o : emacs.c commands.h config.h
284: fileio.o : fileio.c window.h buffer.h config.h
285: filelock.o : filelock.c buffer.h paths.h config.h
286: filemode.o : filemode.c
287: indent.o : indent.c window.h indent.h buffer.h config.h termchar.h termopts.h
288: insdel.o : insdel.c window.h buffer.h config.h
289: keyboard.o : keyboard.c termchar.h termhooks.h termopts.h buffer.h commands.h window.h macros.h config.h
290: keymap.o : keymap.c buffer.h commands.h config.h
291: lastfile.o : lastfile.c
292: macros.o : macros.c window.h buffer.h commands.h macros.h config.h
293: malloc.o : malloc.c config.h
294: marker.o : marker.c buffer.h config.h
295: minibuf.o : minibuf.c syntax.h window.h buffer.h commands.h config.h
296: mocklisp.o : mocklisp.c buffer.h config.h
297: process.o : process.c process.h buffer.h window.h termhooks.h config.h
298: regex.o : regex.c syntax.h buffer.h config.h regex.h
299: scroll.o : scroll.c termchar.h config.h dispextern.h
300: search.o : search.c regex.h commands.h buffer.h syntax.h config.h
301: syntax.o : syntax.c syntax.h buffer.h commands.h config.h
302: sysdep.o : sysdep.c config.h dispextern.h termhooks.h termchar.h termopts.h
303: term.o : term.c termchar.h termhooks.h termopts.h config.h cm.h
304: termcap.o : termcap.c
305: terminfo.o : terminfo.c config.h
306: tparam.o : tparam.c
307: undo.o : undo.c buffer.h commands.h undo.h config.h
308: unexec.o : unexec.c config.h
309: window.o : window.c indent.h commands.h window.h buffer.h config.h termchar.h
310: xdisp.o : xdisp.c macros.h commands.h indent.h buffer.h dispextern.h termchar.h window.h config.h
311: xfns.o : xfns.c window.h config.h
312: xterm.o : xterm.c xterm.h dispextern.h config.h
313:
314: /* The files of Lisp proper */
315:
316: alloc.o : alloc.c window.h buffer.h config.h
317: bytecode.o : bytecode.c buffer.h config.h
318: data.o : data.c buffer.h config.h
319: eval.o : eval.c commands.h config.h
320: fns.o : fns.c commands.h config.h
321: print.o : print.c process.h window.h buffer.h config.h
322: lread.o : lread.c buffer.h paths.h config.h
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.