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 /*