# HG changeset patch # User John W. Eaton # Date 1453418296 18000 # Node ID 54527108599ae0b94c15a0dbdbe1ec4071db9a09 # Parent 9d7619605e5e78d06dac278b51781645526d0e8a store more --enable-FEATURE info in octave_config_info * configure.ac: (ENABLE_64, ENABLE_BOUNDS_CHECK, ENABLE_DOCS, ENABLE_FLOAT_TRUNCATE, ENABLE_JIT, ENABLE_OPENMP): New variables. macros. Handle consistently and AC_DEFINE them. * common.mk, toplev.cc, oct-conf.in.h: Substitute new variables and store them in octave_config_info. * oct-conf-post.in.h: Provide old macro names for compatibility. * Array.cc, Array.h, DiagArray2.h, PermMatrix.h, Range.cc, Sparse.h, dim-vector.h, idx-vector.h, oct-refcount.h: Fix uses of macros. diff -r 9d7619605e5e -r 54527108599a build-aux/common.mk --- a/build-aux/common.mk Thu Jan 21 18:12:34 2016 -0500 +++ b/build-aux/common.mk Thu Jan 21 18:18:16 2016 -0500 @@ -493,14 +493,26 @@ fi endef +## The do_subst_config_vals and do_subst_cross_config_vals differ only in +## the definitions of the following variables: +## +## OCTAVE_CONF_MKOCTFILE_AR +## OCTAVE_CONF_MKOCTFILE_CC +## OCTAVE_CONF_MKOCTFILE_CXX +## OCTAVE_CONF_MKOCTFILE_DL_LD +## OCTAVE_CONF_MKOCTFILE_DL_LDFLAGS +## OCTAVE_CONF_MKOCTFILE_F77 +## OCTAVE_CONF_MKOCTFILE_LD_CXX +## OCTAVE_CONF_MKOCTFILE_RANLIB + ## To avoid shell command line limits, break the replacement patterns ## into two roughly equal sized parts. define do_subst_config_vals $(SED) < $< \ -e "s|%NO_EDIT_WARNING%|DO NOT EDIT! Generated automatically from $(= 5.0. It should not be ### necessary for non-x87 targets or when using modern SSE math. -ac_float_truncate=volatile +ENABLE_FLOAT_TRUNCATE=yes AC_ARG_ENABLE([float-truncate], [AS_HELP_STRING([--disable-float-truncate], [truncate intermediate FP results])], - [if test "$enableval" = no; then - ac_float_truncate= - fi], - []) - -AC_DEFINE_UNQUOTED(FLOAT_TRUNCATE, [$ac_float_truncate], - [Define to volatile if you need to truncate intermediate FP results.]) + [if test "$enableval" = no; then ENABLE_FLOAT_TRUNCATE=no; fi], []) +if test $ENABLE_FLOAT_TRUNCATE = yes; then + AC_DEFINE(ENABLE_FLOAT_TRUNCATE, 1, + [Define to 1 if you need to truncate intermediate FP results.]) +fi ### Determine extra CFLAGS that may be necessary for Octave. @@ -661,7 +658,7 @@ OCTAVE_CHECK_SIZEOF_FORTRAN_INTEGER if test $octave_cv_sizeof_fortran_integer = no; then - if test $USE_64_BIT_IDX_T = yes; then + if test $ENABLE_64 = yes; then case $F77 in *gfortran*) case $F77_INTEGER_8_FLAG in @@ -772,21 +769,18 @@ ### Check for the LLVM library -build_jit=no +ENABLE_JIT=no AC_ARG_ENABLE([jit], [AS_HELP_STRING([--enable-jit], [(EXPERIMENTAL) enable JIT compiler])], - [if test "$enableval" = yes; then - build_jit=yes - fi], - []) + [if test "$enableval" = yes; then ENABLE_JIT=yes; fi], []) LLVM_CXXFLAGS= LLVM_CPPFLAGS= LLVM_LDFLAGS= LLVM_LIBS= -if test $build_jit = yes; then +if test $ENABLE_JIT = yes; then ## Find llvm-config program from environment variable or by searching AC_ARG_VAR([LLVM_CONFIG], [path to llvm-config utility]) @@ -863,7 +857,7 @@ if test -z "$warn_llvm"; then AC_DEFINE(HAVE_LLVM, 1, [Define to 1 if LLVM is available.]) else - build_jit=no + ENABLE_JIT=no LLVM_CPPFLAGS= LLVM_CXXFLAGS= LLVM_LDFLAGS= @@ -876,6 +870,9 @@ dnl warn_llvm="JIT compiler disabled, some performance loss for loops" dnl OCTAVE_CONFIGURE_WARNING([warn_llvm]) fi +if test $ENABLE_JIT; then + AC_DEFINE(ENABLE_JIT, 1, [Define to 1 to enable JIT compiler.]) +fi AC_SUBST(LLVM_CPPFLAGS) AC_SUBST(LLVM_CXXFLAGS) @@ -1486,7 +1483,7 @@ fi if test $ax_blas_ok = no; then - if test $USE_64_BIT_IDX_T = yes && test "$ax_blas_integer_size_ok" = no; then + if test $ENABLE_64 = yes && test "$ax_blas_integer_size_ok" = no; then ## Attempt to be more informative. AC_MSG_ERROR([BLAS doesn't seem to support 64-bit integers. This is incompatible with --enable-64.]) else @@ -1526,7 +1523,7 @@ fi LIBS="$save_LIBS" -if test $USE_64_BIT_IDX_T = yes; then +if test $ENABLE_64 = yes; then CHOLMOD_TAG="_l_" CXSPARSE_TAG="_dl_" UMFPACK_TAG="_zl_" @@ -2458,6 +2455,10 @@ OCTAVE_CONFIGURE_WARNING([warn_docs_makeinfo]) fi fi +if test $ENABLE_DOCS = yes; then + AC_DEFINE(ENABLE_DOCS, 1, + [Define to 1 to build Octave documentation files.]) +fi AM_CONDITIONAL([AMCOND_BUILD_DOCS], [test $ENABLE_DOCS = yes]) ### Maybe add -Wall, -W, and -Wshadow to compiler flags now that we're @@ -3175,17 +3176,18 @@ gnuplot: $GNUPLOT Build Octave GUI: $build_gui - JIT compiler for loops: $build_jit + JIT compiler for loops: $ENABLE_JIT Build Java interface: $build_java - Do internal array bounds checking: $BOUNDS_CHECKING + Do internal array bounds checking: $ENABLE_BOUNDS_CHECK Build static libraries: $STATIC_LIBS Build shared libraries: $SHARED_LIBS Dynamic Linking: $ENABLE_DYNAMIC_LINKING $DL_API_MSG Include support for GNU readline: $USE_READLINE - 64-bit array dims and indexing: $USE_64_BIT_IDX_T - OpenMP SMP multithreading: $USE_OPENMP + 64-bit array dims and indexing: $ENABLE_64 + OpenMP SMP multithreading: $ENABLE_OPENMP Build cross tools: $cross_tools Build docs: $ENABLE_DOCS + Truncate intermediate FP results: $ENABLE_FLOAT_TRUNCATE ]) warn_msg_printed=false @@ -3200,7 +3202,7 @@ fi fi -if test $USE_64_BIT_IDX_T = yes; then +if test $ENABLE_64 = yes; then AC_MSG_WARN([]) AC_MSG_WARN([You used the EXPERIMENTAL --enable-64 option.]) AC_MSG_WARN([Are you sure that is what you want to do?]) @@ -3252,7 +3254,7 @@ warn_msg_printed=true fi -if test $USE_ATOMIC_REFCOUNT = no; then +if test $ENABLE_ATOMIC_REFCOUNT = no; then AC_MSG_WARN([]) AC_MSG_WARN([atomic reference counting disabled.]) AC_MSG_WARN([This feature allows access to Octave data safely from]) diff -r 9d7619605e5e -r 54527108599a libinterp/corefcn/toplev.cc --- a/libinterp/corefcn/toplev.cc Thu Jan 21 18:12:34 2016 -0500 +++ b/libinterp/corefcn/toplev.cc Thu Jan 21 18:18:16 2016 -0500 @@ -1300,7 +1300,13 @@ { false, "DL_LIBS", OCTAVE_CONF_DL_LIBS }, { false, "GCC_VERSION", OCTAVE_CONF_GCC_VERSION }, { false, "GXX_VERSION", OCTAVE_CONF_GXX_VERSION }, + { false, "ENABLE_64", OCTAVE_CONF_ENABLE_64 }, + { false, "ENABLE_BOUNDS_CHECK", OCTAVE_CONF_ENABLE_BOUNDS_CHECK }, + { false, "ENABLE_DOCS", OCTAVE_CONF_ENABLE_DOCS }, { false, "ENABLE_DYNAMIC_LINKING", OCTAVE_CONF_ENABLE_DYNAMIC_LINKING }, + { false, "ENABLE_FLOAT_TRUNCATE", OCTAVE_CONF_ENABLE_FLOAT_TRUNCATE }, + { false, "ENABLE_JIT", OCTAVE_CONF_ENABLE_JIT }, + { false, "ENABLE_OPENMP", OCTAVE_CONF_ENABLE_OPENMP }, { false, "EXEEXT", OCTAVE_CONF_EXEEXT }, { false, "F77", OCTAVE_CONF_F77 }, { false, "F77_FLOAT_STORE_FLAG", OCTAVE_CONF_F77_FLOAT_STORE_FLAG }, diff -r 9d7619605e5e -r 54527108599a libinterp/oct-conf.in.h --- a/libinterp/oct-conf.in.h Thu Jan 21 18:12:34 2016 -0500 +++ b/libinterp/oct-conf.in.h Thu Jan 21 18:18:16 2016 -0500 @@ -214,10 +214,34 @@ #define OCTAVE_CONF_DL_LIBS %OCTAVE_CONF_DL_LIBS% #endif +#ifndef OCTAVE_CONF_ENABLE_64 +#define OCTAVE_CONF_ENABLE_64 %OCTAVE_CONF_ENABLE_64% +#endif + +#ifndef OCTAVE_CONF_ENABLE_BOUNDS_CHECK +#define OCTAVE_CONF_ENABLE_BOUNDS_CHECK %OCTAVE_CONF_ENABLE_BOUNDS_CHECK% +#endif + +#ifndef OCTAVE_CONF_ENABLE_DOCS +#define OCTAVE_CONF_ENABLE_DOCS %OCTAVE_CONF_ENABLE_DOCS% +#endif + #ifndef OCTAVE_CONF_ENABLE_DYNAMIC_LINKING #define OCTAVE_CONF_ENABLE_DYNAMIC_LINKING %OCTAVE_CONF_ENABLE_DYNAMIC_LINKING% #endif +#ifndef OCTAVE_CONF_ENABLE_FLOAT_TRUNCATE +#define OCTAVE_CONF_ENABLE_FLOAT_TRUNCATE %OCTAVE_CONF_ENABLE_FLOAT_TRUNCATE% +#endif + +#ifndef OCTAVE_CONF_ENABLE_JIT +#define OCTAVE_CONF_ENABLE_JIT %OCTAVE_CONF_ENABLE_JIT% +#endif + +#ifndef OCTAVE_CONF_ENABLE_OPENMP +#define OCTAVE_CONF_ENABLE_OPENMP %OCTAVE_CONF_ENABLE_OPENMP% +#endif + #ifndef OCTAVE_CONF_EXEEXT #define OCTAVE_CONF_EXEEXT %OCTAVE_CONF_EXEEXT% #endif diff -r 9d7619605e5e -r 54527108599a liboctave/array/Array.cc --- a/liboctave/array/Array.cc Thu Jan 21 18:12:34 2016 -0500 +++ b/liboctave/array/Array.cc Thu Jan 21 18:18:16 2016 -0500 @@ -258,7 +258,7 @@ Array::column (octave_idx_type k) const { octave_idx_type r = dimensions(0); -#ifdef BOUNDS_CHECKING +#ifdef ENABLE_BOUNDS_CHECK if (k < 0 || k > dimensions.numel (1)) err_index_out_of_range (2, 2, k+1, dimensions.numel (1), dimensions); #endif @@ -273,7 +273,7 @@ octave_idx_type r = dimensions(0); octave_idx_type c = dimensions(1); octave_idx_type p = r*c; -#ifdef BOUNDS_CHECKING +#ifdef ENABLE_BOUNDS_CHECK if (k < 0 || k > dimensions.numel (2)) err_index_out_of_range (3, 3, k+1, dimensions.numel (2), dimensions); #endif @@ -285,7 +285,7 @@ Array Array::linear_slice (octave_idx_type lo, octave_idx_type up) const { -#ifdef BOUNDS_CHECKING +#ifdef ENABLE_BOUNDS_CHECK if (lo < 0) err_index_out_of_range (1, 1, lo+1, numel (), dimensions); if (up > numel ()) diff -r 9d7619605e5e -r 54527108599a liboctave/array/Array.h --- a/liboctave/array/Array.h Thu Jan 21 18:12:34 2016 -0500 +++ b/liboctave/array/Array.h Thu Jan 21 18:18:16 2016 -0500 @@ -393,7 +393,7 @@ T& elem (const Array& ra_idx) { return Array::elem (compute_index_unchecked (ra_idx)); } -#if defined (BOUNDS_CHECKING) +#if defined (ENABLE_BOUNDS_CHECK) T& operator () (octave_idx_type n) { return checkelem (n); } T& operator () (octave_idx_type i, octave_idx_type j) { return checkelem (i, j); } @@ -427,7 +427,7 @@ crefT elem (const Array& ra_idx) const { return Array::xelem (compute_index_unchecked (ra_idx)); } -#if defined (BOUNDS_CHECKING) +#if defined (ENABLE_BOUNDS_CHECK) crefT operator () (octave_idx_type n) const { return checkelem (n); } crefT operator () (octave_idx_type i, octave_idx_type j) const { return checkelem (i, j); } @@ -448,7 +448,8 @@ #endif // Fast extractors. All of these produce shallow copies. - // Warning: none of these do check bounds, unless BOUNDS_CHECKING is on! + // Warning: none of these do check bounds, unless + // ENABLE_BOUNDS_CHECK is defined! //! Extract column: A(:,k+1). Array column (octave_idx_type k) const; diff -r 9d7619605e5e -r 54527108599a liboctave/array/DiagArray2.h --- a/liboctave/array/DiagArray2.h Thu Jan 21 18:12:34 2016 -0500 +++ b/liboctave/array/DiagArray2.h Thu Jan 21 18:18:16 2016 -0500 @@ -131,7 +131,7 @@ T operator () (octave_idx_type r, octave_idx_type c) const { -#if defined (BOUNDS_CHECKING) +#if defined (ENABLE_BOUNDS_CHECK) return checkelem (r, c); #else return elem (r, c); @@ -146,7 +146,7 @@ T& operator () (octave_idx_type r, octave_idx_type c) { -#if defined (BOUNDS_CHECKING) +#if defined (ENABLE_BOUNDS_CHECK) return checkelem (r, c); #else return elem (r, c); diff -r 9d7619605e5e -r 54527108599a liboctave/array/PermMatrix.h --- a/liboctave/array/PermMatrix.h Thu Jan 21 18:12:34 2016 -0500 +++ b/liboctave/array/PermMatrix.h Thu Jan 21 18:18:16 2016 -0500 @@ -84,7 +84,7 @@ octave_idx_type operator () (octave_idx_type i, octave_idx_type j) const { -#if defined (BOUNDS_CHECKING) +#if defined (ENABLE_BOUNDS_CHECK) return checkelem (i, j); #else return elem (i, j); diff -r 9d7619605e5e -r 54527108599a liboctave/array/Range.cc --- a/liboctave/array/Range.cc Thu Jan 21 18:12:34 2016 -0500 +++ b/liboctave/array/Range.cc Thu Jan 21 18:18:16 2016 -0500 @@ -87,7 +87,7 @@ double Range::elem (octave_idx_type i) const { -#if defined (BOUNDS_CHECKING) +#if defined (ENABLE_BOUNDS_CHECK) return checkelem (i); #else if (i == 0) diff -r 9d7619605e5e -r 54527108599a liboctave/array/Sparse.h --- a/liboctave/array/Sparse.h Thu Jan 21 18:12:34 2016 -0500 +++ b/liboctave/array/Sparse.h Thu Jan 21 18:18:16 2016 -0500 @@ -376,7 +376,7 @@ T& elem (const Array& ra_idx) { return Sparse::elem (compute_index (ra_idx)); } -#if defined (BOUNDS_CHECKING) +#if defined (ENABLE_BOUNDS_CHECK) T& operator () (octave_idx_type n) { return checkelem (n); @@ -443,7 +443,7 @@ T elem (const Array& ra_idx) const { return Sparse::elem (compute_index (ra_idx)); } -#if defined (BOUNDS_CHECKING) +#if defined (ENABLE_BOUNDS_CHECK) T operator () (octave_idx_type n) const { return checkelem (n); } T operator () (octave_idx_type i, octave_idx_type j) const { diff -r 9d7619605e5e -r 54527108599a liboctave/array/dim-vector.h --- a/liboctave/array/dim-vector.h Thu Jan 21 18:12:34 2016 -0500 +++ b/liboctave/array/dim-vector.h Thu Jan 21 18:18:16 2016 -0500 @@ -238,7 +238,7 @@ octave_idx_type& elem (int i) { -#ifdef BOUNDS_CHECKING +#ifdef ENABLE_BOUNDS_CHECK assert (i >= 0 && i < ndims ()); #endif make_unique (); @@ -247,7 +247,7 @@ octave_idx_type elem (int i) const { -#ifdef BOUNDS_CHECKING +#ifdef ENABLE_BOUNDS_CHECK assert (i >= 0 && i < ndims ()); #endif return rep[i]; diff -r 9d7619605e5e -r 54527108599a liboctave/array/idx-vector.h --- a/liboctave/array/idx-vector.h Thu Jan 21 18:12:34 2016 -0500 +++ b/liboctave/array/idx-vector.h Thu Jan 21 18:18:16 2016 -0500 @@ -562,7 +562,7 @@ octave_idx_type operator () (octave_idx_type n) const { -#if defined (BOUNDS_CHECKING) +#if defined (ENABLE_BOUNDS_CHECK) return rep->checkelem (n); #else return rep->xelem (n); diff -r 9d7619605e5e -r 54527108599a liboctave/util/oct-refcount.h --- a/liboctave/util/oct-refcount.h Thu Jan 21 18:12:34 2016 -0500 +++ b/liboctave/util/oct-refcount.h Thu Jan 21 18:18:16 2016 -0500 @@ -27,7 +27,7 @@ # error "The file must be included before oct-refcount.h." #endif -#if defined (USE_ATOMIC_REFCOUNT) && (defined (_MSC_VER) || defined (__GNUC__)) +#if defined (ENABLE_ATOMIC_REFCOUNT) && (defined (_MSC_VER) || defined (__GNUC__)) # if defined (_MSC_VER) # include # define OCTREFCOUNT_ATOMIC_INCREMENT(x) _InterlockedIncrement((long*)x) diff -r 9d7619605e5e -r 54527108599a oct-conf-post.in.h --- a/oct-conf-post.in.h Thu Jan 21 18:12:34 2016 -0500 +++ b/oct-conf-post.in.h Thu Jan 21 18:18:16 2016 -0500 @@ -175,6 +175,26 @@ #define OCTGUI_API OCTAVE_IMPORT #endif +/* Backward compatibility */ + +#if defined (ENABLE_ATOMIC_REFCOUNT) +# define USE_ATOMIC_REFCOUNT 1 +#endif + +#if defined (ENABLE_64) +# define USE_64_BIT_IDX_T +#endif + +#if defined (ENABLE_OPENMP) +# define HAVE_OPENMP +#endif + +#if defined (ENABLE_FLOAT_TRUNCATE) +# define FLOAT_TRUNCATE volatile +#else +# define FLOAT_TRUNCATE +#endif + /* oct-types.h */ #include