diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-02-04 13:56:09 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-02-04 13:56:09 +0200 |
commit | f1c2a621ac2695dfe4a3bc71dbc9ce3079008d2f (patch) | |
tree | d0c45ecd5489cd1b4beb57fc5afda3263ad0d2b2 /m4/libboost.m4 | |
parent | 6a07b88cdf6419440b19e7b7dbc9231519c32c62 (diff) |
Add support for smart-ptr, unordered, and date_time (basic)
Diffstat (limited to 'm4/libboost.m4')
-rw-r--r-- | m4/libboost.m4 | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/m4/libboost.m4 b/m4/libboost.m4 new file mode 100644 index 0000000..6ce9d79 --- /dev/null +++ b/m4/libboost.m4 @@ -0,0 +1,186 @@ +dnl file : m4/libboost.m4 +dnl author : Boris Kolpackov <boris@codesynthesis.com> +dnl copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +dnl license : GNU GPL v2; see accompanying LICENSE file +dnl +dnl LIBBOOST([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +dnl +dnl +AC_DEFUN([LIBBOOST], [ +libboost_found=no + +AC_MSG_CHECKING([for boost base headers]) + +AC_ARG_WITH( + [boost], + [AC_HELP_STRING([--with-boost=DIR],[location of boost build directory])], + [libboost_dir=${withval}], + [libboost_dir=]) + +# If libboost_dir was given, add the necessary preprocessor and linker flags. +# +if test x"$libboost_dir" != x; then + save_CPPFLAGS="$CPPFLAGS" + save_LDFLAGS="$LDFLAGS" + + AS_SET_CATFILE([abs_libboost_dir], [$ac_pwd], [$libboost_dir]) + + CPPFLAGS="$CPPFLAGS -I$abs_libboost_dir" + LDFLAGS="$LDFLAGS -L$abs_libboost_dir/stage/lib" +fi + +CXX_LIBTOOL_LINK_IFELSE( +AC_LANG_SOURCE([[ +#include <boost/version.hpp> + +#ifndef BOOST_VERSION +# error BOOST_VERSION not defined +#endif + +int +main () +{ +} +]]), +[ +libboost_found=yes +]) + +if test x"$libboost_found" = xno; then + if test x"$libboost_dir" != x; then + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + fi +fi + +if test x"$libboost_found" = xyes; then + AC_MSG_RESULT([yes]) + $1 +else + AC_MSG_RESULT([no]) + $2 +fi +])dnl +dnl +dnl LIBBOOST_HEADER_LIB(NAME, SOURCE, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) +dnl +AC_DEFUN([LIBBOOST_HEADER_LIB], [ +libboost_$1_found=no + +AC_MSG_CHECKING([for boost $1 library]) +CXX_LIBTOOL_LINK_IFELSE([$2],[libboost_$1_found=yes]) + +if test x"$libboost_$1_found" = xyes; then + AC_MSG_RESULT([yes]) + [$3] +else + AC_MSG_RESULT([no]) + [$4] +fi +])dnl +dnl +dnl LIBBOOST_LIB(NAME, SOURCE, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) +dnl +AC_DEFUN([LIBBOOST_LIB], [ +libboost_$1_found=no + +AC_MSG_CHECKING([for boost $1 library]) + +save_LIBS="$LIBS" +LIBS="-lboost_$1 $LIBS" + +CXX_LIBTOOL_LINK_IFELSE([$2],[libboost_$1_found=yes]) + +# Try to fall back on the -mt version for backwards-compatibility. +# +if test x"$libboost_$1_found" = xno; then + LIBS="-lboost_$1-mt $save_LIBS" + CXX_LIBTOOL_LINK_IFELSE([$2],[libboost_$1_found=yes]) +fi + +if test x"$libboost_$1_found" = xno; then + LIBS="$save_LIBS" +fi + +if test x"$libboost_$1_found" = xyes; then + AC_MSG_RESULT([yes]) + [$3] +else + AC_MSG_RESULT([no]) + [$4] +fi +])dnl +dnl +dnl LIBBOOST_SMART_PTR([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +dnl +AC_DEFUN([LIBBOOST_SMART_PTR], [ +LIBBOOST_HEADER_LIB([smart_ptr], +AC_LANG_SOURCE([[ +#include <boost/shared_ptr.hpp> +#include <boost/weak_ptr.hpp> + +int +main () +{ + boost::shared_ptr<int> sp (new int (10)); + boost::weak_ptr<int> wp (sp); +} +]]), +[$1], +[$2]) +])dnl +dnl +dnl LIBBOOST_UNORDERED([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +dnl +AC_DEFUN([LIBBOOST_UNORDERED], [ +LIBBOOST_HEADER_LIB([unordered], +AC_LANG_SOURCE([[ +#include <boost/unordered_set.hpp> +#include <boost/unordered_map.hpp> + +int +main () +{ + boost::unordered_set<int> s; + boost::unordered_map<int, int> m; + + s.insert (1); + return m.find (1) != m.end (); +} +]]), +[$1], +[$2]) +])dnl +dnl +dnl LIBBOOST_SYSTEM([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +dnl +AC_DEFUN([LIBBOOST_SYSTEM], [ +LIBBOOST_LIB([system], +AC_LANG_SOURCE([[ +int +main () +{ +} +]]), +[$1], +[$2]) +])dnl +dnl +dnl LIBBOOST_DATE_TIME([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +dnl +AC_DEFUN([LIBBOOST_DATE_TIME], [ +LIBBOOST_LIB([date_time], +AC_LANG_SOURCE([[ +#include <boost/date_time/gregorian/gregorian.hpp> + +int +main () +{ + boost::gregorian::greg_month m (1); + const char* s (m.as_short_string ()); + return s == 0; +} +]]), +[$1], +[$2]) +])dnl |