aboutsummaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-08-30 15:49:05 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-08-30 15:49:05 +0200
commit547d1dd2da9c9b2b010da6d167ac88959342a634 (patch)
tree2d778c647f7bcd97fcd60660281f4d9b0a806735 /m4
parente927a6f2a3e3a72a18441fe9f603a336503f68e8 (diff)
Support for automake and VC++ builds
Diffstat (limited to 'm4')
-rw-r--r--m4/disable-rpath.m426
-rw-r--r--m4/libodb.m483
-rw-r--r--m4/libtool-link.m431
-rw-r--r--m4/pkgconfig.m413
-rw-r--r--m4/threads.m441
5 files changed, 194 insertions, 0 deletions
diff --git a/m4/disable-rpath.m4 b/m4/disable-rpath.m4
new file mode 100644
index 0000000..da77bbe
--- /dev/null
+++ b/m4/disable-rpath.m4
@@ -0,0 +1,26 @@
+dnl file : m4/disable-rpath.m4
+dnl author : Boris Kolpackov <boris@codesynthesis.com>
+dnl copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+dnl license : GNU GPL v2; see accompanying LICENSE file
+dnl
+AC_DEFUN([DISABLE_RPATH],[
+
+AC_MSG_CHECKING([whether to use rpath])
+AC_ARG_ENABLE(
+ [rpath],
+ [AC_HELP_STRING([--disable-rpath], [patch libtool to not use rpath])],
+ [libtool_rpath="$enable_rpath"],
+ [libtool_rpath="yes"])
+AC_MSG_RESULT($libtool_rpath)
+
+# Patch libtool to not use rpath if requested.
+#
+AC_CONFIG_COMMANDS(
+ [libtool-rpath-patch],
+ [if test "$libtool_use_rpath" = "no"; then
+ sed < libtool > libtool-2 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_NO_RPATH__ "/'
+ mv libtool-2 libtool
+ chmod 755 libtool
+ fi],
+ [libtool_use_rpath=$libtool_rpath])
+])dnl
diff --git a/m4/libodb.m4 b/m4/libodb.m4
new file mode 100644
index 0000000..a205afd
--- /dev/null
+++ b/m4/libodb.m4
@@ -0,0 +1,83 @@
+dnl file : m4/libodb.m4
+dnl author : Boris Kolpackov <boris@codesynthesis.com>
+dnl copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+dnl license : GNU GPL v2; see accompanying LICENSE file
+dnl
+dnl LIBODB([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl
+dnl
+AC_DEFUN([LIBODB], [
+libodb_found=no
+
+AC_ARG_WITH(
+ [libodb],
+ [AC_HELP_STRING([--with-libodb=DIR],[location of libodb build directory])],
+ [libodb_dir=${withval}],
+ [libodb_dir=])
+
+AC_MSG_CHECKING([for libodb])
+
+# If libodb_dir was given, add the necessary preprocessor and linker flags.
+#
+if test x"$libodb_dir" != x; then
+ save_CPPFLAGS="$CPPFLAGS"
+ save_LDFLAGS="$LDFLAGS"
+
+ AS_SET_CATFILE([abs_libodb_dir], [$ac_pwd], [$libodb_dir])
+
+ CPPFLAGS="$CPPFLAGS -I$abs_libodb_dir"
+ LDFLAGS="$LDFLAGS -L$abs_libodb_dir/odb"
+fi
+
+save_LIBS="$LIBS"
+LIBS="-lodb $LIBS"
+
+CXX_LIBTOOL_LINK_IFELSE(
+AC_LANG_SOURCE([[
+#include <odb/exception.hxx>
+
+void
+f ()
+{
+}
+
+const char*
+g ()
+{
+ try
+ {
+ f ();
+ }
+ catch (const odb::exception& e)
+ {
+ return e.what ();
+ }
+ return 0;
+}
+
+int
+main ()
+{
+ const char* m (g ());
+ return m != 0;
+}
+]]),
+[libodb_found=yes])
+
+if test x"$libodb_found" = xno; then
+ LIBS="$save_LIBS"
+
+ if test x"$libodb_dir" != x; then
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ fi
+fi
+
+if test x"$libodb_found" = xyes; then
+ AC_MSG_RESULT([yes])
+ $1
+else
+ AC_MSG_RESULT([no])
+ $2
+fi
+])dnl
diff --git a/m4/libtool-link.m4 b/m4/libtool-link.m4
new file mode 100644
index 0000000..229b270
--- /dev/null
+++ b/m4/libtool-link.m4
@@ -0,0 +1,31 @@
+dnl file : m4/libtool-link.m4
+dnl author : Boris Kolpackov <boris@codesynthesis.com>
+dnl copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+dnl license : GNU GPL v2; see accompanying LICENSE file
+dnl
+dnl
+dnl CXX_LIBTOOL_LINK_IFELSE (input, [action-if-true], [action-if-false])
+dnl
+dnl Similar to AC_LINK_IFELSE except it uses libtool to perform the
+dnl linking and it does this using the C++ compiler.
+dnl
+AC_DEFUN([CXX_LIBTOOL_LINK_IFELSE],[
+AC_LANG_SAVE
+save_CXX="$CXX"
+CXX="./libtool --tag=CXX --mode=link $CXX -no-install"
+AC_LANG(C++)
+
+if test -d .libs; then
+ delete_libs_dir=no
+else
+ delete_libs_dir=yes
+fi
+
+AC_LINK_IFELSE([$1], [$2], [$3])
+
+if test x"$delete_libs_dir" != xyes; then
+ rm -rf .libs
+fi
+
+CXX="$save_CXX"
+AC_LANG_RESTORE])dnl
diff --git a/m4/pkgconfig.m4 b/m4/pkgconfig.m4
new file mode 100644
index 0000000..ef48ee8
--- /dev/null
+++ b/m4/pkgconfig.m4
@@ -0,0 +1,13 @@
+dnl file : m4/pkgconfig.m4
+dnl author : Boris Kolpackov <boris@codesynthesis.com>
+dnl copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+dnl license : GNU GPL v2; see accompanying LICENSE file
+dnl
+AC_DEFUN([PKGCONFIG],[
+AC_ARG_WITH(
+ [pkgconfigdir],
+ [AC_HELP_STRING([--with-pkgconfigdir=DIR],[location of pkgconfig dir (default is libdir/pkgconfig)])],
+ [pkgconfigdir=${withval}],
+ [pkgconfigdir='${libdir}/pkgconfig'])
+AC_SUBST([pkgconfigdir])
+])dnl
diff --git a/m4/threads.m4 b/m4/threads.m4
new file mode 100644
index 0000000..7c32abe
--- /dev/null
+++ b/m4/threads.m4
@@ -0,0 +1,41 @@
+dnl file : m4/threads.m4
+dnl author : Boris Kolpackov <boris@codesynthesis.com>
+dnl copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+dnl license : GNU GPL v2; see accompanying LICENSE file
+dnl
+AC_DEFUN([THREADS],[
+
+AC_ARG_ENABLE(
+ [threads],
+ AS_HELP_STRING([--disable-threads], [disable threads (enabled by default)]),
+ [AS_IF([test x"$enableval" = xno], [threads=none], [threads=check])],
+ [threads=check])
+
+# If thread support is not disabled by the user, figure out what we can use.
+#
+if test x$threads = xcheck; then
+ case $host_os in
+ windows* | mingw*)
+ case $host_os in
+ mingw*)
+ CXXFLAGS="$CXXFLAGS -mthreads"
+ ;;
+ esac
+ threads=win32
+ ;;
+ *)
+ ACX_PTHREAD
+
+ if test x$acx_pthread_ok = xyes; then
+ threads=posix
+ LIBS="$LIBS $PTHREAD_LIBS"
+ CXXFLAGS="$CXXFLAGS $PTHREAD_CXXFLAGS"
+ fi
+ ;;
+ esac
+fi
+
+if test x$threads = xcheck; then
+ AC_MSG_ERROR([thread support not available; use --disable-threads to force single-threaded mode])
+fi
+])dnl