Mercurial > octave
comparison libinterp/corefcn/toplev.cc @ 21226:a55b8ece1ecd
reorganize octave_config_info again
* build-env-features.sh: Don't include ENABLE_ items in the output.
* toplev.cc (find_config_info): New static function.
(Foctave_config_info): Put Octave configuration info in the main
struct. Put the build system features and build environment info in
substructures. Allow searching of all elements by keyword.
* __have_feature__.m, doc/interpreter/testfun.txi:
Fix name of build features substructure element.
* geometryimages.m, interpimages.m, plotimages.m, sparseimages.m,
splineimages.m: Use __have_feature__ to check for OSMESA.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 08 Feb 2016 23:14:56 -0500 |
parents | d78e45987d6a |
children | a83e7a384ee0 |
comparison
equal
deleted
inserted
replaced
21225:19a619ac9508 | 21226:a55b8ece1ecd |
---|---|
1227 } | 1227 } |
1228 | 1228 |
1229 return retval; | 1229 return retval; |
1230 } | 1230 } |
1231 | 1231 |
1232 static octave_value | |
1233 find_config_info (const octave_scalar_map& m, const std::string& key) | |
1234 { | |
1235 if (m.isfield (key)) | |
1236 { | |
1237 Cell c = m.contents (key); | |
1238 | |
1239 if (! c.is_empty ()) | |
1240 return c(0); | |
1241 } | |
1242 | |
1243 return octave_value (); | |
1244 } | |
1245 | |
1232 DEFUN (octave_config_info, args, , | 1246 DEFUN (octave_config_info, args, , |
1233 "-*- texinfo -*-\n\ | 1247 "-*- texinfo -*-\n\ |
1234 @deftypefn {} {} octave_config_info ()\n\ | 1248 @deftypefn {} {} octave_config_info ()\n\ |
1235 @deftypefnx {} {} octave_config_info (@var{option})\n\ | 1249 @deftypefnx {} {} octave_config_info (@var{option})\n\ |
1236 Return a structure containing configuration and installation information for\n\ | 1250 Return a structure containing configuration and installation information for\n\ |
1247 #else | 1261 #else |
1248 bool octave_supports_dynamic_linking = false; | 1262 bool octave_supports_dynamic_linking = false; |
1249 #endif | 1263 #endif |
1250 | 1264 |
1251 static bool initialized = false; | 1265 static bool initialized = false; |
1252 static octave_scalar_map m; | |
1253 | 1266 |
1254 struct conf_info_struct | 1267 struct conf_info_struct |
1255 { | 1268 { |
1256 bool subst_home; | 1269 bool subst_home; |
1257 const char *key; | 1270 const char *key; |
1258 const char *val; | 1271 const char *val; |
1259 }; | 1272 }; |
1260 | 1273 |
1261 static const conf_info_struct conf_info[] = | 1274 static const conf_info_struct conf_info[] = |
1275 { | |
1276 { false, "DEFAULT_PAGER", OCTAVE_DEFAULT_PAGER }, | |
1277 | |
1278 #if defined (ENABLE_64) | |
1279 { false, "ENABLE_64", "yes" }, | |
1280 #else | |
1281 { false, "ENABLE_64", "no" }, | |
1282 #endif | |
1283 | |
1284 #if defined (ATOMIC_REFCOUNT) | |
1285 { false, "ENABLE_ATOMIC_REFCOUNT", "yes" }, | |
1286 #else | |
1287 { false, "ENABLE_ATOMIC_REFCOUNT", "no" }, | |
1288 #endif | |
1289 | |
1290 #if defined (ENABLE_BOUNDS_CHECK) | |
1291 { false, "ENABLE_BOUNDS_CHECK", "yes" }, | |
1292 #else | |
1293 { false, "ENABLE_BOUNDS_CHECK", "no" }, | |
1294 #endif | |
1295 | |
1296 #if defined (ENABLE_DOCS) | |
1297 { false, "ENABLE_DOCS", "yes" }, | |
1298 #else | |
1299 { false, "ENABLE_DOCS", "no" }, | |
1300 #endif | |
1301 | |
1302 #if defined (ENABLE_DYNAMIC_LINKING) | |
1303 { false, "ENABLE_DYNAMIC_LINKING", "yes" }, | |
1304 #else | |
1305 { false, "ENABLE_DYNAMIC_LINKING", "no" }, | |
1306 #endif | |
1307 | |
1308 #if defined (ENABLE_FLOAT_TRUNCATE) | |
1309 { false, "ENABLE_FLOAT_TRUNCATE", "yes" }, | |
1310 #else | |
1311 { false, "ENABLE_FLOAT_TRUNCATE", "no" }, | |
1312 #endif | |
1313 | |
1314 #if defined (ENABLE_JIT) | |
1315 { false, "ENABLE_JIT", "yes" }, | |
1316 #else | |
1317 { false, "ENABLE_JIT", "no" }, | |
1318 #endif | |
1319 | |
1320 #if defined (ENABLE_OPENMP) | |
1321 { false, "ENABLE_OPENMP", "yes" }, | |
1322 #else | |
1323 { false, "ENABLE_OPENMP", "no" }, | |
1324 #endif | |
1325 | |
1326 { false, "api_version", OCTAVE_API_VERSION }, | |
1327 { true, "archlibdir", OCTAVE_ARCHLIBDIR }, | |
1328 { true, "bindir", OCTAVE_BINDIR }, | |
1329 { false, "canonical_host_type", OCTAVE_CANONICAL_HOST_TYPE }, | |
1330 { true, "datadir", OCTAVE_DATADIR }, | |
1331 { true, "datarootdir", OCTAVE_DATAROOTDIR }, | |
1332 { true, "exec_prefix", OCTAVE_EXEC_PREFIX }, | |
1333 { true, "fcnfiledir", OCTAVE_FCNFILEDIR }, | |
1334 { true, "imagedir", OCTAVE_IMAGEDIR }, | |
1335 { true, "includedir", OCTAVE_INCLUDEDIR }, | |
1336 { true, "infodir", OCTAVE_INFODIR }, | |
1337 { true, "infofile", OCTAVE_INFOFILE }, | |
1338 { true, "libdir", OCTAVE_LIBDIR }, | |
1339 { true, "libexecdir", OCTAVE_LIBEXECDIR }, | |
1340 { true, "localapiarchlibdir", OCTAVE_LOCALAPIARCHLIBDIR }, | |
1341 { true, "localapifcnfiledir", OCTAVE_LOCALAPIFCNFILEDIR }, | |
1342 { true, "localapioctfiledir", OCTAVE_LOCALAPIOCTFILEDIR }, | |
1343 { true, "localarchlibdir", OCTAVE_LOCALARCHLIBDIR }, | |
1344 { true, "localfcnfiledir", OCTAVE_LOCALFCNFILEDIR }, | |
1345 { true, "localoctfiledir", OCTAVE_LOCALOCTFILEDIR }, | |
1346 { true, "localstartupfiledir", OCTAVE_LOCALSTARTUPFILEDIR }, | |
1347 { true, "localverarchlibdir", OCTAVE_LOCALVERARCHLIBDIR }, | |
1348 { true, "localverfcnfiledir", OCTAVE_LOCALVERFCNFILEDIR }, | |
1349 { true, "localveroctfiledir", OCTAVE_LOCALVEROCTFILEDIR }, | |
1350 { true, "man1dir", OCTAVE_MAN1DIR }, | |
1351 { false, "man1ext", OCTAVE_MAN1EXT }, | |
1352 { true, "mandir", OCTAVE_MANDIR }, | |
1353 { true, "octdatadir", OCTAVE_OCTDATADIR }, | |
1354 { true, "octfiledir", OCTAVE_OCTFILEDIR }, | |
1355 { true, "octetcdir", OCTAVE_OCTETCDIR }, | |
1356 { true, "octincludedir", OCTAVE_OCTINCLUDEDIR }, | |
1357 { true, "octlibdir", OCTAVE_OCTLIBDIR }, | |
1358 { true, "octtestsdir", OCTAVE_OCTTESTSDIR }, | |
1359 { true, "prefix", OCTAVE_PREFIX }, | |
1360 { true, "startupfiledir", OCTAVE_STARTUPFILEDIR }, | |
1361 { false, "version", OCTAVE_VERSION }, | |
1362 { false, 0, 0 } | |
1363 }; | |
1364 | |
1365 struct build_info_struct | |
1262 { | 1366 { |
1263 { false, "ALL_CFLAGS", octave::build_env::ALL_CFLAGS }, | 1367 const char *key; |
1264 { false, "ALL_CXXFLAGS", octave::build_env::ALL_CXXFLAGS }, | 1368 const char *val; |
1265 { false, "ALL_FFLAGS", octave::build_env::ALL_FFLAGS }, | |
1266 { false, "ALL_LDFLAGS", octave::build_env::ALL_LDFLAGS }, | |
1267 { false, "AMD_CPPFLAGS", octave::build_env::AMD_CPPFLAGS }, | |
1268 { false, "AMD_LDFLAGS", octave::build_env::AMD_LDFLAGS }, | |
1269 { false, "AMD_LIBS", octave::build_env::AMD_LIBS }, | |
1270 { false, "AR", octave::build_env::AR }, | |
1271 { false, "ARFLAGS", octave::build_env::ARFLAGS }, | |
1272 { false, "ARPACK_CPPFLAGS", octave::build_env::ARPACK_CPPFLAGS }, | |
1273 { false, "ARPACK_LDFLAGS", octave::build_env::ARPACK_LDFLAGS }, | |
1274 { false, "ARPACK_LIBS", octave::build_env::ARPACK_LIBS }, | |
1275 { false, "BLAS_LIBS", octave::build_env::BLAS_LIBS }, | |
1276 { false, "CAMD_CPPFLAGS", octave::build_env::CAMD_CPPFLAGS }, | |
1277 { false, "CAMD_LDFLAGS", octave::build_env::CAMD_LDFLAGS }, | |
1278 { false, "CAMD_LIBS", octave::build_env::CAMD_LIBS }, | |
1279 { false, "CARBON_LIBS", octave::build_env::CARBON_LIBS }, | |
1280 { false, "CC", octave::build_env::CC }, | |
1281 { false, "CCOLAMD_CPPFLAGS", octave::build_env::CCOLAMD_CPPFLAGS }, | |
1282 { false, "CCOLAMD_LDFLAGS", octave::build_env::CCOLAMD_LDFLAGS }, | |
1283 { false, "CCOLAMD_LIBS", octave::build_env::CCOLAMD_LIBS }, | |
1284 { false, "CFLAGS", octave::build_env::CFLAGS }, | |
1285 { false, "CHOLMOD_CPPFLAGS", octave::build_env::CHOLMOD_CPPFLAGS }, | |
1286 { false, "CHOLMOD_LDFLAGS", octave::build_env::CHOLMOD_LDFLAGS }, | |
1287 { false, "CHOLMOD_LIBS", octave::build_env::CHOLMOD_LIBS }, | |
1288 { false, "COLAMD_CPPFLAGS", octave::build_env::COLAMD_CPPFLAGS }, | |
1289 { false, "COLAMD_LDFLAGS", octave::build_env::COLAMD_LDFLAGS }, | |
1290 { false, "COLAMD_LIBS", octave::build_env::COLAMD_LIBS }, | |
1291 { false, "CPICFLAG", octave::build_env::CPICFLAG }, | |
1292 { false, "CPPFLAGS", octave::build_env::CPPFLAGS }, | |
1293 { false, "CURL_CPPFLAGS", octave::build_env::CURL_CPPFLAGS }, | |
1294 { false, "CURL_LDFLAGS", octave::build_env::CURL_LDFLAGS }, | |
1295 { false, "CURL_LIBS", octave::build_env::CURL_LIBS }, | |
1296 { false, "CXSPARSE_CPPFLAGS", octave::build_env::CXSPARSE_CPPFLAGS }, | |
1297 { false, "CXSPARSE_LDFLAGS", octave::build_env::CXSPARSE_LDFLAGS }, | |
1298 { false, "CXSPARSE_LIBS", octave::build_env::CXSPARSE_LIBS }, | |
1299 { false, "CXX", octave::build_env::CXX }, | |
1300 { false, "CXXCPP", octave::build_env::CXXCPP }, | |
1301 { false, "CXXFLAGS", octave::build_env::CXXFLAGS }, | |
1302 { false, "CXXPICFLAG", octave::build_env::CXXPICFLAG }, | |
1303 { false, "DEFAULT_PAGER", OCTAVE_DEFAULT_PAGER }, | |
1304 { false, "DEFS", octave::build_env::DEFS }, | |
1305 { false, "DL_LD", octave::build_env::DL_LD }, | |
1306 { false, "DL_LDFLAGS", octave::build_env::DL_LDFLAGS }, | |
1307 { false, "DL_LIBS", octave::build_env::DL_LIBS }, | |
1308 { false, "GCC_VERSION", octave::build_env::GCC_VERSION }, | |
1309 { false, "GXX_VERSION", octave::build_env::GXX_VERSION }, | |
1310 { false, "EXEEXT", octave::build_env::EXEEXT }, | |
1311 { false, "F77", octave::build_env::F77 }, | |
1312 { false, "F77_FLOAT_STORE_FLAG", octave::build_env::F77_FLOAT_STORE_FLAG }, | |
1313 { false, "F77_INTEGER_8_FLAG", octave::build_env::F77_INTEGER_8_FLAG }, | |
1314 { false, "FFLAGS", octave::build_env::FFLAGS }, | |
1315 { false, "FFTW3_CPPFLAGS", octave::build_env::FFTW3_CPPFLAGS }, | |
1316 { false, "FFTW3_LDFLAGS", octave::build_env::FFTW3_LDFLAGS }, | |
1317 { false, "FFTW3_LIBS", octave::build_env::FFTW3_LIBS }, | |
1318 { false, "FFTW3F_CPPFLAGS", octave::build_env::FFTW3F_CPPFLAGS }, | |
1319 { false, "FFTW3F_LDFLAGS", octave::build_env::FFTW3F_LDFLAGS }, | |
1320 { false, "FFTW3F_LIBS", octave::build_env::FFTW3F_LIBS }, | |
1321 { false, "FLIBS", octave::build_env::FLIBS }, | |
1322 { false, "FLTK_CPPFLAGS", octave::build_env::FLTK_CPPFLAGS }, | |
1323 { false, "FLTK_LDFLAGS", octave::build_env::FLTK_LDFLAGS }, | |
1324 { false, "FLTK_LIBS", octave::build_env::FLTK_LIBS }, | |
1325 { false, "FONTCONFIG_CPPFLAGS", octave::build_env::FONTCONFIG_CPPFLAGS }, | |
1326 { false, "FONTCONFIG_LIBS", octave::build_env::FONTCONFIG_LIBS }, | |
1327 { false, "FPICFLAG", octave::build_env::FPICFLAG }, | |
1328 { false, "FT2_CPPFLAGS", octave::build_env::FT2_CPPFLAGS }, | |
1329 { false, "FT2_LIBS", octave::build_env::FT2_LIBS }, | |
1330 { false, "GLPK_CPPFLAGS", octave::build_env::GLPK_CPPFLAGS }, | |
1331 { false, "GLPK_LDFLAGS", octave::build_env::GLPK_LDFLAGS }, | |
1332 { false, "GLPK_LIBS", octave::build_env::GLPK_LIBS }, | |
1333 { false, "GNUPLOT", octave::build_env::GNUPLOT }, | |
1334 { false, "HDF5_CPPFLAGS", octave::build_env::HDF5_CPPFLAGS }, | |
1335 { false, "HDF5_LDFLAGS", octave::build_env::HDF5_LDFLAGS }, | |
1336 { false, "HDF5_LIBS", octave::build_env::HDF5_LIBS }, | |
1337 { false, "LAPACK_LIBS", octave::build_env::LAPACK_LIBS }, | |
1338 { false, "LDFLAGS", octave::build_env::LDFLAGS }, | |
1339 { false, "LD_CXX", octave::build_env::LD_CXX }, | |
1340 { false, "LD_STATIC_FLAG", octave::build_env::LD_STATIC_FLAG }, | |
1341 { false, "LEX", octave::build_env::LEX }, | |
1342 { false, "LEXLIB", octave::build_env::LEXLIB }, | |
1343 { false, "LFLAGS", octave::build_env::LFLAGS }, | |
1344 { false, "LIBEXT", octave::build_env::LIBEXT }, | |
1345 { false, "LIBFLAGS", octave::build_env::LIBFLAGS }, | |
1346 { false, "LIBOCTAVE", octave::build_env::LIBOCTAVE }, | |
1347 { false, "LIBOCTINTERP", octave::build_env::LIBOCTINTERP }, | |
1348 { false, "LIBS", octave::build_env::LIBS }, | |
1349 { false, "LLVM_CPPFLAGS", octave::build_env::LLVM_CPPFLAGS }, | |
1350 { false, "LLVM_LDFLAGS", octave::build_env::LLVM_LDFLAGS }, | |
1351 { false, "LLVM_LIBS", octave::build_env::LLVM_LIBS }, | |
1352 { false, "LN_S", octave::build_env::LN_S }, | |
1353 { false, "MAGICK_CPPFLAGS", octave::build_env::MAGICK_CPPFLAGS }, | |
1354 { false, "MAGICK_LDFLAGS", octave::build_env::MAGICK_LDFLAGS }, | |
1355 { false, "MAGICK_LIBS", octave::build_env::MAGICK_LIBS }, | |
1356 { false, "MKOCTFILE_DL_LDFLAGS", octave::build_env::MKOCTFILE_DL_LDFLAGS }, | |
1357 { false, "OCTAVE_LINK_DEPS", octave::build_env::OCTAVE_LINK_DEPS }, | |
1358 { false, "OCTAVE_LINK_OPTS", octave::build_env::OCTAVE_LINK_OPTS }, | |
1359 { false, "OCT_LINK_DEPS", octave::build_env::OCT_LINK_DEPS }, | |
1360 { false, "OCT_LINK_OPTS", octave::build_env::OCT_LINK_OPTS }, | |
1361 { false, "OPENGL_LIBS", octave::build_env::OPENGL_LIBS }, | |
1362 { false, "OSMESA_CPPFLAGS", octave::build_env::OSMESA_CPPFLAGS }, | |
1363 { false, "OSMESA_LDFLAGS", octave::build_env::OSMESA_LDFLAGS }, | |
1364 { false, "OSMESA_LIBS", octave::build_env::OSMESA_LIBS }, | |
1365 { false, "PCRE_CPPFLAGS", octave::build_env::PCRE_CPPFLAGS }, | |
1366 { false, "PCRE_LIBS", octave::build_env::PCRE_LIBS }, | |
1367 { false, "PTHREAD_CFLAGS", octave::build_env::PTHREAD_CFLAGS }, | |
1368 { false, "PTHREAD_LIBS", octave::build_env::PTHREAD_LIBS }, | |
1369 { false, "QHULL_CPPFLAGS", octave::build_env::QHULL_CPPFLAGS }, | |
1370 { false, "QHULL_LDFLAGS", octave::build_env::QHULL_LDFLAGS }, | |
1371 { false, "QHULL_LIBS", octave::build_env::QHULL_LIBS }, | |
1372 { false, "QRUPDATE_CPPFLAGS", octave::build_env::QRUPDATE_CPPFLAGS }, | |
1373 { false, "QRUPDATE_LDFLAGS", octave::build_env::QRUPDATE_LDFLAGS }, | |
1374 { false, "QRUPDATE_LIBS", octave::build_env::QRUPDATE_LIBS }, | |
1375 { false, "QT_CPPFLAGS", octave::build_env::QT_CPPFLAGS }, | |
1376 { false, "QT_LDFLAGS", octave::build_env::QT_LDFLAGS }, | |
1377 { false, "QT_LIBS", octave::build_env::QT_LIBS }, | |
1378 { false, "RANLIB", octave::build_env::RANLIB }, | |
1379 { false, "RDYNAMIC_FLAG", octave::build_env::RDYNAMIC_FLAG }, | |
1380 { false, "READLINE_LIBS", octave::build_env::READLINE_LIBS }, | |
1381 { false, "SED", octave::build_env::SED }, | |
1382 { false, "SHARED_LIBS", octave::build_env::SHARED_LIBS }, | |
1383 { false, "SHLEXT", octave::build_env::SHLEXT }, | |
1384 { false, "SHLEXT_VER", octave::build_env::SHLEXT_VER }, | |
1385 { false, "SH_LD", octave::build_env::SH_LD }, | |
1386 { false, "SH_LDFLAGS", octave::build_env::SH_LDFLAGS }, | |
1387 { false, "SONAME_FLAGS", octave::build_env::SONAME_FLAGS }, | |
1388 { false, "STATIC_LIBS", octave::build_env::STATIC_LIBS }, | |
1389 { false, "TERM_LIBS", octave::build_env::TERM_LIBS }, | |
1390 { false, "UMFPACK_CPPFLAGS", octave::build_env::UMFPACK_CPPFLAGS }, | |
1391 { false, "UMFPACK_LDFLAGS", octave::build_env::UMFPACK_LDFLAGS }, | |
1392 { false, "UMFPACK_LIBS", octave::build_env::UMFPACK_LIBS }, | |
1393 { false, "WARN_CFLAGS", octave::build_env::WARN_CFLAGS }, | |
1394 { false, "WARN_CXXFLAGS", octave::build_env::WARN_CXXFLAGS }, | |
1395 { false, "X11_INCFLAGS", octave::build_env::X11_INCFLAGS }, | |
1396 { false, "X11_LIBS", octave::build_env::X11_LIBS }, | |
1397 { false, "XTRA_CFLAGS", octave::build_env::XTRA_CFLAGS }, | |
1398 { false, "XTRA_CXXFLAGS", octave::build_env::XTRA_CXXFLAGS }, | |
1399 { false, "YACC", octave::build_env::YACC }, | |
1400 { false, "YFLAGS", octave::build_env::YFLAGS }, | |
1401 { false, "Z_CPPFLAGS", octave::build_env::Z_CPPFLAGS }, | |
1402 { false, "Z_LDFLAGS", octave::build_env::Z_LDFLAGS }, | |
1403 { false, "Z_LIBS", octave::build_env::Z_LIBS }, | |
1404 { false, "api_version", OCTAVE_API_VERSION }, | |
1405 { true, "archlibdir", OCTAVE_ARCHLIBDIR }, | |
1406 { true, "bindir", OCTAVE_BINDIR }, | |
1407 { false, "canonical_host_type", OCTAVE_CANONICAL_HOST_TYPE }, | |
1408 { false, "config_opts", octave::build_env::config_opts }, | |
1409 { true, "datadir", OCTAVE_DATADIR }, | |
1410 { true, "datarootdir", OCTAVE_DATAROOTDIR }, | |
1411 { true, "exec_prefix", OCTAVE_EXEC_PREFIX }, | |
1412 { true, "fcnfiledir", OCTAVE_FCNFILEDIR }, | |
1413 { true, "imagedir", OCTAVE_IMAGEDIR }, | |
1414 { true, "includedir", OCTAVE_INCLUDEDIR }, | |
1415 { true, "infodir", OCTAVE_INFODIR }, | |
1416 { true, "infofile", OCTAVE_INFOFILE }, | |
1417 { true, "libdir", OCTAVE_LIBDIR }, | |
1418 { true, "libexecdir", OCTAVE_LIBEXECDIR }, | |
1419 { true, "localapiarchlibdir", OCTAVE_LOCALAPIARCHLIBDIR }, | |
1420 { true, "localapifcnfiledir", OCTAVE_LOCALAPIFCNFILEDIR }, | |
1421 { true, "localapioctfiledir", OCTAVE_LOCALAPIOCTFILEDIR }, | |
1422 { true, "localarchlibdir", OCTAVE_LOCALARCHLIBDIR }, | |
1423 { true, "localfcnfiledir", OCTAVE_LOCALFCNFILEDIR }, | |
1424 { true, "localoctfiledir", OCTAVE_LOCALOCTFILEDIR }, | |
1425 { true, "localstartupfiledir", OCTAVE_LOCALSTARTUPFILEDIR }, | |
1426 { true, "localverarchlibdir", OCTAVE_LOCALVERARCHLIBDIR }, | |
1427 { true, "localverfcnfiledir", OCTAVE_LOCALVERFCNFILEDIR }, | |
1428 { true, "localveroctfiledir", OCTAVE_LOCALVEROCTFILEDIR }, | |
1429 { true, "man1dir", OCTAVE_MAN1DIR }, | |
1430 { false, "man1ext", OCTAVE_MAN1EXT }, | |
1431 { true, "mandir", OCTAVE_MANDIR }, | |
1432 { true, "octdatadir", OCTAVE_OCTDATADIR }, | |
1433 { true, "octfiledir", OCTAVE_OCTFILEDIR }, | |
1434 { true, "octetcdir", OCTAVE_OCTETCDIR }, | |
1435 { true, "octincludedir", OCTAVE_OCTINCLUDEDIR }, | |
1436 { true, "octlibdir", OCTAVE_OCTLIBDIR }, | |
1437 { true, "octtestsdir", OCTAVE_OCTTESTSDIR }, | |
1438 { true, "prefix", OCTAVE_PREFIX }, | |
1439 { true, "startupfiledir", OCTAVE_STARTUPFILEDIR }, | |
1440 { false, "version", OCTAVE_VERSION }, | |
1441 { false, 0, 0 } | |
1442 }; | 1369 }; |
1443 | 1370 |
1371 static const build_info_struct build_info[] = | |
1372 { | |
1373 { "ALL_CFLAGS", octave::build_env::ALL_CFLAGS }, | |
1374 { "ALL_CXXFLAGS", octave::build_env::ALL_CXXFLAGS }, | |
1375 { "ALL_FFLAGS", octave::build_env::ALL_FFLAGS }, | |
1376 { "ALL_LDFLAGS", octave::build_env::ALL_LDFLAGS }, | |
1377 { "AMD_CPPFLAGS", octave::build_env::AMD_CPPFLAGS }, | |
1378 { "AMD_LDFLAGS", octave::build_env::AMD_LDFLAGS }, | |
1379 { "AMD_LIBS", octave::build_env::AMD_LIBS }, | |
1380 { "AR", octave::build_env::AR }, | |
1381 { "ARFLAGS", octave::build_env::ARFLAGS }, | |
1382 { "ARPACK_CPPFLAGS", octave::build_env::ARPACK_CPPFLAGS }, | |
1383 { "ARPACK_LDFLAGS", octave::build_env::ARPACK_LDFLAGS }, | |
1384 { "ARPACK_LIBS", octave::build_env::ARPACK_LIBS }, | |
1385 { "BLAS_LIBS", octave::build_env::BLAS_LIBS }, | |
1386 { "CAMD_CPPFLAGS", octave::build_env::CAMD_CPPFLAGS }, | |
1387 { "CAMD_LDFLAGS", octave::build_env::CAMD_LDFLAGS }, | |
1388 { "CAMD_LIBS", octave::build_env::CAMD_LIBS }, | |
1389 { "CARBON_LIBS", octave::build_env::CARBON_LIBS }, | |
1390 { "CC", octave::build_env::CC }, | |
1391 { "CCOLAMD_CPPFLAGS", octave::build_env::CCOLAMD_CPPFLAGS }, | |
1392 { "CCOLAMD_LDFLAGS", octave::build_env::CCOLAMD_LDFLAGS }, | |
1393 { "CCOLAMD_LIBS", octave::build_env::CCOLAMD_LIBS }, | |
1394 { "CFLAGS", octave::build_env::CFLAGS }, | |
1395 { "CHOLMOD_CPPFLAGS", octave::build_env::CHOLMOD_CPPFLAGS }, | |
1396 { "CHOLMOD_LDFLAGS", octave::build_env::CHOLMOD_LDFLAGS }, | |
1397 { "CHOLMOD_LIBS", octave::build_env::CHOLMOD_LIBS }, | |
1398 { "COLAMD_CPPFLAGS", octave::build_env::COLAMD_CPPFLAGS }, | |
1399 { "COLAMD_LDFLAGS", octave::build_env::COLAMD_LDFLAGS }, | |
1400 { "COLAMD_LIBS", octave::build_env::COLAMD_LIBS }, | |
1401 { "CPICFLAG", octave::build_env::CPICFLAG }, | |
1402 { "CPPFLAGS", octave::build_env::CPPFLAGS }, | |
1403 { "CURL_CPPFLAGS", octave::build_env::CURL_CPPFLAGS }, | |
1404 { "CURL_LDFLAGS", octave::build_env::CURL_LDFLAGS }, | |
1405 { "CURL_LIBS", octave::build_env::CURL_LIBS }, | |
1406 { "CXSPARSE_CPPFLAGS", octave::build_env::CXSPARSE_CPPFLAGS }, | |
1407 { "CXSPARSE_LDFLAGS", octave::build_env::CXSPARSE_LDFLAGS }, | |
1408 { "CXSPARSE_LIBS", octave::build_env::CXSPARSE_LIBS }, | |
1409 { "CXX", octave::build_env::CXX }, | |
1410 { "CXXCPP", octave::build_env::CXXCPP }, | |
1411 { "CXXFLAGS", octave::build_env::CXXFLAGS }, | |
1412 { "CXXPICFLAG", octave::build_env::CXXPICFLAG }, | |
1413 { "DEFS", octave::build_env::DEFS }, | |
1414 { "DL_LD", octave::build_env::DL_LD }, | |
1415 { "DL_LDFLAGS", octave::build_env::DL_LDFLAGS }, | |
1416 { "DL_LIBS", octave::build_env::DL_LIBS }, | |
1417 { "GCC_VERSION", octave::build_env::GCC_VERSION }, | |
1418 { "GXX_VERSION", octave::build_env::GXX_VERSION }, | |
1419 { "EXEEXT", octave::build_env::EXEEXT }, | |
1420 { "F77", octave::build_env::F77 }, | |
1421 { "F77_FLOAT_STORE_FLAG", octave::build_env::F77_FLOAT_STORE_FLAG }, | |
1422 { "F77_INTEGER_8_FLAG", octave::build_env::F77_INTEGER_8_FLAG }, | |
1423 { "FFLAGS", octave::build_env::FFLAGS }, | |
1424 { "FFTW3_CPPFLAGS", octave::build_env::FFTW3_CPPFLAGS }, | |
1425 { "FFTW3_LDFLAGS", octave::build_env::FFTW3_LDFLAGS }, | |
1426 { "FFTW3_LIBS", octave::build_env::FFTW3_LIBS }, | |
1427 { "FFTW3F_CPPFLAGS", octave::build_env::FFTW3F_CPPFLAGS }, | |
1428 { "FFTW3F_LDFLAGS", octave::build_env::FFTW3F_LDFLAGS }, | |
1429 { "FFTW3F_LIBS", octave::build_env::FFTW3F_LIBS }, | |
1430 { "FLIBS", octave::build_env::FLIBS }, | |
1431 { "FLTK_CPPFLAGS", octave::build_env::FLTK_CPPFLAGS }, | |
1432 { "FLTK_LDFLAGS", octave::build_env::FLTK_LDFLAGS }, | |
1433 { "FLTK_LIBS", octave::build_env::FLTK_LIBS }, | |
1434 { "FONTCONFIG_CPPFLAGS", octave::build_env::FONTCONFIG_CPPFLAGS }, | |
1435 { "FONTCONFIG_LIBS", octave::build_env::FONTCONFIG_LIBS }, | |
1436 { "FPICFLAG", octave::build_env::FPICFLAG }, | |
1437 { "FT2_CPPFLAGS", octave::build_env::FT2_CPPFLAGS }, | |
1438 { "FT2_LIBS", octave::build_env::FT2_LIBS }, | |
1439 { "GLPK_CPPFLAGS", octave::build_env::GLPK_CPPFLAGS }, | |
1440 { "GLPK_LDFLAGS", octave::build_env::GLPK_LDFLAGS }, | |
1441 { "GLPK_LIBS", octave::build_env::GLPK_LIBS }, | |
1442 { "GNUPLOT", octave::build_env::GNUPLOT }, | |
1443 { "HDF5_CPPFLAGS", octave::build_env::HDF5_CPPFLAGS }, | |
1444 { "HDF5_LDFLAGS", octave::build_env::HDF5_LDFLAGS }, | |
1445 { "HDF5_LIBS", octave::build_env::HDF5_LIBS }, | |
1446 { "LAPACK_LIBS", octave::build_env::LAPACK_LIBS }, | |
1447 { "LDFLAGS", octave::build_env::LDFLAGS }, | |
1448 { "LD_CXX", octave::build_env::LD_CXX }, | |
1449 { "LD_STATIC_FLAG", octave::build_env::LD_STATIC_FLAG }, | |
1450 { "LEX", octave::build_env::LEX }, | |
1451 { "LEXLIB", octave::build_env::LEXLIB }, | |
1452 { "LFLAGS", octave::build_env::LFLAGS }, | |
1453 { "LIBEXT", octave::build_env::LIBEXT }, | |
1454 { "LIBFLAGS", octave::build_env::LIBFLAGS }, | |
1455 { "LIBOCTAVE", octave::build_env::LIBOCTAVE }, | |
1456 { "LIBOCTINTERP", octave::build_env::LIBOCTINTERP }, | |
1457 { "LIBS", octave::build_env::LIBS }, | |
1458 { "LLVM_CPPFLAGS", octave::build_env::LLVM_CPPFLAGS }, | |
1459 { "LLVM_LDFLAGS", octave::build_env::LLVM_LDFLAGS }, | |
1460 { "LLVM_LIBS", octave::build_env::LLVM_LIBS }, | |
1461 { "LN_S", octave::build_env::LN_S }, | |
1462 { "MAGICK_CPPFLAGS", octave::build_env::MAGICK_CPPFLAGS }, | |
1463 { "MAGICK_LDFLAGS", octave::build_env::MAGICK_LDFLAGS }, | |
1464 { "MAGICK_LIBS", octave::build_env::MAGICK_LIBS }, | |
1465 { "MKOCTFILE_DL_LDFLAGS", octave::build_env::MKOCTFILE_DL_LDFLAGS }, | |
1466 { "OCTAVE_LINK_DEPS", octave::build_env::OCTAVE_LINK_DEPS }, | |
1467 { "OCTAVE_LINK_OPTS", octave::build_env::OCTAVE_LINK_OPTS }, | |
1468 { "OCT_LINK_DEPS", octave::build_env::OCT_LINK_DEPS }, | |
1469 { "OCT_LINK_OPTS", octave::build_env::OCT_LINK_OPTS }, | |
1470 { "OPENGL_LIBS", octave::build_env::OPENGL_LIBS }, | |
1471 { "OSMESA_CPPFLAGS", octave::build_env::OSMESA_CPPFLAGS }, | |
1472 { "OSMESA_LDFLAGS", octave::build_env::OSMESA_LDFLAGS }, | |
1473 { "OSMESA_LIBS", octave::build_env::OSMESA_LIBS }, | |
1474 { "PCRE_CPPFLAGS", octave::build_env::PCRE_CPPFLAGS }, | |
1475 { "PCRE_LIBS", octave::build_env::PCRE_LIBS }, | |
1476 { "PTHREAD_CFLAGS", octave::build_env::PTHREAD_CFLAGS }, | |
1477 { "PTHREAD_LIBS", octave::build_env::PTHREAD_LIBS }, | |
1478 { "QHULL_CPPFLAGS", octave::build_env::QHULL_CPPFLAGS }, | |
1479 { "QHULL_LDFLAGS", octave::build_env::QHULL_LDFLAGS }, | |
1480 { "QHULL_LIBS", octave::build_env::QHULL_LIBS }, | |
1481 { "QRUPDATE_CPPFLAGS", octave::build_env::QRUPDATE_CPPFLAGS }, | |
1482 { "QRUPDATE_LDFLAGS", octave::build_env::QRUPDATE_LDFLAGS }, | |
1483 { "QRUPDATE_LIBS", octave::build_env::QRUPDATE_LIBS }, | |
1484 { "QT_CPPFLAGS", octave::build_env::QT_CPPFLAGS }, | |
1485 { "QT_LDFLAGS", octave::build_env::QT_LDFLAGS }, | |
1486 { "QT_LIBS", octave::build_env::QT_LIBS }, | |
1487 { "RANLIB", octave::build_env::RANLIB }, | |
1488 { "RDYNAMIC_FLAG", octave::build_env::RDYNAMIC_FLAG }, | |
1489 { "READLINE_LIBS", octave::build_env::READLINE_LIBS }, | |
1490 { "SED", octave::build_env::SED }, | |
1491 { "SHARED_LIBS", octave::build_env::SHARED_LIBS }, | |
1492 { "SHLEXT", octave::build_env::SHLEXT }, | |
1493 { "SHLEXT_VER", octave::build_env::SHLEXT_VER }, | |
1494 { "SH_LD", octave::build_env::SH_LD }, | |
1495 { "SH_LDFLAGS", octave::build_env::SH_LDFLAGS }, | |
1496 { "SONAME_FLAGS", octave::build_env::SONAME_FLAGS }, | |
1497 { "STATIC_LIBS", octave::build_env::STATIC_LIBS }, | |
1498 { "TERM_LIBS", octave::build_env::TERM_LIBS }, | |
1499 { "UMFPACK_CPPFLAGS", octave::build_env::UMFPACK_CPPFLAGS }, | |
1500 { "UMFPACK_LDFLAGS", octave::build_env::UMFPACK_LDFLAGS }, | |
1501 { "UMFPACK_LIBS", octave::build_env::UMFPACK_LIBS }, | |
1502 { "WARN_CFLAGS", octave::build_env::WARN_CFLAGS }, | |
1503 { "WARN_CXXFLAGS", octave::build_env::WARN_CXXFLAGS }, | |
1504 { "X11_INCFLAGS", octave::build_env::X11_INCFLAGS }, | |
1505 { "X11_LIBS", octave::build_env::X11_LIBS }, | |
1506 { "XTRA_CFLAGS", octave::build_env::XTRA_CFLAGS }, | |
1507 { "XTRA_CXXFLAGS", octave::build_env::XTRA_CXXFLAGS }, | |
1508 { "YACC", octave::build_env::YACC }, | |
1509 { "YFLAGS", octave::build_env::YFLAGS }, | |
1510 { "Z_CPPFLAGS", octave::build_env::Z_CPPFLAGS }, | |
1511 { "Z_LDFLAGS", octave::build_env::Z_LDFLAGS }, | |
1512 { "Z_LIBS", octave::build_env::Z_LIBS }, | |
1513 { "config_opts", octave::build_env::config_opts }, | |
1514 { 0, 0 }, | |
1515 }; | |
1516 | |
1517 | |
1518 static octave_scalar_map config; | |
1519 static octave_scalar_map build_env; | |
1520 static octave_scalar_map build_features = octave::build_env::features (); | |
1521 | |
1444 if (! initialized) | 1522 if (! initialized) |
1445 { | 1523 { |
1446 m.assign ("dld", octave_value (octave_supports_dynamic_linking)); | 1524 int i; |
1447 | 1525 |
1448 oct_mach_info::float_format ff = oct_mach_info::native_float_format (); | 1526 i = 0; |
1449 m.assign ("float_format", | 1527 while (true) |
1450 octave_value (oct_mach_info::float_format_as_string (ff))); | 1528 { |
1451 | 1529 const build_info_struct& elt = build_info[i++]; |
1452 m.assign ("words_big_endian", | 1530 |
1453 octave_value (oct_mach_info::words_big_endian ())); | 1531 const char *key = elt.key; |
1454 | 1532 |
1455 m.assign ("words_little_endian", | 1533 if (key) |
1456 octave_value (oct_mach_info::words_little_endian ())); | 1534 build_env.assign (key, elt.val); |
1457 | 1535 else |
1458 m.assign ("features", octave_value (octave::build_env::features ())); | 1536 break; |
1459 | 1537 } |
1460 int i = 0; | 1538 |
1461 | 1539 i = 0; |
1462 while (true) | 1540 while (true) |
1463 { | 1541 { |
1464 const conf_info_struct& elt = conf_info[i++]; | 1542 const conf_info_struct& elt = conf_info[i++]; |
1465 | 1543 |
1466 const char *key = elt.key; | 1544 const char *key = elt.key; |
1467 | 1545 |
1468 if (key) | 1546 if (key) |
1469 { | 1547 { |
1470 if (elt.subst_home) | 1548 if (elt.subst_home) |
1471 m.assign (key, subst_octave_home (elt.val)); | 1549 config.assign (key, subst_octave_home (elt.val)); |
1472 else | 1550 else |
1473 m.assign (key, elt.val); | 1551 config.assign (key, elt.val); |
1474 } | 1552 } |
1475 else | 1553 else |
1476 break; | 1554 break; |
1477 } | 1555 } |
1478 | 1556 |
1489 | 1567 |
1490 #if defined (OCTAVE_USE_OS_X_API) | 1568 #if defined (OCTAVE_USE_OS_X_API) |
1491 mac_system = true; | 1569 mac_system = true; |
1492 #endif | 1570 #endif |
1493 | 1571 |
1494 m.assign ("unix", octave_value (unix_system)); | 1572 config.assign ("unix", octave_value (unix_system)); |
1495 m.assign ("mac", octave_value (mac_system)); | 1573 config.assign ("mac", octave_value (mac_system)); |
1496 m.assign ("windows", octave_value (windows_system)); | 1574 config.assign ("windows", octave_value (windows_system)); |
1575 | |
1576 config.assign ("dld", octave_value (octave_supports_dynamic_linking)); | |
1577 | |
1578 oct_mach_info::float_format ff = oct_mach_info::native_float_format (); | |
1579 config.assign ("float_format", | |
1580 octave_value (oct_mach_info::float_format_as_string (ff))); | |
1581 | |
1582 config.assign ("words_big_endian", | |
1583 octave_value (oct_mach_info::words_big_endian ())); | |
1584 | |
1585 config.assign ("words_little_endian", | |
1586 octave_value (oct_mach_info::words_little_endian ())); | |
1587 | |
1588 config.assign ("build_environment", octave_value (build_env)); | |
1589 | |
1590 config.assign ("build_features", octave_value (build_features)); | |
1497 | 1591 |
1498 initialized = true; | 1592 initialized = true; |
1499 } | 1593 } |
1500 | 1594 |
1501 int nargin = args.length (); | 1595 int nargin = args.length (); |
1505 | 1599 |
1506 octave_value_list retval; | 1600 octave_value_list retval; |
1507 | 1601 |
1508 if (nargin == 1) | 1602 if (nargin == 1) |
1509 { | 1603 { |
1510 std::string arg = args(0).string_value (); | 1604 std::string arg = args(0).xstring_value ("octave_config_info: OPTION argument must be a string"); |
1511 | 1605 |
1512 if (! m.isfield (arg)) | 1606 octave_value info = find_config_info (config, arg); |
1513 error ("octave_config_info: invalid parameter '%s'", arg.c_str ()); | 1607 |
1514 | 1608 if (info.is_undefined ()) |
1515 Cell c = m.contents (arg); | 1609 info = find_config_info (build_env, arg); |
1516 | 1610 |
1517 if (c.is_empty ()) | 1611 if (info.is_undefined ()) |
1612 info = find_config_info (build_features, arg); | |
1613 | |
1614 if (info.is_undefined ()) | |
1518 error ("octave_config_info: no info for '%s'", arg.c_str ()); | 1615 error ("octave_config_info: no info for '%s'", arg.c_str ()); |
1519 | 1616 |
1520 retval = ovl (c(0)); | 1617 return info; |
1521 } | 1618 } |
1522 else | 1619 else |
1523 retval = ovl (m); | 1620 retval = ovl (config); |
1524 | 1621 |
1525 return retval; | 1622 return retval; |
1526 } | 1623 } |
1527 | 1624 |
1528 /* | 1625 /* |