Import crypto/md5 module from gnulib.
[bpt/emacs.git] / Makefile.in
index 32a09ff..8e1eb1e 100644 (file)
@@ -2,9 +2,7 @@
 # DIST: make most of the changes to this file you might want, so try
 # DIST: that first.
 
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-#   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-#   Free Software Foundation, Inc.
+# Copyright (C) 1992-2011  Free Software Foundation, Inc.
 
 # This file is part of GNU Emacs.
 
@@ -69,17 +67,10 @@ 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@
 
 ### These help us choose version- and architecture-specific directories
 ### to install files in.
@@ -131,7 +122,7 @@ libexecdir=@libexecdir@
 # (and they contain cross-references that expect them to be there).
 mandir=@mandir@
 man1dir=$(mandir)/man1
-MAN_PAGES=b2m.1 ctags.1 ebrowse.1 emacs.1 emacsclient.1 etags.1 \
+MAN_PAGES=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
@@ -141,11 +132,14 @@ MAN_PAGES=b2m.1 ctags.1 ebrowse.1 emacs.1 emacsclient.1 etags.1 \
 infodir=@infodir@
 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        \
+          ert 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
 
+# If no makeinfo was found and configured --without-makeinfo, "no"; else "yes".
+HAVE_MAKEINFO=@HAVE_MAKEINFO@
+
 # Directory for local state files for all programs.
 localstatedir=@localstatedir@
 
@@ -170,7 +164,6 @@ VPATH=@srcdir@
 x_default_search_path=@x_default_search_path@
 
 # Location to install Emacs.app under NeXT/Open/GNUstep / Cocoa
-ns_appdir=@ns_appdir@
 ns_appbindir=@ns_appbindir@
 ns_appresdir=@ns_appresdir@
 
@@ -250,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 ==============================
 
@@ -263,14 +258,14 @@ EMACSFULL = `echo emacs-${version}${EXEEXT} | sed '$(TRANSFORM)'`
 # Subdirectories to make recursively.  `lisp' is not included
 # because the compiled lisp files are part of the distribution.
 # leim is not included because it needs special handling.
-# 
+#
 # Actually, we now include `lisp' as well, since the compiled files
 # are not included any more in case of bootstrap or in case Emacs was
 # checked out from a VCS.
-SUBDIR = lib-src src lisp
+SUBDIR = lib lib-src src lisp
 
 # The subdir makefiles created by config.status.
-SUBDIR_MAKEFILES = lib-src/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispref/Makefile doc/lispintro/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile leim/Makefile lisp/Makefile
+SUBDIR_MAKEFILES = lib/Makefile lib-src/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispref/Makefile doc/lispintro/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile leim/Makefile lisp/Makefile test/automated/Makefile
 
 # Subdirectories to install, and where they'll go.
 # lib-src's makefile knows how to install it, so we don't do that here.
