summaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac224
1 files changed, 224 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..218cf9f
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,224 @@
+# -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+m4_define([libcmis_major_version], [0])
+m4_define([libcmis_minor_version], [6])
+m4_define([libcmis_micro_version], [2])
+m4_define([libcmis_api_version], [libcmis_major_version.libcmis_minor_version])
+m4_define([libcmis_version],[libcmis_api_version.libcmis_micro_version])
+
+
+AC_PREREQ([2.63])
+AC_INIT([libcmis], [libcmis_version])
+AM_INIT_AUTOMAKE([1.10 foreign dist-xz])
+m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+
+# Checks for programs.
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_CXX
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AC_PROG_LIBTOOL
+LT_INIT([win32-dll disable-static pic-only])
+AC_CANONICAL_HOST
+
+AX_CXX_COMPILE_STDCXX_11
+
+# Check the options
+AC_ARG_ENABLE(client,
+ AC_HELP_STRING([--disable-client],[Compile only the library, not the client tool]),
+ enable_client=$enableval, enable_client=yes)
+AM_CONDITIONAL(ENABLE_CLIENT, test "x$enable_client" != "xno")
+
+AC_ARG_ENABLE([tests],
+ [AS_HELP_STRING([--disable-tests], [Do not build the unit tests])],
+ [enable_tests="$enableval"],
+ [enable_tests=yes]
+)
+AM_CONDITIONAL(ENABLE_TESTS, test "x$enable_tests" != "xno")
+
+AC_ARG_ENABLE([coverage],
+ [AS_HELP_STRING([--enable-coverage], [Extract test coverage data])],
+ [enable_coverage="$enableval"],
+ [enable_coverage=no]
+)
+AM_CONDITIONAL(ENABLE_COVERAGE, test "x$enable_coverage" != "xno")
+
+AS_IF([test "x$enable_coverage" != "xno"], [
+ enable_tests=yes
+
+ # Make sure we have gcc
+ if test "x$GCC" != "xyes"; then
+ AC_MSG_ERROR([GCC is required for --enable-coverage])
+ fi
+
+ AC_CHECK_PROG(LCOV, lcov, lcov)
+ AC_CHECK_PROG(GENHTML, genhtml, genhtml)
+
+ AS_IF([test "x$ac_cv_prog_LCOV" = "x"], [
+ AC_MSG_ERROR([lcov is required for --enable-coverage])
+ ])
+ AS_IF([test "x$ac_cv_prog_GENHTML" = "x"], [
+ AC_MSG_ERROR([genhtml is required for --enable-coverage])
+ ])
+
+ CFLAGS="-g -O0 --coverage"
+ CXXFLAGS="-g -O0 --coverage"
+ LDFLAGS+="--coverage"
+])
+
+
+LIBCMIS_API_VERSION=libcmis_api_version
+AC_SUBST(LIBCMIS_API_VERSION)
+
+AC_CONFIG_MACRO_DIR([m4])
+
+for top_builddir in . .. ../.. $ac_auxdir $ac_auxdir/..; do
+ test -f $top_builddir/configure && break
+done
+
+SRCDIR=$srcdir
+AC_SUBST(SRCDIR)
+
+AC_LANG([C++])
+
+# ==========================
+# Platform check for windows
+# ==========================
+AC_MSG_CHECKING([for native Win32])
+AS_CASE([$host], [*-*-mingw*], [native_win32=yes], [native_win32=no])
+AC_MSG_RESULT([$native_win32])
+AM_CONDITIONAL(OS_WIN32, [test "x$native_win32" = "xyes"])
+
+# ====================
+# Check for visibility
+# ====================
+AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
+saved_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS -fvisibility=hidden"
+AC_TRY_COMPILE([], [], [have_visibility=yes], [have_visibility=no])
+AC_MSG_RESULT([$have_visibility])
+CPPFLAGS="$saved_CPPFLAGS"
+AX_GCC_FUNC_ATTRIBUTE([visibility])
+AM_CONDITIONAL([ENABLE_VISIBILITY], [
+ test "x$have_visibility" = "xyes" && test "x$ax_cv_have_func_attribute_visibility" = "xyes"])
+
+# =============
+# Documentation
+# =============
+AC_ARG_WITH(man,
+ [AS_HELP_STRING([--without-man], [Do not build manpage])],
+ [with_man="$withval"],
+ [with_man=yes]
+)
+AS_IF([test "x$with_man" != "xno"], [
+ build_man=yes
+ AS_IF([test -z "$DOCBOOK2MAN"], [
+ AC_PATH_PROGS([DOCBOOK2MAN], [docbook2x-man docbook-to-man docbook2man.pl docbook2man])
+ AS_IF([test -z "$DOCBOOK2MAN"], [
+ AC_MSG_ERROR([docbook-to-man is missing. Install docbook2X package.])
+ ])
+ ])
+], [build_man=no])
+AC_SUBST(DOCBOOK2MAN)
+AM_CONDITIONAL([ENABLE_MAN], [test "x$build_man" != "xno"])
+
+# ========
+# Cppcheck
+# ========
+AC_PATH_PROG(CPPCHECK,[cppcheck],[])
+AS_IF([test "x$ac_cv_path_CPPCHECK" != "x"], [enable_cppcheck=yes], [enable_cppcheck=no])
+AC_SUBST(CPPCHECK)
+AC_PATH_PROG([NPROC], [nproc], [])
+AS_IF([test "x$NPROC" != "x"], [CPPCHECK_PARALLELISM=`$NPROC`], [CPPCHECK_PARALLELISM=1])
+AC_SUBST([CPPCHECK_PARALLELISM])
+
+AC_ARG_ENABLE([werror],
+ [AS_HELP_STRING([--disable-werror], [Treat all warnings as errors, usefull for development])],
+ [enable_werror="$enableval"],
+ [enable_werror=yes]
+)
+AS_IF([test x"$enable_werror" != "xno"], [
+ CFLAGS="$CFLAGS -Werror"
+ CXXFLAGS="$CXXFLAGS -Werror"
+])
+AS_IF([test x"$GCC" = xyes], [
+ # Be tough with warnings and produce less careless code
+ CFLAGS="$CFLAGS -Wall -pedantic -Wshadow -Wendif-labels -Wextra"
+ CXXFLAGS="$CXXFLAGS -Wall -pedantic -Weffc++ -Wshadow -Wendif-labels -Wextra -Wsign-promo -Woverloaded-virtual -Wnon-virtual-dtor -Wsign-promo"
+])
+
+# Check for curl
+PKG_CHECK_MODULES(CURL, [libcurl])
+AC_SUBST(CURL_CFLAGS)
+AC_SUBST(CURL_LIBS)
+
+# Check for lixml2
+PKG_CHECK_MODULES(XML2, [libxml-2.0])
+AC_SUBST(XML2_CFLAGS)
+AC_SUBST(XML2_LIBS)
+
+# Check for cppunit
+AS_IF([test "x$enable_tests" != "xno"], [
+ PKG_CHECK_MODULES(CPPUNIT, cppunit >= 1.12 )
+ AC_SUBST(CPPUNIT_CFLAGS)
+ AC_SUBST(CPPUNIT_LIBS)
+])
+
+# Check for boost
+m4_pattern_allow([^BOOST_])
+
+BOOST_REQUIRE([1.36])
+BOOST_DATE_TIME
+BOOST_SMART_PTR
+BOOST_STRING_ALGO
+BOOST_UUID
+
+AS_IF([test "x$enable_client" != "xno"], [
+ BOOST_PROGRAM_OPTIONS
+])
+AC_SUBST(BOOST_CPPFLAGS)
+
+# Checks for header files.
+AC_CHECK_HEADERS([stdlib.h unistd.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_HEADER_STDBOOL
+AC_C_INLINE
+AC_TYPE_MODE_T
+AC_TYPE_SIZE_T
+
+# Checks for library functions.
+
+AC_CONFIG_FILES([
+ Makefile
+ doc/cmis-client.xml
+ inc/Makefile
+ inc/libcmis-c/Makefile
+ inc/libcmis/Makefile
+ libcmis-c-$LIBCMIS_API_VERSION.pc:libcmis-c.pc.in
+ libcmis-$LIBCMIS_API_VERSION.pc:libcmis.pc.in
+ qa/Makefile
+ qa/libcmis-c/Makefile
+ qa/libcmis/Makefile
+ qa/mockup/Makefile
+ src/Makefile
+ src/libcmis-c/Makefile
+ src/libcmis/Makefile
+])
+AC_OUTPUT
+
+AC_MSG_NOTICE([
+
+libcmis $VERSION:
+ Prefix: ${prefix}
+ Compiler: ${CXX}
+ Compiler flags: ${CXXFLAGS}
+ client: ${enable_client}
+ werror: ${enable_werror}
+ tests: ${enable_tests}
+ test coverage: ${enable_coverage}
+ mans: ${build_man}
+])