diff options
Diffstat (limited to 'src/ymakefile')
-rw-r--r-- | src/ymakefile | 535 |
1 files changed, 535 insertions, 0 deletions
diff --git a/src/ymakefile b/src/ymakefile new file mode 100644 index 00000000000..fa1f171af3c --- /dev/null +++ b/src/ymakefile @@ -0,0 +1,535 @@ +/* Makefile for GNU Emacs. + Copyright (C) 1985, 1987, 1988, 1990 Free Software Foundation, Inc. + +This file is part of GNU Emacs. + +GNU Emacs is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 1, or (at your option) +any later version. + +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 +along with GNU Emacs; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + + +dot = . +/* on Xenix, replace double-dot below with $(dot)$(dot) */ +lispdir = $(dot)$(dot)/lisp/ +etcdir = $(dot)$(dot)/etc/ +shortnamesdir = $(dot)$(dot)/shortnames/ +cppdir = $(dot)$(dot)/cpp/ +oldXMenudir = $(dot)$(dot)/oldXMenu/ + +/* Just to avoid uncertainty. */ +SHELL = /bin/sh + +#define NO_SHORTNAMES +#include "config.h" + +/* 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; + don't let it interfere with this file. */ +#undef register + +/* On some systems we may not to use the system make command. */ +#ifdef MAKE_COMMAND +MAKE = MAKE_COMMAND +#else +MAKE=make +#endif + +#ifdef C_COMPILER +CC = C_COMPILER +#endif + +/* Some machines don't find the standard C libraries in the usual place. */ +#ifndef ORDINARY_LINK +#ifndef LIB_STANDARD +#define LIB_STANDARD -lc +#endif +#else +#ifndef LIB_STANDARD +#define LIB_STANDARD +#endif +#endif + +/* Unless inhibited or changed, use -lg to link for debugging. */ +#ifndef LIBS_DEBUG +#define LIBS_DEBUG -lg +#endif + +/* Some s- files define this to request special libraries. */ +#ifndef LIBS_SYSTEM +#define LIBS_SYSTEM +#endif + +/* Some m- files define this to request special libraries. */ +#ifndef LIBS_MACHINE +#define LIBS_MACHINE +#endif + +/* Some s- files define this to request special switches in ld. */ +#ifndef LD_SWITCH_SYSTEM +#if defined (BSD) && !defined (COFF) && !defined (__GNUC__) +#define LD_SWITCH_SYSTEM -X +#else +#define LD_SWITCH_SYSTEM +#endif /* COFF, or not BSD */ +#endif + +/* Some m- files define this to request special switches in ld. */ +#ifndef LD_SWITCH_MACHINE +#define LD_SWITCH_MACHINE +#endif + +/* Some m- files define this to request special switches in cc. */ +#ifndef C_SWITCH_MACHINE +#define C_SWITCH_MACHINE +#endif + +#ifndef C_SWITCH_SYSTEM +#define C_SWITCH_SYSTEM +#endif + +#ifndef C_SWITCH_X_MACHINE +#define C_SWITCH_X_MACHINE +#endif + +#ifndef C_SWITCH_X_SYSTEM +#define C_SWITCH_X_SYSTEM +#endif + +#ifndef ORDINARY_LINK +#ifndef START_FILES +#ifdef NO_REMAP +#define START_FILES pre-crt0.o /lib/crt0.o +#else +#define START_FILES crt0.o +#endif +#endif /* have START_FILES */ +STARTFILES = START_FILES +#else /* ORDINARY_LINK */ +STARTFILES = pre-crt0.o +#endif /* ORDINARY_LINK */ + +/* This macro says how to compile for debugging. + If you want to optimize, DON'T change this macro. + Instead, replace C_DEBUG_SWITCH with C_OPTIMIZE_SWITCH + where CFLAGS is set. */ +#ifndef C_DEBUG_SWITCH +#define C_DEBUG_SWITCH -g +#endif + +/* If user wants to optimize, this is how. */ +#ifndef C_OPTIMIZE_SWITCH +#define C_OPTIMIZE_SWITCH -O +#endif + +/* cc switches needed to make `asm' keyword work. + Nothing special needed on most machines. */ +#ifndef C_SWITCH_ASM +#define C_SWITCH_ASM +#endif + +/* Specify address for ld to start loading at, + if requested by configuration. */ + +#ifdef LD_TEXT_START_ADDR +STARTFLAGS = -T LD_TEXT_START_ADDR -e __start +#endif + +#ifndef LINKER +#ifdef ORDINARY_LINK +LD = $(CC) +#else /* not ORDINARY_LINK */ +#if __GNUC__ > 1 +/* Search the proper places so that we can find -lgcc. */ +#define LINKER gcc -nostdlib +#else +#define LINKER ld +#endif +#endif /* not ORDINARY_LINK */ +#endif /* no LINKER */ + +#ifdef LINKER +LD = LINKER +#endif +LDFLAGS = LD_SWITCH_SYSTEM LD_SWITCH_MACHINE + +/* Figure out whether the system cpp can handle long names. + Do it by testing it right now. + If it loses, arrange to use the GNU cpp. */ + +#define LONGNAMEBBBFOOX +#ifdef LONGNAMEBBBARFOOX +/* Installed cpp fails to distinguish those names! */ +/* Arrange to compile the GNU cpp later on */ +#define NEED_CPP +/* Cause cc to invoke the cpp that comes with Emacs, + which will be in a file named localcpp. */ +MYCPPFLAG= -Blocal +/* LOCALCPP is the local one or nothing. + CPP is the local one or the standardone. */ +LOCALCPP= localcpp +#endif /* NEED_CPP */ + +#ifdef SHORTNAMES +SHORT= shortnames +#endif /* SHORTNAMES */ + +CFLAGS= C_DEBUG_SWITCH -Demacs $(MYCPPFLAG) C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM +/* 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. */ + +/* You may replace C_DEBUG_SWITCH with C_OPTIMIZE_SWITCH + if you don't believe in debugging. */ + +/* -Demacs is needed to make some files produce the + correct version for use in Emacs. */ + +#ifndef LIBX10_MACHINE +#define LIBX10_MACHINE +#endif + +#ifndef LIBX11_MACHINE +#define LIBX11_MACHINE +#endif + +#ifndef LIBX10_SYSTEM +#define LIBX10_SYSTEM +#endif + +#ifndef LIBX11_SYSTEM +#define LIBX11_SYSTEM +#endif + +#ifndef LIB_X11_LIB +#define LIB_X11_LIB -lX11 +#endif + +#ifdef HAVE_X_WINDOWS +#ifdef HAVE_X11 +#ifdef HAVE_X_MENU +OLDXMENU = libXMenu11.a +XOBJ = x11term.o x11fns.o xmenu.o +LIBX = $(OLDXMENU) LIB_X11_LIB LIBX11_MACHINE LIBX11_SYSTEM +#else +XOBJ = x11term.o x11fns.o +LIBX = LIB_X11_LIB LIBX11_MACHINE LIBX11_SYSTEM +#endif +#else /* not HAVE_X11 */ +#ifdef HAVE_X_MENU +XOBJ= xterm.o xfns.o xmenu.o +LIBX= -lXMenu -lX LIBX10_MACHINE LIBX10_SYSTEM +#else +XOBJ= xterm.o xfns.o +LIBX= -lX LIBX10_MACHINE LIBX10_SYSTEM +#endif /* not HAVE_X_MENU */ +#endif /* not HAVE_X11 */ +#endif /* HAVE_X_WINDOWS */ + +/* Fix linking if compiled with GCC. */ +#ifdef __GNUC__ +#if __GNUC__ > 1 +#ifndef LIB_GCC +#define LIB_GCC -lgcc +#endif +GNULIB_VAR = LIB_GCC +#else /* __GNUC__ <= 1 */ +#ifndef LIB_GCC +#define LIB_GCC /usr/local/lib/gcc-gnulib +#endif +GNULIB_VAR = `if [ -f LIB_GCC ] ; then echo LIB_GCC; else echo; fi` +#endif /* __GNUC__ <= 1 */ +#else +GNULIB_VAR = +#endif + +#ifdef MAINTAIN_ENVIRONMENT +environobj = environ.o +#endif /* MAINTAIN_ENVIRONMENT */ + +/* Allow config.h to specify a replacement file for unexec.c. */ +#ifndef UNEXEC +#define UNEXEC unexec.o +#endif + +/* lastfile must follow all files + whose initialized data areas should be dumped as pure by dump-emacs. */ +obj= dispnew.o scroll.o xdisp.o window.o \ + term.o cm.o $(XOBJ) \ + 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 casefiddle.o indent.o search.o regex.o undo.o \ + alloc.o data.o doc.o editfns.o callint.o \ + eval.o fns.o print.o lread.o \ + abbrev.o syntax.o UNEXEC mocklisp.o bytecode.o \ + process.o callproc.o $(environobj) \ + doprnt.o + +#ifdef TERMINFO +/* Used to be -ltermcap here. If your machine needs that, + define LIBS_TERMCAP in the m- file. */ +#ifndef LIBS_TERMCAP +#define LIBS_TERMCAP -lcurses +#endif +termcapobj = terminfo.o +#else +#ifndef LIBS_TERMCAP +#define LIBS_TERMCAP +termcapobj = termcap.o tparam.o +#else +termcapobj = tparam.o +#endif +#endif + +#ifndef SYSTEM_MALLOC +#ifdef HAVE_ALLOCA +mallocobj = malloc.o +#else +mallocobj = alloca.o malloc.o +#endif +#else /* SYSTEM_MALLOC */ +#ifndef HAVE_ALLOCA +mallocobj = alloca.o +#endif +#endif + +/* define otherobj as list of object files that make-docfile + should not be told about. */ +otherobj= $(termcapobj) lastfile.o $(mallocobj) + +/* List of Lisp files loaded into the dumped Emacs. */ +lisp= ${lispdir}simple.elc ${lispdir}help.elc \ + ${lispdir}files.elc ${lispdir}window.elc \ + ${lispdir}indent.elc ${lispdir}loaddefs.el ${lispdir}paths.el \ + ${lispdir}startup.elc ${lispdir}lisp.elc \ + ${lispdir}page.elc ${lispdir}register.elc \ + ${lispdir}paragraphs.elc ${lispdir}lisp-mode.elc \ + ${lispdir}text-mode.elc ${lispdir}fill.elc \ + ${lispdir}c-mode.elc ${lispdir}isearch.elc \ + ${lispdir}replace.elc ${lispdir}abbrev.elc \ + ${lispdir}buff-menu.elc ${lispdir}subr.elc + +/* just to be sure the sh is used */ +SHELL=/bin/sh + +/* Construct full set of libraries to be linked. */ +LIBES = LIBS_TERMCAP $(LIBX) LIBS_SYSTEM LIBS_MACHINE LIBS_DEBUG $(GNULIB_VAR) LIB_STANDARD + +/* Enable recompilation of certain other files depending on system type. */ + +#ifndef OTHER_FILES +#define OTHER_FILES +#endif + +/* Enable inclusion of object files in temacs depending on system type. */ +#ifndef OBJECTS_SYSTEM +#define OBJECTS_SYSTEM +#endif + +#ifndef OBJECTS_MACHINE +#define OBJECTS_MACHINE +#endif + +all: xemacs OTHER_FILES + +xemacs: temacs ${etcdir}DOC ${lisp} +#ifdef HAVE_SHM + ./temacs -nl -batch -l inc-vers + ./temacs -nl -batch -l loadup dump + ln temacs xemacs +#else +#ifdef CANNOT_DUMP + mv temacs xemacs +#else + ./temacs -batch -l inc-vers + ./temacs -batch -l loadup.el dump +#endif /* not CANNOT_DUMP */ +#endif /* not HAVE_SHM */ + +${etcdir}DOC: ${etcdir}make-docfile ${obj} ${lisp} + rm -f ${etcdir}DOC + ${etcdir}make-docfile ${obj} ${lisp} ${lispdir}version.el > ${etcdir}DOC + +${etcdir}make-docfile: + cd ${etcdir}; ${MAKE} ${MFLAGS} make-docfile + +/* Some systems define this to cause parallel Make-ing. */ +#ifndef MAKE_PARALLEL +#define MAKE_PARALLEL +#endif + +temacs: MAKE_PARALLEL $(LOCALCPP) $(SHORT) $(STARTFILES) $(OLDXMENU) ${obj} ${otherobj} OBJECTS_SYSTEM OBJECTS_MACHINE + $(LD) ${STARTFLAGS} ${LDFLAGS} -o temacs ${STARTFILES} ${obj} ${otherobj} OBJECTS_SYSTEM OBJECTS_MACHINE ${LIBES} + +/* These are needed for C compilation, on the systems that need them */ +#ifdef NEED_CPP +CPP = ./localcpp +localcpp: + cd ${cppdir}; ${MAKE} ${MFLAGS} EMACS=-DEMACS + ln ${cppdir}cpp localcpp /* Name where CFLAGS will refer to it */ +/* cc appears to be cretinous and require all of these to exist + if -B is specified -- we can't use one local pass and let the + others be the standard ones. What a loser. + We can't even use ln, since they are probably + on different disks. */ + cp /lib/ccom localccom + -cp /lib/optim localoptim + -cp /lib/c2 localc2 + cp /bin/as localas +#else /* not NEED_CPP */ +CPP = $(CC) -E +#endif /* need NEED_CPP */ + +#ifdef SHORTNAMES +shortnames: + cd ${shortnamesdir}; ${MAKE} ${MFLAGS} +#endif /* SHORTNAMES */ + +/* Don't lose if this was not defined. */ +#ifndef OLDXMENU_OPTIONS +#define OLDXMENU_OPTIONS +#endif + +#ifdef HAVE_X_WINDOWS +#ifdef HAVE_X_MENU +#ifdef HAVE_X11 +$(OLDXMENU): + cd ${oldXMenudir}; ${MAKE} ${MFLAGS} OLDXMENU_OPTIONS + ln ${oldXMenudir}libXMenu11.a $(OLDXMENU) || cp ${oldXMenudir}libXMenu11.a $(OLDXMENU) +#endif /* HAVE_X11 */ +#endif /* HAVE_X_MENU */ +#endif /* HAVE_X_WINDOWS */ + +paths.h: paths.h-dist + echo paths.h needs to be set up from paths.h-dist + exit 1 + +config.h: config.h-dist + echo config.h needs to be set up from config.h-dist + exit 1 + +/* Some machines have alloca built-in. + They should define HAVE_ALLOCA, or may just let alloca.s + be used but generate no code. + Some have it written in assembler in alloca.s. + Some use the C version in alloca.c (these define C_ALLOCA in config.h). + */ + +#ifdef C_ALLOCA +alloca.o : alloca.c +#else +#ifndef HAVE_ALLOCA +alloca.o : alloca.s config.h +/* $(CPP) is cc -E, which may get confused by filenames + that do not end in .c. So copy file to a safe name. */ + cp alloca.s allocatem.c +/* remove any ^L, blank lines, and preprocessor comments, + since some assemblers barf on them */ + $(CPP) allocatem.c | \ + sed -e 's///' -e 's/^#.*//' | \ + sed -n -e '/^..*$$/p' > allocatem.s + -rm -f alloca.o +/* Xenix, in particular, needs to run assembler via cc. */ + cc -c allocatem.s + mv allocatem.o alloca.o + rm allocatem.s allocatem.c +#endif /* HAVE_ALLOCA */ +#endif /* not C_ALLOCA */ + +/* Nearly all the following files depend on lisp.h, + but it is not included as a dependency because + it is so often changed in ways that do not require any recompilation + and so rarely changed in ways that do require any. */ + +abbrev.o : abbrev.c buffer.h commands.h config.h +buffer.o : buffer.c syntax.h buffer.h commands.h window.h config.h +callint.o : callint.c window.h commands.h buffer.h config.h +callproc.o : callproc.c paths.h buffer.h commands.h config.h +casefiddle.o : casefiddle.c syntax.h commands.h buffer.h config.h +cm.o : cm.c cm.h termhooks.h config.h +cmds.o : cmds.c syntax.h buffer.h commands.h config.h +crt0.o : crt0.c config.h + $(CC) -c $(CFLAGS) C_SWITCH_ASM crt0.c +dired.o : dired.c commands.h buffer.h config.h regex.h +dispnew.o : dispnew.c commands.h window.h buffer.h dispextern.h termchar.h termopts.h cm.h config.h lisp.h +doc.o : doc.c buffer.h config.h paths.h +doprnt.o : doprnt.c +editfns.o : editfns.c window.h buffer.h config.h +emacs.o : emacs.c commands.h config.h +#ifdef MAINTAIN_ENVIRONMENT +environ.o : environ.c buffer.h commands.h config.h +#endif /* MAINTAIN_ENVIRONMENT */ +fileio.o : fileio.c window.h buffer.h config.h +filelock.o : filelock.c buffer.h paths.h config.h +filemode.o : filemode.c +indent.o : indent.c window.h indent.h buffer.h config.h termchar.h termopts.h +insdel.o : insdel.c window.h buffer.h config.h +keyboard.o : keyboard.c termchar.h termhooks.h termopts.h buffer.h commands.h window.h macros.h config.h +keymap.o : keymap.c buffer.h commands.h config.h +lastfile.o : lastfile.c +macros.o : macros.c window.h buffer.h commands.h macros.h config.h +malloc.o : malloc.c config.h +marker.o : marker.c buffer.h config.h +minibuf.o : minibuf.c syntax.h window.h buffer.h commands.h config.h +mocklisp.o : mocklisp.c buffer.h config.h +process.o : process.c process.h buffer.h window.h termhooks.h termopts.h commands.h dispextern.h config.h +regex.o : regex.c syntax.h buffer.h config.h regex.h +scroll.o : scroll.c termchar.h config.h dispextern.h termhooks.h +search.o : search.c regex.h commands.h buffer.h syntax.h config.h +syntax.o : syntax.c syntax.h buffer.h commands.h config.h +sysdep.o : sysdep.c config.h dispextern.h termhooks.h termchar.h termopts.h window.h +term.o : term.c termchar.h termhooks.h termopts.h config.h cm.h +termcap.o : termcap.c config.h +terminfo.o : terminfo.c config.h +tparam.o : tparam.c config.h +undo.o : undo.c buffer.h commands.h config.h +UNEXEC : config.h getpagesize.h +window.o : window.c indent.h commands.h window.h buffer.h config.h termchar.h +xdisp.o : xdisp.c macros.h commands.h indent.h buffer.h dispextern.h termchar.h window.h config.h +xfns.o : xfns.c xterm.h window.h config.h +xmenu.o : xmenu.c xterm.h window.h config.h +xterm.o : xterm.c xterm.h termhooks.h termopts.h termchar.h \ + dispextern.h config.h sink.h sinkmask.h + +x11fns.o : x11fns.c window.h x11term.h dispextern.h termchar.h config.h +x11term.o : x11term.c x11term.h termhooks.h termopts.h termchar.h \ + dispextern.h config.h sink11.h sink11mask.h lisp.h gettime.h emacssignal.h \ + xkeys-aix.h + +/* The files of Lisp proper */ + +alloc.o : alloc.c window.h buffer.h config.h +bytecode.o : bytecode.c buffer.h config.h +data.o : data.c buffer.h config.h +eval.o : eval.c commands.h config.h +fns.o : fns.c buffer.h commands.h config.h +print.o : print.c process.h window.h buffer.h dispextern.h termchar.h config.h +lread.o : lread.c buffer.h paths.h config.h + +/* System-specific programs to be made. + OTHER_FILES, OBJECTS_SYSTEM and OBJECTS_MACHINE + select which of these should be compiled. */ + +sunfns.o : sunfns.c buffer.h config.h + +${etcdir}emacstool: ${etcdir}emacstool.c + cd ${etcdir}; ${MAKE} ${MFLAGS} emacstool |