28#if defined (HAVE_CONFIG_H)
38#if defined (OCTAVE_USE_WINDOWS_API)
44#if ! defined (OCTAVE_PREFIX)
45# define OCTAVE_PREFIX %OCTAVE_PREFIX%
48#if ! defined (OCTAVE_EXEC_PREFIX)
49# define OCTAVE_EXEC_PREFIX %OCTAVE_EXEC_PREFIX%
58static std::map<std::string, std::string> vars;
60static std::string usage_msg =
"usage: octave-config [options]";
62static std::string help_msg =
66 " -h, -?, --help Print this message.\n"
68 " --m-site-dir Print the name of the directory where Octave\n"
69 " expects to find locally installed .m files.\n"
71 " --oct-site-dir Print the name of the directory where Octave\n"
72 " expects to find locally installed .oct files.\n"
74 " -p VAR, --print VAR Print the value of the given configuration\n"
75 " variable VAR. Recognized variables are:\n"
77 " API_VERSION LOCALARCHLIBDIR\n"
78 " ARCHLIBDIR LOCALFCNFILEDIR\n"
79 " BINDIR LOCALOCTFILEDIR\n"
80 " CANONICAL_HOST_TYPE LOCALSTARTUPFILEDIR\n"
81 " DATADIR LOCALVERARCHLIBDIR\n"
82 " DATAROOTDIR LOCALVERFCNFILEDIR\n"
83 " DEFAULT_PAGER LOCALVEROCTFILEDIR\n"
84 " EXEC_PREFIX MAN1DIR\n"
86 " FCNFILEDIR MANDIR\n"
87 " IMAGEDIR OCTAVE_EXEC_HOME\n"
88 " INCLUDEDIR OCTAVE_HOME\n"
89 " INFODIR OCTDATADIR\n"
90 " INFOFILE OCTDOCDIR\n"
91 " LIBDIR OCTFILEDIR\n"
92 " LIBEXECDIR OCTFONTSDIR\n"
93 " LOCALAPIARCHLIBDIR OCTINCLUDEDIR\n"
94 " LOCALAPIFCNFILEDIR OCTLIBDIR\n"
95 " LOCALAPIOCTFILEDIR STARTUPFILEDIR\n"
96 " LOCALAPIPKGDIR VERSION\n"
98 " -v, --version Print the Octave version number.\n"
106 vars[
"OCTAVE_HOME"] = Voctave_home;
107 vars[
"OCTAVE_EXEC_HOME"] = Voctave_exec_home;
109 vars[
"API_VERSION"] = %OCTAVE_API_VERSION%;
110 vars[
"CANONICAL_HOST_TYPE"] = %OCTAVE_CANONICAL_HOST_TYPE%;
111 vars[
"DEFAULT_PAGER"] = %OCTAVE_DEFAULT_PAGER%;
112 vars[
"EXEEXT"] = %OCTAVE_EXEEXT%;
113 vars[
"MAN1EXT"] = %OCTAVE_MAN1EXT%;
149#if defined (OCTAVE_USE_WINDOWS_API) && defined (_UNICODE)
152wmain (
int argc,
wchar_t **wargv)
154 static char **argv =
new char * [argc + 1];
155 std::vector<std::string> argv_str;
158 std::wstring_convert<std::codecvt_utf8<wchar_t>,
wchar_t> wchar_conv;
159 for (
int i_arg = 0; i_arg < argc; i_arg++)
160 argv_str.push_back (wchar_conv.to_bytes (wargv[i_arg]));
163 for (
int i_arg = 0; i_arg < argc; i_arg++)
164 argv[i_arg] = &argv_str[i_arg][0];
165 argv[argc] =
nullptr;
176 std::cout << usage_msg << std::endl;
180 for (
int i = 1; i < argc; i++)
182 std::string arg (argv[i]);
184 if (arg ==
"-h" || arg ==
"-?" || arg ==
"--help")
186 std::cout << usage_msg << std::endl;
187 std::cout << help_msg;
190 else if (arg ==
"--m-site-dir")
191 std::cout << vars[
"LOCALVERFCNFILEDIR"] << std::endl;
192 else if (arg ==
"--oct-site-dir")
193 std::cout << vars[
"LOCALVEROCTFILEDIR"] << std::endl;
194 else if (arg ==
"-v" || arg ==
"--version")
195 std::cout << vars[
"VERSION"] << std::endl;
196 else if (arg ==
"-p" || arg ==
"--print")
201 std::cout << vars[arg] << std::endl;
205 std::cerr <<
"octave-config: " << arg
206 <<
" options requires argument" << std::endl;
212 std::cerr <<
"octave-config: unrecognized argument " << arg
std::string prepend_octave_home(const std::string &s)
std::string prepend_octave_exec_home(const std::string &s)
#define OCTAVE_ARCHLIBDIR