@@ -286,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}` ;  \
@@ -300,8 +298,7 @@ epaths-force: FRC
          -e 's;\(#.*PATH_BITMAPS\).*$$;\1 "${bitmapdir}";'             \
          -e 's;\(#.*PATH_X_DEFAULTS\).*$$;\1 "${x_default_search_path}";' \
          -e 's;\(#.*PATH_GAME\).*$$;\1 "${gamedir}";' \
-         -e 's;\(#.*PATH_DOC\).*$$;\1 "${docdir}";' \
-         -e 's;/[*] *arch-tag:.*;/*;') &&              \
+         -e 's;\(#.*PATH_DOC\).*$$;\1 "${docdir}";') &&                \
        ${srcdir}/move-if-change epaths.h.$$$$ src/epaths.h
 
 # For parallel make, src should be built before leim.
@@ -313,6 +310,8 @@ leim:   src Makefile FRC
          CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
          LDFLAGS='${LDFLAGS}' MAKE='${MAKE}')
 
+lib-src src: lib
+
 src:   lib-src FRC
 
 .RECURSIVE: ${SUBDIR} leim
@@ -320,8 +319,40 @@ src:       lib-src FRC
 # We need to build `emacs' in `src' to compile the *.elc files in `lisp'.
 lisp: src
 
+# Maintainers can put a copy of gnulib into $(gnulib_srcdir).
+gnulib_srcdir = ../gnulib
+$(gnulib_srcdir):
+       git clone git://git.savannah.gnu.org/gnulib.git $@
+
+# A shorter name that satisfies MS-DOS 8+3 constraints.
+DOS_gnulib_comp.m4 = gl-comp.m4
+
+# Update modules from gnulib, for maintainers, who should have it in
+# $(gnulib_srcdir) (relative to $(srcdir) and should have build tools
+# as per $(gnulib_srcdir)/DEPENDENCIES.
+GNULIB_MODULES = \
+  crypto/md5 dtoastr getloadavg getopt-gnu ignore-value mktime strftime
+GNULIB_TOOL_FLAGS = \
+ --import --no-changelog --no-vc-files --makefile-name=gnulib.mk
+sync-from-gnulib: $(gnulib_srcdir)
+       -cd $(srcdir)/m4 && cp $(DOS_gnulib_comp.m4) gnulib-comp.m4
+       cd $(srcdir) && \
+         $(gnulib_srcdir)/gnulib-tool $(GNULIB_TOOL_FLAGS) $(GNULIB_MODULES)
+       cd $(srcdir)/m4 && rm gnulib-cache.m4 warn-on-use.m4
+       cd $(srcdir)/m4 && mv gnulib-comp.m4 $(DOS_gnulib_comp.m4)
+       cp $(gnulib_srcdir)/build-aux/texinfo.tex $(srcdir)/doc/misc
+       cp \
+         $(gnulib_srcdir)/build-aux/config.sub \
+         $(gnulib_srcdir)/build-aux/config.guess \
+         $(gnulib_srcdir)/build-aux/install-sh \
+         $(gnulib_srcdir)/build-aux/mkinstalldirs \
+         $(gnulib_srcdir)/build-aux/move-if-change \
+         $(srcdir)
+       cd $(srcdir) && autoreconf -I m4
+.PHONY: sync-from-gnulib
+
 # These targets should be "${SUBDIR} without `src'".
-lib-src lisp: Makefile FRC
+lib lib-src lisp: Makefile FRC
        cd $@; $(MAKE) all $(MFLAGS)                           \
          CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
          LDFLAGS='${LDFLAGS}' MAKE='${MAKE}'
@@ -342,9 +373,13 @@ src: Makefile FRC
              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=""
+         LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="" \
+         VCSWITNESS="$$vcswitness"
 
 blessmail: Makefile src FRC
        cd lib-src; $(MAKE) maybe-blessmail $(MFLAGS) \
@@ -356,6 +391,7 @@ blessmail: Makefile src FRC
 Makefile: config.status $(srcdir)/src/config.in \
           $(srcdir)/Makefile.in \
           $(srcdir)/src/Makefile.in \
+          $(srcdir)/lib/Makefile.in \
           $(srcdir)/lib-src/Makefile.in \
           $(srcdir)/doc/emacs/Makefile.in \
           $(srcdir)/doc/misc/Makefile.in \
@@ -364,19 +400,34 @@ Makefile: config.status $(srcdir)/src/config.in \
           $(srcdir)/oldXMenu/Makefile.in \
           $(srcdir)/lwlib/Makefile.in \
           $(srcdir)/leim/Makefile.in \
-          $(srcdir)/lisp/Makefile.in
+          $(srcdir)/lisp/Makefile.in \
+          $(srcdir)/test/automated/Makefile.in
        ./config.status
 
 config.status: ${srcdir}/configure ${srcdir}/lisp/version.el
        ./config.status --recheck
 
-AUTOCONF_INPUTS = @MAINT@ $(srcdir)/configure.in $(srcdir)/m4/getopt.m4
+AUTOCONF_INPUTS = @MAINT@ $(srcdir)/configure.in $(srcdir)/aclocal.m4
 
 $(srcdir)/configure: $(AUTOCONF_INPUTS)
        cd ${srcdir} && autoconf
 
