Mercurial > hg > octave-nkf
diff src/octave-config.in.cc @ 18428:f1ee47866e6b stable
use common code to get OCTAVE_HOME in main, octave-config and mkoctfile
* src/shared-fcns.h: New file.
* src/Makefile.in: Include it in the list of headers to distribute.
* main.in.cc, mkoctfile.in.cc, octave-config.in.cc: Use functions from
shared-fcns.h to find and substitute OCTAVE_HOME.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 24 Jan 2014 03:40:55 -0500 |
parents | 159ddd7ce1b3 |
children | d902542221c8 |
line wrap: on
line diff
--- a/src/octave-config.in.cc +++ b/src/octave-config.in.cc @@ -1,3 +1,4 @@ +// %NO_EDIT_WARNING% /* Copyright (C) 2008-2013 Michael Goffioul @@ -30,14 +31,16 @@ #include <algorithm> #include <cstdlib> -#if defined (__WIN32__) && ! defined (_POSIX_VERSION) -#include <windows.h> +#ifndef OCTAVE_PREFIX +#define OCTAVE_PREFIX %OCTAVE_PREFIX% #endif -static bool initialized = false; +#include "shared-fcns.h" + static std::map<std::string,std::string> vars; -static std::string OCTAVE_HOME, PREFIX; + static std::string usage_msg = "usage: octave-config [options]"; + static std::string help_msg = "\n" "Options:\n" @@ -74,156 +77,46 @@ " -v, --version Print the Octave version number.\n" "\n"; -static std::string -substitute_prefix (const std::string& s, const std::string& prefix, - const std::string new_prefix) -{ - std::string retval = s; - - if (!prefix.empty () && new_prefix != prefix) - { - int len = prefix.length (); - if (retval.find (prefix) == 0) - retval.replace (0, len, new_prefix); - } - -#if defined (__WIN32__) && ! defined (_POSIX_VERSION) - std::replace (retval.begin (), retval.end (), '/', '\\'); -#endif - - return retval; -} - static void initialize (void) { - if (initialized) - return; - - initialized = true; - - const char *homestr = getenv ("OCTAVE_HOME"); - OCTAVE_HOME = (homestr ? homestr : ""); - PREFIX = %OCTAVE_PREFIX%; - -#if defined (__WIN32__) && ! defined (_POSIX_VERSION) - int n = 1024; - - std::string bin_dir (n, '\0'); - - while (true) - { - int status = GetModuleFileName (0, &bin_dir[0], n); - - if (status < n) - { - bin_dir.resize (status); - break; - } - else - { - n *= 2; - bin_dir.resize (n); - } - } - - if (! bin_dir.empty ()) - { - size_t pos = bin_dir.rfind ("\\bin\\"); - - if (pos != std::string::npos) - OCTAVE_HOME = bin_dir.substr (0, pos); - } -#endif + vars["OCTAVE_HOME"] = get_octave_home (); + vars["PREFIX"] = OCTAVE_PREFIX; vars["API_VERSION"] = %OCTAVE_API_VERSION%; vars["CANONICAL_HOST_TYPE"] = %OCTAVE_CANONICAL_HOST_TYPE%; vars["DEFAULT_PAGER"] = %OCTAVE_DEFAULT_PAGER%; - vars["ARCHLIBDIR"] = %OCTAVE_ARCHLIBDIR%; - vars["BINDIR"] = %OCTAVE_BINDIR%; - vars["DATADIR"] = %OCTAVE_DATADIR%; - vars["DATAROOTDIR"] = %OCTAVE_DATAROOTDIR%; - vars["EXEC_PREFIX"] = %OCTAVE_EXEC_PREFIX%; - vars["FCNFILEDIR"] = %OCTAVE_FCNFILEDIR%; - vars["IMAGEDIR"] = %OCTAVE_IMAGEDIR%; - vars["INCLUDEDIR"] = %OCTAVE_INCLUDEDIR%; - vars["INFODIR"] = %OCTAVE_INFODIR%; - vars["INFOFILE"] = %OCTAVE_INFOFILE%; - vars["LIBDIR"] = %OCTAVE_LIBDIR%; - vars["LIBEXECDIR"] = %OCTAVE_LIBEXECDIR%; - vars["LOCALAPIARCHLIBDIR"] = %OCTAVE_LOCALAPIARCHLIBDIR%; - vars["LOCALAPIFCNFILEDIR"] = %OCTAVE_LOCALAPIFCNFILEDIR%; - vars["LOCALAPIOCTFILEDIR"] = %OCTAVE_LOCALAPIOCTFILEDIR%; - vars["LOCALARCHLIBDIR"] = %OCTAVE_LOCALARCHLIBDIR%; - vars["LOCALFCNFILEDIR"] = %OCTAVE_LOCALFCNFILEDIR%; - vars["LOCALOCTFILEDIR"] = %OCTAVE_LOCALOCTFILEDIR%; - vars["LOCALSTARTUPFILEDIR"] = %OCTAVE_LOCALSTARTUPFILEDIR%; - vars["LOCALVERARCHLIBDIR"] = %OCTAVE_LOCALVERARCHLIBDIR%; - vars["LOCALVERFCNFILEDIR"] = %OCTAVE_LOCALVERFCNFILEDIR%; - vars["LOCALVEROCTFILEDIR"] = %OCTAVE_LOCALVEROCTFILEDIR%; - vars["MAN1DIR"] = %OCTAVE_MAN1DIR%; vars["MAN1EXT"] = %OCTAVE_MAN1EXT%; - vars["MANDIR"] = %OCTAVE_MANDIR%; - vars["OCTFILEDIR"] = %OCTAVE_OCTFILEDIR%; - vars["OCTINCLUDEDIR"] = %OCTAVE_OCTINCLUDEDIR%; - vars["OCTLIBDIR"] = %OCTAVE_OCTLIBDIR%; - vars["PREFIX"] = %OCTAVE_PREFIX%; - vars["STARTUPFILEDIR"] = %OCTAVE_STARTUPFILEDIR%; vars["VERSION"] = %OCTAVE_VERSION%; - if (! OCTAVE_HOME.empty ()) - { - vars["ARCHLIBDIR"] = substitute_prefix (vars["ARCHLIBDIR"], - PREFIX, OCTAVE_HOME); - vars["BINDIR"] = substitute_prefix (vars["BINDIR"], PREFIX, OCTAVE_HOME); - vars["DATADIR"] = substitute_prefix (vars["DATADIR"], PREFIX, OCTAVE_HOME); - vars["DATAROOTDIR"] = substitute_prefix (vars["DATAROOTDIR"], - PREFIX, OCTAVE_HOME); - vars["EXEC_PREFIX"] = substitute_prefix (vars["EXEC_PREFIX"], - PREFIX, OCTAVE_HOME); - vars["FCNFILEDIR"] = substitute_prefix (vars["FCNFILEDIR"], - PREFIX, OCTAVE_HOME); - vars["IMAGEDIR"] = substitute_prefix (vars["IMAGEDIR"], PREFIX, OCTAVE_HOME); - vars["INCLUDEDIR"] = substitute_prefix (vars["INCLUDEDIR"], - PREFIX, OCTAVE_HOME); - vars["INFODIR"] = substitute_prefix (vars["INFODIR"], PREFIX, OCTAVE_HOME); - vars["INFOFILE"] = substitute_prefix (vars["INFOFILE"], PREFIX, OCTAVE_HOME); - vars["LIBDIR"] = substitute_prefix (vars["LIBDIR"], PREFIX, OCTAVE_HOME); - vars["LIBEXECDIR"] = substitute_prefix (vars["LIBEXECDIR"], - PREFIX, OCTAVE_HOME); - vars["LOCALAPIARCHLIBDIR"] = substitute_prefix (vars["LOCALAPIARCHLIBDIR"], - PREFIX, OCTAVE_HOME); - vars["LOCALAPIFCNFILEDIR"] = substitute_prefix (vars["LOCALAPIFCNFILEDIR"], - PREFIX, OCTAVE_HOME); - vars["LOCALAPIOCTFILEDIR"] = substitute_prefix (vars["LOCALAPIOCTFILEDIR"], - PREFIX, OCTAVE_HOME); - vars["LOCALARCHLIBDIR"] = substitute_prefix (vars["LOCALARCHLIBDIR"], - PREFIX, OCTAVE_HOME); - vars["LOCALFCNFILEDIR"] = substitute_prefix (vars["LOCALFCNFILEDIR"], - PREFIX, OCTAVE_HOME); - vars["LOCALOCTFILEDIR"] = substitute_prefix (vars["LOCALOCTFILEDIR"], - PREFIX, OCTAVE_HOME); - vars["LOCALSTARTUPFILEDIR"] = substitute_prefix (vars["LOCALSTARTUPFILEDIR"], - PREFIX, OCTAVE_HOME); - vars["LOCALVERARCHLIBDIR"] = substitute_prefix (vars["LOCALVERARCHLIBDIR"], - PREFIX, OCTAVE_HOME); - vars["LOCALVERFCNFILEDIR"] = substitute_prefix (vars["LOCALVERFCNFILEDIR"], - PREFIX, OCTAVE_HOME); - vars["LOCALVEROCTFILEDIR"] = substitute_prefix (vars["LOCALVEROCTFILEDIR"], - PREFIX, OCTAVE_HOME); - vars["MAN1DIR"] = substitute_prefix (vars["MAN1DIR"], PREFIX, OCTAVE_HOME); - vars["MANDIR"] = substitute_prefix (vars["MANDIR"], PREFIX, OCTAVE_HOME); - vars["OCTFILEDIR"] = substitute_prefix (vars["OCTFILEDIR"], - PREFIX, OCTAVE_HOME); - vars["OCTINCLUDEDIR"] = substitute_prefix (vars["OCTINCLUDEDIR"], - PREFIX, OCTAVE_HOME); - vars["OCTLIBDIR"] = substitute_prefix (vars["OCTLIBDIR"], - PREFIX, OCTAVE_HOME); - vars["STARTUPFILEDIR"] = substitute_prefix (vars["STARTUPFILEDIR"], - PREFIX, OCTAVE_HOME); - - vars["PREFIX"] = OCTAVE_HOME; - } + vars["ARCHLIBDIR"] = subst_octave_home (%OCTAVE_ARCHLIBDIR%); + vars["BINDIR"] = subst_octave_home (%OCTAVE_BINDIR%); + vars["DATADIR"] = subst_octave_home (%OCTAVE_DATADIR%); + vars["DATAROOTDIR"] = subst_octave_home (%OCTAVE_DATAROOTDIR%); + vars["EXEC_PREFIX"] = subst_octave_home (%OCTAVE_EXEC_PREFIX%); + vars["FCNFILEDIR"] = subst_octave_home (%OCTAVE_FCNFILEDIR%); + vars["IMAGEDIR"] = subst_octave_home (%OCTAVE_IMAGEDIR%); + vars["INCLUDEDIR"] = subst_octave_home (%OCTAVE_INCLUDEDIR%); + vars["INFODIR"] = subst_octave_home (%OCTAVE_INFODIR%); + vars["INFOFILE"] = subst_octave_home (%OCTAVE_INFOFILE%); + vars["LIBDIR"] = subst_octave_home (%OCTAVE_LIBDIR%); + vars["LIBEXECDIR"] = subst_octave_home (%OCTAVE_LIBEXECDIR%); + vars["LOCALAPIARCHLIBDIR"] = subst_octave_home (%OCTAVE_LOCALAPIARCHLIBDIR%); + vars["LOCALAPIFCNFILEDIR"] = subst_octave_home (%OCTAVE_LOCALAPIFCNFILEDIR%); + vars["LOCALAPIOCTFILEDIR"] = subst_octave_home (%OCTAVE_LOCALAPIOCTFILEDIR%); + vars["LOCALARCHLIBDIR"] = subst_octave_home (%OCTAVE_LOCALARCHLIBDIR%); + vars["LOCALFCNFILEDIR"] = subst_octave_home (%OCTAVE_LOCALFCNFILEDIR%); + vars["LOCALOCTFILEDIR"] = subst_octave_home (%OCTAVE_LOCALOCTFILEDIR%); + vars["LOCALSTARTUPFILEDIR"] = subst_octave_home (%OCTAVE_LOCALSTARTUPFILEDIR%); + vars["LOCALVERARCHLIBDIR"] = subst_octave_home (%OCTAVE_LOCALVERARCHLIBDIR%); + vars["LOCALVERFCNFILEDIR"] = subst_octave_home (%OCTAVE_LOCALVERFCNFILEDIR%); + vars["LOCALVEROCTFILEDIR"] = subst_octave_home (%OCTAVE_LOCALVEROCTFILEDIR%); + vars["MAN1DIR"] = subst_octave_home (%OCTAVE_MAN1DIR%); + vars["MANDIR"] = subst_octave_home (%OCTAVE_MANDIR%); + vars["OCTFILEDIR"] = subst_octave_home (%OCTAVE_OCTFILEDIR%); + vars["OCTINCLUDEDIR"] = subst_octave_home (%OCTAVE_OCTINCLUDEDIR%); + vars["OCTLIBDIR"] = subst_octave_home (%OCTAVE_OCTLIBDIR%); + vars["STARTUPFILEDIR"] = subst_octave_home (%OCTAVE_STARTUPFILEDIR%); } int