Blame configure.ac

Packit Service f5eea5
# Process this file with autoconf to create configure.
Packit Service f5eea5
Packit Service f5eea5
AC_PREREQ([2.65])
Packit Service f5eea5
Packit Service f5eea5
# ====================
Packit Service f5eea5
# Version informations
Packit Service f5eea5
# ====================
Packit Service f5eea5
m4_define([librevenge_version_major],[0])
Packit Service f5eea5
m4_define([librevenge_version_minor],[0])
Packit Service f5eea5
m4_define([librevenge_version_micro],[4])
Packit Service f5eea5
m4_define([librevenge_version],[librevenge_version_major.librevenge_version_minor.librevenge_version_micro])
Packit Service f5eea5
Packit Service f5eea5
# =============
Packit Service f5eea5
# Automake init
Packit Service f5eea5
# =============
Packit Service f5eea5
AC_INIT([librevenge],[librevenge_version])
Packit Service f5eea5
AC_CONFIG_MACRO_DIR([m4])
Packit Service f5eea5
AC_CONFIG_HEADER([config.h])
Packit Service f5eea5
AM_INIT_AUTOMAKE([1.11 foreign dist-xz dist-bzip2])
Packit Service f5eea5
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
Packit Service f5eea5
AC_LANG([C++])
Packit Service f5eea5
Packit Service f5eea5
# ===========================
Packit Service f5eea5
# Find required base packages
Packit Service f5eea5
# ===========================
Packit Service f5eea5
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
Packit Service f5eea5
AC_PROG_CC
Packit Service f5eea5
AC_PROG_CPP
Packit Service f5eea5
AC_PROG_CXX
Packit Service f5eea5
AC_PROG_INSTALL
Packit Service f5eea5
AC_PROG_LN_S
Packit Service f5eea5
AC_PROG_MAKE_SET
Packit Service f5eea5
LT_INIT([win32-dll disable-static pic-only])
Packit Service f5eea5
AC_CANONICAL_HOST
Packit Service f5eea5
Packit Service f5eea5
# =================================
Packit Service f5eea5
# Libtool/Version Makefile settings
Packit Service f5eea5
# =================================
Packit Service f5eea5
AC_SUBST(RVNG_MAJOR_VERSION, [librevenge_version_major])
Packit Service f5eea5
AC_SUBST(RVNG_MINOR_VERSION, [librevenge_version_minor])
Packit Service f5eea5
AC_SUBST(RVNG_MICRO_VERSION, [librevenge_version_micro])
Packit Service f5eea5
AC_SUBST(RVNG_VERSION, [librevenge_version])
Packit Service f5eea5
# AC_SUBST(LT_RELEASE, [librevenge_version_major.librevenge_version_minor])
Packit Service f5eea5
LT_CURRENT=`expr 100 '*' librevenge_version_major + librevenge_version_minor`
Packit Service f5eea5
# For 1.0.0 comment the first line and uncomment the second
Packit Service f5eea5
LT_AGE=0
Packit Service f5eea5
# LT_AGE=librevenge_version_minor
Packit Service f5eea5
AC_SUBST(LT_CURRENT)
Packit Service f5eea5
AC_SUBST(LT_REVISION, [librevenge_version_micro])
Packit Service f5eea5
AC_SUBST(LT_AGE)
Packit Service f5eea5
Packit Service f5eea5
# ==========================
Packit Service f5eea5
# Platform check for windows
Packit Service f5eea5
# ==========================
Packit Service f5eea5
AC_MSG_CHECKING([for native Win32])
Packit Service f5eea5
AS_CASE([$host],
Packit Service f5eea5
	[*-*-mingw*], [
Packit Service f5eea5
		native_win32=yes
Packit Service f5eea5
		LIBREVENGE_WIN32_RESOURCE=librevenge-win32res.lo
Packit Service f5eea5
		LIBREVENGE_GENERATORS_WIN32_RESOURCE=librevenge-generators-win32res.lo
Packit Service f5eea5
		LIBREVENGE_STREAM_WIN32_RESOURCE=librevenge-stream-win32res.lo
Packit Service f5eea5
	], [
Packit Service f5eea5
		native_win32=no
Packit Service f5eea5
		LIBREVENGE_WIN32_RESOURCE=
Packit Service f5eea5
		LIBREVENGE_GENERATORS_WIN32_RESOURCE=
Packit Service f5eea5
		LIBREVENGE_STREAM_WIN32_RESOURCE=
Packit Service f5eea5
	]
Packit Service f5eea5
)
Packit Service f5eea5
AC_MSG_RESULT([$native_win32])
Packit Service f5eea5
AM_CONDITIONAL(OS_WIN32, [test "x$native_win32" = "xyes"])
Packit Service f5eea5
AC_SUBST(LIBREVENGE_WIN32_RESOURCE)
Packit Service f5eea5
AC_SUBST(LIBREVENGE_GENERATORS_WIN32_RESOURCE)
Packit Service f5eea5
AC_SUBST(LIBREVENGE_STREAM_WIN32_RESOURCE)
Packit Service f5eea5
Packit Service f5eea5
AC_MSG_CHECKING([for Win32 platform in general])
Packit Service f5eea5
AS_CASE([$host],
Packit Service f5eea5
	[*-*-mingw*|*-*-cygwin*], [platform_win32=yes],
Packit Service f5eea5
	[platform_win32=no]
Packit Service f5eea5
)
Packit Service f5eea5
AC_MSG_RESULT([$platform_win32])
Packit Service f5eea5
AM_CONDITIONAL([PLATFORM_WIN32], [test "x$platform_win32" = "xyes"])
Packit Service f5eea5
Packit Service f5eea5
AS_IF([test "x$platform_win32" = "xyes"],
Packit Service f5eea5
    [],
Packit Service f5eea5
    [
Packit Service f5eea5
        AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
Packit Service f5eea5
        saved_CPPFLAGS="$CPPFLAGS"
Packit Service f5eea5
        CPPFLAGS="$CPPFLAGS -fvisibility=hidden"
Packit Service f5eea5
        AC_TRY_COMPILE([], [], [have_visibility=yes], [have_visibility=no])
Packit Service f5eea5
        AC_MSG_RESULT([$have_visibility])
Packit Service f5eea5
        CPPFLAGS="$saved_CPPFLAGS"
Packit Service f5eea5
    ]
Packit Service f5eea5
)
Packit Service f5eea5
AM_CONDITIONAL([HAVE_VISIBILITY], [test "x$have_visibility" = "xyes"])
Packit Service f5eea5
Packit Service f5eea5
# =========================
Packit Service f5eea5
# Platform check for darwin
Packit Service f5eea5
# =========================
Packit Service f5eea5
AC_MSG_CHECKING([for Darwin (Mac OS X) platform])
Packit Service f5eea5
AS_CASE([$host],
Packit Service f5eea5
	[*-*-darwin*], [platform_darwin=yes],
Packit Service f5eea5
	[platform_darwin=no]
Packit Service f5eea5
)
Packit Service f5eea5
AC_MSG_RESULT([$platform_darwin])
Packit Service f5eea5
AM_CONDITIONAL(PLATFORM_DARWIN, [test "x$platform_darwin" = "xyes"])
Packit Service f5eea5
Packit Service f5eea5
# ================
Packit Service f5eea5
# Check for cflags
Packit Service f5eea5
# ================
Packit Service f5eea5
AC_ARG_ENABLE([werror],
Packit Service f5eea5
	[AS_HELP_STRING([--disable-werror], [Treat all warnings as errors, usefull for development])],
Packit Service f5eea5
	[enable_werror="$enableval"],
Packit Service f5eea5
	[enable_werror=yes]
Packit Service f5eea5
)
Packit Service f5eea5
AS_IF([test x"$enable_werror" != "xno"], [
Packit Service f5eea5
	CFLAGS="$CFLAGS -Werror"
Packit Service f5eea5
	CXXFLAGS="$CXXFLAGS -Werror"
Packit Service f5eea5
])
Packit Service f5eea5
AC_ARG_ENABLE([weffc],
Packit Service f5eea5
	[AS_HELP_STRING([--disable-weffc], [ Disable -Weffc++ warnings, usefull when using an old version of gcc or of boost])],
Packit Service f5eea5
	[enable_weffc="$enableval"],
Packit Service f5eea5
	[enable_weffc=yes]
Packit Service f5eea5
)
Packit Service f5eea5
AC_ARG_ENABLE([wparanoic],
Packit Service f5eea5
	[AS_HELP_STRING([--enable-wparanoic], [Enable a lot of warnings...])],
Packit Service f5eea5
	[enable_wparanoic="$enableval"],
Packit Service f5eea5
	[enable_wparanoic=no]
Packit Service f5eea5
)
Packit Service f5eea5
# Courtesy of Glib: Ensure MSVC-compatible struct packing convention
Packit Service f5eea5
# is used when compiling for Win32 with gcc.
Packit Service f5eea5
AS_IF([test "x$native_win32" = "xyes"], [
Packit Service f5eea5
	AC_CHECK_TOOL(WINDRES, windres)
Packit Service f5eea5
	AS_IF([test x"$GCC" = xyes], [
Packit Service f5eea5
		AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
Packit Service f5eea5
		AS_IF([test -z "$ac_cv_prog_CC"], [
Packit Service f5eea5
			our_gcc="$CC"
Packit Service f5eea5
		], [
Packit Service f5eea5
			our_gcc="$ac_cv_prog_CC"
Packit Service f5eea5
		])
Packit Service f5eea5
		AS_IF([$our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null], [
Packit Service f5eea5
			msnative_struct="-mms-bitfields"
Packit Service f5eea5
			CFLAGS="$CFLAGS $msnative_struct"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS $msnative_struct"
Packit Service f5eea5
			AC_MSG_RESULT([${msnative_struct}])
Packit Service f5eea5
		], [
Packit Service f5eea5
			AC_MSG_RESULT([no way])
Packit Service f5eea5
			AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
Packit Service f5eea5
		])
Packit Service f5eea5
	])
Packit Service f5eea5
	CFLAGS="$CFLAGS -Wall -Wextra -pedantic"
Packit Service f5eea5
	CXXFLAGS="$CXXFLAGS -Wall -Wextra -Wshadow -pedantic"
Packit Service f5eea5
], [
Packit Service f5eea5
	AS_IF([test x"$GCC" = xyes], [
Packit Service f5eea5
		# Be tough with warnings and produce less careless code
Packit Service f5eea5
		CFLAGS="$CFLAGS -Wall -Wextra -pedantic"
Packit Service f5eea5
		CXXFLAGS="$CXXFLAGS -Wall -Wextra -pedantic -Wshadow -Wunused-variable"
Packit Service f5eea5
		AS_IF([test x"$enable_weffc" != "xno"], [
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Weffc++"
Packit Service f5eea5
		])
Packit Service f5eea5
		AS_IF([test x"$enable_wparanoic" != "xno"], [
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wcast-align -Wcast-qual -Wchar-subscripts"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wcomment -Wconversion -Wdisabled-optimization"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wfloat-equal -Wformat -Wformat=2"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wformat-nonliteral -Wformat-security"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wformat-y2k -Wimport -Winit-self -Winvalid-pch"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wmissing-braces -Wmissing-field-initializers"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wmissing-format-attribute -Wmissing-include-dirs"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wmissing-noreturn -Wpacked -Wparentheses"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wpointer-arith -Wredundant-decls -Wreturn-type"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wsequence-point -Wsign-compare -Wstrict-aliasing"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wstrict-aliasing=2 -Wswitch -Wswitch-default"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wswitch-enum -Wtrigraphs -Wunknown-pragmas -Wunused"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wunused-function -Wunused-label -Wunused-parameter"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wunused-value -Wvariadic-macros"
Packit Service f5eea5
			CXXFLAGS="$CXXFLAGS -Wvolatile-register-var -Wwrite-strings"
Packit Service f5eea5
		])
Packit Service f5eea5
	])
Packit Service f5eea5
])
Packit Service f5eea5
Packit Service f5eea5
# ============
Packit Service f5eea5
# Debug switch
Packit Service f5eea5
# ============
Packit Service f5eea5
AC_ARG_ENABLE([debug],
Packit Service f5eea5
	[AS_HELP_STRING([--enable-debug], [Turn on debugging])],
Packit Service f5eea5
	[enable_debug="$enableval"],
Packit Service f5eea5
	[enable_debug=no]
Packit Service f5eea5
)
Packit Service f5eea5
AS_IF([test "x$enable_debug" = "xyes"], [
Packit Service f5eea5
	DEBUG_CXXFLAGS="-DDEBUG -g"
Packit Service f5eea5
	CXXFLAGS="$CXXFLAGS -O0"
Packit Service f5eea5
	CFLAGS="$CFLAGS -O0"
Packit Service f5eea5
], [
Packit Service f5eea5
	DEBUG_CXXFLAGS="-DNDEBUG"
Packit Service f5eea5
])
Packit Service f5eea5
AC_SUBST(DEBUG_CXXFLAGS)
Packit Service f5eea5
Packit Service f5eea5
# ==================
Packit Service f5eea5
# Find boost headers
Packit Service f5eea5
# ==================
Packit Service f5eea5
AC_CHECK_HEADERS(
Packit Service f5eea5
		boost/algorithm/string.hpp \
Packit Service f5eea5
		boost/archive/iterators/base64_from_binary.hpp \
Packit Service f5eea5
		boost/archive/iterators/binary_from_base64.hpp \
Packit Service f5eea5
		boost/archive/iterators/remove_whitespace.hpp \
Packit Service f5eea5
		boost/archive/iterators/transform_width.hpp \
Packit Service f5eea5
		boost/lexical_cast.hpp \
Packit Service f5eea5
		boost/range/iterator_range.hpp \
Packit Service f5eea5
		boost/scoped_ptr.hpp \
Packit Service f5eea5
		boost/shared_ptr.hpp \
Packit Service f5eea5
		boost/spirit/include/classic.hpp,
Packit Service f5eea5
	[],
Packit Service f5eea5
	[AC_MSG_ERROR([Required boost headers not found.])],
Packit Service f5eea5
	[]
Packit Service f5eea5
)
Packit Service f5eea5
Packit Service f5eea5
# ==========
Packit Service f5eea5
# Unit tests
Packit Service f5eea5
# ==========
Packit Service f5eea5
AC_ARG_ENABLE([tests],
Packit Service f5eea5
    [AS_HELP_STRING([--enable-tests], [Build and run unit tests])],
Packit Service f5eea5
    [enable_tests="$enableval"],
Packit Service f5eea5
    [enable_tests=yes]
Packit Service f5eea5
)
Packit Service f5eea5
AS_IF([test "x$enable_tests" = "xyes"], [
Packit Service f5eea5
    PKG_CHECK_MODULES([CPPUNIT], [cppunit])
Packit Service f5eea5
], [])
Packit Service f5eea5
AC_SUBST([CPPUNIT_CFLAGS])
Packit Service f5eea5
AC_SUBST([CPPUNIT_LIBS])
Packit Service f5eea5
AM_CONDITIONAL([ENABLE_TESTS], [test "x$enable_tests" = "xyes"])
Packit Service f5eea5
Packit Service f5eea5
# =============
Packit Service f5eea5
# Documentation
Packit Service f5eea5
# =============
Packit Service f5eea5
AC_ARG_WITH(docs,
Packit Service f5eea5
	[AS_HELP_STRING([--without-docs], [Do not build documentation])],
Packit Service f5eea5
	[with_docs="$withval"],
Packit Service f5eea5
	[AS_IF([test "x$native_win32" = "xyes"], [with_docs=no], [with_docs=yes])]
Packit Service f5eea5
)
Packit Service f5eea5
AS_IF([test "x$with_docs" != "xno"], [
Packit Service f5eea5
	AC_PATH_PROG(DOXYGEN, [doxygen])
Packit Service f5eea5
	AS_IF([test -z "$DOXYGEN"], [
Packit Service f5eea5
		AC_MSG_WARN([*** Could not find doxygen in your PATH.])
Packit Service f5eea5
		AC_MSG_WARN([*** The documentation will not be built.])
Packit Service f5eea5
		build_docs=no
Packit Service f5eea5
	], [build_docs=yes])
Packit Service f5eea5
], [build_docs=no])
Packit Service f5eea5
AM_CONDITIONAL([WITH_LIBREVENGE_DOCS], [test "x$build_docs" != "xno"])
Packit Service f5eea5
Packit Service f5eea5
# =======
Packit Service f5eea5
# Streams
Packit Service f5eea5
# =======
Packit Service f5eea5
AC_ARG_ENABLE(streams,
Packit Service f5eea5
	[AS_HELP_STRING([--disable-streams], [Do not build librevenge-stream library])],
Packit Service f5eea5
	[enable_streams="$enableval"],
Packit Service f5eea5
	[enable_streams=yes]
Packit Service f5eea5
)
Packit Service f5eea5
AM_CONDITIONAL([BUILD_STREAMS], [test "x$enable_streams" != "xno"])
Packit Service f5eea5
Packit Service f5eea5
AS_IF([test "x$enable_streams" != "xno"], [
Packit Service f5eea5
	# =========
Packit Service f5eea5
	# Find zlib
Packit Service f5eea5
	# =========
Packit Service f5eea5
	PKG_CHECK_MODULES([ZLIB],[zlib],[],[
Packit Service f5eea5
		AC_CHECK_HEADER(zlib.h, [ZLIB_CFLAGS=],
Packit Service f5eea5
			[AC_MSG_ERROR(zlib.h not found. install zlib)], [])
Packit Service f5eea5
		AC_CHECK_LIB(z, inflate, [ ZLIB_LIBS=-lz ],
Packit Service f5eea5
			[AC_MSG_ERROR(zlib not found or functional)], [])
Packit Service f5eea5
	])
Packit Service f5eea5
	AC_SUBST(ZLIB_CFLAGS)
Packit Service f5eea5
	AC_SUBST(ZLIB_LIBS)
Packit Service f5eea5
])
Packit Service f5eea5
Packit Service f5eea5
# ==========
Packit Service f5eea5
# Generators
Packit Service f5eea5
# ==========
Packit Service f5eea5
AC_ARG_ENABLE(generators,
Packit Service f5eea5
	[AS_HELP_STRING([--disable-generators], [Do not build librevenge-generators library])],
Packit Service f5eea5
	[enable_generators="$enableval"],
Packit Service f5eea5
	[enable_generators=yes]
Packit Service f5eea5
)
Packit Service f5eea5
AM_CONDITIONAL([BUILD_GENERATORS], [test "x$enable_generators" != "xno"])
Packit Service f5eea5
Packit Service f5eea5
# ===================
Packit Service f5eea5
# gdb pretty printers
Packit Service f5eea5
# ===================
Packit Service f5eea5
AC_ARG_ENABLE([pretty-printers],
Packit Service f5eea5
	[AS_HELP_STRING([--enable-pretty-printers], [Install gdb pretty printers])],
Packit Service f5eea5
	[enable_pretty_printers="$withval"],
Packit Service f5eea5
	[enable_pretty_printers=no]
Packit Service f5eea5
)
Packit Service f5eea5
AC_ARG_WITH([gdb-data-dir],
Packit Service f5eea5
	[AS_HELP_STRING([--with-gdb-data-dir], [Specify gdb data dir])],
Packit Service f5eea5
	[gdb_data_dir="$withval"],
Packit Service f5eea5
	[gdb_data_dir="/usr/share/gdb"]
Packit Service f5eea5
)
Packit Service f5eea5
AM_CONDITIONAL([BUILD_PRETTY_PRINTERS], [test "x$enable_pretty_printers" != "xno"])
Packit Service f5eea5
Packit Service f5eea5
AS_IF([test "x$enable_pretty_printers" != "xno"],
Packit Service f5eea5
    [dnl
Packit Service f5eea5
		GDBDATADIR="$gdb_data_dir"
Packit Service f5eea5
		AC_PATH_PROG([GDB], [gdb])dnl
Packit Service f5eea5
    ]
Packit Service f5eea5
)
Packit Service f5eea5
AC_SUBST([GDBDATADIR])
Packit Service f5eea5
Packit Service f5eea5
# =====================
Packit Service f5eea5
# Prepare all .in files
Packit Service f5eea5
# =====================
Packit Service f5eea5
AC_CONFIG_FILES([
Packit Service f5eea5
Makefile
Packit Service f5eea5
data/Makefile
Packit Service f5eea5
data/gdb/Makefile
Packit Service f5eea5
data/gdb/auto-load/Makefile
Packit Service f5eea5
data/gdb/auto-load/librevenge-$RVNG_MAJOR_VERSION.$RVNG_MINOR_VERSION.py:data/gdb/auto-load/librevenge.py.in
Packit Service f5eea5
data/gdb/auto-load/librevenge-stream-$RVNG_MAJOR_VERSION.$RVNG_MINOR_VERSION.py:data/gdb/auto-load/librevenge-stream.py.in
Packit Service f5eea5
src/Makefile
Packit Service f5eea5
src/lib/Makefile
Packit Service f5eea5
src/lib/librevenge.rc
Packit Service f5eea5
src/lib/librevenge-generators.rc
Packit Service f5eea5
src/lib/librevenge-stream.rc
Packit Service f5eea5
src/test/Makefile
Packit Service f5eea5
inc/Makefile
Packit Service f5eea5
inc/librevenge/Makefile
Packit Service f5eea5
inc/librevenge-generators/Makefile
Packit Service f5eea5
inc/librevenge-stream/Makefile
Packit Service f5eea5
docs/Makefile
Packit Service f5eea5
docs/doxygen/Makefile
Packit Service f5eea5
build/Makefile
Packit Service f5eea5
build/win32/Makefile
Packit Service f5eea5
librevenge-$RVNG_MAJOR_VERSION.$RVNG_MINOR_VERSION.pc:librevenge.pc.in
Packit Service f5eea5
librevenge-generators-$RVNG_MAJOR_VERSION.$RVNG_MINOR_VERSION.pc:librevenge-generators.pc.in
Packit Service f5eea5
librevenge-stream-$RVNG_MAJOR_VERSION.$RVNG_MINOR_VERSION.pc:librevenge-stream.pc.in
Packit Service f5eea5
])
Packit Service f5eea5
AC_OUTPUT
Packit Service f5eea5
Packit Service f5eea5
# ==============================================
Packit Service f5eea5
# Display final informations about configuration
Packit Service f5eea5
# ==============================================
Packit Service f5eea5
AC_MSG_NOTICE([
Packit Service f5eea5
==============================================================================
Packit Service f5eea5
Build configuration:
Packit Service f5eea5
	debug:           ${enable_debug}
Packit Service f5eea5
	docs:            ${build_docs}
Packit Service f5eea5
	tests:           ${enable_tests}
Packit Service f5eea5
	generators:      ${enable_generators}
Packit Service f5eea5
	streams:         ${enable_streams}
Packit Service f5eea5
	werror:          ${enable_werror}
Packit Service f5eea5
	pretty printers: ${enable_pretty_printers}
Packit Service f5eea5
==============================================================================
Packit Service f5eea5
])