+ACLOCAL_INPUTS = @MAINT@ $(srcdir)/m4/$(DOS_gnulib_comp.m4)
+$(srcdir)/aclocal.m4: $(ACLOCAL_INPUTS)
+       cd $(srcdir) && aclocal -I m4
+
+AUTOMAKE_INPUTS = @MAINT@ $(srcdir)/aclocal.m4 $(srcdir)/lib/Makefile.am
+$(srcdir)/lib/Makefile.in: $(AUTOMAKE_INPUTS)
+       cd $(srcdir) && automake --gnu -a -c lib/Makefile
+am--refresh: $(srcdir)/aclocal.m4 $(srcdir)/configure $(srcdir)/src/config.in
+.PHONY: am--refresh
+
 $(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
@@ -418,23 +469,22 @@ install-arch-dep: mkdir
        -chmod 1755 $(DESTDIR)${bindir}/$(EMACSFULL)
        rm -f $(DESTDIR)${bindir}/$(EMACS)
        -ln $(DESTDIR)${bindir}/$(EMACSFULL) $(DESTDIR)${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 $(DESTDIR)${archlibdir}/$$f; \
-         else true; fi ; \
-       done
-       if test "${ns_appdir}" != ""; then \
+       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); \
+         ( cd ${ns_appbindir}libexec ; dir=emacs/*/*/* ; $(MV_DIRS); \
            rm -fr emacs ) ; \
-         ( cd ${ns_appbindir}/bin ; rm -f emacs emacs-23* ; \
+         ( 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.
 set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \
@@ -482,11 +532,8 @@ 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 ; \
@@ -498,7 +545,6 @@ install-arch-indep: mkdir info install-etc
                 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
@@ -571,10 +617,14 @@ install-arch-indep: mkdir info install-etc
           fi; \
           cd ${srcdir}/info ; \
           for elt in $(INFO_FILES); do \
-             test "$(MAKEINFO)" = "off" && ! test -e $$elt && continue; \
+             test "$(HAVE_MAKEINFO)" = "no" && ! test -e $$elt && continue; \
              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
@@ -583,7 +633,7 @@ install-arch-indep: mkdir info install-etc
        if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd $(DESTDIR)${infodir} && /bin/pwd)` ]; \
        then \
          for elt in $(INFO_FILES); do \
-           test "$(MAKEINFO)" = "off" && ! test -e $$elt && continue; \
+           test "$(HAVE_MAKEINFO)" = "no" && ! test -e $$elt && continue; \
            (cd $${thisdir}; \
             ${INSTALL_INFO} --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \
          done; \
@@ -594,7 +644,11 @@ install-arch-indep: mkdir info install-etc
        for page in ${MAN_PAGES}; do \
          (cd $${thisdir}; \
           ${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}; \
-          chmod a+r $(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.
@@ -667,7 +721,6 @@ uninstall:
            esac ;                                      \
          fi ;                                          \
        done
-       (cd $(DESTDIR)${archlibdir} && rm -f fns-*)
        -rm -rf $(DESTDIR)${libexecdir}/emacs/${version}
        (cd $(DESTDIR)${infodir} && \
          for elt in $(INFO_FILES); do \
@@ -700,6 +753,7 @@ mostlyclean: FRC
        (cd src;      $(MAKE) $(MFLAGS) mostlyclean)
        (cd oldXMenu; $(MAKE) $(MFLAGS) mostlyclean)
        (cd lwlib;    $(MAKE) $(MFLAGS) mostlyclean)
+       (cd lib;      $(MAKE) $(MFLAGS) mostlyclean)
        (cd lib-src;  $(MAKE) $(MFLAGS) mostlyclean)
        -(cd doc/emacs &&   $(MAKE) $(MFLAGS) mostlyclean)
        -(cd doc/misc &&   $(MAKE) $(MFLAGS) mostlyclean)
@@ -719,6 +773,7 @@ clean: FRC
        (cd src;      $(MAKE) $(MFLAGS) clean)
        (cd oldXMenu; $(MAKE) $(MFLAGS) clean)
        (cd lwlib;    $(MAKE) $(MFLAGS) clean)
+       (cd lib;      $(MAKE) $(MFLAGS) clean)
        (cd lib-src;  $(MAKE) $(MFLAGS) clean)
        -(cd doc/emacs &&   $(MAKE) $(MFLAGS) clean)
        -(cd doc/misc &&   $(MAKE) $(MFLAGS) clean)
@@ -738,11 +793,12 @@ top_bootclean=\
 ###      distribution.
 top_distclean=\
        ${top_bootclean}; \
-       rm -f config.status Makefile ${SUBDIR_MAKEFILES}
+       rm -f config.status Makefile stamp-h1 ${SUBDIR_MAKEFILES}
 distclean: FRC
        (cd src;      $(MAKE) $(MFLAGS) distclean)
        (cd oldXMenu; $(MAKE) $(MFLAGS) distclean)
        (cd lwlib;    $(MAKE) $(MFLAGS) distclean)
+       (cd lib;      $(MAKE) $(MFLAGS) distclean)
        (cd lib-src;  $(MAKE) $(MFLAGS) distclean)
        (cd doc/emacs &&    $(MAKE) $(MFLAGS) distclean)
        (cd doc/misc &&    $(MAKE) $(MFLAGS) distclean)
@@ -759,6 +815,7 @@ bootstrap-clean: FRC
        (cd src;      $(MAKE) $(MFLAGS) bootstrap-clean)
        (cd oldXMenu; $(MAKE) $(MFLAGS) maintainer-clean)
        (cd lwlib;    $(MAKE) $(MFLAGS) maintainer-clean)
+       (cd lib;      $(MAKE) $(MFLAGS) maintainer-clean)
        (cd lib-src;  $(MAKE) $(MFLAGS) maintainer-clean)
        -(cd doc/emacs &&   $(MAKE) $(MFLAGS) maintainer-clean)
        -(cd doc/misc &&   $(MAKE) $(MFLAGS) maintainer-clean)
@@ -779,10 +836,13 @@ bootstrap-clean: FRC
 ###      Makefile.  More generally, `make maintainer-clean' should not delete
 ###      anything that needs to exist in order to run `configure' and then
 ###      begin to build the program.
+top_maintainer_clean=\
+       ${top_distclean}; \
+       rm -fr autom4te.cache
 maintainer-clean: bootstrap-clean FRC
        (cd src;      $(MAKE) $(MFLAGS) maintainer-clean)
        (cd lisp;     $(MAKE) $(MFLAGS) maintainer-clean)
-       ${top_distclean}
+       ${top_maintainer_clean}
 
 ### This doesn't actually appear in the coding standards, but Karl
 ### says GCC supports it, and that's where the configuration part of
@@ -790,24 +850,24 @@ maintainer-clean: bootstrap-clean FRC
 ### it deletes backup and autosave files too.
 extraclean:
        for i in ${SUBDIR} leim; do (cd $$i; $(MAKE) $(MFLAGS) extraclean); done
-       ${top_distclean}
+       ${top_maintainer_clean}
        -rm -f config-tmp-*
        -rm -f *~ \#*
 
 # The src subdir knows how to do the right thing
 # even when the build directory and source dir are different.
-TAGS tags: lib-src src
+TAGS tags: lib lib-src src
        cd src; $(MAKE) tags
 
 check:
-       @echo "We don't have any tests for GNU Emacs yet."
+       cd test/automated; $(MAKE) check
 
 dist:
        cd ${srcdir}; ./make-dist
 
 .PHONY: info dvi dist check html
 
-info-real: 
+info-real:
        (cd doc/emacs; $(MAKE) $(MFLAGS) info)
        (cd doc/misc; $(MAKE) $(MFLAGS) info)
        (cd doc/lispref; $(MAKE) $(MFLAGS) info)
@@ -826,7 +886,7 @@ force-info:
 # 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 \
+       @if test "$(HAVE_MAKEINFO)" = "no"; then \
          echo "Configured --without-makeinfo, not building manuals" ; \
        else \
          $(MAKE) $(MFLAGS) info-real ; \