octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: OCTAVE_HOME support in octave_config_info


From: John W. Eaton
Subject: RE: OCTAVE_HOME support in octave_config_info
Date: Wed, 7 Feb 2007 02:21:52 -0500

On  7-Dec-2006, address@hidden wrote:

| > I don't think we should do this to every value in the struct. For
| > example, what happens if --prefix=/usr and there are things like
| > 
| > FLIBS=-L/usr/lib/...?
| 
| Indeed, it should only be applied to \"xxxdir\" entries. The fix I sent was
| just easier to write...
| 
| > Also, the more I think about it, we may be expecting too much from
| > octave_config_info. One purpose is to have a record of configuration
| > parameters. For that, it might be best to have the information
| > recorded exactly as it was specified at configure time. But we have
| > also been using it for getting information about how Octave is
| > installed. So maybe we need two sets of information instead of just
| > one? Or at least another way to ask for the things that can change if
| > an Octave installation is moved.
| 
| Maybe an additional argument to octave_config_info to trigger the
| substitution, so you could have access to configuration-time and
| installation-time values?

I checked in the attached patch.

jwe


src/ChangeLog:

2007-02-07  John W. Eaton  <address@hidden>

        * toplev.cc (Foctave_config_info): Use struct for conf_info.
        Call subst_octave_home on selected values when initializing map.
        * defaults.cc (subst_octave_home): Now extern.
        * defaults.h.in: Provide decl.


Index: src/defaults.cc
===================================================================
RCS file: /cvs/octave/src/defaults.cc,v
retrieving revision 1.63
diff -u -u -r1.63 defaults.cc
--- src/defaults.cc     5 Jan 2007 22:49:57 -0000       1.63
+++ src/defaults.cc     7 Feb 2007 07:17:08 -0000
@@ -96,7 +96,7 @@
 std::string Vlocal_site_defaults_file;
 std::string Vsite_defaults_file;
 
