(socket_status): New function.
[bpt/emacs.git] / Makefile.in
index a32f318..a2d3f8f 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: configure
+       ./config.status --recheck
+
+${srcdir}/configure: configure.in
+       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,10 @@ 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 \
+         ${INSTALL_DATA} lib-src/$$f ${archlibdir}/$$f; \
+       done
 
 ### Install the files that are machine-independent.
 ### Most of them come straight from the distribution;
@@ -305,8 +317,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 +329,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} ] \
@@ -338,16 +352,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 +376,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 +386,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,14 +398,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* ediff* efaq* emacs* forms* gnus* idlwave* info* message* mh-e* reftex* sc* vip* widget*; do \
             (cd $${thisdir}; \
              ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \
-             chmod a+r ${infodir}/$$f; \
-             ${INSTALL_INFO} --info-file=$$f); \
+             chmod a+r ${infodir}/$$f); \
           done); \
        else true; fi
-       -chmod -R a+r ${COPYDESTS} ${infodir}
+       -unset CDPATH; \
+       thisdir=`/bin/pwd`; \
+       if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
+       then \
+         for f in ada-mode autotype ccmode cl dired-x ediff efaq emacs forms gnus idlwave info message mh-e reftex sc vip viper widget; do \
+           (cd $${thisdir}; \
+            ${INSTALL_INFO} --dir-file=${infodir}/dir --info-file=${infodir}/$$f); \
+         done; \
+       else true; fi
+       -chmod -R a+r ${datadir}/emacs ${COPYDESTS} ${infodir}
        thisdir=`/bin/pwd`; \
        cd ${srcdir}/etc; \
        for page in emacs etags ctags ; do \
@@ -400,15 +431,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'`
@@ -423,6 +458,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           \
@@ -584,3 +620,18 @@ 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
+       (cd lisp; $(MAKE) $(MFLAGS) bootstrap-clean)
+       (cd src; $(MAKE) $(MFLAGS) bootstrap)
+       -(cd lisp; $(MAKE) $(MFLAGS) bootstrap EMACS=../src/bootstrap-emacs)
+       $(MAKE) $(MFLAGS) clean
+       $(MAKE) $(MFLAGS)
+