Mercurial > emacs
changeset 4792:c6f0e1fb834e
Allow any of the path or directory Makefile variables to be set with
flags to configure. Create all Makefiles at configure time. Edit
special commands into config.status after src/Makefile.in is built
from src/Makefile. Don't AC_SUBST rip_paths or inst_paths.
author | Brian Fox <bfox@gnu.org> |
---|---|
date | Tue, 28 Sep 1993 09:28:09 +0000 |
parents | 3544f3a41ae6 |
children | 0a1aaeea3623 |
files | configure1.in |
diffstat | 1 files changed, 162 insertions(+), 57 deletions(-) [+] |
line wrap: on
line diff
--- a/configure1.in Mon Sep 27 04:36:31 1993 +0000 +++ b/configure1.in Tue Sep 28 09:28:09 1993 +0000 @@ -33,7 +33,6 @@ ### along with GNU Emacs; see the file COPYING. If not, write to ### the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - ### Since Emacs has configuration requirements that autoconf can't ### meet, this file is an unholy marriage of custom-baked ### configuration code and autoconf macros. @@ -48,7 +47,6 @@ ### If configure fails after disturbing the status quo, ### config.status is removed. - ### Remove any more than one leading "." element from the path name. ### If we don't remove them, then another "./" will be prepended to ### the file name each time we use config.status, and the program name @@ -64,6 +62,31 @@ progname="`echo $0 | sed 's:^\./\./:\./:'`" +### Establish some default values. +run_in_place= +single_tree= +prefix='/usr/local' +exec_prefix='${prefix}' +bindir='${exec_prefix}/bin' +datadir='${prefix}/lib' +statedir='${prefix}/lib' +libdir='${exec_prefix}/lib' +mandir='${prefix}/man/man1' +infodir='${prefix}/info' +lispdir='${datadir}/emacs/${version}/lisp' +locallisppath='${datadir}/emacs/site-lisp' +lisppath='${locallisppath}:${lispdir}' +etcdir='${datadir}/emacs/${version}/etc' +lockdir='${statedir}/emacs/lock' +archlibdir='${libdir}/emacs/${version}/${configuration}' + +# We cannot use this variable in the case statement below, because many +# /bin/sh's have broken semantics for "case". Unfortunately, you must +# actually edit the clause itself. +# path_options="prefix | exec_prefix | bindir | libdir | etcdir | datadir" +# path_options="$path_options | archlibdir | statedir | mandir | infodir" +# path_options="$path_options | lispdir | lockdir | lisppath | locallisppath" + #### Usage messages. short_usage="Usage: ${progname} CONFIGURATION [-OPTION[=VALUE] ...] @@ -78,8 +101,20 @@ --with-gcc=no Don't use GCC to compile Emacs. --run-in-place Use libraries and data files directly out of the source tree. ---srcdir=DIR Look for source in DIR. ---prefix=DIR Install files below dir. +--single-tree=DIR Has the effect of creating a directory tree at DIR + which looks like: + .../DIR/bin/CONFIGNAME (emacs, etags, etc.) + .../DIR/bin/CONFIGNAME/etc (movemail, etc.) + .../DIR/common/lisp (emacs' lisp files) + .../DIR/common/site-lisp (local lisp files) + .../DIR/common/lib (DOC, TUTORIAL, etc.) + .../DIR/common/lock (lockfiles) +--srcdir=DIR Look for the Emacs source files in DIR. +--prefix=DIR Install files below DIR. Defaults to \`${prefix}'. + +You may also specify any of the \`path' variables found in Makefile.in, +including --bindir, --libdir, --etcdir, --infodir, and so on. This allows +you to override a single default location when configuring. If successful, ${progname} leaves its status in config.status. If unsuccessful after disturbing the status quo, it removes config.status." @@ -90,16 +125,6 @@ ### Record all the arguments, so we can save them in config.status. arguments="$@" -### These values are used to comment and uncomment different values -### for the path variables in the Makefile, to choose the installed -### configuration or the run-in-place configuration. -rip_paths='#disabled# ' -inst_paths='' - -### Establish some default values. -prefix='/usr/local' -exec_prefix='${prefix}' - ### Don't use shift -- that destroys the argument list, which autoconf needs ### to produce config.status. It turns out that "set - ${arguments}" doesn't ### work portably. @@ -111,7 +136,6 @@ ## Anything starting with a hyphen we assume is an option. -* ) - ## Separate the switch name from the value it's being given. case "${arg}" in -*=*) @@ -195,7 +219,7 @@ ## Get the next argument from the argument list, if there is one. if [ $index = $# ]; then (echo "${progname}: You must give a value for the \`--${optname}' option, as in - \`--${optname}=FOO'." + \`--${optname}=/usr/local/X11/include'." echo "${short_usage}") >&2 exit 1 fi @@ -210,7 +234,7 @@ ## Get the next argument from the argument list, if there is one. if [ $index = $# ]; then (echo "${progname}: You must give a value for the \`--${optname}' option, as in - \`--${optname}=FOO'." + \`--${optname}=/usr/local/X11/lib'." echo "${short_usage}") >&2 exit 1 fi @@ -222,43 +246,30 @@ ## Should this use the "development configuration"? "run_in_place" ) - rip_paths='' - inst_paths='#disabled# ' + single_tree= + run_in_place=1 ;; - ## Has the user specified an installation prefix? - "prefix" ) - ## If the value was omitted, get it from the next argument. - if [ "${valomitted}" = "yes" ]; then - ## Get the next argument from the argument list, if there is one. - if [ $index = $# ]; then - (echo "${progname}: You must give a value for the \`--${optname}' option, as in - \`--${optname}=FOO'." - echo "${short_usage}") >&2 - exit 1 - fi - index=`expr $index + 1` - val=`eval echo '$'$index` - fi - prefix="${val}" - ;; - - ## Has the user specified an installation prefix? - "exec_prefix" ) - ## If the value was omitted, get it from the next argument. - if [ "${valomitted}" = "yes" ]; then - ## Get the next argument from the argument list, if there is one. - if [ $index = $# ]; then - (echo "${progname}: You must give a value for the \`--${optname}' option, as in - \`--${optname}=FOO'." - echo "${short_usage}") >&2 - exit 1 - fi - index=`expr $index + 1` - val=`eval echo '$'$index` - fi - exec_prefix="${val}" - ;; + ## Has the user specified one of the path options? + prefix | exec_prefix | bindir | libdir | etcdir | datadir | \ + archlibdir | statedir | mandir | infodir | lispdir | lockdir | \ + lisppath | locallisppath ) + ## If the value was omitted, get it from the next argument. + if [ "${valomitted}" = "yes" ]; then + if [ $index = $# ]; then + (echo \ +"$progname: You must give a value for the \`--${optname}' option,"; + echo \ +"as in \`--${optname}=`eval echo '$'$optname`.'" + echo "$short_usage") >&2 + exit 1 + fi + index=`expr $index + 1` + val=`eval echo '$'$index` + fi + eval "${optname}=\"${val}\"" + eval "${optname}_specified=1" + ;; ## Verbose flag, tested by autoconf macros. "verbose" ) @@ -1252,15 +1263,25 @@ AC_SUBST(configuration) AC_SUBST(version) AC_SUBST(srcdir) +AC_SUBST(prefix) +AC_SUBST(exec_prefix) +AC_SUBST(bindir) +AC_SUBST(datadir) +AC_SUBST(statedir) +AC_SUBST(libdir) +AC_SUBST(mandir) +AC_SUBST(infodir) +AC_SUBST(lispdir) +AC_SUBST(locallisppath) +AC_SUBST(lisppath) +AC_SUBST(etcdir) +AC_SUBST(lockdir) +AC_SUBST(archlibdir) AC_SUBST(c_switch_system) AC_SUBST(libsrc_libs) -AC_SUBST(rip_paths) -AC_SUBST(inst_paths) AC_SUBST(LD_SWITCH_X_SITE) AC_SUBST(C_SWITCH_X_SITE) AC_SUBST(CFLAGS) -AC_SUBST(prefix) -AC_SUBST(exec_prefix) AC_DEFINE_UNQUOTED(config_machfile, "\"${machfile}\"") AC_DEFINE_UNQUOTED(config_opsysfile, "\"${opsysfile}\"") @@ -1291,6 +1312,53 @@ ] AC_DEFINE(LISP_FLOAT_TYPE) [ fi +# ====================== Developer's configuration ======================= + +# The following assignments make sense if you're running Emacs on a single +# machine, one version at a time, and you want changes to the lisp and etc +# directories in the source tree to show up immediately in your working +# environment. It saves a great deal of disk space by not duplicating the +# lisp and etc directories. + +if [ "$run_in_place" = "1" ]; then + lispdir='${srcdir}/lisp' + locallisppath='${srcdir}/site-lisp:${datadir}/emacs/site-lisp' + etcdir='${srcdir}/etc' + lockdir='${srcdir}/lock' + archlibdir='${srcdir}/lib-src' + infodir='${srcdir}/info' +elif [ "$single_tree" = "1" ]; then + if [ "$exec_prefix_specified" = "" ]; then + exec_prefix='${prefix}' + fi + if [ "$bindir_specified" = "" ]; then + bindir='${exec_prefix}/bin/${configuration}' + fi + if [ "$datadir_specified" = "" ]; then + datadir='${prefix}/common' + fi + if [ "$statedir_specified" = "" ]; then + statedir='${prefix}/common' + fi + if [ "$libdir_specified" = "" ]; then + libdir='${bindir}' + fi + if [ "$lispdir_specified" = "" ]; then + lispdir='${prefix}/common/lisp' + fi + if [ "$locallisppath_specified" = "" ]; then + locallisppath='${prefix}/common/site-lisp' + fi + if [ "$lockdir_specified" = "" ]; then + lockdir='${prefix}/common/lock' + fi + if [ "$archlibdir_specified" = "" ]; then + archlibdir='${libdir}/etc' + fi + if [ "$etcdir_specified" = "" ]; then + etcdir='${prefix}/common/data' + fi +fi #### Report on what we decided to do. echo " @@ -1315,4 +1383,41 @@ test -n "${exec_prefix}" && exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'` ] -AC_OUTPUT(Makefile) +AC_OUTPUT(Makefile lib-src/Makefile oldXMenu/Makefile src/Makefile.in) +[ +# Build src/Makefile from ${srcdir}/src/Makefile.in. This must be done +# after src/config.h is built, since we rely on that file. Only do the +# build if "config.status" is present, since it's non-presence indicates +# an error occured. +status=$? +if [ ! -f ./config.status ]; then + exit $status +fi +topsrcdir=${srcdir} +makefile_command='echo "creating src/Makefile"; + topsrcdir='"${topsrcdir}"'; +( cd ./src; + cp ${topsrcdir}/src/Makefile.in junk.c; + eval `echo ${CPP} -I${topsrcdir}/src ${CPPFLAGS} junk.c \>junk.cpp`; + < junk.cpp '\ +' sed -e '\''s/^#.*//'\'' '\ +' -e '\''s/^[ \f\t][ \f\t]*$//'\'' '\ +' -e '\''s/^ / /'\'' '\ +' | sed -n -e '\''/^..*$/p'\'' '\ +' > Makefile.new; + mv -f Makefile.new Makefile; + chmod 444 Makefile; + rm -f junk.c junk.cpp; +)' +eval `echo $makefile_command` +# AC-OUTPUT has created `config.status' already. We need to add the above +# commands to re-create `src/Makefile', and we need to insert them before +# the final "exit 0" which appears at the end of `config.status'. +<config.status sed -e 's/^exit 0$//' >config.new +echo $makefile_command >>config.new +echo exit 0 >>config.new +mv -f config.new config.status +chmod +x config.status +exit 0 +] +