-static std::string
+std::string
 subst_octave_home (const std::string& s)
 {
   std::string retval;
Index: src/defaults.h.in
===================================================================
RCS file: /cvs/octave/src/defaults.h.in,v
retrieving revision 1.40
diff -u -u -r1.40 defaults.h.in
--- src/defaults.h.in   27 Jul 2006 19:35:22 -0000      1.40
+++ src/defaults.h.in   7 Feb 2007 07:17:08 -0000
@@ -197,6 +197,8 @@
 // Name of the FFTW wisdom program.
 extern std::string Vfftw_wisdom_program;
 
+extern std::string subst_octave_home (const std::string&);
+
 extern void install_defaults (void);
 
 extern void set_exec_path (const std::string& path = std::string ());
Index: src/toplev.cc
===================================================================
RCS file: /cvs/octave/src/toplev.cc,v
retrieving revision 1.191
diff -u -u -r1.191 toplev.cc
--- src/toplev.cc       3 Jan 2007 20:15:16 -0000       1.191
+++ src/toplev.cc       7 Feb 2007 07:17:08 -0000
@@ -726,115 +726,122 @@
   static bool initialized = false;
   static Octave_map m;
 
-  static const char * const conf_info[] =
+  struct conf_info_struct
+  {
+    bool subst_home;
+    const char *key;
+    const char *val;
+  };
+
+  static const conf_info_struct conf_info[] =
     {
-      "ALL_CFLAGS", OCTAVE_CONF_ALL_CFLAGS,
-      "ALL_CXXFLAGS", OCTAVE_CONF_ALL_CXXFLAGS,
-      "ALL_FFLAGS", OCTAVE_CONF_ALL_FFLAGS,
-      "ALL_LDFLAGS", OCTAVE_CONF_ALL_LDFLAGS,
-      "AR", OCTAVE_CONF_AR,
-      "ARFLAGS", OCTAVE_CONF_ARFLAGS,
-      "BLAS_LIBS", OCTAVE_CONF_BLAS_LIBS,
-      "CC", OCTAVE_CONF_CC,
-      "CC_VERSION", OCTAVE_CONF_CC_VERSION,
-      "CFLAGS", OCTAVE_CONF_CFLAGS,
-      "CPICFLAG", OCTAVE_CONF_CPICFLAG,
-      "CPPFLAGS", OCTAVE_CONF_CPPFLAGS,
-      "CURL_LIBS", OCTAVE_CONF_CURL_LIBS,
-      "CXX", OCTAVE_CONF_CXX,
-      "CXXCPP", OCTAVE_CONF_CXXCPP,
-      "CXXFLAGS", OCTAVE_CONF_CXXFLAGS,
-      "CXXPICFLAG", OCTAVE_CONF_CXXPICFLAG,
-      "CXX_VERSION", OCTAVE_CONF_CXX_VERSION,
-      "DEFAULT_PAGER", OCTAVE_DEFAULT_PAGER,
-      "DEFS", OCTAVE_CONF_DEFS,
-      "DLFCN_INCFLAGS", OCTAVE_CONF_DLFCN_INCFLAGS,
-      "DL_LD", OCTAVE_CONF_DL_LD,
-      "DL_LDFLAGS", OCTAVE_CONF_DL_LDFLAGS,
-      "ENABLE_DYNAMIC_LINKING", OCTAVE_CONF_ENABLE_DYNAMIC_LINKING,
-      "EXEEXT", OCTAVE_CONF_EXEEXT,
-      "F2C", OCTAVE_CONF_F2C,
-      "F2CFLAGS", OCTAVE_CONF_F2CFLAGS,
-      "F77", OCTAVE_CONF_F77,
-      "F77_FLOAT_STORE_FLAG", OCTAVE_CONF_F77_FLOAT_STORE_FLAG,
-      "FC", OCTAVE_CONF_FC,
-      "FFLAGS", OCTAVE_CONF_FFLAGS,
-      "FFTW_LIBS", OCTAVE_CONF_FFTW_LIBS,
-      "FLIBS", OCTAVE_CONF_FLIBS,
-      "FPICFLAG", OCTAVE_CONF_FPICFLAG,
-      "GLPK_LIBS", OCTAVE_CONF_GLPK_LIBS,
-      "INCFLAGS", OCTAVE_CONF_INCFLAGS,
-      "LDFLAGS", OCTAVE_CONF_LDFLAGS,
-      "LD_CXX", OCTAVE_CONF_LD_CXX,
-      "LD_STATIC_FLAG", OCTAVE_CONF_LD_STATIC_FLAG,
-      "LEX", OCTAVE_CONF_LEX,
-      "LEXLIB", OCTAVE_CONF_LEXLIB,
-      "LFLAGS", OCTAVE_CONF_LFLAGS,
-      "LIBCRUFT", OCTAVE_CONF_LIBCRUFT,
-      "LIBDLFCN", OCTAVE_CONF_LIBDLFCN,
-      "LIBEXT", OCTAVE_CONF_LIBEXT,
-      "LIBFLAGS", OCTAVE_CONF_LIBFLAGS,
-      "LIBOCTAVE", OCTAVE_CONF_LIBOCTAVE,
-      "LIBOCTINTERP", OCTAVE_CONF_LIBOCTINTERP,
-      "LIBREADLINE", OCTAVE_CONF_LIBREADLINE,
-      "LIBS", OCTAVE_CONF_LIBS,
-      "LN_S", OCTAVE_CONF_LN_S,
-      "MKOCTFILE_DL_LDFLAGS", OCTAVE_CONF_MKOCTFILE_DL_LDFLAGS,
-      "MKOCTFILE_INCFLAGS", OCTAVE_CONF_MKOCTFILE_INCFLAGS,
-      "MKOCTFILE_LFLAGS", OCTAVE_CONF_MKOCTFILE_LFLAGS,
-      "RANLIB", OCTAVE_CONF_RANLIB,
-      "RDYNAMIC_FLAG", OCTAVE_CONF_RDYNAMIC_FLAG,
-      "RLD_FLAG", OCTAVE_CONF_RLD_FLAG,
-      "RUNTEST", OCTAVE_CONF_RUNTEST,
-      "SED", OCTAVE_CONF_SED,
-      "SHARED_LIBS", OCTAVE_CONF_SHARED_LIBS,
-      "SHLEXT", OCTAVE_CONF_SHLEXT,
-      "SHLEXT_VER", OCTAVE_CONF_SHLEXT_VER,
-      "SH_LD", OCTAVE_CONF_SH_LD,
-      "SH_LDFLAGS", OCTAVE_CONF_SH_LDFLAGS,
-      "SONAME_FLAGS", OCTAVE_CONF_SONAME_FLAGS,
-      "STATIC_LIBS", OCTAVE_CONF_STATIC_LIBS,
-      "UGLY_DEFS", OCTAVE_CONF_UGLY_DEFS,
-      "USE_64_BIT_IDX_T", OCTAVE_CONF_USE_64_BIT_IDX_T,
-      "XTRA_CFLAGS", OCTAVE_CONF_XTRA_CFLAGS,
-      "XTRA_CXXFLAGS", OCTAVE_CONF_XTRA_CXXFLAGS,
-      "YACC", OCTAVE_CONF_YACC,
-      "YFLAGS", OCTAVE_CONF_YFLAGS,
-      "api_version", OCTAVE_API_VERSION,
-      "archlibdir", OCTAVE_ARCHLIBDIR,
-      "bindir", OCTAVE_BINDIR,
-      "canonical_host_type", OCTAVE_CANONICAL_HOST_TYPE,
-      "config_opts", OCTAVE_CONF_config_opts,
-      "datadir", OCTAVE_DATADIR,
-      "datarootdir", OCTAVE_DATAROOTDIR,
-      "exec_prefix", OCTAVE_EXEC_PREFIX,
-      "fcnfiledir", OCTAVE_FCNFILEDIR,
-      "imagedir", OCTAVE_IMAGEDIR,
-      "includedir", OCTAVE_INCLUDEDIR,
-      "infodir", OCTAVE_INFODIR,
-      "infofile", OCTAVE_INFOFILE,
-      "libdir", OCTAVE_LIBDIR,
-      "libexecdir", OCTAVE_LIBEXECDIR,
-      "localapifcnfiledir", OCTAVE_LOCALAPIFCNFILEDIR,
-      "localapioctfiledir", OCTAVE_LOCALAPIOCTFILEDIR,
-      "localarchlibdir", OCTAVE_LOCALARCHLIBDIR,
-      "localfcnfiledir", OCTAVE_LOCALFCNFILEDIR,
-      "localoctfiledir", OCTAVE_LOCALOCTFILEDIR,
-      "localstartupfiledir", OCTAVE_LOCALSTARTUPFILEDIR,
-      "localapiarchlibdir", OCTAVE_LOCALAPIARCHLIBDIR,
-      "localverarchlibdir", OCTAVE_LOCALVERARCHLIBDIR,
-      "localverfcnfiledir", OCTAVE_LOCALVERFCNFILEDIR,
-      "localveroctfiledir", OCTAVE_LOCALVEROCTFILEDIR,
-      "man1dir", OCTAVE_MAN1DIR,
-      "man1ext", OCTAVE_MAN1EXT,
-      "mandir", OCTAVE_MANDIR,
-      "octfiledir", OCTAVE_OCTFILEDIR,
-      "octincludedir", OCTAVE_OCTINCLUDEDIR,
-      "octlibdir", OCTAVE_OCTLIBDIR,
-      "prefix", OCTAVE_PREFIX,
-      "startupfiledir", OCTAVE_STARTUPFILEDIR,
-      "version", OCTAVE_VERSION,
-      0, 0
+      { false, "ALL_CFLAGS", OCTAVE_CONF_ALL_CFLAGS },
+      { false, "ALL_CXXFLAGS", OCTAVE_CONF_ALL_CXXFLAGS },
+      { false, "ALL_FFLAGS", OCTAVE_CONF_ALL_FFLAGS },
+      { false, "ALL_LDFLAGS", OCTAVE_CONF_ALL_LDFLAGS },
+      { false, "AR", OCTAVE_CONF_AR },
+      { false, "ARFLAGS", OCTAVE_CONF_ARFLAGS },
+      { false, "BLAS_LIBS", OCTAVE_CONF_BLAS_LIBS },
+      { false, "CC", OCTAVE_CONF_CC },
+      { false, "CC_VERSION", OCTAVE_CONF_CC_VERSION },
+      { false, "CFLAGS", OCTAVE_CONF_CFLAGS },
+      { false, "CPICFLAG", OCTAVE_CONF_CPICFLAG },
+      { false, "CPPFLAGS", OCTAVE_CONF_CPPFLAGS },
+      { false, "CURL_LIBS", OCTAVE_CONF_CURL_LIBS },
+      { false, "CXX", OCTAVE_CONF_CXX },
+      { false, "CXXCPP", OCTAVE_CONF_CXXCPP },
+      { false, "CXXFLAGS", OCTAVE_CONF_CXXFLAGS },
+      { false, "CXXPICFLAG", OCTAVE_CONF_CXXPICFLAG },
+      { false, "CXX_VERSION", OCTAVE_CONF_CXX_VERSION },
+      { false, "DEFAULT_PAGER", OCTAVE_DEFAULT_PAGER },
+      { false, "DEFS", OCTAVE_CONF_DEFS },
+      { false, "DLFCN_INCFLAGS", OCTAVE_CONF_DLFCN_INCFLAGS },
+      { false, "DL_LD", OCTAVE_CONF_DL_LD },
+      { false, "DL_LDFLAGS", OCTAVE_CONF_DL_LDFLAGS },
+      { false, "ENABLE_DYNAMIC_LINKING", OCTAVE_CONF_ENABLE_DYNAMIC_LINKING },
+      { false, "EXEEXT", OCTAVE_CONF_EXEEXT },
+      { false, "F2C", OCTAVE_CONF_F2C },
+      { false, "F2CFLAGS", OCTAVE_CONF_F2CFLAGS },
+      { false, "F77", OCTAVE_CONF_F77 },
+      { false, "F77_FLOAT_STORE_FLAG", OCTAVE_CONF_F77_FLOAT_STORE_FLAG },
+      { false, "FC", OCTAVE_CONF_FC },
+      { false, "FFLAGS", OCTAVE_CONF_FFLAGS },
+      { false, "FFTW_LIBS", OCTAVE_CONF_FFTW_LIBS },
+      { false, "FLIBS", OCTAVE_CONF_FLIBS },
+      { false, "FPICFLAG", OCTAVE_CONF_FPICFLAG },
+      { false, "GLPK_LIBS", OCTAVE_CONF_GLPK_LIBS },
+      { false, "INCFLAGS", OCTAVE_CONF_INCFLAGS },
+      { false, "LDFLAGS", OCTAVE_CONF_LDFLAGS },
+      { false, "LD_CXX", OCTAVE_CONF_LD_CXX },
+      { false, "LD_STATIC_FLAG", OCTAVE_CONF_LD_STATIC_FLAG },
+      { false, "LEX", OCTAVE_CONF_LEX },
+      { false, "LEXLIB", OCTAVE_CONF_LEXLIB },
+      { false, "LFLAGS", OCTAVE_CONF_LFLAGS },
+      { false, "LIBCRUFT", OCTAVE_CONF_LIBCRUFT },
+      { false, "LIBDLFCN", OCTAVE_CONF_LIBDLFCN },
+      { false, "LIBEXT", OCTAVE_CONF_LIBEXT },
+      { false, "LIBFLAGS", OCTAVE_CONF_LIBFLAGS },
+      { false, "LIBOCTAVE", OCTAVE_CONF_LIBOCTAVE },
+      { false, "LIBOCTINTERP", OCTAVE_CONF_LIBOCTINTERP },
+      { false, "LIBREADLINE", OCTAVE_CONF_LIBREADLINE },
+      { false, "LIBS", OCTAVE_CONF_LIBS },
+      { false, "LN_S", OCTAVE_CONF_LN_S },
+      { false, "MKOCTFILE_DL_LDFLAGS", OCTAVE_CONF_MKOCTFILE_DL_LDFLAGS },
+      { false, "MKOCTFILE_INCFLAGS", OCTAVE_CONF_MKOCTFILE_INCFLAGS },
+      { false, "MKOCTFILE_LFLAGS", OCTAVE_CONF_MKOCTFILE_LFLAGS },
+      { false, "RANLIB", OCTAVE_CONF_RANLIB },
+      { false, "RDYNAMIC_FLAG", OCTAVE_CONF_RDYNAMIC_FLAG },
+      { false, "RLD_FLAG", OCTAVE_CONF_RLD_FLAG },
+      { false, "RUNTEST", OCTAVE_CONF_RUNTEST },
+      { false, "SED", OCTAVE_CONF_SED },
+      { false, "SHARED_LIBS", OCTAVE_CONF_SHARED_LIBS },
+      { false, "SHLEXT", OCTAVE_CONF_SHLEXT },
+      { false, "SHLEXT_VER", OCTAVE_CONF_SHLEXT_VER },
+      { false, "SH_LD", OCTAVE_CONF_SH_LD },
+      { false, "SH_LDFLAGS", OCTAVE_CONF_SH_LDFLAGS },
+      { false, "SONAME_FLAGS", OCTAVE_CONF_SONAME_FLAGS },
+      { false, "STATIC_LIBS", OCTAVE_CONF_STATIC_LIBS },
+      { false, "UGLY_DEFS", OCTAVE_CONF_UGLY_DEFS },
+      { false, "USE_64_BIT_IDX_T", OCTAVE_CONF_USE_64_BIT_IDX_T },
+      { false, "XTRA_CFLAGS", OCTAVE_CONF_XTRA_CFLAGS },
+      { false, "XTRA_CXXFLAGS", OCTAVE_CONF_XTRA_CXXFLAGS },
+      { false, "YACC", OCTAVE_CONF_YACC },
+      { false, "YFLAGS", OCTAVE_CONF_YFLAGS },
+      { false, "api_version", OCTAVE_API_VERSION },
+      { true, "archlibdir", OCTAVE_ARCHLIBDIR },
+      { true, "bindir", OCTAVE_BINDIR },
+      { false, "canonical_host_type", OCTAVE_CANONICAL_HOST_TYPE },
+      { false, "config_opts", OCTAVE_CONF_config_opts },
+      { true, "datadir", OCTAVE_DATADIR },
+      { true, "datarootdir", OCTAVE_DATAROOTDIR },
+      { false, "exec_prefix", OCTAVE_EXEC_PREFIX },
+      { true, "fcnfiledir", OCTAVE_FCNFILEDIR },
+      { true, "imagedir", OCTAVE_IMAGEDIR },
+      { true, "includedir", OCTAVE_INCLUDEDIR },
+      { true, "infodir", OCTAVE_INFODIR },
+      { false, "infofile", OCTAVE_INFOFILE },
+      { true, "libdir", OCTAVE_LIBDIR },
+      { true, "libexecdir", OCTAVE_LIBEXECDIR },
+      { true, "localapifcnfiledir", OCTAVE_LOCALAPIFCNFILEDIR },
+      { true, "localapioctfiledir", OCTAVE_LOCALAPIOCTFILEDIR },
+      { true, "localarchlibdir", OCTAVE_LOCALARCHLIBDIR },
+      { true, "localfcnfiledir", OCTAVE_LOCALFCNFILEDIR },
+      { true, "localoctfiledir", OCTAVE_LOCALOCTFILEDIR },
+      { true, "localstartupfiledir", OCTAVE_LOCALSTARTUPFILEDIR },
+      { true, "localapiarchlibdir", OCTAVE_LOCALAPIARCHLIBDIR },
+      { true, "localverarchlibdir", OCTAVE_LOCALVERARCHLIBDIR },
+      { true, "localverfcnfiledir", OCTAVE_LOCALVERFCNFILEDIR },
+      { true, "localveroctfiledir", OCTAVE_LOCALVEROCTFILEDIR },
+      { true, "man1dir", OCTAVE_MAN1DIR },
+      { false, "man1ext", OCTAVE_MAN1EXT },
+      { true, "mandir", OCTAVE_MANDIR },
+      { true, "octfiledir", OCTAVE_OCTFILEDIR },
+      { true, "octincludedir", OCTAVE_OCTINCLUDEDIR },
+      { true, "octlibdir", OCTAVE_OCTLIBDIR },
+      { false, "prefix", OCTAVE_PREFIX },
+      { true, "startupfiledir", OCTAVE_STARTUPFILEDIR },
+      { false, "version", OCTAVE_VERSION },
+      { false, 0, 0 }
     };
 
   if (! initialized)
@@ -855,10 +862,17 @@
 
       while (true)
        {
-         const char *key = conf_info[i++];
+         const conf_info_struct& elt = conf_info[i++];
+
+         const char *key = elt.key;
 
          if (key)
-           m.assign (key, octave_value (conf_info[i++]));
+           {
+             if (elt.subst_home)
+               m.assign (key, octave_value (subst_octave_home (elt.val)));
+             else
+               m.assign (key, octave_value (elt.val));
+           }
          else
            break;
        }

reply via email to

[Prev in Thread] Current Thread [Next in Thread]