diff configure.ac @ 21409:1aa293d58df0

fully expand all env vars before writing config.status (bug #46063) * configure.ac: Fully expand environment variables just prior to generating config.status. * mk-mxarray-h.in.sh, mk-version-h.in.sh, subst-config-vals.in.sh, subst-cross-config-vals.in.sh, subst-default-vals.in.sh, subst-f77-isnan-macro.in.sh, subst-script-vals.in.sh: Eliminate now unnecessary step of expanding environment variables.
author John W. Eaton <jwe@octave.org>
date Sun, 06 Mar 2016 13:33:02 -0500
parents 7e8a410e6124
children 9773a1c2b55f
line wrap: on
line diff
--- a/configure.ac	Sat Mar 05 08:04:13 2016 -0800
+++ b/configure.ac	Sun Mar 06 13:33:02 2016 -0500
@@ -83,7 +83,7 @@
 config_opts=$ac_configure_args
 AC_SUBST(config_opts)
 
-### Set default file locations
+## Set default file locations.
 
 ## Where to install and expect libraries like liboctave.a, liboctinterp.a,
 ## and other architecture-dependent data.
@@ -208,7 +208,7 @@
 AC_PROG_MKDIR_P
 
 AC_PROG_INSTALL
-INSTALL_SCRIPT='${INSTALL}'
+INSTALL_SCRIPT="${INSTALL}"
 AC_SUBST(INSTALL_SCRIPT)
 
 OCTAVE_PROG_DESKTOP_FILE_INSTALL
@@ -617,12 +617,12 @@
   BUILD_LDFLAGS=""
   BUILD_EXEEXT=""
 else
-  BUILD_CC='${CC}'
-  BUILD_CFLAGS='${CFLAGS}'
-  BUILD_CXX='${CXX}'
-  BUILD_CXXFLAGS='${CXXFLAGS}'
-  BUILD_LDFLAGS='${LDFLAGS}'
-  BUILD_EXEEXT='${EXEEXT}'
+  BUILD_CC="${CC}"
+  BUILD_CFLAGS="${CFLAGS}"
+  BUILD_CXX="${CXX}"
+  BUILD_CXXFLAGS="${CXXFLAGS}"
+  BUILD_LDFLAGS="${LDFLAGS}"
+  BUILD_EXEEXT="${EXEEXT}"
 fi
 
 AC_ARG_VAR([BUILD_CC],
@@ -1999,24 +1999,24 @@
 CXXPICFLAG=-fPIC
 FPICFLAG=-fPIC
 SHLEXT=so
-SHLLIB='${SHLEXT}'
+SHLLIB="${SHLEXT}"
 SHLBIN=
-SHLEXT_VER='${SHLEXT}.${version}'
-SHLLIB_VER='${SHLLIB}.${version}'
-SHLBIN_VER='${SHLBIN}.${version}'
+SHLEXT_VER="${SHLEXT}.${version}"
+SHLLIB_VER="${SHLLIB}.${version}"
+SHLBIN_VER="${SHLBIN}.${version}"
 SHLLINKEXT=
 LIBPRE=lib
 SHLPRE=lib
 SHLLIBPRE=lib
 SHLBINPRE=lib
-SH_LD='${CXX}'
+SH_LD="${CXX}"
 SH_LDFLAGS=-shared
-DL_LD='${SH_LD}'
-DL_LDFLAGS='${SH_LDFLAGS}'
-MKOCTFILE_DL_LDFLAGS='${DL_LDFLAGS}'
+DL_LD="${SH_LD}"
+DL_LDFLAGS="${SH_LDFLAGS}"
+MKOCTFILE_DL_LDFLAGS="${DL_LDFLAGS}"
 SONAME_FLAGS=
 NO_OCT_FILE_STRIP=false
-TEMPLATE_AR='${AR}'
+TEMPLATE_AR="${AR}"
 TEMPLATE_ARFLAGS="$ARFLAGS"
 CRUFT_DLL_DEFS=
 OCTAVE_DLL_DEFS=
@@ -2054,9 +2054,9 @@
       ;;
     esac
     SHLEXT=dylib
-    SHLLIB='${SHLEXT}'
-    SHLEXT_VER='${version}.${SHLEXT}'
-    SHLLIB_VER='${version}.${SHLLIB}'
+    SHLLIB="${SHLEXT}"
+    SHLEXT_VER="${version}.${SHLEXT}"
+    SHLLIB_VER="${version}.${SHLLIB}"
     NO_OCT_FILE_STRIP=true
     SONAME_FLAGS='-install_name ${octlibdir}/$@'
     library_path_var=DYLD_LIBRARY_PATH
@@ -2207,7 +2207,7 @@
     fi
     ## Template closures in archive libraries need a different mechanism.
     if test "$GXX" != yes; then
-      TEMPLATE_AR='${CXX}'
+      TEMPLATE_AR="${CXX}"
       TEMPLATE_ARFLAGS="-xar -o"
     fi
   ;;
@@ -2308,7 +2308,7 @@
 ## FIXME: A lot of the following duplicates the functionality of
 ## code generated by the dlopen option for LT_INIT.
 
-LD_CXX='${CXX}'
+LD_CXX="${CXX}"
 RDYNAMIC_FLAG=
 DL_API_MSG=""
 dlopen_api=no
@@ -2372,8 +2372,8 @@
   LIBOCTINTERP="-loctinterp$SHLLINKEXT"
   LIBOCTAVE="-loctave$SHLLINKEXT"
 else
-  LIBOCTINTERP='${top_builddir}/libinterp/liboctinterp.${LIBEXT}'
-  LIBOCTAVE='${top_builddir}/liboctave/liboctave.${LIBEXT}'
+  LIBOCTINTERP="${top_builddir}/libinterp/liboctinterp.${LIBEXT}"
+  LIBOCTAVE="${top_builddir}/liboctave/liboctave.${LIBEXT}"
 fi
 
 AC_SUBST(LD_CXX)
@@ -3205,7 +3205,74 @@
 
 AC_OUTPUT_MAKE_DEFS
 
-### Do the substitutions in all the Makefiles.
+AC_CONFIG_COMMANDS_PRE([
+  ## Fully expand all directory variables.  These are normally left
+  ## unexpanded (as explained and recommended by the autoconf manual).
+  ## But we store coniguration info in files and expect whatever
+  ## is set at configure time stay the same when Make is executed.
+  ## Doing things like
+  ##
+  ##   configure --prefix=/some/where
+  ##   make --prefix="/some/where/else
+  ##
+  ## won't work properly and is not allowed when building Octave.
+
+  eval prefix="\"$prefix\""
+  eval exec_prefix="\"$exec_prefix\""
+  eval bindir="\"$bindir\""
+  eval sbindir="\"$sbindir\""
+  eval libexecdir="\"$libexecdir\""
+  eval datarootdir="\"$datarootdir\""
+  eval datadir="\"$datadir\""
+  eval sysconfdir="\"$sysconfdir\""
+  eval sharedstatedir="\"$sharedstatedir\""
+  eval localstatedir="\"$localstatedir\""
+  eval runstatedir="\"$runstatedir\""
+  eval includedir="\"$includedir\""
+  eval oldincludedir="\"$oldincludedir\""
+  eval docdir="\"$docdir\""
+  eval infodir="\"$infodir\""
+  eval htmldir="\"$htmldir\""
+  eval dvidir="\"$dvidir\""
+  eval pdfdir="\"$pdfdir\""
+  eval psdir="\"$psdir\""
+  eval libdir="\"$libdir\""
+  eval localedir="\"$localedir\""
+  eval mandir="\"$mandir\""
+
+  version="$OCTAVE_VERSION"
+  api_version="$OCTAVE_API_VERSION"
+
+  eval octlibdir="\"$octlibdir\""
+  eval archlibdir="\"$archlibdir\""
+  eval localarchlibdir="\"$localarchlibdir\""
+  eval localapiarchlibdir="\"$localapiarchlibdir\""
+  eval localverarchlibdir="\"$localverarchlibdir\""
+  eval octfiledir="\"$octfiledir\""
+  eval localoctfiledir="\"$localoctfiledir\""
+  eval localapioctfiledir="\"$localapioctfiledir\""
+  eval localveroctfiledir="\"$localveroctfiledir\""
+  eval octincludedir="\"$octincludedir\""
+  eval fcnfiledir="\"$fcnfiledir\""
+  eval localfcnfiledir="\"$localfcnfiledir\""
+  eval localapifcnfiledir="\"$localapifcnfiledir\""
+  eval localverfcnfiledir="\"$localverfcnfiledir\""
+  eval octetcdir="\"$octetcdir\""
+  eval octlocaledir="\"$octlocaledir\""
+  eval doc_cache_file="\"$doc_cache_file\""
+  eval octtestsdir="\"$octtestsdir\""
+  eval texi_macros_file="\"$texi_macros_file\""
+  eval imagedir="\"$imagedir\""
+  eval octdatadir="\"$octdatadir\""
+  eval startupfiledir="\"$startupfiledir\""
+  eval localstartupfiledir="\"$localstartupfiledir\""
+  eval man1dir="\"$man1dir\""
+  eval man1ext="\"$man1ext\""
+  eval infofile="\"$infofile\""
+])
+
+### Do the substitutions in Makefiles and other scripts that
+### hold configuration info.
 
 AC_SUBST(ac_config_files)
 AC_SUBST(ac_config_headers)