1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
# QL_CHECK_CONSTANT(NAME,TYPE,HEADER,VALUE,DESCRIPTION)
# ----------------------------------------------
# Check whether the constant NAME (of type TYPE) exists in HEADER.
# It defines it as VALUE if it cannot be found.
AC_DEFUN([QL_CHECK_CONSTANT],
[AC_MSG_CHECKING([for $1])
AC_TRY_COMPILE(
[@%:@include<$3>],
[$2 x = $1;],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_DEFINE([$1],[$4],[$5])
])
])
# QL_CHECK_LONG_LONG
# ----------------------------------------------
# Check whether long long is supported.
AC_DEFUN([QL_CHECK_LONG_LONG],
[AC_MSG_CHECKING([long long support])
AC_TRY_COMPILE(
[],
[long long i;
unsigned long long j;
],
[AC_MSG_RESULT([yes])
AC_DEFINE([QL_HAVE_LONG_LONG],[],
[Define this if your compiler supports the long long type.])
],
[AC_MSG_RESULT([no])
])
])
# QL_CHECK_BOOST_DEVEL
# --------------------
# Check whether the Boost headers are available
AC_DEFUN([QL_CHECK_BOOST_DEVEL],
[AC_MSG_CHECKING([for Boost development files])
AC_TRY_COMPILE(
[@%:@include <boost/version.hpp>
@%:@include <boost/shared_ptr.hpp>
@%:@include <boost/assert.hpp>
@%:@include <boost/current_function.hpp>],
[],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_ERROR([Boost development files not found])
])
])
# QL_CHECK_BOOST_VERSION
# ----------------------
# Check whether the Boost installation is up to date
AC_DEFUN([QL_CHECK_BOOST_VERSION],
[AC_MSG_CHECKING([Boost version])
AC_REQUIRE([QL_CHECK_BOOST_DEVEL])
AC_TRY_COMPILE(
[@%:@include <boost/version.hpp>],
[@%:@if BOOST_VERSION < 103100
@%:@error too old
@%:@endif],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_ERROR([outdated Boost installation])
])
])
# QL_CHECK_BOOST_UNIT_TEST
# ------------------------
# Check whether the Boost unit-test framework is available
AC_DEFUN([QL_CHECK_BOOST_UNIT_TEST],
[AC_MSG_CHECKING([for Boost unit-test framework])
AC_REQUIRE([AC_PROG_CC])
ql_original_LIBS=$LIBS
ql_original_CXXFLAGS=$CXXFLAGS
CC_VERSION=`echo "__GNUC__ __GNUC_MINOR__" | $CC -E -x c - | tail -n 1 | $SED -e "s/ //"`
for boost_lib in boost_unit_test_framework-$CC$CC_VERSION \
boost_unit_test_framework-$CC \
boost_unit_test_framework \
boost_unit_test_framework-mt-$CC$CC_VERSION \
boost_unit_test_framework-mt-$CC \
boost_unit_test_framework-mt ; do
LIBS="$ql_original_LIBS -l$boost_lib"
# 1.33.1 or 1.34 static
CXXFLAGS="$ql_original_CXXFLAGS"
boost_unit_found=no
AC_LINK_IFELSE(
[@%:@include <boost/test/unit_test.hpp>
using namespace boost::unit_test_framework;
test_suite*
init_unit_test_suite(int argc, char** argv)
{
return (test_suite*) 0;
}
],
[boost_unit_found=$boost_lib
boost_defines=""
break],
[])
# 1.34 shared
CXXFLAGS="$ql_original_CXXFLAGS -DBOOST_TEST_MAIN -DBOOST_TEST_DYN_LINK"
boost_unit_found=no
AC_LINK_IFELSE(
[@%:@include <boost/test/unit_test.hpp>
using namespace boost::unit_test_framework;
test_suite*
init_unit_test_suite(int argc, char** argv)
{
return (test_suite*) 0;
}
],
[boost_unit_found=$boost_lib
boost_defines="-DBOOST_TEST_DYN_LINK"
break],
[])
done
LIBS="$ql_original_LIBS"
CXXFLAGS="$ql_original_CXXFLAGS"
if test "$boost_unit_found" = no ; then
AC_MSG_RESULT([no])
AC_SUBST([BOOST_UNIT_TEST_LIB],[""])
AC_SUBST([BOOST_UNIT_TEST_MAIN_CXXFLAGS],[""])
AC_MSG_WARN([Boost unit-test framework not found])
AC_MSG_WARN([The test suite will be disabled])
else
AC_MSG_RESULT([yes])
AC_SUBST([BOOST_UNIT_TEST_LIB],[$boost_lib])
AC_SUBST([BOOST_UNIT_TEST_MAIN_CXXFLAGS],[$boost_defines])
fi
])
# QL_CHECK_BOOST_TEST_STREAM
# --------------------------
# Check whether Boost unit-test stream accepts std::fixed
AC_DEFUN([QL_CHECK_BOOST_TEST_STREAM],
[AC_MSG_CHECKING([whether Boost unit-test streams work])
AC_REQUIRE([AC_PROG_CC])
AC_TRY_COMPILE(
[@%:@include <boost/test/unit_test.hpp>
@%:@include <iomanip>],
[BOOST_ERROR("foo " << std::fixed << 42.0);],
[AC_MSG_RESULT([yes])
AC_SUBST(BOOST_UNIT_TEST_DEFINE,[-DQL_WORKING_BOOST_STREAMS])],
[AC_MSG_RESULT([no])
AC_SUBST(BOOST_UNIT_TEST_DEFINE,[""])
])
])
# QL_CHECK_BOOST
# ------------------------
# Boost-related tests
AC_DEFUN([QL_CHECK_BOOST],
[AC_REQUIRE([QL_CHECK_BOOST_DEVEL])
AC_REQUIRE([QL_CHECK_BOOST_VERSION])
AC_REQUIRE([QL_CHECK_BOOST_UNIT_TEST])
AC_REQUIRE([QL_CHECK_BOOST_TEST_STREAM])
])
|