diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 05:41:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 05:41:20 +0000 |
commit | 2cd20b3e73d0162e3fa23ebcee8e89a3b967ca6f (patch) | |
tree | 754a142de5cd8f987abe255e8a15b5ef94109da4 /configure.ac | |
parent | Initial commit. (diff) | |
download | libcmis-354dfe989bb5d887b44db50224f4c2ec7a18ce45.tar.xz libcmis-354dfe989bb5d887b44db50224f4c2ec7a18ce45.zip |
Adding upstream version 0.6.2.upstream/0.6.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 224 |
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} +]) |