diff options
author | David Tardon <dtardon@redhat.com> | 2012-06-06 17:04:01 +0200 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2012-06-13 06:06:43 +0200 |
commit | 0f6919cf551507f1cb04ff5cbb04d7d3cd707e5c (patch) | |
tree | 12f27ba42bcde568c30f12fb5a4d9badf8e0d3de | |
parent | fdo#51017 ODFF: implement missing imaginary functions [AOO i111609 r1348096] (diff) | |
download | core-0f6919cf551507f1cb04ff5cbb04d7d3cd707e5c.tar.gz core-0f6919cf551507f1cb04ff5cbb04d7d3cd707e5c.zip |
better test for system boost date_time lib
This reverts commit 4c2e9fc655b6480ffc7f0feb5d07b8106b6b8e22.
Change-Id: Iea84991ee689240fe6e6ddbc47f44b444f582dde
-rw-r--r-- | RepositoryExternal.mk | 14 | ||||
-rw-r--r-- | config_host.mk.in | 4 | ||||
-rw-r--r-- | configure.in | 6 | ||||
-rw-r--r-- | external/mingw-dlls/makefile.mk | 1 | ||||
-rw-r--r-- | m4/ax_boost_base.m4 | 266 | ||||
-rw-r--r-- | m4/ax_boost_date_time.m4 | 113 | ||||
-rw-r--r-- | scp2/InstallModule_ooo.mk | 2 | ||||
-rw-r--r-- | scp2/source/ooo/mingw_dlls.scp | 6 |
8 files changed, 411 insertions, 1 deletions
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk index 323e5bc2e6c5..226ee034f42d 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -273,7 +273,19 @@ endif # SYSTEM_HUNSPELL ifeq ($(SYSTEM_BOOST),YES) define gb_LinkTarget__use_boostdatetime -$(call gb_LinkTarget_add_libs,$(1),-lboost_date_time) +$(call gb_LinkTarget_set_include,$(1),\ + $$(INCLUDE) \ + $(BOOST_CPPFLAGS) \ +) + +$(call gb_LinkTarget_add_ldflags,$(1),\ + $(BOOST_LDFLAGS) \ +) + +$(call gb_LinkTarget_add_libs,$(1),\ + $(BOOST_DATE_TIME_LIB) \ +) + endef else # !SYSTEM_BOOST diff --git a/config_host.mk.in b/config_host.mk.in index 2dbc0208962c..4b6e0029fa14 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -22,6 +22,9 @@ export ATL_INCLUDE=@ATL_INCLUDE@ export ATL_LIB=@ATL_LIB@ export AWTLIB=@AWTLIB@ export BARCODE_EXTENSION_PACK=@BARCODE_EXTENSION_PACK@ +export BOOST_CPPFLAGS=@BOOST_CPPFLAGS@ +export BOOST_DATE_TIME_LIB=@BOOST_DATE_TIME_LIB@ +export BOOST_LDFLAGS=@BOOST_LDFLAGS@ export BSH_JAR=@BSH_JAR@ export BUILD_DMAKE=@BUILD_DMAKE@ export BUILD_EPM=@BUILD_EPM@ @@ -295,6 +298,7 @@ export MFC_INCLUDE=@MFC_INCLUDE@ export MFC_LIB=@MFC_LIB@ export MINGWCXX=@MINGWCXX@ export MINGWSTRIP=@MINGWSTRIP@ +export MINGW_BOOST_DATE_TIME_DLL=@MINGW_BOOST_DATE_TIME_DLL@ export MINGW_CAIRO_DLL=@MINGW_CAIRO_DLL@ export MINGW_CLIB_DIR=@MINGW_CLIB_DIR@ export MINGW_CRYPTO_DLL=@MINGW_CRYPTO_DLL@ diff --git a/configure.in b/configure.in index 48bfd38174d3..36f99bd55140 100644 --- a/configure.in +++ b/configure.in @@ -7331,6 +7331,11 @@ if test "$with_system_boost" = "yes"; then fi CXXFLAGS=$save_CXXFLAGS AC_LANG_POP([C++]) + + AX_BOOST_BASE + AX_BOOST_DATE_TIME + mingw_boost_date_time_dll=`echo $BOOST_DATE_TIME_LIB | sed -e 's/^-l//' -e 's/\.dll$//'` + libo_MINGW_CHECK_DLL([BOOST_DATE_TIME], [$mingw_boost_date_time_dll]) else AC_MSG_RESULT([internal]) BUILD_TYPE="$BUILD_TYPE BOOST" @@ -7338,6 +7343,7 @@ else HAVE_BOOST_UNORDERED_MAP=TRUE fi AC_SUBST([HAVE_BOOST_UNORDERED_MAP]) +AC_SUBST([MINGW_BOOST_DATE_TIME_DLL]) AC_SUBST(SYSTEM_BOOST) dnl =================================================================== diff --git a/external/mingw-dlls/makefile.mk b/external/mingw-dlls/makefile.mk index 50aa73b8ec77..5f1722a196fe 100644 --- a/external/mingw-dlls/makefile.mk +++ b/external/mingw-dlls/makefile.mk @@ -42,6 +42,7 @@ dummy: .ELSE MINGW_DLLS:= \ + $(MINGW_BOOST_DATE_TIME_DLL) \ $(MINGW_CAIRO_DLL) \ $(MINGW_CRYPTO_DLL) \ $(MINGW_CURL_DLL) \ diff --git a/m4/ax_boost_base.m4 b/m4/ax_boost_base.m4 new file mode 100644 index 000000000000..e5acfda39dfb --- /dev/null +++ b/m4/ax_boost_base.m4 @@ -0,0 +1,266 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_boost_base.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_BOOST_BASE([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# DESCRIPTION +# +# Test for the Boost C++ libraries of a particular version (or newer) +# +# If no path to the installed boost library is given the macro searchs +# under /usr, /usr/local, /opt and /opt/local and evaluates the +# $BOOST_ROOT environment variable. Further documentation is available at +# <http://randspringer.de/boost/index.html>. +# +# This macro calls: +# +# AC_SUBST(BOOST_CPPFLAGS) / AC_SUBST(BOOST_LDFLAGS) +# +# And sets: +# +# HAVE_BOOST +# +# LICENSE +# +# Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de> +# Copyright (c) 2009 Peter Adolphs +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 20 + +AC_DEFUN([AX_BOOST_BASE], +[ +AC_ARG_WITH([boost], + [AS_HELP_STRING([--with-boost@<:@=ARG@:>@], + [use Boost library from a standard location (ARG=yes), + from the specified location (ARG=<path>), + or disable it (ARG=no) + @<:@ARG=yes@:>@ ])], + [ + if test "$withval" = "no"; then + want_boost="no" + elif test "$withval" = "yes"; then + want_boost="yes" + ac_boost_path="" + else + want_boost="yes" + ac_boost_path="$withval" + fi + ], + [want_boost="yes"]) + + +AC_ARG_WITH([boost-libdir], + AS_HELP_STRING([--with-boost-libdir=LIB_DIR], + [Force given directory for boost libraries. Note that this will override library path detection, so use this parameter only if default library detection fails and you know exactly where your boost libraries are located.]), + [ + if test -d "$withval" + then + ac_boost_lib_path="$withval" + else + AC_MSG_ERROR(--with-boost-libdir expected directory name) + fi + ], + [ac_boost_lib_path=""] +) + +if test "x$want_boost" = "xyes"; then + boost_lib_version_req=ifelse([$1], ,1.20.0,$1) + boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\.[[0-9]]*\)'` + boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'` + boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\.\([[0-9]]*\)'` + boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` + if test "x$boost_lib_version_req_sub_minor" = "x" ; then + boost_lib_version_req_sub_minor="0" + fi + WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+ $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor` + AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req) + succeeded=no + + dnl On 64-bit systems check for system libraries in both lib64 and lib. + dnl The former is specified by FHS, but e.g. Debian does not adhere to + dnl this (as it rises problems for generic multi-arch support). + dnl The last entry in the list is chosen by default when no libraries + dnl are found, e.g. when only header-only libraries are installed! + libsubdirs="lib" + ax_arch=`uname -m` + if test $ax_arch = x86_64 -o $ax_arch = ppc64 -o $ax_arch = s390x -o $ax_arch = sparc64; then + libsubdirs="lib64 lib lib64" + fi + + dnl first we check the system location for boost libraries + dnl this location ist chosen if boost libraries are installed with the --layout=system option + dnl or if you install boost with RPM + if test "$ac_boost_path" != ""; then + BOOST_CPPFLAGS="-I$ac_boost_path/include" + for ac_boost_path_tmp in $libsubdirs; do + if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then + BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp" + break + fi + done + else + if test "$cross_compiling" != yes; then + ac_boost_paths='/usr /usr/local /opt /opt/local' + else + ac_boost_paths="/usr/$host/sys-root/mingw" + fi + for ac_boost_path_tmp in $ac_boost_paths ; do + if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then + for libsubdir in $libsubdirs ; do + if ls "$ac_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi + done + BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir" + BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include" + break; + fi + done + fi + + dnl overwrite ld flags if we have required special directory with + dnl --with-boost-libdir parameter + if test "$ac_boost_lib_path" != ""; then + BOOST_LDFLAGS="-L$ac_boost_lib_path" + fi + + CPPFLAGS_SAVED="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" + export CPPFLAGS + + LDFLAGS_SAVED="$LDFLAGS" + LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" + export LDFLAGS + + AC_REQUIRE([AC_PROG_CXX]) + AC_LANG_PUSH(C++) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + @%:@include <boost/version.hpp> + ]], [[ + #if BOOST_VERSION >= $WANT_BOOST_VERSION + // Everything is okay + #else + # error Boost version is too old + #endif + ]])],[ + AC_MSG_RESULT(yes) + succeeded=yes + found_system=yes + ],[ + ]) + AC_LANG_POP([C++]) + + + + dnl if we found no boost with system layout we search for boost libraries + dnl built and installed without the --layout=system option or for a staged(not installed) version + if test "x$succeeded" != "xyes"; then + _version=0 + if test "$ac_boost_path" != ""; then + if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then + for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do + _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'` + V_CHECK=`expr $_version_tmp \> $_version` + if test "$V_CHECK" = "1" ; then + _version=$_version_tmp + fi + VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'` + BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE" + done + fi + else + if test "$cross_compiling" != yes; then + ac_boost_paths='/usr /usr/local /opt /opt/local' + else + ac_boost_paths="/usr/$host/sys-root/mingw" + fi + for ac_boost_path in $ac_boost_paths ; do + if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then + for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do + _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'` + V_CHECK=`expr $_version_tmp \> $_version` + if test "$V_CHECK" = "1" ; then + _version=$_version_tmp + best_path=$ac_boost_path + fi + done + fi + done + + VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'` + BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE" + if test "$ac_boost_lib_path" = ""; then + for libsubdir in $libsubdirs ; do + if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi + done + BOOST_LDFLAGS="-L$best_path/$libsubdir" + fi + + if test "x$BOOST_ROOT" != "x"; then + for libsubdir in $libsubdirs ; do + if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi + done + if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then + version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'` + stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'` + stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'` + V_CHECK=`expr $stage_version_shorten \>\= $_version` + if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then + AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT) + BOOST_CPPFLAGS="-I$BOOST_ROOT" + BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir" + fi + fi + fi + fi + + CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" + export CPPFLAGS + LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" + export LDFLAGS + + AC_LANG_PUSH(C++) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + @%:@include <boost/version.hpp> + ]], [[ + #if BOOST_VERSION >= $WANT_BOOST_VERSION + // Everything is okay + #else + # error Boost version is too old + #endif + ]])],[ + AC_MSG_RESULT(yes) + succeeded=yes + found_system=yes + ],[ + ]) + AC_LANG_POP([C++]) + fi + + if test "$succeeded" != "yes" ; then + if test "$_version" = "0" ; then + AC_MSG_NOTICE([[We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]]) + else + AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).]) + fi + # execute ACTION-IF-NOT-FOUND (if present): + ifelse([$3], , :, [$3]) + else + AC_SUBST(BOOST_CPPFLAGS) + AC_SUBST(BOOST_LDFLAGS) + AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available]) + # execute ACTION-IF-FOUND (if present): + ifelse([$2], , :, [$2]) + fi + + CPPFLAGS="$CPPFLAGS_SAVED" + LDFLAGS="$LDFLAGS_SAVED" +fi + +]) diff --git a/m4/ax_boost_date_time.m4 b/m4/ax_boost_date_time.m4 new file mode 100644 index 000000000000..ec9c0445a2f0 --- /dev/null +++ b/m4/ax_boost_date_time.m4 @@ -0,0 +1,113 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_boost_date_time.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_BOOST_DATE_TIME +# +# DESCRIPTION +# +# Test for Date_Time library from the Boost C++ libraries. The macro +# requires a preceding call to AX_BOOST_BASE. Further documentation is +# available at <http://randspringer.de/boost/index.html>. +# +# This macro calls: +# +# AC_SUBST(BOOST_DATE_TIME_LIB) +# +# And sets: +# +# HAVE_BOOST_DATE_TIME +# +# LICENSE +# +# Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de> +# Copyright (c) 2008 Michael Tindal +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 21 + +AC_DEFUN([AX_BOOST_DATE_TIME], +[ + AC_ARG_WITH([boost-date-time], + AS_HELP_STRING([--with-boost-date-time@<:@=special-lib@:>@], + [use the Date_Time library from boost - it is possible to specify a certain library for the linker + e.g. --with-boost-date-time=boost_date_time-gcc-mt-d-1_33_1 ]), + [ + if test "$withval" = "no"; then + want_boost="no" + elif test "$withval" = "yes"; then + want_boost="yes" + ax_boost_user_date_time_lib="" + else + want_boost="yes" + ax_boost_user_date_time_lib="$withval" + fi + ], + [want_boost="yes"] + ) + + if test "x$want_boost" = "xyes"; then + AC_REQUIRE([AC_PROG_CC]) + CPPFLAGS_SAVED="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" + export CPPFLAGS + + LDFLAGS_SAVED="$LDFLAGS" + LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" + export LDFLAGS + + AC_CACHE_CHECK(whether the Boost::Date_Time library is available, + ax_cv_boost_date_time, + [AC_LANG_PUSH([C++]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/date_time/gregorian/gregorian_types.hpp>]], + [[using namespace boost::gregorian; date d(2002,Jan,10); + return 0; + ]])], + ax_cv_boost_date_time=yes, ax_cv_boost_date_time=no) + AC_LANG_POP([C++]) + ]) + if test "x$ax_cv_boost_date_time" = "xyes"; then + AC_DEFINE(HAVE_BOOST_DATE_TIME,,[define if the Boost::Date_Time library is available]) + BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'` + if test "x$ax_boost_user_date_time_lib" = "x"; then + for libextension in `ls $BOOSTLIBDIR/libboost_date_time*.so* $BOOSTLIBDIR/libboost_date_time*.dylib* $BOOSTLIBDIR/libboost_date_time*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_date_time.*\)\.so.*$;\1;' -e 's;^lib\(boost_date_time.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_date_time.*\)\.a*$;\1;'` ; do + ax_lib=${libextension} + AC_CHECK_LIB($ax_lib, exit, + [BOOST_DATE_TIME_LIB="-l$ax_lib"; AC_SUBST(BOOST_DATE_TIME_LIB) link_date_time="yes"; break], + [link_date_time="no"]) + done + if test "x$link_date_time" != "xyes"; then + for libextension in `ls $BOOSTLIBDIR/boost_date_time*.dll* $BOOSTLIBDIR/boost_date_time*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_date_time.*\)\.dll.*$;\1;' -e 's;^\(boost_date_time.*\)\.a.*$;\1;'` ; do + ax_lib=${libextension} + AC_CHECK_LIB($ax_lib, exit, + [BOOST_DATE_TIME_LIB="-l$ax_lib"; AC_SUBST(BOOST_DATE_TIME_LIB) link_date_time="yes"; break], + [link_date_time="no"]) + done + fi + + else + for ax_lib in $ax_boost_user_date_time_lib boost_date_time-$ax_boost_user_date_time_lib; do + AC_CHECK_LIB($ax_lib, main, + [BOOST_DATE_TIME_LIB="-l$ax_lib"; AC_SUBST(BOOST_DATE_TIME_LIB) link_date_time="yes"; break], + [link_date_time="no"]) + done + + fi + if test "x$ax_lib" = "x"; then + AC_MSG_ERROR(Could not find a version of the library!) + fi + if test "x$link_date_time" != "xyes"; then + AC_MSG_ERROR(Could not link against $ax_lib !) + fi + fi + + CPPFLAGS="$CPPFLAGS_SAVED" + LDFLAGS="$LDFLAGS_SAVED" + fi +]) diff --git a/scp2/InstallModule_ooo.mk b/scp2/InstallModule_ooo.mk index d56a666e7e11..b903a03963c8 100644 --- a/scp2/InstallModule_ooo.mk +++ b/scp2/InstallModule_ooo.mk @@ -48,6 +48,7 @@ $(eval $(call gb_InstallModule_define_if_set,scp2/ooo,\ ENABLE_OPENGL \ ENABLE_XMLSEC \ MERGELIBS \ + SYSTEM_BOOST \ SYSTEM_CAIRO \ SYSTEM_CLUCENE \ SYSTEM_CURL \ @@ -90,6 +91,7 @@ $(eval $(call gb_InstallModule_define_value_if_set,scp2/ooo,\ )) $(eval $(call gb_InstallModule_define_mingw_dll_if_set,scp2/ooo,\ + MINGW_BOOST_DATE_TIME_DLL \ MINGW_CAIRO_DLL \ MINGW_CRYPTO_DLL \ MINGW_CURL_DLL \ diff --git a/scp2/source/ooo/mingw_dlls.scp b/scp2/source/ooo/mingw_dlls.scp index 6d50c324d8db..82a5dc1ad83e 100644 --- a/scp2/source/ooo/mingw_dlls.scp +++ b/scp2/source/ooo/mingw_dlls.scp @@ -223,6 +223,12 @@ MINGW_DLL( gid_Brand_File_Lib_Mingw_Liblcms2, MINGW_LCMS2_DLL ) #endif #endif +#if defined SYSTEM_BOOST +#if defined NEEDS_MINGW_BOOST_DATE_TIME_DLL +MINGW_DLL( gid_Brand_File_Lib_Mingw_Libboost_date_time, MINGW_BOOST_DATE_TIME_DLL ) +#endif +#endif + #if defined(MINGW_GCCDLL) File gid_Brand_File_Lib_Mingw_GccS |