1# Process this file with autoconf to create configure. 2 3AC_PREREQ([2.65]) 4 5# ==================== 6# Version informations 7# ==================== 8m4_define([libodfgen_version_major],[0]) 9m4_define([libodfgen_version_minor],[1]) 10m4_define([libodfgen_version_micro],[8]) 11m4_define([libodfgen_version],[libodfgen_version_major.libodfgen_version_minor.libodfgen_version_micro]) 12 13# ============= 14# Automake init 15# ============= 16AC_INIT([libodfgen],[libodfgen_version]) 17AC_CONFIG_MACRO_DIR([m4]) 18AC_CONFIG_HEADER([config.h]) 19AM_INIT_AUTOMAKE([1.11 foreign dist-xz dist-bzip2]) 20AM_SILENT_RULES([yes]) 21AC_LANG([C++]) 22 23# =========================== 24# Find required base packages 25# =========================== 26AC_PROG_CC 27AC_PROG_CPP 28AC_PROG_CXX 29AC_PROG_INSTALL 30AC_PROG_LN_S 31AC_PROG_MAKE_SET 32LT_INIT([win32-dll disable-static pic-only]) 33AC_CANONICAL_HOST 34PKG_PROG_PKG_CONFIG([0.20]) 35 36AX_CXX_COMPILE_STDCXX_11 37AX_GCC_FUNC_ATTRIBUTE([format]) 38 39# ==================== 40# Find additional apps 41# ==================== 42PKG_CHECK_MODULES([REVENGE],[ 43 librevenge-0.0 44 librevenge-stream-0.0 45]) 46AC_SUBST([REVENGE_CFLAGS]) 47AC_SUBST([REVENGE_LIGS]) 48 49PKG_CHECK_MODULES([XML], [libxml-2.0]) 50 51# ================================= 52# Libtool/Version Makefile settings 53# ================================= 54AC_SUBST(LIBODFGEN_MAJOR_VERSION, [libodfgen_version_major]) 55AC_SUBST(LIBODFGEN_MINOR_VERSION, [libodfgen_version_minor]) 56AC_SUBST(LIBODFGEN_MICRO_VERSION, [libodfgen_version_micro]) 57# AC_SUBST(LT_RELEASE, [libodfgen_version_major.libodfgen_version_minor]) 58LT_CURRENT=`expr 100 '*' libodfgen_version_major + libodfgen_version_minor` 59# For 1.0.0 comment the first line and uncomment the second 60LT_AGE=0 61# LT_AGE=libodfgen_version_minor 62AC_SUBST(LT_CURRENT) 63AC_SUBST(LT_REVISION, [libodfgen_version_micro]) 64AC_SUBST(LT_AGE) 65 66# ========================== 67# Platform check for windows 68# ========================== 69AC_MSG_CHECKING([for native Win32]) 70AS_CASE([$host], 71 [*-*-mingw*], [ 72 native_win32=yes 73 LIBODFGEN_WIN32_RESOURCE=libodfgen-win32res.lo 74 ], [ 75 native_win32=no 76 LIBODFGEN_WIN32_RESOURCE= 77 ] 78) 79AC_MSG_RESULT([$native_win32]) 80AM_CONDITIONAL([OS_WIN32], [test "x$native_win32" = "xyes"]) 81AC_SUBST(LIBODFGEN_WIN32_RESOURCE) 82 83AC_MSG_CHECKING([for Win32 platform in general]) 84AS_CASE([$host], 85 [*-*-mingw*|*-*-cygwin*], [platform_win32=yes], 86 [platform_win32=no] 87) 88AC_MSG_RESULT([$platform_win32]) 89AM_CONDITIONAL([PLATFORM_WIN32], [test "x$platform_win32" = "xyes"]) 90 91AS_IF([test "x$platform_win32" = "xyes"], 92 [ 93 AM_CONDITIONAL([HAVE_VISIBILITY], [ test "x" != "x" ] ) 94 ], 95 [ 96 AC_MSG_CHECKING([for -fvisibility=hidden compiler flag]) 97 saved_CXXFLAGS="$CXXFLAGS" 98 CXXFLAGS="$CXXFLAGS -fvisibility=hidden" 99 AC_TRY_COMPILE([], [], [have_visibility=yes], [have_visibility=no]) 100 AC_MSG_RESULT([$have_visibility]) 101 CXXFLAGS="$saved_CXXFLAGS" 102 AX_GCC_FUNC_ATTRIBUTE([visibility]) 103 AM_CONDITIONAL([HAVE_VISIBILITY], [ 104 test "$have_visibility" = "yes" && test "$ax_cv_have_func_attribute_visibility" = "yes"]) 105 ] 106) 107 108# ================ 109# Check for cflags 110# ================ 111AC_ARG_ENABLE([werror], 112 [AS_HELP_STRING([--enable-werror], [Treat all warnings as errors, usefull for development])], 113 [enable_werror="$enableval"], 114 [enable_werror=no] 115) 116AS_IF([test x"$enable_werror" != "xno"], [ 117 CFLAGS="$CFLAGS -Werror" 118 CXXFLAGS="$CXXFLAGS -Werror" 119]) 120AC_ARG_ENABLE([weffc], 121 [AS_HELP_STRING([--disable-weffc], [ Disable -Weffc++ warnings, usefull when using an old version of gcc])], 122 [enable_weffc="$enableval"], 123 [enable_weffc=yes] 124) 125AC_ARG_ENABLE([wparanoic], 126 [AS_HELP_STRING([--enable-wparanoic], [Enable a lot of warnings...])], 127 [enable_wparanoic="$enableval"], 128 [enable_wparanoic=no] 129) 130# Courtesy of Glib: Ensure MSVC-compatible struct packing convention 131# is used when compiling for Win32 with gcc. 132AS_IF([test "x$native_win32" = "xyes"], [ 133 AC_CHECK_TOOL(WINDRES, windres) 134 AS_IF([test x"$GCC" = xyes], [ 135 AC_MSG_CHECKING([how to get MSVC-compatible struct packing]) 136 AS_IF([test -z "$ac_cv_prog_CC"], [ 137 our_gcc="$CC" 138 ], [ 139 our_gcc="$ac_cv_prog_CC" 140 ]) 141 AS_IF([$our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null], [ 142 msnative_struct="-mms-bitfields" 143 CFLAGS="$CFLAGS $msnative_struct" 144 CXXFLAGS="$CXXFLAGS $msnative_struct" 145 AC_MSG_RESULT([${msnative_struct}]) 146 ], [ 147 AC_MSG_RESULT([no way]) 148 AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code]) 149 ]) 150 ]) 151 CFLAGS="$CFLAGS -Wall -Wextra -pedantic" 152 CXXFLAGS="$CXXFLAGS -Wall -Wextra -Wshadow -pedantic" 153], [ 154 AS_IF([test x"$GCC" = xyes], [ 155 # Be tough with warnings and produce less careless code 156 CFLAGS="$CFLAGS -Wall -Wextra -pedantic" 157 CXXFLAGS="$CXXFLAGS -Wall -Wextra -pedantic -Wshadow -Wunused-variable" 158 AS_IF([test x"$enable_weffc" != "xno"], [ 159 CXXFLAGS="$CXXFLAGS -Weffc++" 160 ]) 161 AS_IF([test x"$enable_wparanoic" != "xno"], [ 162 CXXFLAGS="$CXXFLAGS -Wcast-align -Wcast-qual -Wchar-subscripts" 163 CXXFLAGS="$CXXFLAGS -Wcomment -Wconversion -Wdisabled-optimization" 164 CXXFLAGS="$CXXFLAGS -Wfloat-equal -Wformat -Wformat=2 -Wformat-security" 165 CXXFLAGS="$CXXFLAGS -Wno-format-extra-args -Wno-format-zero-length" 166 CXXFLAGS="$CXXFLAGS -Wformat-y2k -Wimport -Winit-self -Winvalid-pch" 167 CXXFLAGS="$CXXFLAGS -Wmissing-braces -Wmissing-field-initializers" 168 CXXFLAGS="$CXXFLAGS -Wmissing-format-attribute -Wmissing-include-dirs" 169 CXXFLAGS="$CXXFLAGS -Wmissing-noreturn -Wpacked -Wparentheses" 170 CXXFLAGS="$CXXFLAGS -Wpointer-arith -Wredundant-decls -Wreturn-type" 171 CXXFLAGS="$CXXFLAGS -Wsequence-point -Wsign-compare -Wstrict-aliasing" 172 CXXFLAGS="$CXXFLAGS -Wstrict-aliasing=2 -Wswitch -Wswitch-default" 173 CXXFLAGS="$CXXFLAGS -Wswitch-enum -Wtrigraphs -Wunknown-pragmas -Wunused" 174 CXXFLAGS="$CXXFLAGS -Wunused-function -Wunused-label -Wunused-parameter" 175 CXXFLAGS="$CXXFLAGS -Wunused-value -Wvariadic-macros" 176 CXXFLAGS="$CXXFLAGS -Wvolatile-register-var -Wwrite-strings" 177 ]) 178 ]) 179]) 180 181# ============ 182# Debug switch 183# ============ 184AC_ARG_ENABLE([debug], 185 [AS_HELP_STRING([--enable-debug], [Turn on debugging])], 186 [enable_debug="$enableval"], 187 [enable_debug=no] 188) 189AS_IF([test "x$enable_debug" = "xyes"], [ 190 DEBUG_CXXFLAGS="-DDEBUG -g" 191], [ 192 DEBUG_CXXFLAGS="-DNDEBUG" 193]) 194AC_SUBST(DEBUG_CXXFLAGS) 195 196# ============ 197# Test switch 198# ============ 199AC_ARG_ENABLE([test], 200 [AS_HELP_STRING([--enable-test], [Compile extra test executables])], 201 [enable_test="$enableval"], 202 [enable_test=no] 203) 204AM_CONDITIONAL([COMPILE_TEST], [test "x$enable_test" = "xyes"]) 205 206# ============= 207# Documentation 208# ============= 209AC_ARG_WITH(docs, 210 [AS_HELP_STRING([--without-docs], [Do not build documentation])], 211 [with_docs="$withval"], 212 [AS_IF([test "x$native_win32" = "xyes"], [with_docs=no], [with_docs=yes])] 213) 214AS_IF([test "x$with_docs" != "xno"], [ 215 AC_PATH_PROG(DOXYGEN, [doxygen]) 216 AS_IF([test -z "$DOXYGEN"], [ 217 AC_MSG_WARN([*** Could not find doxygen in your PATH.]) 218 AC_MSG_WARN([*** The documentation will not be built.]) 219 build_docs=no 220 ], [build_docs=yes]) 221], [build_docs=no]) 222AM_CONDITIONAL([WITH_LIBEBOOK_DOCS], [test "x$build_docs" != "xno"]) 223 224# ===================== 225# Prepare all .in files 226# ===================== 227AC_CONFIG_FILES([ 228libodfgen-$LIBODFGEN_MAJOR_VERSION.$LIBODFGEN_MINOR_VERSION.pc:libodfgen.pc.in 229Makefile 230build/Makefile 231build/win32/Makefile 232docs/Makefile 233docs/doxygen/Makefile 234inc/Makefile 235inc/libodfgen/Makefile 236src/Makefile 237src/libodfgen.rc 238test/Makefile 239]) 240AC_OUTPUT 241 242# ============================================== 243# Display final informations about configuration 244# ============================================== 245AC_MSG_NOTICE([ 246============================================================================== 247Build configuration: 248 debug: ${enable_debug} 249 docs: ${build_docs} 250 werror: ${enable_werror} 251============================================================================== 252]) 253 254dnl vim:set shiftwidth=4 softtabstop=4 expandtab: 255