X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/8a6a564281ce27b9ac76748a508a0cbab517e3a8..baeb2564f75037efa9066dfeada25670f60e5079:/Makefile.in diff --git a/Makefile.in b/Makefile.in index ae92424bf8..d7e08a2328 100644 --- a/Makefile.in +++ b/Makefile.in @@ -3,7 +3,7 @@ # DIST: that first. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -# 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Free Software Foundation, Inc. # This file is part of GNU Emacs. @@ -69,15 +69,9 @@ CDPATH= # ==================== Things `configure' Might Edit ==================== CC=@CC@ -CPP=@CPP@ -C_SWITCH_SYSTEM=@c_switch_system@ -ALLOCA=@ALLOCA@ -LN_S=@LN_S@ CFLAGS=@CFLAGS@ LDFLAGS=@LDFLAGS@ CPPFLAGS=@CPPFLAGS@ -C_SWITCH_X_SITE=@C_SWITCH_X_SITE@ -LD_SWITCH_X_SITE=@LD_SWITCH_X_SITE@ EXEEXT=@EXEEXT@ MAKEINFO=@MAKEINFO@ @@ -125,21 +119,26 @@ sharedstatedir=@sharedstatedir@ # data. ${archlibdir} is a subdirectory of this. libexecdir=@libexecdir@ -# Where to install Emacs's man pages, and what extension they should have. +# Where to install Emacs's man pages. +# This used to allow choice of the numeric extension, but this made +# little sense since the files were always installed in man1/ +# (and they contain cross-references that expect them to be there). mandir=@mandir@ -manext=.1 man1dir=$(mandir)/man1 +MAN_PAGES=b2m.1 ctags.1 ebrowse.1 emacs.1 emacsclient.1 etags.1 \ + grep-changelog.1 rcs-checkin.1 # Where to install and expect the info files describing Emacs. In the # past, this defaulted to a subdirectory of ${prefix}/lib/emacs, but # since there are now many packages documented with the texinfo # system, it is inappropriate to imply that it is part of Emacs. infodir=@infodir@ -INFO_FILES=ada-mode autotype calc ccmode cl dbus dired-x ebrowse ediff \ - efaq eintr elisp emacs emacs-mime epa erc eshell eudc \ - flymake forms gnus idlwave info message mh-e newsticker \ - nxml-mode org pcl-cvs pgg rcirc reftex remember sasl sc ses \ - sieve speedbar tramp vip viper widget woman smtpmail url +INFO_FILES=ada-mode auth autotype calc ccmode cl dbus dired-x ebrowse \ + ede ediff edt eieio efaq eintr elisp emacs emacs-mime epa erc \ + eshell eudc flymake forms gnus idlwave info mairix-el \ + message mh-e newsticker nxml-mode org pcl-cvs pgg rcirc \ + reftex remember sasl sc semantic ses sieve smtpmail speedbar \ + tramp url vip viper widget woman # Directory for local state files for all programs. localstatedir=@localstatedir@ @@ -164,8 +163,9 @@ VPATH=@srcdir@ # Where to find the application default. x_default_search_path=@x_default_search_path@ -# Location to install Emacs.app on Mac OS X -carbon_appdir=@carbon_appdir@ +# Location to install Emacs.app under NeXT/Open/GNUstep / Cocoa +ns_appbindir=@ns_appbindir@ +ns_appresdir=@ns_appresdir@ # Where the etc/emacs.desktop file is to be installed. desktopdir=$(datarootdir)/applications @@ -243,6 +243,8 @@ INSTALL_STRIP = # We use gzip to compress installed .el files. GZIP_PROG = @GZIP_PROG@ +# If non-nil, gzip the installed Info and man pages. +GZIP_INFO = @GZIP_INFO@ # ============================= Targets ============================== @@ -279,6 +281,9 @@ all: ${SUBDIR} leim removenullpaths=sed -e 's/^://g' -e 's/:$$//g' -e 's/::/:/g' # Generate epaths.h from epaths.in. This target is invoked by `configure'. +# See comments in configure.in for why it is done this way, as opposed +# to just letting configure generate epaths.h from epaths.in in a +# similar way to how Makefile is made from Makefile.in. epaths-force: FRC @(lisppath=`echo ${lisppath} | ${removenullpaths}` ; \ buildlisppath=`echo ${buildlisppath} | ${removenullpaths}` ; \ @@ -301,30 +306,67 @@ epaths-force: FRC # "export PARALLEL=0" is for SGI's Make, to prevent it from # running more than 1 process in the leim directory, especially for # the $TIT files there. -leim: src ${SUBDIR_MAKEFILES} FRC +leim: src Makefile FRC (export PARALLEL; PARALLEL=0; cd $@; $(MAKE) all $(MFLAGS) \ CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \ LDFLAGS='${LDFLAGS}' MAKE='${MAKE}') src: lib-src FRC -lib-src: FRC src/config.stamp - .RECURSIVE: ${SUBDIR} leim # We need to build `emacs' in `src' to compile the *.elc files in `lisp'. lisp: src -${SUBDIR}: ${SUBDIR_MAKEFILES} FRC - cd $@; $(MAKE) all $(MFLAGS) \ +# These targets should be "${SUBDIR} without `src'". +lib-src lisp: Makefile FRC + cd $@; $(MAKE) all $(MFLAGS) \ CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \ LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' -blessmail: ${SUBDIR_MAKEFILES} src FRC +# Pass to src/Makefile.in an additional BOOTSTRAPEMACS variable which +# is either set to bootstrap-emacs (in case bootstrap-emacs has not been +# constructed yet) or the empty string (otherwise). +# src/Makefile.in uses it to implement conditional dependencies, so that +# files that need bootstrap-emacs to be built do not additionally need +# to be kept fresher than bootstrap-emacs. Otherwise changing a single +# file src/foo.c forces dumping a new bootstrap-emacs, then re-byte-compiling +# all preloaded elisp files, and only then dump the actual src/emacs, which +# is not wrong, but is overkill in 99.99% of the cases. +src: Makefile FRC + boot=bootstrap-emacs$(EXEEXT); \ + if [ ! -x "src/$$boot" ]; then \ + cd $@; $(MAKE) all $(MFLAGS) \ + CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \ + LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="$$boot"; \ + fi; + if [ -r .bzr/checkout/dirstate ]; then \ + vcswitness="$$(pwd)/.bzr/checkout/dirstate"; \ + fi; \ + cd $@; $(MAKE) all $(MFLAGS) \ + CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \ + LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="" \ + VCSWITNESS="$$vcswitness" + +blessmail: Makefile src FRC cd lib-src; $(MAKE) maybe-blessmail $(MFLAGS) \ MAKE='${MAKE}' archlibdir='$(archlibdir)' -Makefile: $(srcdir)/Makefile.in config.status +# We used to have one rule per */Makefile.in, but that leads to race +# conditions with parallel makes, so let's assume that the time stamp on +# ./Makefile is representative of the time stamp on all the other Makefiles. +Makefile: config.status $(srcdir)/src/config.in \ + $(srcdir)/Makefile.in \ + $(srcdir)/src/Makefile.in \ + $(srcdir)/lib-src/Makefile.in \ + $(srcdir)/doc/emacs/Makefile.in \ + $(srcdir)/doc/misc/Makefile.in \ + $(srcdir)/doc/lispref/Makefile.in \ + $(srcdir)/doc/lispintro/Makefile.in \ + $(srcdir)/oldXMenu/Makefile.in \ + $(srcdir)/lwlib/Makefile.in \ + $(srcdir)/leim/Makefile.in \ + $(srcdir)/lisp/Makefile.in ./config.status config.status: ${srcdir}/configure ${srcdir}/lisp/version.el @@ -336,46 +378,16 @@ $(srcdir)/configure: $(AUTOCONF_INPUTS) cd ${srcdir} && autoconf $(srcdir)/src/config.in: $(srcdir)/src/stamp-h.in - @true + @ # Usually, there's no need to rebuild src/config.in just + @ # because stamp-h.in has changed (since building stamp-h.in + @ # refreshes config.in as well), but if config.in is missing + @ # then we really need to do something more. + [ -r "$@" ] || ( cd ${srcdir} && autoheader ) $(srcdir)/src/stamp-h.in: $(AUTOCONF_INPUTS) cd ${srcdir} && autoheader rm -f $(srcdir)/src/stamp-h.in echo timestamp > $(srcdir)/src/stamp-h.in -src/Makefile: $(srcdir)/src/Makefile.in config.status - ./config.status - -src/config.stamp: $(srcdir)/src/config.in config.status - ./config.status - touch src/config.stamp - -lib-src/Makefile: $(srcdir)/lib-src/Makefile.in config.status - ./config.status - -doc/emacs/Makefile: $(srcdir)/doc/emacs/Makefile.in config.status - ./config.status - -doc/misc/Makefile: $(srcdir)/doc/misc/Makefile.in config.status - ./config.status - -doc/lispref/Makefile: $(srcdir)/doc/lispref/Makefile.in config.status - ./config.status - -doc/lispintro/Makefile: $(srcdir)/doc/lispintro/Makefile.in config.status - ./config.status - -oldXMenu/Makefile: $(srcdir)/oldXMenu/Makefile.in config.status - ./config.status - -lwlib/Makefile: $(srcdir)/lwlib/Makefile.in config.status - ./config.status - -leim/Makefile: $(srcdir)/leim/Makefile.in config.status - ./config.status - -lisp/Makefile: $(srcdir)/lisp/Makefile.in config.status - ./config.status - # ==================== Installation ==================== ## If we let lib-src do its own installation, that means we @@ -397,6 +409,8 @@ lisp/Makefile: $(srcdir)/lisp/Makefile.in config.status install: all install-arch-indep install-arch-dep install-leim blessmail @true +MV_DIRS = for i in $$dir; do rm -fr `basename "$$i"` ; mv "$$i" . ; done + ### Install the executables that were compiled specifically for this machine. ### It would be nice to do something for a parallel make ### to ensure that install-arch-indep finishes before this starts. @@ -416,12 +430,21 @@ install-arch-dep: mkdir ${INSTALL_DATA} lib-src/$$f $(DESTDIR)${archlibdir}/$$f; \ else true; fi ; \ done - if test "${carbon_appdir}" != ""; then \ - umask 022; mkdir -p $(DESTDIR)${carbon_appdir}/Emacs.app; \ - (cd mac/Emacs.app; (tar -chf - . | \ - (cd $(DESTDIR)${carbon_appdir}/Emacs.app; umask 022; tar -xvf - \ - && cat > /dev/null))) || exit 1; \ - fi + if test "${ns_appresdir}" != ""; then \ + ( cd ${ns_appresdir} ; \ + if test -d share/emacs ; then dir=share/emacs/*/*; $(MV_DIRS); fi;\ + if test -d share/info ; then dir=share/info; $(MV_DIRS) ; fi ; \ + rm -fr share ) ; \ + ( cd ${ns_appbindir}libexec ; dir=emacs/*/*/* ; $(MV_DIRS); \ + rm -fr emacs ) ; \ + ( cd ${ns_appbindir}bin ; rm -f emacs emacs-24* ; \ + ln -sf ../libexec/* .) ; \ + else true ; fi + +## FIXME is the emacs-24* bit above really necessary and correct? +## What if I have 24.1 and 24.2 installed at the same time? +## In any case, it should use something like echo $version | sed 's/\..*//' +## instead of hard-coding a version. ## http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg01672.html ## Needs to be the user running install, so configure can't set it. @@ -470,20 +493,19 @@ install-arch-indep: mkdir info install-etc | (cd $${dest}; umask 022; \ tar -xvf - && cat > /dev/null) || exit 1; \ find $${dest} -exec chown $${installuser} {} ';' ;\ - for subdir in `find $${dest} -type d ! -name RCS ! -name CVS -print` ; do \ + for subdir in `find $${dest} -type d -print` ; do \ chmod a+rx $${subdir} ; \ - rm -rf $${subdir}/RCS ; \ - rm -rf $${subdir}/CVS ; \ - rm -f $${subdir}/.cvsignore ; \ + rm -f $${subdir}/.gitignore ; \ rm -f $${subdir}/.arch-inventory ; \ + rm -f $${subdir}/.DS_Store ; \ rm -f $${subdir}/\#* ; \ rm -f $${subdir}/.\#* ; \ rm -f $${subdir}/*~ ; \ rm -f $${subdir}/*.orig ; \ [ "$${dir}" != "${srcdir}/etc" ] && \ - rm -f $${subdir}/[mM]akefile* ; \ + rm -f $${subdir}/[mM]akefile*.c $${subdir}/[mM]akefile*[.-]in \ + $${subdir}/[mM]akefile ; \ rm -f $${subdir}/ChangeLog* ; \ - rm -f $${subdir}/dired.todo ; \ done) ; \ done -rm -f $(DESTDIR)${lispdir}/subdirs.el @@ -512,7 +534,7 @@ install-arch-indep: mkdir info install-etc then \ docfile="DOC-$${fullversion}"; \ else \ - docfile="DOC-${version}*"; \ + docfile="DOC"; \ fi; \ echo "Copying etc/$${docfile} to $(DESTDIR)${docdir} ..." ; \ (cd ./etc; tar -chf - $${docfile}) \ @@ -560,6 +582,10 @@ install-arch-indep: mkdir info install-etc for f in `ls $$elt $$elt-[1-9] $$elt-[1-9][0-9] 2>/dev/null`; do \ ${INSTALL_DATA} $$f $(DESTDIR)${infodir}/$$f; \ chmod a+r $(DESTDIR)${infodir}/$$f; \ + if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \ + rm -f $(DESTDIR)${infodir}/$$f.gz; \ + ${GZIP_PROG} -9n $(DESTDIR)${infodir}/$$f; \ + else true; fi; \ done; \ done); \ else true; fi @@ -573,13 +599,17 @@ install-arch-indep: mkdir info install-etc ${INSTALL_INFO} --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \ done; \ else true; fi - -chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} $(DESTDIR)${datadir}/emacs/site-lisp ${COPYDESTS} $(DESTDIR)${infodir} + -chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} ${COPYDESTS} thisdir=`/bin/pwd`; \ cd ${mansrcdir}; \ - for page in emacs emacsclient etags ctags ; do \ + for page in ${MAN_PAGES}; do \ (cd $${thisdir}; \ - ${INSTALL_DATA} ${mansrcdir}/$${page}.1 $(DESTDIR)${man1dir}/$${page}${manext}; \ - chmod a+r $(DESTDIR)${man1dir}/$${page}${manext}); \ + ${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}; \ + chmod a+r $(DESTDIR)${man1dir}/$${page}; \ + if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \ + rm -f $(DESTDIR)${man1dir}/$${page}.gz; \ + ${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${page}; \ + else true; fi ); \ done ## Install those items from etc/ that need to end up elsewhere. @@ -609,11 +639,10 @@ install-strip: ### we may be creating several layers of directories (for example, ### /usr/local/lib/emacs/19.0/mips-dec-ultrix4.2), we use mkinstalldirs ### instead of mkdir. Not all systems' mkdir programs have the `-p' flag. +### We set the umask so that any created directories are world-readable. +### FIXME it would be good to warn about non-standard permissions of +### pre-existing directories, but that does not seem easy. mkdir: FRC - if [ -d $(DESTDIR)${datadir} ]; then true; else \ - $(srcdir)/mkinstalldirs $(DESTDIR)${datadir}; \ - chmod a+r $(DESTDIR)${datadir};\ - fi icondirs= ; \ for dir in $(iconsrcdir)/*/*/apps $(iconsrcdir)/*/*/mimetypes; do \ if [ -d $${dir} ]; then \ @@ -621,7 +650,9 @@ mkdir: FRC fi ; \ done ; \ icondirs=`echo "$${icondirs}" | sed 's,$(srcdir)/etc/images/icons,$(DESTDIR)${icondir},g'` ; \ - $(srcdir)/mkinstalldirs ${COPYDESTS} $(DESTDIR)${infodir} $(DESTDIR)${man1dir} \ + umask 022 ; \ + $(srcdir)/mkinstalldirs $(DESTDIR)${datadir} ${COPYDESTS} \ + $(DESTDIR)${infodir} $(DESTDIR)${man1dir} \ $(DESTDIR)${bindir} $(DESTDIR)${docdir} $(DESTDIR)${libexecdir} \ $(DESTDIR)${datadir}/emacs/site-lisp \ $(DESTDIR)${datadir}/emacs/${version}/site-lisp \ @@ -629,8 +660,7 @@ mkdir: FRC $(DESTDIR)${desktopdir} $${icondirs} ### Delete all the installed files that the `install' target would -### create (but not the noninstalled files such as `make all' would -### create). +### 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. uninstall: @@ -652,7 +682,9 @@ uninstall: esac ; \ fi ; \ done - (cd $(DESTDIR)${archlibdir} && rm -f fns-*) + if [ -d $(DESTDIR)${archlibdir} ]; then \ + (cd $(DESTDIR)${archlibdir} && rm -f fns-*) \ + fi -rm -rf $(DESTDIR)${libexecdir}/emacs/${version} (cd $(DESTDIR)${infodir} && \ for elt in $(INFO_FILES); do \ @@ -661,9 +693,14 @@ uninstall: rm -f $$f; \ done; \ done;) - (cd $(DESTDIR)${man1dir} && rm -f emacs${manext} emacsclient${manext} etags${manext} ctags${manext}) + (cd $(DESTDIR)${man1dir} && rm -f $(MAN_PAGES)) (cd $(DESTDIR)${bindir} && rm -f $(EMACSFULL) $(EMACS)) - + (cd $(DESTDIR)${icondir} && rm -f hicolor/*x*/apps/emacs.png hicolor/*x*/apps/emacs22.png hicolor/scalable/apps/emacs.svg hicolor/scalable/mimetypes/emacs-document.svg ) + -rm -f $(DESTDIR)${desktopdir}/emacs.desktop + for file in snake-scores tetris-scores; do \ + file=$(DESTDIR)${gamedir}/$${file}; \ + [ -s $${file} ] || rm -f $$file; \ + done FRC: @@ -788,21 +825,26 @@ dist: .PHONY: info dvi dist check html info-real: - -(cd doc/emacs; $(MAKE) $(MFLAGS) info) - -(cd doc/misc; $(MAKE) $(MFLAGS) info) - -(cd doc/lispref; $(MAKE) $(MFLAGS) info) - -(cd doc/lispintro; $(MAKE) $(MFLAGS) info) + (cd doc/emacs; $(MAKE) $(MFLAGS) info) + (cd doc/misc; $(MAKE) $(MFLAGS) info) + (cd doc/lispref; $(MAKE) $(MFLAGS) info) + (cd doc/lispintro; $(MAKE) $(MFLAGS) info) force-info: -# Note that man/Makefile knows how to -# put the info files in $(srcdir), +# Note that man/Makefile knows how to put the info files in $(srcdir), # so we can do ok running make in the build dir. +# This used to have a clause that exited with an error if MAKEINFO = no. +# But it is inappropriate to do so without checking if makeinfo is +# actually needed - it is not if the info files are up-to-date. (Bug#3982) +# Only the doc/*/Makefiles can decide that, so we let those rules run +# and give a standard error if makeinfo is needed but missing. +# While it would be nice to give a more detailed error message, that +# would require changing every rule in doc/ that builds an info file, +# and it's not worth it. This case is only relevant if you download a +# release, then change the .texi files. info: force-info @if test "$(MAKEINFO)" = "off"; then \ echo "Configured --without-makeinfo, not building manuals" ; \ - elif test "$(MAKEINFO)" = "no"; then \ - echo "makeinfo is missing - cannot build manuals" ; \ - exit 1 ; \ else \ $(MAKE) $(MFLAGS) info-real ; \ fi