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