# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
m4_define([libcmis_major_version], [0])
m4_define([libcmis_minor_version], [5])
m4_define([libcmis_micro_version], [1])
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()
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
# 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"])
# =============
# 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_PROG(DOCBOOK2MAN,[docbook2x-man])
AS_IF([test -z "$DOCBOOK2MAN"], [
AC_PATH_PROG(DOCBOOK2MAN,[docbook-to-man])
AS_IF([test -z "$DOCBOOK2MAN"], [
AC_PATH_PROG(DOCBOOK2MAN,[docbook2man.pl])
AS_IF([test -z "$DOCBOOK2MAN"], [
AC_MSG_ERROR([docbook-to-man is missing. Install docbook2X package.])
])
])
])
])
], [build_man=no])
AC_SUBST(DOCBOOK2MAN)
AM_CONDITIONAL([WITH_LIBCMIS_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])
AM_CONDITIONAL(ENABLE_CPPCHECK, [test "x$ac_cv_path_CPPCHECK" != "x"])
AC_SUBST(CPPCHECK)
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_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
libcmis.pc
libcmis-c.pc
cppcheck-test.sh
src/Makefile
src/libcmis/Makefile
src/libcmis-c/Makefile
qa/Makefile
qa/mockup/Makefile
qa/libcmis/Makefile
qa/libcmis-c/Makefile
])
AC_OUTPUT
AC_MSG_NOTICE([
libcmis $VERSION:
Prefix: ${prefix}
Compiler flags: ${CXXFLAGS}
client: ${enable_client}
werror: ${enable_werror}
tests: ${enable_tests}
cppcheck tests: ${enable_cppcheck}
test coverage: ${enable_coverage}
mans: ${build_man}
])