From eb8377ed975155dbbf8c69d3b8cf24f5a2e05904 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Sun, 27 Dec 2009 23:05:37 +0100 Subject: [PATCH] Added checks for boost::system. --- Makefile.in | 11 ++-- ac/ax_boost_system.m4 | 114 ++++++++++++++++++++++++++++++++++++++++ ac/boost.m4 | 8 +++ configure.in | 3 +- debian-upstream/control | 2 +- 5 files changed, 131 insertions(+), 7 deletions(-) create mode 100644 ac/ax_boost_system.m4 diff --git a/Makefile.in b/Makefile.in index 51ff4c672..66a57f8a2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -64,6 +64,7 @@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_FILESYSTEM_LIB = @BOOST_FILESYSTEM_LIB@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ BOOST_REGEX_LIB = @BOOST_REGEX_LIB@ +BOOST_SYSTEM_LIB = @BOOST_SYSTEM_LIB@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DOCBOOK_MANPAGES_STYLESHEET = @DOCBOOK_MANPAGES_STYLESHEET@ DOCBOOK_ROOT = @DOCBOOK_ROOT@ @@ -466,7 +467,7 @@ mkvmerge_LDADD = -lmtxinput -lmtxoutput \ -lavi -lrmff -lmpegparser \ $(FLAC_LIBS) -lvorbis -logg -lz $(COMPRESSION_LIBRARIES) \ -lexpat $(ICONV_LIBS) $(LIBINTL_LIBS) $(LIBRPCRT) \ - $(BOOST_REGEX_LIB) $(BOOST_FILESYSTEM_LIB) + $(BOOST_REGEX_LIB) $(BOOST_FILESYSTEM_LIB) $(BOOST_SYSTEM_LIB) # # src/info @@ -474,7 +475,7 @@ mkvmerge_LDADD = -lmtxinput -lmtxoutput \ mkvinfo_SOURCES = src/info/mkvinfo.cpp src/info/console_ui.cpp mkvinfo_LDADD = -lmtxcommon $(MAGIC_LIBS) -lmatroska -lebml \ - $(BOOST_REGEX_LIB) $(BOOST_FILESYSTEM_LIB) + $(BOOST_REGEX_LIB) $(BOOST_FILESYSTEM_LIB) $(BOOST_SYSTEM_LIB) ifeq (yes,$(USE_QT)) mkvinfo_SOURCES += src/info/qt_ui.cpp src/info/qt_ui.moc.cpp \ @@ -508,7 +509,7 @@ mkvextract_DEPENDENCIES += $(DEP_COMMON) $(DEP_AVI) $(DEP_RMFF) mkvextract_LDADD = -lmtxcommon $(MAGIC_LIBS) -lvorbis -logg -lavi -lmatroska -lebml -lrmff \ $(ICONV_LIBS) $(LIBINTL_LIBS) -lexpat \ -lz $(COMPRESSION_LIBRARIES) $(LIBRPCRT) \ - $(BOOST_REGEX_LIB) $(BOOST_FILESYSTEM_LIB) + $(BOOST_REGEX_LIB) $(BOOST_FILESYSTEM_LIB) $(BOOST_SYSTEM_LIB) # # src/propedit @@ -521,7 +522,7 @@ mkvpropedit_DEPENDENCIES += $(DEP_COMMON) $(DEP_AVI) $(DEP_RMFF) mkvpropedit_LDADD = -lmtxcommon $(MAGIC_LIBS) -lvorbis -logg -lavi -lmatroska -lebml -lrmff \ $(ICONV_LIBS) $(LIBINTL_LIBS) -lexpat \ -lz $(COMPRESSION_LIBRARIES) $(LIBRPCRT) \ - $(BOOST_REGEX_LIB) $(BOOST_FILESYSTEM_LIB) + $(BOOST_REGEX_LIB) $(BOOST_FILESYSTEM_LIB) $(BOOST_SYSTEM_LIB) # # src/mmg @@ -533,7 +534,7 @@ mmg_OBJECTS := $(patsubst %.cpp,%.o,$(mmg_SOURCES)) \ mmg_DEPENDENCIES += $(DEP_COMMON) mmg_LDADD = -lmtxcommon $(MAGIC_LIBS) -lmatroska -lebml -lexpat $(ICONV_LIBS) \ $(WXWIDGETS_LIBS) $(LIBINTL_LIBS) $(MINGW_GUIAPP) \ - $(BOOST_REGEX_LIB) $(BOOST_FILESYSTEM_LIB) \ + $(BOOST_REGEX_LIB) $(BOOST_FILESYSTEM_LIB) $(BOOST_SYSTEM_LIB) \ $(LIBRPCRT) $(LIBS_WINGUI) mkvmerge: src/mkvmerge@EXEEXT@ diff --git a/ac/ax_boost_system.m4 b/ac/ax_boost_system.m4 new file mode 100644 index 000000000..6ed56aa71 --- /dev/null +++ b/ac/ax_boost_system.m4 @@ -0,0 +1,114 @@ +# =========================================================================== +# http://www.nongnu.org/autoconf-archive/ax_boost_system.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_BOOST_SYSTEM +# +# DESCRIPTION +# +# Test for System library from the Boost C++ libraries. The macro requires +# a preceding call to AX_BOOST_BASE. Further documentation is available at +# . +# +# This macro calls: +# +# AC_SUBST(BOOST_SYSTEM_LIB) +# +# And sets: +# +# HAVE_BOOST_SYSTEM +# +# LICENSE +# +# Copyright (c) 2008 Thomas Porschberg +# Copyright (c) 2008 Michael Tindal +# Copyright (c) 2008 Daniel Casimiro +# +# 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. + +AC_DEFUN([AX_BOOST_SYSTEM], +[ + AC_ARG_WITH([boost-system], + AS_HELP_STRING([--with-boost-system@<:@=special-lib@:>@], + [use the System library from boost - it is possible to specify a certain library for the linker + e.g. --with-boost-system=boost_system-gcc-mt ]), + [ + if test "$withval" = "no"; then + want_boost="no" + elif test "$withval" = "yes"; then + want_boost="yes" + ax_boost_user_system_lib="" + else + want_boost="yes" + ax_boost_user_system_lib="$withval" + fi + ], + [want_boost="yes"] + ) + + if test "x$want_boost" = "xyes"; then + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_BUILD]) + CPPFLAGS_SAVED="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" + export CPPFLAGS + + LDFLAGS_SAVED="$LDFLAGS" + LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" + export LDFLAGS + + AC_CACHE_CHECK(whether the Boost::System library is available, + ax_cv_boost_system, + [AC_LANG_PUSH([C++]) + CXXFLAGS_SAVE=$CXXFLAGS + + AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include ]], + [[boost::system::system_category]]), + ax_cv_boost_system=yes, ax_cv_boost_system=no) + CXXFLAGS=$CXXFLAGS_SAVE + AC_LANG_POP([C++]) + ]) + if test "x$ax_cv_boost_system" = "xyes"; then + AC_SUBST(BOOST_CPPFLAGS) + + AC_DEFINE(HAVE_BOOST_SYSTEM,,[define if the Boost::System library is available]) + BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'` + + LDFLAGS_SAVE=$LDFLAGS + if test "x$ax_boost_user_system_lib" = "x"; then + for libextension in `ls $BOOSTLIBDIR/libboost_system*.{so,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_system.*\)\.so.*$;\1;' -e 's;^lib\(boost_system.*\)\.a*$;\1;'` ; do + ax_lib=${libextension} + AC_CHECK_LIB($ax_lib, exit, + [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break], + [link_system="no"]) + done + if test "x$link_system" != "xyes"; then + for libextension in `ls $BOOSTLIBDIR/boost_system*.{dll,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_system.*\)\.dll.*$;\1;' -e 's;^\(boost_system.*\)\.a*$;\1;'` ; do + ax_lib=${libextension} + AC_CHECK_LIB($ax_lib, exit, + [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break], + [link_system="no"]) + done + fi + + else + for ax_lib in $ax_boost_user_system_lib boost_system-$ax_boost_user_system_lib; do + AC_CHECK_LIB($ax_lib, exit, + [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break], + [link_system="no"]) + done + + fi + if test "x$link_system" = "xno"; then + AC_MSG_ERROR(Could not link against $ax_lib !) + fi + fi + + CPPFLAGS="$CPPFLAGS_SAVED" + LDFLAGS="$LDFLAGS_SAVED" + fi +]) diff --git a/ac/boost.m4 b/ac/boost.m4 index f5d99947c..5a165be3f 100644 --- a/ac/boost.m4 +++ b/ac/boost.m4 @@ -8,6 +8,14 @@ if test x"$ax_cv_boost_filesystem" != "xyes"; then AC_MSG_ERROR(The Boost Filesystem library was not found.) fi +# boost::system must be present if boost::filesystem needs it. +# TODO: Implement check whether or not Boost::System is really needed. +AX_BOOST_SYSTEM() + +if test x"$ax_cv_boost_system" != "xyes"; then + AC_MSG_ERROR(The Boost System library was not found.) +fi + # boost::regex must be present. AX_BOOST_REGEX() diff --git a/configure.in b/configure.in index fe3c22c52..7a26aaceb 100644 --- a/configure.in +++ b/configure.in @@ -38,9 +38,10 @@ m4_include(ac/qt4.m4) m4_include(ac/translations.m4) m4_include(ac/magic.m4) m4_include(ac/ax_boost_base.m4) -m4_include(ac/ax_boost_regex.m4) m4_include(ac/ax_boost_filesystem.m4) m4_include(ac/ax_boost_foreach.m4) +m4_include(ac/ax_boost_regex.m4) +m4_include(ac/ax_boost_system.m4) m4_include(ac/boost.m4) m4_include(ac/etags.m4) m4_include(ac/ax_docbook.m4) diff --git a/debian-upstream/control b/debian-upstream/control index 6edcad8da..d69fd0310 100644 --- a/debian-upstream/control +++ b/debian-upstream/control @@ -2,7 +2,7 @@ Source: mkvtoolnix Section: graphics Priority: optional Maintainer: Moritz Bunkus -Build-Depends: debhelper (>> 4.0.0), libebml-dev (>= 0.7.7-1), libmatroska-dev (>= 0.8.0-1), libogg-dev, libvorbis-dev, libwxgtk2.6-dev | libwxgtk2.8-dev, libexpat1-dev, zlib1g-dev, liblzo-dev | liblzo2-dev, libbz2-dev, libflac-dev, libmagic-dev, libboost-dev (>= 1.32), libboost-regex-dev, libboost-filesystem-dev +Build-Depends: debhelper (>> 4.0.0), libebml-dev (>= 0.7.7-1), libmatroska-dev (>= 0.8.0-1), libogg-dev, libvorbis-dev, libwxgtk2.6-dev | libwxgtk2.8-dev, libexpat1-dev, zlib1g-dev, liblzo-dev | liblzo2-dev, libbz2-dev, libflac-dev, libmagic-dev, libboost-dev (>= 1.32), libboost-regex-dev, libboost-filesystem-dev, libboost-filesystem-dev (< 1.35) | libboost-system-dev Standards-Version: 3.7.2 Package: mkvtoolnix