[svn] commit: r1772 - /branches/trac148/configure.ac

BIND 10 source code commits bind10-changes at lists.isc.org
Wed Apr 21 08:02:41 UTC 2010


Author: jinmei
Date: Wed Apr 21 08:02:40 2010
New Revision: 1772

Log:
checkpoint

Modified:
    branches/trac148/configure.ac

Modified: branches/trac148/configure.ac
==============================================================================
--- branches/trac148/configure.ac (original)
+++ branches/trac148/configure.ac Wed Apr 21 08:02:40 2010
@@ -181,8 +181,15 @@
   [specify exact directory for Boost libraries]),
   [if test "$withval" != "yes" -a "$withval" != "no"; then
    BOOST_LDFLAGS="-L$withval"
+   boost_rpath_flag="-R$withval"
+   boost_library_path=$withval
    fi])
-AC_SUBST(BOOST_LDFLAGS)
+
+# We'll substitute BOOST_LDFLAGS later; we first need to check necessary
+# configuration for linking particular boost libraries.  In particular, if
+# we end up using an "rpath" linker option, we'll add it to BOOST_LDFLAGS
+# then substitute it.
+use_boost_rflag=no
 
 # Check availability of the Boost System library
 
@@ -199,17 +206,42 @@
 	CPPFLAGS="$CPPFLAGS -Iext"
 
 	for BOOST_TRY_LIB in boost_system boost_system-mt; do
-		LDFLAGS="$LDFLAGS_SAVED ${BOOST_LDFLAGS}"
-		LIBS="$LIBS_SAVED -l${BOOST_TRY_LIB}"
-		AC_TRY_LINK([#include <boost/system/error_code.hpp>],
-			[ boost::system::error_code error_code;
-			std::string message(error_code.message());
-			return 0; ],
+		for mode in normal with_rflag with_static; do
+			case "${mode}" in
+			normal)
+				LDFLAGS="$LDFLAGS_SAVED ${BOOST_LDFLAGS}"
+				BOOST_SYSTEM_LIB="-l${BOOST_TRY_LIB}"
+				;;
+			with_rflag)
+				LDFLAGS="$LDFLAGS_SAVED ${BOOST_LDFLAGS} ${boost_rpath_flag}"
+				BOOST_SYSTEM_LIB="-l${BOOST_TRY_LIB}"
+				;;
+			with_static)
+				LDFLAGS="$LDFLAGS_SAVED ${BOOST_LDFLAGS}"
+				if test -z "${boost_library_path}"; then
+					continue
+				fi
+				BOOST_SYSTEM_LIB="${boost_library_path}/lib${BOOST_TRY_LIB}.a"
+				;;
+			esac
+			LIBS="$LIBS_SAVED ${BOOST_SYSTEM_LIB}"
+			AC_TRY_RUN([
+#include <boost/system/error_code.hpp>
+int main() {
+    boost::system::error_code error_code;
+    std::string message(error_code.message());
+    return 0;
+}
+],
 			[ AC_MSG_RESULT(yes)
-			BOOST_SYSTEM_LIB="-l${BOOST_TRY_LIB}"
-			],[])
+			if test $mode = "with_rflag"; then
+				use_boost_rflag=yes
+			fi
+			break
+			],[BOOST_SYSTEM_LIB=""])
+		done
 		if test "X${BOOST_SYSTEM_LIB}" != X; then
-        		break
+			break
 		fi
 	done
 
@@ -220,6 +252,9 @@
 
 if test "X${BOOST_SYSTEM_LIB}" = X; then
 	AC_MSG_RESULT(no)
+	if test "X$boost_library_path" != X; then
+	  AC_MSG_WARN([Could not find boost system library in $boost_library_path.  If it is a shared library in a non standard path, retry with specifying the run time load path (such as LD_LIBRARY_PATH).])
+	fi
 	if test "$with_boost_system" = "yes"; then
 	   AC_MSG_ERROR([boost system library is requested but not found])
 	fi
@@ -247,15 +282,41 @@
 	CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
 
 	for BOOST_TRY_LIB in boost_python boost_python-mt; do
-		LDFLAGS="$LDFLAGS_SAVED ${BOOST_LDFLAGS} ${PYTHON_LDFLAGS}"
-		LIBS="$LIBS_SAVED -l${BOOST_TRY_LIB} ${PYTHON_LIB}"
-		AC_TRY_LINK([#include <boost/python/module.hpp>
-	      using namespace boost::python;
-	      BOOST_PYTHON_MODULE(test) { throw "Boost::Python test."; }],
-			[ return 0; ],
-			[ AC_MSG_RESULT(yes)
-			BOOST_PYTHON_LIB="-l${BOOST_TRY_LIB}"
-			],[])
+		for mode in normal with_rflag with_static; do
+			case "${mode}" in
+			normal)
+				LDFLAGS="$LDFLAGS_SAVED ${BOOST_LDFLAGS}"
+				BOOST_PYTHON_LIB="-l${BOOST_TRY_LIB}"
+				;;
+			with_rflag)
+				LDFLAGS="$LDFLAGS_SAVED ${BOOST_LDFLAGS} ${boost_rpath_flag}"
+				BOOST_PYTHON_LIB="-l${BOOST_TRY_LIB}"
+				;;
+			with_static)
+				LDFLAGS="$LDFLAGS_SAVED ${BOOST_LDFLAGS}"
+				if test -z "${boost_library_path}"; then
+					continue
+				fi
+				BOOST_PYTHON_LIB="${boost_library_path}/lib${BOOST_TRY_LIB}.a"
+				;;
+			esac
+			LIBS="$LIBS_SAVED ${BOOST_PYTHON_LIB}"
+			AC_TRY_RUN([
+#include <boost/python/module.hpp>
+using namespace boost::python;
+BOOST_PYTHON_MODULE(test) { throw "Boost::Python test."; }
+int main() {
+	return 0;
+}
+],
+				[ AC_MSG_RESULT(yes)
+				BOOST_PYTHON_LIB="-l${BOOST_TRY_LIB}"
+				if test $mode = "with_rflag"; then
+					use_boost_rflag=yes
+				fi
+				break
+				],[BOOST_PYTHON_LIB=""])
+		done
 		if test "X${BOOST_PYTHON_LIB}" != X; then
         		break
 		fi
@@ -268,6 +329,9 @@
 
 if test "X${BOOST_PYTHON_LIB}" = X; then
 	AC_MSG_RESULT(no)
+	if test "X$boost_library_path" != X; then
+	  AC_MSG_WARN([Could not find boost python library in $boost_library_path.  If it is a shared library in a non standard path, retry with specifying the run time load path (such as LD_LIBRARY_PATH).])
+	fi
 	if test "$with_boost_python" = "yes"; then
 	   AC_MSG_ERROR([boost python library is requested but not found])
 	fi
@@ -277,6 +341,11 @@
 
 AM_CONDITIONAL(HAVE_BOOST_PYTHON, test "X${BOOST_PYTHON_LIB}" != X)
 AC_SUBST(BOOST_PYTHON_LIB)
+
+if test $use_boost_rflag = "yes"; then
+	BOOST_LDFLAGS=$boost_rpath_flag
+fi
+AC_SUBST(BOOST_LDFLAGS)
 
 #
 # Check availability of gtest, which will be used for unit tests.




More information about the bind10-changes mailing list