Avoid DECLARE_INTERVALS.
[bpt/emacs.git] / Makefile.in
index 4696522..d46b0a9 100644 (file)
@@ -108,6 +108,8 @@ bitmapdir=@bitmapdir@
 # expected to be in ${srcdir}/src, and the source code for Emacs's
 # utility programs is expected to be in ${srcdir}/lib-src.  This is
 # set by the configure script's `--srcdir' option.
+
+# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
 srcdir=@srcdir@
 
 # Tell make where to find source files; this is needed for the makefiles.
@@ -204,12 +206,12 @@ all: ${SUBDIR}
 
 removenullpaths=sed -e 's/^://g' -e 's/:$$//g' -e 's/::/:/g'
 
-# Generate paths.h from paths.in.  This target is invoked by `configure'.
-paths-force: FRC
+# Generate epaths.h from epaths.in.  This target is invoked by `configure'.
+epaths-force: FRC
        @(lisppath=`echo ${lisppath} | ${removenullpaths}` ;            \
          buildlisppath=`echo ${buildlisppath} | ${removenullpaths}` ;  \
          x_default_search_path=`echo ${x_default_search_path}`; \
-         sed < ${srcdir}/src/paths.in > paths.h.$$$$           \
+         sed < ${srcdir}/src/epaths.in > epaths.h.$$$$         \
          -e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'$${lisppath}'";'        \
          -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'$${buildlisppath}'";' \
          -e 's;\(#.*PATH_EXEC\).*$$;\1 "${archlibdir}";'               \
@@ -218,7 +220,7 @@ paths-force: FRC
          -e 's;\(#.*PATH_BITMAPS\).*$$;\1 "${bitmapdir}";'             \
          -e 's;\(#.*PATH_X_DEFAULTS\).*$$;\1 "${x_default_search_path}";' \
          -e 's;\(#.*PATH_DOC\).*$$;\1 "${docdir}";') &&                \
-       ${srcdir}/move-if-change paths.h.$$$$ src/paths.h
+       ${srcdir}/move-if-change epaths.h.$$$$ src/epaths.h
 
 # For parallel make, src should be build before leim.
 leim:   src
@@ -238,29 +240,35 @@ blessmail: ${SUBDIR_MAKEFILES} src FRC
        cd lib-src; $(MAKE) maybe-blessmail $(MFLAGS) \
          MAKE='${MAKE}' archlibdir='$(archlibdir)'
 
-Makefile: Makefile.in config.status
+Makefile: $(srcdir)/Makefile.in config.status
        ./config.status
 
-src/Makefile: src/Makefile.in config.status
+config.status: ${srcdir}/configure
+       ./config.status --recheck
+
+${srcdir}/configure: configure.in aclocal.m4
+       cd ${srcdir} && autoconf
+
+src/Makefile: $(srcdir)/src/Makefile.in config.status
        ./config.status
 
-src/config.stamp: src/config.in config.status
+src/config.stamp: $(srcdir)/src/config.in config.status
        ./config.status
        touch src/config.stamp
 
-lib-src/Makefile: lib-src/Makefile.in config.status
+lib-src/Makefile: $(srcdir)/lib-src/Makefile.in config.status
        ./config.status
 
-man/Makefile: man/Makefile.in config.status
+man/Makefile: $(srcdir)/man/Makefile.in config.status
        ./config.status
 
-oldXMenu/Makefile: oldXMenu/Makefile.in config.status
+oldXMenu/Makefile: $(srcdir)/oldXMenu/Makefile.in config.status
        ./config.status
 
-lwlib/Makefile: lwlib/Makefile.in config.status
+lwlib/Makefile: $(srcdir)/lwlib/Makefile.in config.status
        ./config.status
 
-leim/Makefile: leim/Makefile.in config.status
+leim/Makefile: $(srcdir)/leim/Makefile.in config.status
        ./config.status
 
 # ==================== Installation ====================
@@ -297,6 +305,12 @@ install-arch-dep: mkdir
        -chmod 1755  ${bindir}/emacs-${version}
        rm -f ${bindir}/$(EMACS)
        -ln ${bindir}/emacs-${version} ${bindir}/$(EMACS)
+       -unset CDPATH; \
+       for f in `cd lib-src && echo fns-*.el`; do \
+         if test -r lib-src/$$f ; then \
+           ${INSTALL_DATA} lib-src/$$f ${archlibdir}/$$f; \
+         else true; fi ; \
+       done
 
 ### Install the files that are machine-independent.
 ### Most of them come straight from the distribution;
@@ -305,8 +319,9 @@ install-arch-dep: mkdir
 
 ## Note that we copy DOC* and then delete DOC
 ## as a workaround for a bug in tar on Ultrix 4.2.
-install-arch-indep: mkdir
+install-arch-indep: mkdir info
        -set ${COPYDESTS} ; \
+       unset CDPATH; \
        for dir in ${COPYDIR} ; do \
          if [ `(cd $$1 && /bin/pwd)` != `(cd $${dir} && /bin/pwd)` ] ; then \
            rm -rf $$1 ; \
@@ -316,6 +331,7 @@ install-arch-indep: mkdir
        -set ${COPYDESTS} ; \
        mkdir ${COPYDESTS} ; \
        chmod ugo+rx ${COPYDESTS} ; \
+       unset CDPATH; \
        for dir in ${COPYDIR} ; do \
          dest=$$1 ; shift ; \
          [ -d $${dir} ] \
@@ -323,7 +339,7 @@ install-arch-indep: mkdir
          && (echo "Copying $${dir} to $${dest}..." ; \
              (cd $${dir}; tar -cf - . ) \
                |(cd $${dest};umask 022; tar -xvf - && cat > /dev/null); \
-             for subdir in `find $${dest} -type d ! -name RCS -print` ; do \
+             for subdir in `find $${dest} -type d ! -name RCS ! -name CVS -print` ; do \
                chmod a+rx $${subdir} ; \
                rm -rf $${subdir}/RCS ; \
                rm -rf $${subdir}/CVS ; \
@@ -338,16 +354,23 @@ install-arch-indep: mkdir
        done
        -rm -f ${lispdir}/subdirs.el
        $(srcdir)/update-subdirs ${lispdir}
-       -rm -f ${datadir}/emacs/${version}/site-lisp/subdirs.el
-       (echo "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \
-        echo "    (normal-top-level-add-subdirs-to-load-path))") \
-         > ${datadir}/emacs/${version}/site-lisp/subdirs.el
+       if [ -f ${datadir}/emacs/${version}/site-lisp/subdirs.el ]; \
+       then true; \
+       else \
+         (echo "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \
+          echo "    (normal-top-level-add-subdirs-to-load-path))") \
+           > ${datadir}/emacs/${version}/site-lisp/subdirs.el; \
+       fi
        chmod a+r ${datadir}/emacs/${version}/site-lisp/subdirs.el
-       -rm -f ${datadir}/emacs/site-lisp/subdirs.el
-       (echo "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \
-        echo "    (normal-top-level-add-subdirs-to-load-path))") \
-         > ${datadir}/emacs/site-lisp/subdirs.el
-       chmod a+r ${datadir}/emacs/site-lisp/subdirs.el
+       -if [ -f ${datadir}/emacs/site-lisp/subdirs.el ]; \
+       then true; \
+       else \
+         (echo "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \
+          echo "    (normal-top-level-add-subdirs-to-load-path))") \
+           > ${datadir}/emacs/site-lisp/subdirs.el; \
+       fi
+       -chmod a+r ${datadir}/emacs/site-lisp/subdirs.el
+       -unset CDPATH; \
        if [ `(cd ./etc; /bin/pwd)` != `(cd ${docdir}; /bin/pwd)` ]; \
        then \
           echo "Copying etc/DOC-* to ${docdir} ..." ; \
@@ -355,6 +378,7 @@ install-arch-indep: mkdir
             |(cd ${docdir}; umask 0; tar -xvf - && cat > /dev/null); \
           (cd $(docdir); chmod a+r DOC*; rm DOC); \
        else true; fi
+       -unset CDPATH; \
        if [ -r ./lisp ] \
           && [ -r ./lisp/simple.el ] \
           && [ x`(cd ./lisp; /bin/pwd)` != x`(cd ${lispdir}; /bin/pwd)` ] \
@@ -364,6 +388,7 @@ install-arch-indep: mkdir
           (cd lisp; tar -cf - *.el *.elc) \
             |(cd ${lispdir}; umask 0; tar -xvf - && cat > /dev/null); \
        else true; fi
+       -unset CDPATH; \
        thisdir=`/bin/pwd`; \
        if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
        then \
@@ -375,21 +400,22 @@ install-arch-indep: mkdir
              chmod a+r ${infodir}/dir); \
           fi; \
           cd ${srcdir}/info ; \
-          for f in ccmode* cl* customize* dired-x* ediff* emacs* forms* gnus* info* message* mh-e* reftex* sc* vip* widget*; do \
+          for f in ada-mode* autotype* ccmode* cl* dired-x* ebrowse* ediff* efaq* emacs* eudc* forms* gnus* idlwave* info* message* mh-e* reftex* sc* vip* widget* pcl-cvs; do \
             (cd $${thisdir}; \
              ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \
              chmod a+r ${infodir}/$$f); \
           done); \
        else true; fi
