@@ -153,38 +153,63 @@ AC_DEFUN([QL_CHECK_BOOST_UNIT_TEST],
153153 fi
154154] )
155155
156- # QL_CHECK_BOOST_SIGNALS2
156+ # QL_CHECK_BOOST_TEST_THREAD_SIGNALS2_SYSTEM
157157# ------------------------
158- # Check whether Boost signals2 is available
159- AC_DEFUN ( [ QL_CHECK_BOOST_SIGNALS2 ] ,
160- [ AC_MSG_CHECKING ( [ whether Boost signals2 is available] )
158+ # Check whether the Boost thread and system is available
159+ AC_DEFUN ( [ QL_CHECK_BOOST_TEST_THREAD_SIGNALS2_SYSTEM ] ,
160+ [ AC_MSG_CHECKING ( [ whether Boost thread, signals2 and system are available] )
161161 AC_REQUIRE ( [ AC_PROG_CC ] )
162162 ql_original_LIBS=$LIBS
163163 ql_original_CXXFLAGS=$CXXFLAGS
164- LIBS="$ql_original_LIBS -pthread"
165- CXXFLAGS="$ql_original_CXXFLAGS -pthread"
166- boost_signals2_found=no
167- AC_LINK_IFELSE ( [ AC_LANG_SOURCE (
168- [ @%:@ include <boost/signals2/signal.hpp>
169-
170- int main() {
171- boost::signals2::signal<void()> sig;
172- }
173- ] ) ] ,
174- [ boost_signals2_found=yes
175- break] ,
176- [ ] )
164+ CC_BASENAME=`basename $CC`
165+ CC_VERSION=`echo "__GNUC__ __GNUC_MINOR__" | $CC -E -x c - | tail -n 1 | $SED -e "s/ //"`
166+ for suffix in "" \
167+ "-$CC_BASENAME$CC_VERSION" \
168+ "-$CC_BASENAME" \
169+ "-mt-$CC_BASENAME$CC_VERSION" \
170+ "-$CC_BASENAME$CC_VERSION-mt" \
171+ "-x$CC_BASENAME$CC_VERSION-mt" \
172+ "-mt-$CC_BASENAME" \
173+ "-$CC_BASENAME-mt" \
174+ "-mt" ; do
175+ boost_thread_lib="-lboost_thread$suffix -lboost_system$suffix"
176+ LIBS="$ql_original_LIBS $boost_thread_lib"
177+ CXXFLAGS="$ql_original_CXXFLAGS -pthread"
178+ boost_thread_found=no
179+ AC_LINK_IFELSE ( [ AC_LANG_SOURCE (
180+ [ @%:@ include <boost/thread/locks.hpp>
181+ @%:@ include <boost/thread/recursive_mutex.hpp>
182+ @%:@ include <boost/signals2/signal.hpp>
183+
184+ #ifndef BOOST_THREAD_PLATFORM_PTHREAD
185+ #error only pthread is supported on this plattform
186+ #endif
187+
188+ int main() {
189+ boost::recursive_mutex m;
190+ boost::lock_guard<boost::recursive_mutex> lock(m);
191+
192+ boost::signals2::signal<void()> sig;
193+
194+ return 0;
195+ }
196+ ] ) ] ,
197+ [ boost_thread_found=$boost_thread_lib
198+ break] ,
199+ [ ] )
200+ done
177201 LIBS="$ql_original_LIBS"
178202 CXXFLAGS="$ql_original_CXXFLAGS"
179203
180- if test "$boost_signals2_found " = no ; then
204+ if test "$boost_thread_found " = no ; then
181205 AC_MSG_RESULT ( [ no] )
182- AC_SUBST ( [ PTHREAD_LIB] ,[ ""] )
183- AC_MSG_ERROR ( [ Boost signals2 library not found.
184- This library is required by the thread-safe observer pattern.] )
206+ AC_SUBST ( [ BOOST_THREAD_LIB] ,[ ""] )
207+ AC_MSG_ERROR ( [ Boost thread, signals2 and system libraries not found.
208+ These libraries are required by the thread-safe observer pattern
209+ or by the parallel unit test runner.] )
185210 else
186211 AC_MSG_RESULT ( [ yes] )
187- AC_SUBST ( [ PTHREAD_LIB ] ,[ "-pthread" ] )
212+ AC_SUBST ( [ BOOST_THREAD_LIB ] ,[ $boost_thread_lib ] )
188213 AC_SUBST ( [ PTHREAD_CXXFLAGS] ,[ "-pthread"] )
189214 AC_SUBST ( [ CXXFLAGS] ,[ "${CXXFLAGS} -pthread"] )
190215 fi
0 commit comments