Blame configure.ac

Packit Service 7605e7
# Process this file with autoconf to create configure.
Packit Service 7605e7
Packit Service 7605e7
AC_PREREQ([2.65])
Packit Service 7605e7
Packit Service 7605e7
# ====================
Packit Service 7605e7
# Version informations
Packit Service 7605e7
# ====================
Packit Service 7605e7
m4_define([libmspub_version_major],[0])
Packit Service 7605e7
m4_define([libmspub_version_minor],[1])
Packit Service 7605e7
m4_define([libmspub_version_micro],[4])
Packit Service 7605e7
m4_define([libmspub_version],[libmspub_version_major.libmspub_version_minor.libmspub_version_micro])
Packit Service 7605e7
Packit Service 7605e7
# =============
Packit Service 7605e7
# Automake init
Packit Service 7605e7
# =============
Packit Service 7605e7
AC_INIT([libmspub],[libmspub_version])
Packit Service 7605e7
AC_CONFIG_MACRO_DIR([m4])
Packit Service 7605e7
AC_CONFIG_HEADER([config.h])
Packit Service 7605e7
AM_INIT_AUTOMAKE([1.11 foreign dist-xz dist-bzip2])
Packit Service 7605e7
AM_SILENT_RULES([yes])
Packit Service 7605e7
AC_LANG([C++])
Packit Service 7605e7
Packit Service 7605e7
# ===========================
Packit Service 7605e7
# Find required base packages
Packit Service 7605e7
# ===========================
Packit Service 7605e7
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
Packit Service 7605e7
AC_PROG_CC
Packit Service 7605e7
AC_PROG_CPP
Packit Service 7605e7
AC_PROG_CXX
Packit Service 7605e7
AC_PROG_INSTALL
Packit Service 7605e7
AC_PROG_LN_S
Packit Service 7605e7
AC_PROG_MAKE_SET
Packit Service 7605e7
LT_INIT([win32-dll disable-static pic-only])
Packit Service 7605e7
AC_CANONICAL_HOST
Packit Service 7605e7
Packit Service 7605e7
AX_CXX_COMPILE_STDCXX_11
Packit Service 7605e7
AX_GCC_FUNC_ATTRIBUTE([format])
Packit Service 7605e7
DLP_FALLTHROUGH
Packit Service 7605e7
Packit Service 7605e7
PKG_PROG_PKG_CONFIG([0.20])
Packit Service 7605e7
Packit Service 7605e7
# ===============
Packit Service 7605e7
# Find librevenge
Packit Service 7605e7
# ===============
Packit Service 7605e7
PKG_CHECK_MODULES([REVENGE],[
Packit Service 7605e7
	librevenge-0.0 >= 0.0.1
Packit Service 7605e7
])
Packit Service 7605e7
AC_SUBST([REVENGE_CFLAGS])
Packit Service 7605e7
AC_SUBST([REVENGE_LIBS])
Packit Service 7605e7
Packit Service 7605e7
# =====
Packit Service 7605e7
# Tools
Packit Service 7605e7
# =====
Packit Service 7605e7
AC_ARG_ENABLE([tools],
Packit Service 7605e7
	[AS_HELP_STRING([--disable-tools], [Build conversion tools])],
Packit Service 7605e7
	[enable_tools="$enableval"],
Packit Service 7605e7
	[enable_tools=yes]
Packit Service 7605e7
)
Packit Service 7605e7
AM_CONDITIONAL(BUILD_TOOLS, [test "x$enable_tools" = "xyes"])
Packit Service 7605e7
Packit Service 7605e7
# =======
Packit Service 7605e7
# Fuzzers
Packit Service 7605e7
# =======
Packit Service 7605e7
AC_ARG_ENABLE([fuzzers],
Packit Service 7605e7
	[AS_HELP_STRING([--enable-fuzzers], [Build fuzzer(s)])],
Packit Service 7605e7
	[enable_fuzzers="$enableval"],
Packit Service 7605e7
	[enable_fuzzers=no]
Packit Service 7605e7
)
Packit Service 7605e7
AM_CONDITIONAL(BUILD_FUZZERS, [test "x$enable_fuzzers" = "xyes"])
Packit Service 7605e7
Packit Service 7605e7
AS_IF([test "x$enable_tools" = "xyes" -o "x$enable_fuzzers" = "xyes"], [
Packit Service 7605e7
	PKG_CHECK_MODULES([REVENGE_STREAM],[
Packit Service 7605e7
		librevenge-stream-0.0
Packit Service 7605e7
	])
Packit Service 7605e7
	PKG_CHECK_MODULES([REVENGE_GENERATORS],[
Packit Service 7605e7
		librevenge-generators-0.0
Packit Service 7605e7
	])
Packit Service 7605e7
])
Packit Service 7605e7
AC_SUBST([REVENGE_STREAM_CFLAGS])
Packit Service 7605e7
AC_SUBST([REVENGE_STREAM_LIBS])
Packit Service 7605e7
AC_SUBST([REVENGE_GENERATORS_CFLAGS])
Packit Service 7605e7
AC_SUBST([REVENGE_GENERATORS_LIBS])
Packit Service 7605e7
Packit Service 7605e7
# =========
Packit Service 7605e7
# Find zlib
Packit Service 7605e7
# =========
Packit Service 7605e7
PKG_CHECK_MODULES([ZLIB],[zlib])
Packit Service 7605e7
AC_SUBST(ZLIB_CFLAGS)
Packit Service 7605e7
AC_SUBST(ZLIB_LIBS)
Packit Service 7605e7
Packit Service 7605e7
# ===========================
Packit Service 7605e7
# Find required boost headers
Packit Service 7605e7
# ===========================
Packit Service 7605e7
AC_CHECK_HEADERS(
Packit Service 7605e7
	boost/cstdint.hpp \
Packit Service 7605e7
	boost/numeric/conversion/cast.hpp \
Packit Service 7605e7
	boost/optional.hpp \
Packit Service 7605e7
	,
Packit Service 7605e7
	[],
Packit Service 7605e7
	[AC_MSG_ERROR(Required boost headers not found. Install boost)],
Packit Service 7605e7
	[]
Packit Service 7605e7
)
Packit Service 7605e7
Packit Service 7605e7
# ========
Packit Service 7605e7
# Find icu
Packit Service 7605e7
# ========
Packit Service 7605e7
PKG_CHECK_MODULES([ICU], [icu-i18n])
Packit Service 7605e7
AC_SUBST(ICU_CFLAGS)
Packit Service 7605e7
AC_SUBST(ICU_LIBS)
Packit Service 7605e7
Packit Service 7605e7
Packit Service 7605e7
# =================================
Packit Service 7605e7
# Libtool/Version Makefile settings
Packit Service 7605e7
# =================================
Packit Service 7605e7
AC_SUBST(MSPUB_MAJOR_VERSION, [libmspub_version_major])
Packit Service 7605e7
AC_SUBST(MSPUB_MINOR_VERSION, [libmspub_version_minor])
Packit Service 7605e7
AC_SUBST(MSPUB_MICRO_VERSION, [libmspub_version_micro])
Packit Service 7605e7
AC_SUBST(MSPUB_VERSION, [libmspub_version])
Packit Service 7605e7
# AC_SUBST(LT_RELEASE, [libmspub_version_major.libmspub_version_minor])
Packit Service 7605e7
LT_CURRENT=`expr 100 '*' libmspub_version_major + libmspub_version_minor`
Packit Service 7605e7
# For 1.0.0 comment the first line and uncomment the second
Packit Service 7605e7
LT_AGE=0
Packit Service 7605e7
# LT_AGE=libmspub_version_minor
Packit Service 7605e7
AC_SUBST(LT_CURRENT)
Packit Service 7605e7
AC_SUBST(LT_REVISION, [libmspub_version_micro])
Packit Service 7605e7
AC_SUBST(LT_AGE)
Packit Service 7605e7
Packit Service 7605e7
# ==========================
Packit Service 7605e7
# Platform check for windows
Packit Service 7605e7
# ==========================
Packit Service 7605e7
AC_MSG_CHECKING([for native Win32])
Packit Service 7605e7
AS_CASE([$host],
Packit Service 7605e7
	[*-*-mingw*], [
Packit Service 7605e7
		native_win32=yes
Packit Service 7605e7
		LIBMSPUB_WIN32_RESOURCE=libmspub-win32res.lo
Packit Service 7605e7
		PUB2RAW_WIN32_RESOURCE=pub2raw-win32res.lo
Packit Service 7605e7
		PUB2XHTML_WIN32_RESOURCE=pub2xhtml-win32res.lo
Packit Service 7605e7
	], [
Packit Service 7605e7
		native_win32=no
Packit Service 7605e7
		LIBMSPUB_WIN32_RESOURCE=
Packit Service 7605e7
		PUB2RAW_WIN32_RESOURCE=
Packit Service 7605e7
		PUB2XHTML_WIN32_RESOURCE=
Packit Service 7605e7
	]
Packit Service 7605e7
)
Packit Service 7605e7
AC_MSG_RESULT([$native_win32])
Packit Service 7605e7
AM_CONDITIONAL(OS_WIN32, [test "x$native_win32" = "xyes"])
Packit Service 7605e7
AC_SUBST(LIBMSPUB_WIN32_RESOURCE)
Packit Service 7605e7
AC_SUBST(PUB2RAW_WIN32_RESOURCE)
Packit Service 7605e7
AC_SUBST(PUB2XHTML_WIN32_RESOURCE)
Packit Service 7605e7
Packit Service 7605e7
AC_MSG_CHECKING([for Win32 platform in general])
Packit Service 7605e7
AS_CASE([$host],
Packit Service 7605e7
	[*-*-mingw*|*-*-cygwin*], [platform_win32=yes],
Packit Service 7605e7
	[platform_win32=no]
Packit Service 7605e7
)
Packit Service 7605e7
AC_MSG_RESULT([$platform_win32])
Packit Service 7605e7
AM_CONDITIONAL([PLATFORM_WIN32], [test "x$platform_win32" = "xyes"])
Packit Service 7605e7
Packit Service 7605e7
AS_IF([test $platform_win32 = yes],
Packit Service 7605e7
    [],
Packit Service 7605e7
    [
Packit Service 7605e7
        AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
Packit Service 7605e7
        saved_CXXFLAGS="$CXXFLAGS"
Packit Service 7605e7
        CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
Packit Service 7605e7
        AC_TRY_COMPILE([], [],
Packit Service 7605e7
            [
Packit Service 7605e7
                AC_MSG_RESULT([yes])
Packit Service 7605e7
                CXXFLAGS="$CXXFLAGS -DLIBMSPUB_VISIBILITY"
Packit Service 7605e7
            ],
Packit Service 7605e7
            [
Packit Service 7605e7
                AC_MSG_RESULT([no])
Packit Service 7605e7
                CXXFLAGS="$saved_CXXFLAGS"
Packit Service 7605e7
            ]
Packit Service 7605e7
        )
Packit Service 7605e7
    ]
Packit Service 7605e7
)
Packit Service 7605e7
Packit Service 7605e7
# ================
Packit Service 7605e7
# Check for cflags
Packit Service 7605e7
# ================
Packit Service 7605e7
AC_ARG_ENABLE([werror],
Packit Service 7605e7
	[AS_HELP_STRING([--enable-werror], [Treat all warnings as errors, useful for development])],
Packit Service 7605e7
	[enable_werror="$enableval"],
Packit Service 7605e7
	[enable_werror=no]
Packit Service 7605e7
)
Packit Service 7605e7
AS_IF([test x"$enable_werror" != "xno"], [
Packit Service 7605e7
	CFLAGS="$CFLAGS -Werror"
Packit Service 7605e7
	CXXFLAGS="$CXXFLAGS -Werror"
Packit Service 7605e7
])
Packit Service 7605e7
AC_ARG_ENABLE([weffc],
Packit Service 7605e7
	[AS_HELP_STRING([--disable-weffc], [ Disable -Weffc++ warnings, useful when using an old version of gcc or of boost])],
Packit Service 7605e7
	[enable_weffc="$enableval"],
Packit Service 7605e7
	[enable_weffc=yes]
Packit Service 7605e7
)
Packit Service 7605e7
AC_ARG_ENABLE([wparanoic],
Packit Service 7605e7
	[AS_HELP_STRING([--enable-wparanoic], [Enable a lot of warnings...])],
Packit Service 7605e7
	[enable_wparanoic="$enableval"],
Packit Service 7605e7
	[enable_wparanoic=no]
Packit Service 7605e7
)
Packit Service 7605e7
# Courtesy of Glib: Ensure MSVC-compatible struct packing convention
Packit Service 7605e7
# is used when compiling for Win32 with gcc.
Packit Service 7605e7
AS_IF([test "x$native_win32" = "xyes"], [
Packit Service 7605e7
	AC_CHECK_TOOL(WINDRES, windres)
Packit Service 7605e7
	AS_IF([test x"$GCC" = xyes], [
Packit Service 7605e7
		AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
Packit Service 7605e7
		AS_IF([test -z "$ac_cv_prog_CC"], [
Packit Service 7605e7
			our_gcc="$CC"
Packit Service 7605e7
		], [
Packit Service 7605e7
			our_gcc="$ac_cv_prog_CC"
Packit Service 7605e7
		])
Packit Service 7605e7
		AS_IF([$our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null], [
Packit Service 7605e7
			msnative_struct="-mms-bitfields"
Packit Service 7605e7
			CFLAGS="$CFLAGS $msnative_struct"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS $msnative_struct"
Packit Service 7605e7
			AC_MSG_RESULT([${msnative_struct}])
Packit Service 7605e7
		], [
Packit Service 7605e7
			AC_MSG_RESULT([no way])
Packit Service 7605e7
			AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
Packit Service 7605e7
		])
Packit Service 7605e7
	])
Packit Service 7605e7
	CFLAGS="$CFLAGS -Wall -Wextra -pedantic"
Packit Service 7605e7
	CXXFLAGS="$CXXFLAGS -Wall -Wextra -pedantic"
Packit Service 7605e7
], [
Packit Service 7605e7
	AS_IF([test x"$GCC" = xyes], [
Packit Service 7605e7
		# Be tough with warnings and produce less careless code
Packit Service 7605e7
		CFLAGS="$CFLAGS -Wall -Wextra -pedantic"
Packit Service 7605e7
		CXXFLAGS="$CXXFLAGS -Wall -Wextra -pedantic -Wshadow -Wunused-variable"
Packit Service 7605e7
		AS_IF([test x"$enable_weffc" != "xno"], [
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Weffc++"
Packit Service 7605e7
		])
Packit Service 7605e7
		AS_IF([test x"$enable_wparanoic" != "xno"], [
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wcast-align -Wcast-qual -Wchar-subscripts"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wcomment -Wconversion -Wdisabled-optimization"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wfloat-equal -Wformat -Wformat=2"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wformat-nonliteral -Wformat-security"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wformat-y2k -Wimport -Winit-self -Winvalid-pch"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wmissing-braces -Wmissing-field-initializers"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wmissing-format-attribute -Wmissing-include-dirs"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wmissing-noreturn -Wpacked -Wparentheses"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wpointer-arith -Wredundant-decls -Wreturn-type"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wsequence-point -Wsign-compare -Wstrict-aliasing"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wstrict-aliasing=2 -Wswitch -Wswitch-default"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wswitch-enum -Wtrigraphs -Wunknown-pragmas -Wunused"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wunused-function -Wunused-label -Wunused-parameter"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wunused-value -Wvariadic-macros"
Packit Service 7605e7
			CXXFLAGS="$CXXFLAGS -Wvolatile-register-var -Wwrite-strings"
Packit Service 7605e7
		])
Packit Service 7605e7
	])
Packit Service 7605e7
])
Packit Service 7605e7
AC_SUBST(DEBUG_CXXFLAGS)
Packit Service 7605e7
Packit Service 7605e7
# ============
Packit Service 7605e7
# Debug switch
Packit Service 7605e7
# ============
Packit Service 7605e7
AC_ARG_ENABLE([debug],
Packit Service 7605e7
	[AS_HELP_STRING([--enable-debug], [Turn on debugging])],
Packit Service 7605e7
	[enable_debug="$enableval"],
Packit Service 7605e7
	[enable_debug=no]
Packit Service 7605e7
)
Packit Service 7605e7
AS_IF([test "x$enable_debug" = "xyes"], [
Packit Service 7605e7
	DEBUG_CXXFLAGS="-DDEBUG -g"
Packit Service 7605e7
	CXXFLAGS="$CXXFLAGS -O0"
Packit Service 7605e7
	CFLAGS="$CFLAGS -O0"
Packit Service 7605e7
], [
Packit Service 7605e7
	DEBUG_CXXFLAGS="-DNDEBUG"
Packit Service 7605e7
])
Packit Service 7605e7
LIBMSPUB_CXXFLAGS="$LIBMSPUB_CFLAGS"
Packit Service 7605e7
AC_SUBST(LIBMSPUB_CXXFLAGS)
Packit Service 7605e7
AC_SUBST(DEBUG_CXXFLAGS)
Packit Service 7605e7
Packit Service 7605e7
# =============
Packit Service 7605e7
# Documentation
Packit Service 7605e7
# =============
Packit Service 7605e7
AC_ARG_WITH(docs,
Packit Service 7605e7
	[AS_HELP_STRING([--without-docs], [Do not build documentation])],
Packit Service 7605e7
	[with_docs="$withval"],
Packit Service 7605e7
	[AS_IF([test "x$native_win32" = "xyes"], [with_docs=no], [with_docs=yes])]
Packit Service 7605e7
)
Packit Service 7605e7
AS_IF([test "x$with_docs" != "xno"], [
Packit Service 7605e7
	AC_PATH_PROG(DOXYGEN, [doxygen])
Packit Service 7605e7
	AS_IF([test -z "$DOXYGEN"], [
Packit Service 7605e7
		AC_MSG_WARN([*** Could not find doxygen in your PATH.])
Packit Service 7605e7
		AC_MSG_WARN([*** The documentation will not be built.])
Packit Service 7605e7
		build_docs=no
Packit Service 7605e7
	], [build_docs=yes])
Packit Service 7605e7
], [build_docs=no])
Packit Service 7605e7
AM_CONDITIONAL([WITH_LIBMSPUB_DOCS], [test "x$build_docs" != "xno"])
Packit Service 7605e7
Packit Service 7605e7
# =====================
Packit Service 7605e7
# Prepare all .in files
Packit Service 7605e7
# =====================
Packit Service 7605e7
AC_CONFIG_FILES([
Packit Service 7605e7
Makefile
Packit Service 7605e7
src/Makefile
Packit Service 7605e7
src/conv/Makefile
Packit Service 7605e7
src/conv/raw/Makefile
Packit Service 7605e7
src/conv/raw/pub2raw.rc
Packit Service 7605e7
src/conv/svg/Makefile
Packit Service 7605e7
src/conv/svg/pub2xhtml.rc
Packit Service 7605e7
src/fuzz/Makefile
Packit Service 7605e7
src/lib/Makefile
Packit Service 7605e7
src/lib/libmspub.rc
Packit Service 7605e7
inc/Makefile
Packit Service 7605e7
inc/libmspub/Makefile
Packit Service 7605e7
build/Makefile
Packit Service 7605e7
build/win32/Makefile
Packit Service 7605e7
docs/Makefile
Packit Service 7605e7
docs/doxygen/Makefile
Packit Service 7605e7
libmspub-$MSPUB_MAJOR_VERSION.$MSPUB_MINOR_VERSION.pc:libmspub.pc.in
Packit Service 7605e7
])
Packit Service 7605e7
AC_OUTPUT
Packit Service 7605e7
Packit Service 7605e7
# ==============================================
Packit Service 7605e7
# Display final informations about configuration
Packit Service 7605e7
# ==============================================
Packit Service 7605e7
AC_MSG_NOTICE([
Packit Service 7605e7
==============================================================================
Packit Service 7605e7
Build configuration:
Packit Service 7605e7
	debug:           ${enable_debug}
Packit Service 7605e7
	docs:            ${build_docs}
Packit Service 7605e7
	fuzzers:         ${enable_fuzzers}
Packit Service 7605e7
	tools:           ${enable_tools}
Packit Service 7605e7
	werror:          ${enable_werror}
Packit Service 7605e7
==============================================================================
Packit Service 7605e7
])