-       -thisdir=`/bin/pwd`; \
+       -unset CDPATH; \
+       thisdir=`/bin/pwd`; \
        if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
        then \
-         for f in ccmode cl customize dired-x ediff emacs forms gnus info message mh-e reftex sc vip widget; do \
+         for f in ada-mode autotype ccmode cl dired-x ediff efaq emacs eudc forms gnus idlwave info message mh-e reftex sc vip viper widget pcl-cvs; do \
            (cd $${thisdir}; \
             ${INSTALL_INFO} --dir-file=${infodir}/dir --info-file=${infodir}/$$f); \
          done; \
        else true; fi
-       -chmod -R a+r ${COPYDESTS} ${infodir}
+       -chmod -R a+r ${datadir}/emacs ${COPYDESTS} ${infodir}
        thisdir=`/bin/pwd`; \
        cd ${srcdir}/etc; \
        for page in emacs etags ctags ; do \
@@ -407,15 +433,19 @@ install-leim: leim/Makefile mkdir
 
 ### Build Emacs and install it, stripping binaries while installing them.
 install-strip:
-       $(MAKE) INSTALL_STRIP=-s
+       $(MAKE) INSTALL_STRIP=-s install
 
 ### Build all the directories we're going to install Emacs in. Since
 ### 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.
 mkdir: FRC
