summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac342
1 files changed, 342 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..51163a5
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,342 @@
+# Process this file with autoconf to create configure.
+
+AC_PREREQ([2.65])
+
+# ====================
+# Version informations
+# ====================
+m4_define([libsdw_version_major],[0])
+m4_define([libsdw_version_minor],[2])
+m4_define([libsdw_version_micro],[9])
+m4_define([libsdw_version],[libsdw_version_major.libsdw_version_minor.libsdw_version_micro])
+
+# =============
+# Automake init
+# =============
+AC_INIT([libsdw],[libsdw_version])
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_HEADER([config.h])
+AM_INIT_AUTOMAKE([1.11 foreign dist-xz dist-bzip2])
+AM_SILENT_RULES([yes])
+AC_LANG([C++])
+
+# ===========================
+# Find required base packages
+# ===========================
+m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_CXX
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+LT_INIT([win32-dll disable-static pic-only])
+AC_CANONICAL_HOST
+
+PKG_PROG_PKG_CONFIG([0.20])
+
+# ====================
+# Find additional apps
+# ====================
+PKG_CHECK_MODULES([WPD],[
+ libwpd-0.9
+ libwpd-stream-0.9
+])
+AC_SUBST(WPD_CFLAGS)
+AC_SUBST(WPD_LIBS)
+
+# =================================
+# Libtool/Version Makefile settings
+# =================================
+AC_SUBST(SDW_MAJOR_VERSION, [libsdw_version_major])
+AC_SUBST(SDW_MINOR_VERSION, [libsdw_version_minor])
+AC_SUBST(SDW_MICRO_VERSION, [libsdw_version_micro])
+AC_SUBST(SDW_VERSION, [libsdw_version])
+# AC_SUBST(LT_RELEASE, [libsdw_version_major.libsdw_version_minor])
+LT_CURRENT=`expr 100 '*' libsdw_version_major + libsdw_version_minor`
+# For 1.0.0 comment the first line and uncomment the second
+LT_AGE=0
+# LT_AGE=libwpd_version_minor
+AC_SUBST(LT_CURRENT)
+AC_SUBST(LT_REVISION, [libsdw_version_micro])
+AC_SUBST(LT_AGE)
+
+# ==========================
+# Platform check for windows
+# ==========================
+AC_MSG_CHECKING([for native Win32])
+AS_CASE([$host],
+ [*-*-mingw*], [
+ native_win32=yes
+ LIBSDW_WIN32_RESOURCE=libsdw-win32res.lo
+ LIBSDW_STREAM_WIN32_RESOURCE=libsdw-stream-win32res.lo
+ SDW2HTML_WIN32_RESOURCE=sdw2html-win32res.lo
+ SDW2TEXT_WIN32_RESOURCE=sdw2text-win32res.lo
+ SDW2RAW_WIN32_RESOURCE=sdw2raw-win32res.lo
+ ], [
+ native_win32=no
+ LIBSDW_WIN32_RESOURCE=
+ LIBSDW_STREAM_WIN32_RESOURCE=
+ SDW2HTML_WIN32_RESOURCE=
+ SDW2TEXT_WIN32_RESOURCE=
+ SDW2RAW_WIN32_RESOURCE=
+ ]
+)
+AM_CONDITIONAL(OS_WIN32, [test "x$native_win32" = "xyes"])
+AC_SUBST(LIBSDW_WIN32_RESOURCE)
+AC_SUBST(LIBSDW_STREAM_WIN32_RESOURCE)
+AC_SUBST(SDW2HTML_WIN32_RESOURCE)
+AC_SUBST(SDW2TEXT_WIN32_RESOURCE)
+AC_SUBST(SDW2RAW_WIN32_RESOURCE)
+
+AC_MSG_CHECKING([for Win32 platform in general])
+AS_CASE([$host],
+ [*-*-mingw*|*-*-cygwin*], [platform_win32=yes],
+ [platform_win32=no]
+)
+AC_MSG_RESULT([$platform_win32])
+AM_CONDITIONAL([PLATFORM_WIN32], [test "x$platform_win32" = "xyes"])
+
+# =========================
+# Platform check for darwin
+# =========================
+AC_MSG_CHECKING([for Darwin (Mac OS X) platform])
+AS_CASE([$host],
+ [*-*-darwin*], [platform_darwin=yes],
+ [platform_darwin=no]
+)
+AC_MSG_RESULT([$platform_darwin])
+AM_CONDITIONAL(PLATFORM_DARWIN, [test "x$platform_darwin" = "xyes"])
+
+# ================
+# Check for cflags
+# ================
+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"
+])
+AC_ARG_ENABLE([weffc],
+ [AS_HELP_STRING([--disable-weffc], [ Disable -Weffc++ warnings, usefull when using an old version of gcc or of boost])],
+ [enable_weffc="$enableval"],
+ [enable_weffc=yes]
+)
+AC_ARG_ENABLE([wparanoic],
+ [AS_HELP_STRING([--enable-wparanoic], [Enable a lot of warnings...])],
+ [enable_wparanoic="$enableval"],
+ [enable_wparanoic=no]
+)
+# Courtesy of Glib: Ensure MSVC-compatible struct packing convention
+# is used when compiling for Win32 with gcc.
+AS_IF([test "x$native_win32" = "xyes"], [
+ AC_CHECK_TOOL(WINDRES, windres)
+ AS_IF([test x"$GCC" = xyes], [
+ AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
+ AS_IF([test -z "$ac_cv_prog_CC"], [
+ our_gcc="$CC"
+ ], [
+ our_gcc="$ac_cv_prog_CC"
+ ])
+ AS_IF([$our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null], [
+ msnative_struct="-mms-bitfields"
+ CFLAGS="$CFLAGS $msnative_struct"
+ CXXFLAGS="$CXXFLAGS $msnative_struct"
+ AC_MSG_RESULT([${msnative_struct}])
+ ], [
+ AC_MSG_RESULT([no way])
+ AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
+ ])
+ ])
+ CFLAGS="$CFLAGS -Wall -Wextra -pedantic"
+ CXXFLAGS="$CXXFLAGS -Wall -Wextra -pedantic"
+], [
+ AS_IF([test x"$GCC" = xyes], [
+ # Be tough with warnings and produce less careless code
+ CFLAGS="$CFLAGS -Wall -Wextra -pedantic"
+ CXXFLAGS="$CXXFLAGS -Wall -Wextra -pedantic -Wshadow -Wunused-variable"
+ AS_IF([test x"$enable_weffc" != "xno"], [
+ CXXFLAGS="$CXXFLAGS -Weffc++"
+ ])
+ AS_IF([test x"$enable_wparanoic" != "xno"], [
+ CXXFLAGS="$CXXFLAGS -Wcast-align -Wcast-qual -Wchar-subscripts"
+ CXXFLAGS="$CXXFLAGS -Wcomment -Wconversion -Wdisabled-optimization"
+ CXXFLAGS="$CXXFLAGS -Wfloat-equal -Wformat -Wformat=2"
+ CXXFLAGS="$CXXFLAGS -Wformat-nonliteral -Wformat-security"
+ CXXFLAGS="$CXXFLAGS -Wformat-y2k -Wimport -Winit-self -Winvalid-pch"
+ CXXFLAGS="$CXXFLAGS -Wmissing-braces -Wmissing-field-initializers"
+ CXXFLAGS="$CXXFLAGS -Wmissing-format-attribute -Wmissing-include-dirs"
+ CXXFLAGS="$CXXFLAGS -Wmissing-noreturn -Wpacked -Wparentheses"
+ CXXFLAGS="$CXXFLAGS -Wpointer-arith -Wredundant-decls -Wreturn-type"
+ CXXFLAGS="$CXXFLAGS -Wsequence-point -Wsign-compare -Wstrict-aliasing"
+ CXXFLAGS="$CXXFLAGS -Wstrict-aliasing=2 -Wswitch -Wswitch-default"
+ CXXFLAGS="$CXXFLAGS -Wswitch-enum -Wtrigraphs -Wunknown-pragmas -Wunused"
+ CXXFLAGS="$CXXFLAGS -Wunused-function -Wunused-label -Wunused-parameter"
+ CXXFLAGS="$CXXFLAGS -Wunused-value -Wvariadic-macros"
+ CXXFLAGS="$CXXFLAGS -Wvolatile-register-var -Wwrite-strings"
+ ])
+ ])
+])
+
+# ============
+# Debug switch
+# ============
+AC_ARG_ENABLE([debug],
+ [AS_HELP_STRING([--enable-debug], [Turn on debugging])],
+ [enable_debug="$enableval"],
+ [enable_debug=no]
+)
+AC_ARG_ENABLE([full-debug],
+ [AS_HELP_STRING([--enable-full-debug], [Turn on debugging and debug files' creation ])],
+ [enable_full_debug="$enableval"],
+ [enable_full_debug=no]
+)
+AS_IF([test "x$enable_full_debug" = "xyes"],
+ [ DEBUG_CXXFLAGS="-DDEBUG -DDEBUG_WITH_FILES -g" ],
+ [ AS_IF([test "x$enable_debug" = "xyes"],
+ [DEBUG_CXXFLAGS="-DDEBUG -g"],
+ [DEBUG_CXXFLAGS="-DNDEBUG"])
+ ]
+)
+AC_SUBST(DEBUG_CXXFLAGS)
+
+# ============
+# Static tools
+# ============
+AC_ARG_ENABLE([static-tools],
+ [AS_HELP_STRING([--enable-static-tools], [Link tools (binaries) statically])],
+ [enable_static_tools="$enableval"],
+ [enable_static_tools=no]
+)
+AS_IF([test "x$enable_static_tools" = "xyes"], [
+ enable_static="yes"
+], [
+ AC_DISABLE_STATIC
+])
+AM_CONDITIONAL(STATIC_TOOLS, [test "x$enable_static_tools" = "xyes"])
+
+# ========
+# shared_ptr implementation
+# ========
+AC_ARG_WITH(sharedptr,
+ [AS_HELP_STRING([--with-sharedptr=boost|c++11|tr1],
+ [Use Boost|std::memory|std::tr1::memory for shared ptr implementation])],
+ [with_sharedptr="$withval"],
+ [with_sharedptr=boost]
+)
+AS_CASE([$with_sharedptr],
+ [boost|c++11|tr1], [],
+ [AC_MSG_ERROR([Unknown value of shared_ptr provider: $with_sharedptr])]
+)
+
+AS_IF([test "x$with_sharedptr" = "xc++11"], [
+ AC_MSG_CHECKING([for c++11 shared ptr])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM(
+ [[#include <memory>]],
+ [[std::shared_ptr<int> p;]]
+ )
+ ], [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([SHAREDPTR_STD],[1],[Use C++11 implementation of shared_ptr])
+ ], [
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Could not find C++11 implementation of shared_ptr])
+ ], [
+ [#include <memory>]
+ ])
+])
+AS_IF([test "x$with_sharedptr" = "xtr1"], [
+ AC_MSG_CHECKING([for tr1 shared ptr])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM(
+ [[#include <tr1/memory>]],
+ [[std::tr1::shared_ptr<int> p;]]
+ )
+ ], [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([SHAREDPTR_TR1],[1],[Use TR1 implementation of shared_ptr])
+ ], [
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Could not find TR1 implementation of shared_ptr])
+ ], [
+ [#include <tr1/memory>]
+ ])
+])
+AS_IF([test "x$with_sharedptr" = "xboost"], [
+ AC_MSG_CHECKING([for boost shared ptr])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM(
+ [[#include <boost/shared_ptr.hpp>]],
+ [[boost::shared_ptr<int> p;]]
+ )
+ ], [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([SHAREDPTR_BOOST],[1],[Use Boost implementation of shared_ptr])
+ ], [
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Could not find Boost implementation of shared_ptr])
+ ])
+])
+
+# =============
+# Documentation
+# =============
+AC_ARG_WITH(docs,
+ [AS_HELP_STRING([--without-docs], [Do not build documentation])],
+ [with_docs="$withval"],
+ [AS_IF([test "x$native_win32" = "xyes"], [with_docs=no], [with_docs=yes])]
+)
+AS_IF([test "x$with_docs" != "xno"], [
+ AC_PATH_PROG(DOXYGEN, [doxygen])
+ AS_IF([test -z "$DOXYGEN"], [
+ AC_MSG_WARN([*** Could not find doxygen in your PATH.])
+ AC_MSG_WARN([*** The documentation will not be built.])
+ build_docs=no
+ ], [build_docs=yes])
+], [build_docs=no])
+AM_CONDITIONAL([WITH_LIBSDW_DOCS], [test "x$build_docs" != "xno"])
+
+# =====================
+# Prepare all .in files
+# =====================
+AC_CONFIG_FILES([
+Makefile
+inc/Makefile
+inc/libsdw/Makefile
+src/Makefile
+src/conv/Makefile
+src/conv/html/Makefile
+src/conv/html/sdw2html.rc
+src/conv/raw/Makefile
+src/conv/raw/sdw2raw.rc
+src/conv/text/Makefile
+src/conv/text/sdw2text.rc
+src/lib/Makefile
+src/lib/libsdw.rc
+docs/Makefile
+docs/doxygen/Makefile
+build/Makefile
+build/win32/Makefile
+libsdw-$SDW_MAJOR_VERSION.$SDW_MINOR_VERSION.pc:libsdw.pc.in
+libsdw-zip
+])
+AC_OUTPUT
+
+# ==============================================
+# Display final informations about configuration
+# ==============================================
+AC_MSG_NOTICE([
+==============================================================================
+Build configuration:
+ debug: ${enable_debug}
+ full-debug: ${enable_full_debug}
+ docs: ${build_docs}
+ shared_ptr: ${with_sharedptr}
+ static-tools: ${enable_static_tools}
+ werror: ${enable_werror}
+==============================================================================
+])