lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] master 48c0613 20/30: Fix Boost detection and use in


From: Greg Chicares
Subject: [lmi-commits] [lmi] master 48c0613 20/30: Fix Boost detection and use in configure with clang in C++17 mode
Date: Wed, 24 Mar 2021 15:31:10 -0400 (EDT)

branch: master
commit 48c06136561d8607cf9a2f57df38f2c7674321c8
Author: Vadim Zeitlin <vadim@tt-solutions.com>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>

    Fix Boost detection and use in configure with clang in C++17 mode
    
    The use of "register" in one of the headers triggers a -Wregister which
    is actually a fatal error, so get rid of it by simply removing
    "register" using preprocessor.
    
    Also define BOOST_NO_AUTO_PTR to prevent the use of std::auto_ptr<>
    which is not available in C++17 version of libc++. Unlike the "register"
    hack, this is also needed for compiling lmi code using this header.
---
 configure.ac | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/configure.ac b/configure.ac
index 566dc14..dc581fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -346,6 +346,11 @@ else
 if they are installed in non default location"
 fi
 
+dnl Disable the use of std::auto_ptr<> which is not available in C++17 (and is
+dnl actually not available, rather than still being there and just generating
+dnl deprecation warnings, in clang libc++).
+CPPFLAGS="$CPPFLAGS -DBOOST_NO_AUTO_PTR"
+
 AC_CHECK_HEADER([boost/type_traits.hpp],
     [],
     [AC_MSG_FAILURE([Boost headers not found, $errmsg])],
@@ -362,6 +367,7 @@ boost_libsystem="boost_system$lmi_boost_toolkit"
 boost_libfs="boost_filesystem$lmi_boost_toolkit"
 boost_libregex="boost_regex$lmi_boost_toolkit"
 
+save_CPPFLAGS=$CPPFLAGS
 save_LIBS=$LIBS
 save_LDFLAGS=$LDFLAGS
 if test "x$lmi_boost_libs" != "x"; then
@@ -373,6 +379,10 @@ else
 if it is installed in non default location"
 fi
 
+dnl Prevent warnings due to the use of "register" in Boost.Regex headers that
+dnl are actually fatal errors with clang in C++17 mode.
+CPPFLAGS="$save_CPPFLAGS -Dregister="
+
 dnl latest versions of boost extract some common functionality in
 dnl libboost_system which we must link when using any other Boost library, so
 dnl check for it first
@@ -398,6 +408,7 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include 
<boost/regex.hpp>]],
 
 LDFLAGS=$save_LDFLAGS
 LIBS=$save_LIBS
+CPPFLAGS=$save_CPPFLAGS
 
 BOOST_LIBS="-l$boost_libfs -l$boost_libregex $BOOST_LIBS"
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]