+       if [ -d ${datadir} ]; then true; else \
+         $(srcdir)/mkinstalldirs ${datadir}; \
+         chmod a+r ${datadir};\
+       fi
        $(srcdir)/mkinstalldirs ${COPYDESTS} ${infodir} ${man1dir} \
-         ${bindir} ${datadir} ${docdir} ${libexecdir} \
+         ${bindir} ${docdir} ${libexecdir} \
          ${datadir}/emacs/site-lisp \
          ${datadir}/emacs/${version}/site-lisp \
          `echo ${locallisppath} | sed 's/:/ /g'`
@@ -430,6 +460,7 @@ uninstall:
         $(MAKE) $(MFLAGS) uninstall                    \
            prefix=${prefix} exec_prefix=${exec_prefix} \
            bindir=${bindir} libexecdir=${libexecdir} archlibdir=${archlibdir})
+       -unset CDPATH; \
        for dir in ${lispdir} ${etcdir} ; do            \
          if [ -d $${dir} ]; then                       \
            case `(cd $${dir} ; /bin/pwd)` in           \
@@ -500,6 +531,7 @@ distclean: FRC
        (cd lib-src;  $(MAKE) $(MFLAGS) distclean)
        (cd man &&    $(MAKE) $(MFLAGS) distclean)
        (cd leim;     $(MAKE) $(MFLAGS) distclean)
+       (cd lisp;     $(MAKE) $(MFLAGS) distclean)
        ${top_distclean}
 
 ### `maintainer-clean'
@@ -580,9 +612,9 @@ check:
        @echo "We don't have any tests for GNU Emacs yet."
 
 dist:
-       cd ${srcdir}; make-dist
+       cd ${srcdir}; ./make-dist
 
-.PHONY: info dvi dist check
+.PHONY: info dvi dist check html
 force-info:
 info: force-info
        # Note that man/Makefile knows how to
@@ -591,3 +623,21 @@ info: force-info
        (cd man; $(MAKE) $(MFLAGS) info)
 dvi:
        (cd man; $(MAKE) $(MFLAGS) dvi)
+
+#### Bootstrapping.
+
+### This is meant for Emacs maintainers only.  It first cleans the
+### lisp subdirectory, removing all compiled Lisp files.  Then a
+### special emacs executable is built from Lisp sources, which is then
+### used to compile Lisp files.  The last step is a "normal" make.
+
+bootstrap: clean bootstrap-lisp-1 bootstrap-src bootstrap-lisp clean all info
+
+bootstrap-lisp-1:
+       (cd lisp; $(MAKE) $(MFLAGS) bootstrap-clean)
+
+bootstrap-lisp:
+       -(cd lisp; $(MAKE) $(MFLAGS) bootstrap EMACS=../src/bootstrap-emacs)
+
+bootstrap-src:
+       (cd src; $(MAKE) $(MFLAGS) bootstrap)