diff --git a/configure.ac b/configure.ac index 0b44fa9e9..9971ddc95 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,11 @@ AC_ARG_ENABLE([debug], no) debug=false ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;; esac],[debug=false]) - AM_CONDITIONAL([DEBUG], [test x$debug = xtrue]) + +AM_CONDITIONAL([DEBUG], [test x$debug = xtrue]) + +# search for gsl +AM_PATH_GSL(1.1) # enable using GSL for linalg AC_ARG_ENABLE([gsl], @@ -32,7 +36,9 @@ AC_ARG_ENABLE([gsl], no) gsl=false ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-gsl]) ;; esac],[gsl=false]) - AM_CONDITIONAL([GSL], [test x$gsl = xtrue]) + +AM_CONDITIONAL([GSL], TRUE) + # enable using ATLAS for BLAS AC_ARG_ENABLE([atlas], @@ -42,7 +48,8 @@ AC_ARG_ENABLE([atlas], no) atlas=false ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-atlas]) ;; esac],[atlas=false]) - AM_CONDITIONAL([ATLAS], [test x$atlas = xtrue]) + +AM_CONDITIONAL([ATLAS], [test x$atlas = xtrue]) # Checks for programs. AC_PROG_CXX @@ -69,16 +76,6 @@ AC_TYPE_SIZE_T AC_FUNC_ERROR_AT_LINE AC_CHECK_FUNCS([pow sqrt]) -# ask for CppUnitLite directory -#AC_ARG_WITH([CppUnitLite], -# [AS_HELP_STRING([--with-CppUnitLite], -# [specify the directory of CppUnitLite library (mandatory)])], -# [CppUnitLite=$withval], -# [AC_MSG_FAILURE( -# [--with-CppUnitLite has to be specified]) -# ]) -#AC_SUBST([CppUnitLite]) - # ask for toolbox directory AC_ARG_WITH([toolbox], [AS_HELP_STRING([--with-toolbox], @@ -104,12 +101,9 @@ AC_ARG_WITH([boost_serialization], [AS_HELP_STRING([--with-boost-serialization], [(optional) use the Serialization library from boost - specify the library linking command with the full name of the library e.g. --with-boost-serialization=-lboost_serialization-gcc-mt-d-1_33_1])], - [AC_DEFINE([HAVE_BOOST_SERIALIZATION], [""], [boost serialization flag]) + [AC_DEFINE([HAVE_BOOST_SERIALIZATION], [""], [boost serialization flag]) boost_serialization=$withval ]) AC_SUBST([boost_serialization]) - -#AC_DEFINE([TEST_AC_DEFINE], [""], [testing of ac_define]) - - + AC_OUTPUT diff --git a/cpp/Makefile.am b/cpp/Makefile.am index 0a5014e03..1fbd80926 100644 --- a/cpp/Makefile.am +++ b/cpp/Makefile.am @@ -259,7 +259,7 @@ libgtsam_la_LDFLAGS = -version-info $(version) -L../colamd -lcolamd #-lboost_ser # enable debug if --enable-debug is set in configure if DEBUG - AM_CXXFLAGS += -g +AM_CXXFLAGS += -g endif # install the header files @@ -271,31 +271,18 @@ AM_LDFLAGS = -L../CppUnitLite -lCppUnitLite $(BOOST_LDFLAGS) $(boost_serializati ####################### # GSL/ATLAS inclusion ####################### - -# TO ENABLE GSL AND ATLAS, uncomment this part! -# AM_LDFLAGS += -lgsl -lcblas -latlas -# libgtsam_la_LDFLAGS += -lgsl -lcblas -latlas # Note: order of libraries is critical -# AM_CXXFLAGS += -DGSL -# libgtsam_la_CPPFLAGS += -DGSL - -# TO ENABLE JUST GSL, uncomment this part! -# AM_LDFLAGS += -lgsl -lgslcblas -# libgtsam_la_LDFLAGS += -lgsl -lgslcblas -# AM_CXXFLAGS += -DGSL -# libgtsam_la_CPPFLAGS += -DGSL - -# GSL using ATLAS -# if GSL -# AM_CXXFLAGS += -DGSL -# libgtsam_la_CPPFLAGS += -DGSL -# if ATLAS -# AM_LDFLAGS += -lgsl -lcblas -latlas -# libgtsam_la_LDFLAGS += -lgsl -lcblas -latlas -# else -# AM_LDFLAGS += -lgsl -lgslcblas -# libgtsam_la_LDFLAGS += -lgsl -lgslcblas -# endif -# endif +#GSL using ATLAS +if GSL +AM_CXXFLAGS += -DGSL $(GSL_CFLAGS) +libgtsam_la_CPPFLAGS += -DGSL $(GSL_CFLAGS) +if ATLAS +AM_LDFLAGS += $(GSL_LIBS) -lgsl -lcblas -latlas +libgtsam_la_LDFLAGS += $(GSL_LIBS) -lgsl -lcblas -latlas +else +AM_LDFLAGS += $(GSL_LIBS) -lgsl -lgslcblas +libgtsam_la_LDFLAGS += $(GSL_LIBS) -lgsl -lgslcblas +endif +endif TESTS = $(check_PROGRAMS) CXXLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ diff --git a/m4/gsl.m4 b/m4/gsl.m4 new file mode 100644 index 000000000..fc7fb4429 --- /dev/null +++ b/m4/gsl.m4 @@ -0,0 +1,162 @@ +# Configure path for the GNU Scientific Library +# Christopher R. Gabriel , April 2000 + + +AC_DEFUN([AX_PATH_GSL], +[ +AC_ARG_WITH(gsl-prefix,[ --with-gsl-prefix=PFX Prefix where GSL is installed (optional)], + gsl_prefix="$withval", gsl_prefix="") +AC_ARG_WITH(gsl-exec-prefix,[ --with-gsl-exec-prefix=PFX Exec prefix where GSL is installed (optional)], + gsl_exec_prefix="$withval", gsl_exec_prefix="") +AC_ARG_ENABLE(gsltest, [ --disable-gsltest Do not try to compile and run a test GSL program], + , enable_gsltest=yes) + + if test "x${GSL_CONFIG+set}" != xset ; then + if test "x$gsl_prefix" != x ; then + GSL_CONFIG="$gsl_prefix/bin/gsl-config" + fi + if test "x$gsl_exec_prefix" != x ; then + GSL_CONFIG="$gsl_exec_prefix/bin/gsl-config" + fi + fi + + AC_PATH_PROG(GSL_CONFIG, gsl-config, no) + min_gsl_version=ifelse([$1], ,0.2.5,$1) + AC_MSG_CHECKING(for GSL - version >= $min_gsl_version) + no_gsl="" + if test "$GSL_CONFIG" = "no" ; then + no_gsl=yes + else + GSL_CFLAGS=`$GSL_CONFIG --cflags` + GSL_LIBS=`$GSL_CONFIG --libs` + + gsl_major_version=`$GSL_CONFIG --version | \ + sed 's/^\([[0-9]]*\).*/\1/'` + if test "x${gsl_major_version}" = "x" ; then + gsl_major_version=0 + fi + + gsl_minor_version=`$GSL_CONFIG --version | \ + sed 's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\2/'` + if test "x${gsl_minor_version}" = "x" ; then + gsl_minor_version=0 + fi + + gsl_micro_version=`$GSL_CONFIG --version | \ + sed 's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\3/'` + if test "x${gsl_micro_version}" = "x" ; then + gsl_micro_version=0 + fi + + if test "x$enable_gsltest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GSL_CFLAGS" + LIBS="$LIBS $GSL_LIBS" + + rm -f conf.gsltest + AC_TRY_RUN([ +#include +#include +#include + +char* my_strdup (const char *str); + +char* +my_strdup (const char *str) +{ + char *new_str; + + if (str) + { + new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); + strcpy (new_str, str); + } + else + new_str = NULL; + + return new_str; +} + +int main (void) +{ + int major = 0, minor = 0, micro = 0; + int n; + char *tmp_version; + + system ("touch conf.gsltest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = my_strdup("$min_gsl_version"); + + n = sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) ; + + if (n != 2 && n != 3) { + printf("%s, bad version string\n", "$min_gsl_version"); + exit(1); + } + + if (($gsl_major_version > major) || + (($gsl_major_version == major) && ($gsl_minor_version > minor)) || + (($gsl_major_version == major) && ($gsl_minor_version == minor) && ($gsl_micro_version >= micro))) + { + exit(0); + } + else + { + exit(1); + } +} + +],, no_gsl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gsl" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$GSL_CONFIG" = "no" ; then + echo "*** The gsl-config script installed by GSL could not be found" + echo "*** If GSL was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GSL_CONFIG environment variable to the" + echo "*** full path to gsl-config." + else + if test -f conf.gsltest ; then + : + else + echo "*** Could not run GSL test program, checking why..." + CFLAGS="$CFLAGS $GSL_CFLAGS" + LIBS="$LIBS $GSL_LIBS" + AC_TRY_LINK([ +#include +], [ return 0; ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GSL or finding the wrong" + echo "*** version of GSL. If it is not finding GSL, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GSL was incorrectly installed" + echo "*** or that you have moved GSL since it was installed. In the latter case, you" + echo "*** may want to edit the gsl-config script: $GSL_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi +# GSL_CFLAGS="" +# GSL_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GSL_CFLAGS) + AC_SUBST(GSL_LIBS) + rm -f conf.gsltest +]) + +AU_ALIAS([AM_PATH_GSL], [AX_PATH_GSL]) diff --git a/myconfigure b/myconfigure index e51d3d0fd..6bec8b101 100755 --- a/myconfigure +++ b/myconfigure @@ -1 +1 @@ -./configure --prefix=$HOME --with-toolbox=$HOME/toolbox/ --with-boost=/opt/local/include/ CXXFLAGS=" -g -O2 -march=core2 -DNDEBUG" --disable-static +./configure --prefix=$HOME --with-toolbox=$HOME/toolbox/ --with-boost=/opt/local/include/ --enable-gsl=no --enable-atlas=no CXXFLAGS=" -g -O2 -march=core2 -DNDEBUG" --disable-static