[go: up one dir, main page]

Menu

[0e2ce3]: / configure.ac  Maximize  Restore  History

Download this file

301 lines (282 with data), 8.7 kB

# Process this file with autoconf to create configure.

AC_PREREQ([2.60])

# ====================
# Version informations
# ====================
m4_define([libmwaw_version_major],[0])
m4_define([libmwaw_version_minor],[0])
m4_define([libmwaw_version_micro],[2])
m4_define([libmwaw_version],[libmwaw_version_major.libmwaw_version_minor.libmwaw_version_micro])

# =============
# Automake init
# =============
AC_INIT([libmwaw],[libmwaw_version])
AC_CONFIG_MACRO_DIR([m4])
AM_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE([1.10 foreign dist-bzip2])
#AM_SILENT_RULES([yes])
AC_LANG([C++])

# ===========================
# Find required base packages
# ===========================
AC_PROG_CC([gcc cc clang])
AC_PROG_CPP([g++ c++ clang++])
AC_PROG_CXX([g++ c++ clang++])
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
AC_LIBTOOL_WIN32_DLL
PKG_PROG_PKG_CONFIG([0.20])

# ====================
# Find additional apps
# ====================
PKG_CHECK_MODULES([LIBMWAW],[
    libwpd-0.9
    libwpd-stream-0.9
])

# =================================
# Libtool/Version Makefile settings
# =================================
AC_SUBST(MWAW_MAJOR_VERSION, [libmwaw_version_major])
AC_SUBST(MWAW_MINOR_VERSION, [libmwaw_version_minor])
AC_SUBST(MWAW_MICRO_VERSION, [libmwaw_version_micro])
AC_SUBST(MWAW_VERSION, [libmwaw_version])
# AC_SUBST(LT_RELEASE, [libmwaw_version_major.libmwaw_version_minor])
LT_CURRENT=`expr 100 '*' libmwaw_version_major + libmwaw_version_minor`
# For 1.0.0 comment the first line and uncomment the second
LT_AGE=0
# LT_AGE=libmwaw_version_minor
AC_SUBST(LT_CURRENT)
AC_SUBST(LT_REVISION, [libmwaw_version_micro])
AC_SUBST(LT_AGE)

# ==========================
# Platform check for windows
# ==========================
AC_MSG_CHECKING([for native Win32])
AS_CASE([$host],
	[*-*-mingw*], [
		native_win32=yes
		AC_CHECK_TOOL(WINDRES, windres)
		LIBMWAW_WIN32_RESOURCE=libmwaw-win32res.lo
		LIBMWAW_STREAM_WIN32_RESOURCE=libmwaw-stream-win32res.lo
		MWAW2HTML_WIN32_RESOURCE=mwaw2html-win32res.lo
		MWAW2TEXT_WIN32_RESOURCE=mwaw2text-win32res.lo
		MWAW2RAW_WIN32_RESOURCE=mwaw2raw-win32res.lo
	], [
		native_win32=no
		LIBMWAW_WIN32_RESOURCE=
		LIBMWAW_STREAM_WIN32_RESOURCE=
		MWAW2HTML_WIN32_RESOURCE=
		MWAW2TEXT_WIN32_RESOURCE=
		MWAW2RAW_WIN32_RESOURCE=
	]
)
AC_MSG_RESULT([$native_win32])
AM_CONDITIONAL(OS_WIN32, [test "x$native_win32" = "xyes"])
AC_SUBST(LIBMWAW_WIN32_RESOURCE)
AC_SUBST(LIBMWAW_STREAM_WIN32_RESOURCE)
AC_SUBST(MWAW2HTML_WIN32_RESOURCE)
AC_SUBST(MWAW2TEXT_WIN32_RESOURCE)
AC_SUBST(MWAW2RAW_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"])

AC_ARG_ENABLE([def-files],
	[AS_HELP_STRING([--enable-def-files], [Enable use of def files to define exported symbols on win32])],
	[enable_def_files="$enableval"],
	[enable_def_files=no]
)
AM_CONDITIONAL(DEF_FILES, [test "x$enable_def_files" = "xyes" -a "x$native_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"
])
# 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 -pedantic"
	CXXFLAGS="$CXXFLAGS -Wall -pedantic"
], [
	AS_IF([test x"$GCC" = xyes], [
		# Be tough with warnings and produce less careless code
		CFLAGS="$CFLAGS -Wall -pedantic -Wextra"
		CXXFLAGS="$CXXFLAGS -Wall -pedantic -Wextra -Weffc++"
	])
])
AC_SUBST(DEBUG_CXXFLAGS)

# ============
# 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"])
	]
)

LIBMWAW_CXXFLAGS="$LIBMWAW_CFLAGS"
AC_SUBST(LIBMWAW_CXXFLAGS)
AC_SUBST(DEBUG_CXXFLAGS)
AC_SUBST(LIBMWAW_LIBS)

# ============
# 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_IF([test "x$with_sharedptr" == "xc++11"], [
		AC_COMPILE_IFELSE([
			AC_LANG_PROGRAM(
			[[#include <memory>]],
			[[std::shared_ptr<int> p;]]
      	)],
		[AC_DEFINE([SHAREDPTR_STD],[1],[Use C++11 implementation of shared_ptr])],
		[AC_MSG_ERROR(Could not find C++11 implementation of shared_ptr)],
		[[#include <memory>]])
	]
)
AS_IF([test "x$with_sharedptr" == "xtr1"], [
		AC_COMPILE_IFELSE([
			AC_LANG_PROGRAM(
			[[#include <tr1/memory>]],
			[[std::tr1::shared_ptr<int> p;]]
      	)],
		[AC_DEFINE([SHAREDPTR_TR1],[1],[Use TR1 implementation of shared_ptr])],
		[AC_MSG_ERROR(Could not find TR1 implementation of shared_ptr)],
		[[#include <tr1/memory>]])
	]
)
AS_IF([test "x$with_sharedptr" == "xboost"], [
		AC_COMPILE_IFELSE([
			AC_LANG_PROGRAM(
			[[#include <boost/shared_ptr.hpp>]],
			[[boost::shared_ptr<int> p;]]
      	)],
		[AC_DEFINE([SHAREDPTR_BOOST],[1],[Use Boost implementation of shared_ptr],
		[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_LIBMWAW_DOCS], [test "x$build_docs" != "xno"])

# =====================
# Prepare all .in files
# =====================
AC_CONFIG_FILES([
Makefile
src/Makefile
src/conv/Makefile
src/conv/html/Makefile
src/conv/html/mwaw2html.rc
src/conv/raw/Makefile
src/conv/raw/mwaw2raw.rc
src/conv/text/Makefile
src/conv/text/mwaw2text.rc
src/lib/Makefile
src/lib/libmwaw.rc
docs/Makefile
docs/doxygen/Makefile
build/Makefile
build/win32/Makefile
libmwaw-0.0.pc
libmwaw.spec
libmwaw-zip
autopackage/Makefile
autopackage/default.apspec
])
AC_OUTPUT

# ==============================================
# Display final informations about configuration
# ==============================================
AC_MSG_NOTICE([
==============================================================================
Build configuration:
	debug:           ${enable_debug}
	full-debug:      ${enable_full_debug}
	docs:            ${build_docs}
	static-tools:    ${enable_static_tools}
	werror:          ${enable_werror}
==============================================================================
])