Mercurial > hg > xemacs-beta
view Makefile.in @ 165:5a88923fcbfe r20-3b9
Import from CVS: tag r20-3b9
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:44:42 +0200 |
parents | 0132846995bd |
children | 85ec50267440 |
line wrap: on
line source
## DIST: This is the distribution Makefile for XEmacs. configure can ## DIST: make most of the changes to this file you might want, so try ## DIST: that first. ## This file is part of XEmacs. ## XEmacs 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 2, or (at your option) any ## later version. ## XEmacs 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 XEmacs; see the file COPYING. If not, write to ## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ## Boston, MA 02111-1307, USA. ## make all to compile and build XEmacs. ## make install to build and install it. ## make install-only to install after a previous complete build ## make TAGS to update tags tables. ## make clean or make mostlyclean ## Delete all files from the current directory that are normally ## created by building the program. Don't delete the files that ## record the configuration. Also preserve files that could be made ## by building, but normally aren't because the distribution comes ## with them. ## Delete `.dvi' files here if they are not part of the distribution. ## make distclean ## Delete all files from the current directory that are created by ## configuring or building the program. If you have unpacked the ## source and built the program without creating any other files, ## `make distclean' should leave only the files that were in the ## distribution. ## make realclean ## Delete everything from the current directory that can be ## reconstructed with this Makefile. This typically includes ## everything deleted by distclean, plus more: C source files ## produced by Bison, tags tables, info files, and so on. ## make extraclean ## Still more severe - delete backup and autosave files, too. SHELL = /bin/sh @SET_MAKE@ ## ==================== Things `configure' Might Edit ==================== CC=@CC@ CPP=@CPP@ LN_S=@LN_S@ CFLAGS=@CFLAGS@ YACC=@YACC@ pwd=/bin/pwd RM=rm -f ## These help us choose version- and architecture-specific directories ## to install files in. ## This should be the number of the XEmacs version we're building, ## like `19.12' or `19.13'. version=@version@ ## This should be the name of the configuration we're building XEmacs ## for, like `mips-dec-ultrix' or `sparc-sun-sunos'. configuration=@configuration@ ## ==================== Where To Install Things ==================== ## The default location for installation. Everything is placed in ## subdirectories of this directory. The default values for many of ## the variables below are expressed in terms of this one, so you may ## not need to change them. This defaults to /usr/local. prefix=@prefix@ ## Like `prefix', but used for architecture-specific files. exec_prefix=@exec_prefix@ ## Where to install XEmacs and other binaries that people will want to ## run directly (like etags). bindir=@bindir@ ## Where to install architecture-independent data files. ## ${lispdir} and ${etcdir} are subdirectories of this. datadir=@datadir@ pkgdir=@pkgdir@ ## Where to install and expect the files that XEmacs modifies as it runs. ## These files are all architecture-independent. Right now, the ## only such data is the locking directory; ## ${lockdir} is a subdirectory of this. statedir=@statedir@ ## Where to install and expect executable files to be run by XEmacs ## rather than directly by users, and other architecture-dependent data ## ${archlibdir} is a subdirectory of this. libdir=@libdir@ ## Where to install XEmacs's man pages, and what extension they should have. mandir=@mandir@ manext=.1 ## Where to install and expect the info files describing XEmacs. In the ## past, this defaulted to a subdirectory of ${prefix}/lib/xemacs, but ## since there are now many packages documented with the texinfo ## system, it is inappropriate to imply that it is part of XEmacs. infodir=@infodir@ ## This is set to 'yes' if the user specified the --infodir flag at ## configuration time. infodir_user_defined=@infodir_user_defined@ ## Where to find the source code. The source code for XEmacs's C kernel is ## expected to be in ${srcdir}/src, and the source code for XEmacs's ## utility programs is expected to be in ${srcdir}/lib-src. This is ## set by the configure script's `--srcdir' option. srcdir=@srcdir@ ## ==================== XEmacs-specific directories ==================== ## These variables hold the values XEmacs will actually use. They are ## based on the values of the standard Make variables above. ## Where to install the lisp files distributed with ## XEmacs. This includes the XEmacs version, so that the ## lisp files for different versions of XEmacs will install ## themselves in separate directories. lispdir=@lispdir@ ## This is set to 'yes' if the user specified the --lispdir or ## --datadir flag at configuration time. lispdir_user_defined=@lispdir_user_defined@ ## Directories XEmacs should search for lisp files specific ## to this site (i.e. customizations), before consulting ## ${lispdir}. This should be a colon-separated list of ## directories. sitelispdir=@sitelispdir@ ## Where XEmacs will search for its lisp files while ## building. This is only used during the process of ## compiling XEmacs, to help XEmacs find its lisp files ## before they've been installed in their final location. ## It's usually identical to lispdir, except that the ## entry for the directory containing the installed lisp ## files has been replaced with ../lisp. This should be a ## colon-separated list of directories. buildlispdir=${srcdir}/lisp ## Where to install the other architecture-independent ## data files distributed with XEmacs (like the tutorial, ## the cookie recipes and the Zippy database). This path ## usually contains the XEmacs version number, so the data ## files for multiple versions of XEmacs may be installed ## at once. etcdir=@etcdir@ ## This is set to 'yes' if the user specified the --etcdir or ## --datadir flag at configuration time. etcdir_user_defined=@etcdir_user_defined@ ## Where to create and expect the locking directory, where ## the XEmacs locking code keeps track of which files are ## currently being edited. lockdir=@lockdir@ ## This is set to 'yes' if the user specified the --lockdir or ## --statedir flag at configuration time. lockdir_user_defined=@lockdir_user_defined@ ## Where to put executables to be run by XEmacs rather than ## the user. This path usually includes the XEmacs version ## and configuration name, so that multiple configurations ## for multiple versions of XEmacs may be installed at ## once. archlibdir=@archlibdir@ ## This is set to 'yes' if the user specified any of --exec-prefix, ## --libdir or --archlibdir at configuration time. archlibdir_user_defined=@archlibdir_user_defined@ ## ==================== Utility Programs for the Build ==================== ## Allow the user to specify the install program. INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ ## ============================= Targets ============================== ## Subdirectories to make recursively. `lisp' is not included ## because the compiled lisp files are part of the distribution ## and you cannot remake them without installing XEmacs first. MAKE_SUBDIR = @MAKE_SUBDIR@ ## Subdirectories that can be made recursively. SUBDIR = ${MAKE_SUBDIR} man ## The makefiles of the directories in ${MAKE_SUBDIR}. SUBDIR_MAKEFILES = @SUBDIR_MAKEFILES@ ## Subdirectories to install, and where they'll go. ## lib-src's makefile knows how to install it, so we don't do that here. ## When installing the info files, we need to do special things to ## avoid nuking an existing dir file, so we don't do that here; ## instead, we have written out explicit code in the `install' targets. COPYDIR = ${srcdir}/etc ${srcdir}/lisp COPYDESTS = ${etcdir} ${lispdir} GENERATED_HEADERS = src/paths.h src/Emacs.ad.h src/puresize_adjust.h src/config.h lwlib/config.h all: ${GENERATED_HEADERS} ${MAKE_SUBDIR} ## For performance and consistency, no built-in rules .SUFFIXES: .NO_PARALLEL: ${GENERATED_HEADERS} ${MAKE_SUBDIR} dump-elcs .PHONY: ${SUBDIR} all beta all-elc all-elcs dump-elc dump-elcs autoloads ## Convenience target for XEmacs beta testers beta: clean all-elc ## Convenience target for XEmacs maintainers ## This would run `make-xemacsdist' if I were really confident that everything ## was turnkey. dist: all-elc info ## Build XEmacs and recompile out-of-date and missing .elc files along ## the way. all-elc all-elcs: lib-src lwlib dump-elcs src MAKE='$(MAKE)' sh ${srcdir}/lib-src/update-elc.sh ## Sub-target for all-elc. dump-elc dump-elcs: ${GENERATED_HEADERS} FRC.dump-elcs cd src && $(MAKE) dump-elcs $(MFLAGS) \ CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' autoloads: src MAKE='$(MAKE)' sh ${srcdir}/lib-src/update-autoloads.sh ## We force the rebuilding of src/paths.h because the user might give ## different values for the various directories. Since we use ## move-if-change, src/paths.h only actually changes if the user did ## something notable, so the only unnecessary work we do is in building ## src/paths.h.tmp, which isn't much. Note that sed is not in /bin on ## 386bsd. src/paths.h: Makefile ${srcdir}/src/paths.h.in FRC.src.paths.h @echo "Producing \`src/paths.h' from \`src/paths.h.in'." @$(RM) src/paths.h.tmp @cp ${srcdir}/src/paths.h.in src/paths.h.tmp @-chmod 0644 src/paths.h.tmp @(echo '#define PATH_PREFIX "${prefix}"'; \ if test "${lispdir_user_defined}" = "yes"; \ then echo '#define PATH_LOADSEARCH "${lispdir}"'; \ else echo '/* #define PATH_LOADSEARCH "${lispdir}" */'; \ fi; \ if test "${archlibdir_user_defined}" = "yes"; \ then echo '#define PATH_EXEC "${archlibdir}"'; \ else echo '/* #define PATH_EXEC "${archlibdir}" */'; \ fi; \ if test "${etcdir_user_defined}" = "yes"; \ then echo '#define PATH_DATA "${etcdir}"'; \ else echo '/* #define PATH_DATA "${etcdir}" */'; \ fi; \ if test "${lockdir_user_defined}" = "yes"; \ then echo '#define PATH_LOCK "${lockdir}"'; \ else echo '/* #define PATH_LOCK "${lockdir}" */'; \ fi; \ if test "${infodir_user_defined}" = "yes"; \ then echo '#define PATH_INFO "${infodir}"'; \ else echo '/* #define PATH_INFO "${infodir}" */'; \ fi; ) >> src/paths.h.tmp; \ sh ${srcdir}/move-if-change src/paths.h.tmp src/paths.h ## We have to force the building of Emacs.ad.h as well in order to get it ## updated correctly when VPATH is being used. Since we use move-if-change, ## it will only actually change if the user modified ${etcdir}/Emacs.ad. src/Emacs.ad.h: ${srcdir}/etc/Emacs.ad @echo "Producing \`src/Emacs.ad.h' from \`etc/Emacs.ad'." @$(RM) src/Emacs.ad.h @(echo "/* Do not edit this file!" ; \ echo " Automatically generated from ${srcdir}/etc/Emacs.ad" ; \ echo " */" ; \ /bin/sh ${srcdir}/lib-src/ad2c ${srcdir}/etc/Emacs.ad ) > \ src/Emacs.ad.h src/puresize_adjust.h: ${srcdir}/src/puresize.h @echo "Resetting \`src/puresize_adjust.h'."; \ (echo "/* Do not edit this file!" ; \ echo " Automatically generated by XEmacs */" ; \ echo "#define PURESIZE_ADJUSTMENT 0") > $@ src: @SRC_SUBDIR_DEPS@ FRC.src lib-src: FRC.lib-src lwlib: FRC.lwlib dynodump: FRC.dynodump FRC.src FRC.lib-src FRC.lwlib FRC.dynodump: .RECURSIVE: ${SUBDIR} ${SUBDIR}: ${SUBDIR_MAKEFILES} ${GENERATED_HEADERS} FRC cd $@ && $(MAKE) all $(MFLAGS) \ CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' Makefile: ${srcdir}/Makefile.in config.status ./config.status src/Makefile: ${srcdir}/src/Makefile.in.in config.status ./config.status lib-src/Makefile: ${srcdir}/lib-src/Makefile.in.in config.status ./config.status lwlib/Makefile: ${srcdir}/lwlib/Makefile.in.in config.status ./config.status lwlib/config.h: ${srcdir}/lwlib/config.h.in ./config.status && touch $@ src/config.h: ${srcdir}/src/config.h.in ./config.status && touch $@ ## ==================== Installation ==================== ## If we let lib-src do its own installation, that means we ## don't have to duplicate the list of utilities to install in ## this Makefile as well. ## On AIX, use tar xBf. ## On Xenix, use tar xpf. .PHONY: install-only install install-arch-dep install-arch-indep gzip.el mkdir ## We delete each directory in ${COPYDESTS} before we copy into it; ## that way, we can reinstall over directories that have been put in ## place with their files read-only (perhaps because they are checked ## into RCS). In order to make this safe, we make sure that the ## source exists and is distinct from the destination. ## FSF doesn't depend on `all', but rather on ${MAKE_SUBDIR}, so that ## they "won't ever modify src/paths.h". But that means you can't do ## 'make install' right off the bat because src/paths.h won't exist. ## And, in XEmacs case, src/Emacs.ad.h won't exist either. I also ## don't see the point in avoiding modifying paths.h. It creates an ## inconsistency in the build process. So we go ahead and depend on ## all. --cet install-only: ${MAKE_SUBDIR} install-arch-dep install-arch-indep install: all install-arch-dep install-arch-indep; install-arch-dep: mkdir cd lib-src && \ $(MAKE) install $(MFLAGS) prefix=${prefix} \ exec_prefix=${exec_prefix} bindir=${bindir} libdir=${libdir} \ archlibdir=${archlibdir} if [ `(cd ${archlibdir} && $(pwd))` != `(cd ./lib-src && $(pwd))` ]; \ then \ ${INSTALL_DATA} lib-src/DOC ${archlibdir}/DOC ; \ for subdir in `find ${archlibdir} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; do \ (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; \ done ; \ else true; fi ${INSTALL_PROGRAM} src/xemacs ${bindir}/xemacs-${version} -chmod 0755 ${bindir}/xemacs-${version} $(RM) ${bindir}/xemacs cd ${bindir} && ${LN_S} xemacs-${version} ./xemacs install-arch-indep: mkdir -@set ${COPYDESTS} ; \ for dir in ${COPYDIR} ; do \ if [ `(cd $$1 && $(pwd))` != `(cd $${dir} && $(pwd))` ] ; then \ : do nothing - echo "rm -rf $$1" ; \ fi ; \ shift ; \ done -set ${COPYDESTS} ; \ for dir in ${COPYDESTS} ; do test -d $${dir} || mkdir $${dir} ; done ; \ for dir in ${COPYDIR} ; do \ dest=$$1 ; shift ; \ test -d $${dir} \ -a `(cd $${dir} && $(pwd))` != `(cd $${dest} && $(pwd))` \ && (echo "Copying $${dir}..." ; \ (cd $${dir} && tar -cf - . ) | \ (cd $${dest} && umask 022 && tar -xf - );\ chmod 0755 $${dest}; \ for subdir in `find $${dest} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; do \ (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; \ done) ; \ done if test `(cd ${srcdir}/info && $(pwd))` != `(cd ${infodir} && $(pwd))` && cd ${srcdir}/info; then \ if test ! -f ${infodir}/dir -a -f dir ; then \ ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir ; \ fi ; \ for file in *.info* ; do \ ${INSTALL_DATA} $${file} ${infodir}/$${file} ; \ chmod 0644 ${infodir}/$${file}; \ done ; \ fi cd ${srcdir}/etc && \ for page in xemacs etags ctags gnuserv gnuclient gnuattach gnudoit; do \ ${INSTALL_DATA} ${srcdir}/etc/$${page}.1 ${mandir}/$${page}${manext} ; \ chmod 0644 ${mandir}/$${page}${manext} ; \ done @echo "If you would like to save approximately 15M of disk space, do" @echo "make gzip-el" @echo "or you may run " @echo lib-src/gzip-el.sh lispdir " from the command line." @echo "Where lispdir is where the lisp files were installed, i.e.," @echo "${lispdir}" gzip-el: lib-src/gzip-el.sh ${lispdir} MAKEPATH=./lib-src/make-path ## Build all the directories we're going to install XEmacs in. Since ## we may be creating several layers of directories (for example, ## /usr/local/lib/xemacs-19.13/mips-dec-ultrix4.2), we use make-path ## instead of mkdir. Not all systems' mkdirs have the `-p' flag. mkdir: FRC.mkdir ${MAKEPATH} ${COPYDESTS} ${lockdir} ${infodir} ${mandir} \ ${bindir} ${datadir} ${libdir} ${sitelispdir} ${pkdir} -chmod 0777 ${lockdir} ## Delete all the installed files that the `install' target would ## create (but not the noninstalled files such as `make all' would ## create). #### Don't delete the lisp and etc directories if they're in the source tree. #### This target has not been updated in sometime and until it is it #### would be extremely dangerous for anyone to use it. #uninstall: # (cd lib-src; \ # $(MAKE) $(MFLAGS) uninstall \ # prefix=${prefix} exec_prefix=${exec_prefix} \ # bindir=${bindir} libdir=${libdir} archlibdir=${archlibdir}) # for dir in ${lispdir} ${etcdir} ; do \ # case `(cd $${dir} ; $(pwd))` in \ # `(cd ${srcdir} ; $(pwd))`* ) ;; \ # * ) $(RM) $${dir} ;; \ # esac ; \ # case $${dir} in \ # ${datadir}/xemacs/${version}/* ) \ # $(RM) -r ${datadir}/xemacs/${version} \ # ;; \ # esac ; \ # done # cd ${infodir} && $(RM) cl* xemacs* forms* info* vip* # cd ${mandir} && $(RM) xemacs.1 etags.1 ctags.1 gnuserv.1 # cd ${bindir} && $(RM) xemacs-${version} xemacs ## Some makes seem to remember that they've built something called FRC, ## so you can only use a given FRC once per makefile. FRC FRC.src.paths.h FRC.mkdir FRC.dump-elcs FRC.info: FRC.mostlyclean FRC.clean FRC.distclean FRC.realclean FRC.tags: ## ==================== Cleaning up and miscellanea ==================== .PHONY: mostlyclean clean distclean realclean extraclean ## `mostlyclean' ## Like `clean', but may refrain from deleting a few files that people ## normally don't want to recompile. For example, the `mostlyclean' ## target for GCC does not delete `libgcc.a', because recompiling it ## is rarely necessary and takes a lot of time. mostlyclean: FRC.mostlyclean for d in $(SUBDIR); do (cd $$d && $(MAKE) $(MFLAGS) $@); done ## `clean' ## Delete all files from the current directory that are normally ## created by building the program. Don't delete the files that ## record the configuration. Also preserve files that could be made ## by building, but normally aren't because the distribution comes ## with them. ## Delete `.dvi' files here if they are not part of the distribution. clean: FRC.clean for d in $(SUBDIR); do (cd $$d && $(MAKE) $(MFLAGS) $@); done $(RM) core ## `distclean' ## Delete all files from the current directory that are created by ## configuring or building the program. If you have unpacked the ## source and built the program without creating any other files, ## `make distclean' should leave only the files that were in the ## distribution. top_distclean=\ $(RM) config.status config.log config-tmp-* build-install Installation ; \ for d in src lib-src lwlib dynodump ; do \ $(RM) $$d/Makefile $$d/Makefile.in ; \ done ; \ $(RM) core .sbinit Makefile lock/* distclean: FRC.distclean for d in lock site-lisp; do test -d $$d || mkdir $$d; done for d in $(SUBDIR); do (cd $$d && $(MAKE) $(MFLAGS) $@); done -${top_distclean} ## `realclean' ## Delete everything from the current directory that can be ## reconstructed with this Makefile. This typically includes ## everything deleted by distclean, plus more: C source files ## produced by Bison, tags tables, info files, and so on. ## One exception, however: `make realclean' should not delete ## `configure' even if `configure' can be remade using a rule in the ## Makefile. More generally, `make realclean' should not delete ## anything that needs to exist in order to run `configure' and then ## begin to build the program. realclean: FRC.realclean for d in $(SUBDIR); do (cd $$d && $(MAKE) $(MFLAGS) $@); done -${top_distclean} ## This doesn't actually appear in the coding standards, but Karl ## says GCC supports it, and that's where the configuration part of ## the coding standards seem to come from. It's like distclean, but ## it deletes backup and autosave files too. extraclean: for d in $(SUBDIR); do (cd $$d && $(MAKE) $(MFLAGS) $@); done $(RM) *~ \#* -${top_distclean} ## Unlocking and relocking. The idea of these productions is to reduce ## hassles when installing an incremental tar of XEmacs. Do `make unlock' ## before unlocking the file to take the write locks off all sources so ## that tar xvof will overwrite them without fuss. Then do `make relock' ## afterward so that VC mode will know which files should be checked in ## if you want to mung them. ## Note: it's no disaster if these productions miss a file or two; tar ## and VC will swiftly let you know if this happens, and it is easily ## corrected. SOURCES = ChangeLog GETTING.GNU.SOFTWARE INSTALL Makefile.in PROBLEMS \ README build-install.in configure make-dist move-if-change .PHONY: unlock relock TAGS tags check dist info dvi mcs unlock: chmod u+w $(SOURCES) cpp/* -cd elisp && chmod u+w Makefile README *.texi cd etc && $(MAKE) $(MFLAGS) unlock cd lib-src && $(MAKE) $(MFLAGS) unlock cd lisp && $(MAKE) $(MFLAGS) unlock cd lisp/term && chmod u+w README *.el cd man && chmod u+w *texi* ChangeLog split-man cd lwlib && chmod u+w *.[ch] Makefile.in.in cd src && $(MAKE) $(MFLAGS) $@ relock: chmod u-w $(SOURCES) cpp/* -cd elisp && chmod u-w Makefile README *.texi cd etc && $(MAKE) $(MFLAGS) relock cd lib-src && $(MAKE) $(MFLAGS) relock cd lisp && $(MAKE) $(MFLAGS) relock cd lisp/term && chmod u+w README *.el cd man && chmod u+w *texi* ChangeLog split-man cd lwlib && chmod u+w *.[ch] Makefile.in.in cd src && $(MAKE) $(MFLAGS) $@ TAGS tags: FRC.tags @echo "If you don't have a copy of etags around, then do 'make lib-src' first." @PATH=`$(pwd)`/lib-src:$$PATH HOME=/-=-; export PATH HOME; \ echo "Using etags from `which etags`." PATH=`$(pwd)`/lib-src:$$PATH ; export PATH; cd ${srcdir} && \ etags --regex='/[ ]*DEF\(VAR\|INE\)_[A-Z_]+[ ]*([ ]*"\([^"]+\)"/\2/' src/*.[ch] ; \ for d in `find lisp -name SCCS -prune -o -name RCS -prune -o -type d -print` ; do \ (cd $$d && if [ "`echo *.el`" != "*.el" ] ; then etags -a -o ${srcdir}/TAGS *.el ; fi ) ; \ done ; \ etags -a lwlib/*.[ch] check: @echo "We don't have any automated tests for XEmacs yet." ## Is this something Chuck used and doesn't work with CVS? -slb ## dist: ## cd ${srcdir} && make-dist info: FRC.info cd ${srcdir}/man && $(MAKE) $(MFLAGS) $@ dvi: cd ${srcdir}/man && $(MAKE) $(MFLAGS) $@ ## Fix up version information in executables (Solaris-only) mcs: date=`LANG=C LC_ALL=C date -u '+%e %b %Y'`; \ ident="@(#)RELEASE VERSION XEmacs ${version} $${date}"; \ for f in `file lib-src/* src/xemacs | grep ELF | sed -e 's/:.*//'`; do \ mcs -da "$${ident} `echo $${f} | sed 's/.*\///'`" $${f}; \ done