Tan, Tom (Shanghai | 31 Jan 03:22
Picon
Favicon

CMake wrongly generates x64 VC10 project files when Boost default stage folder is used for x32

I reported to CMake a bug  concerning Boost, not building Boost itself but a linking to it. I  was then suggested to post here first. Can you please take a look? I am too new to CMake to figure whose bug it actually belong.

 

http://www.cmake.org/Bug/view.php?id=12918

 

Thanks.

_______________________________________________
Boost-cmake mailing list
Boost-cmake@...
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake
Petr Machata | 16 Jan 22:50
Picon
Favicon

CMake Boost and test cases

Hi there,

I was trying to run tests in the CMake-ified boost, and found that many
tests fail even to configure.

Often what happens is that shared-build test requests a component that
is only build statically.  These seem relatively easy, if tedious to
fix--you just have to construct the name of full dependency, with
explicit -static- or -shared- marker.  I added in an include file that
contains this logic for boost_test_exec_monitor, because many modules
request that.

After fixing all these, another issue came up: in some modules,
e.g. phoenix, the list of tests only includes directories, and
boost_test_run is then run with the directory as an argument, which
fails at config time.  These are less straightforward to fix.  I can
expand this into list of files easily enough.  But some tests are
compile only, some should be run, some are expected to pass, others to
fail, and it's not immediately clear which are which.  Then there are
test monitors, and presumably some tests will define functions like
cpp_main instead of mere main, and these should be linked with the
monitor library...  I _think_ I fixed phoenix, but it's hard to tell,
because I didn't get clean config, and therefore didn't attempt to run
anything.  It should at least be less broken.  I gave up after phoenix.

Hmm, so, is this a known thing?  Perhaps I'm just missing some magic
that makes it all work.  I know cmake boost is in a lot of flux, so
chances are this area just needs some work.

(I'll attach a patch.  I can form the same as git pull request if that's
preferred.)

Thanks,
PM
diff -urp boost_1_48_0/libs/chrono/test/CMakeLists.txt boost_1_48_0.pm/libs/chrono/test/CMakeLists.txt
--- boost_1_48_0/libs/chrono/test/CMakeLists.txt	2012-01-16 20:26:38.516583702 +0100
+++ boost_1_48_0.pm/libs/chrono/test/CMakeLists.txt	2012-01-16 21:17:57.048653852 +0100
@@ -6,28 +6,19 @@ boost_additional_test_dependencies(chron

 set (CHRONO_LIBRARIES
   boost_chrono
-  boost_test_exec_monitor)
+  test_exec_monitor)

-set (BOOST_TEST_EXEC_MONITOR_SUFFIX "")
-if (NOT BUILD_SINGLE_THREADED)
-  set (BOOST_TEST_EXEC_MONITOR_SUFFIX "-mt")
-endif (NOT BUILD_SINGLE_THREADED)
-
-set (BOOST_TEST_EXEC_MONITOR_SUFFIX "${BOOST_TEST_EXEC_MONITOR_SUFFIX}-static")
-if (NOT BUILD_RELEASE)
-  set (BOOST_TEST_EXEC_MONITOR_SUFFIX "${BOOST_TEST_EXEC_MONITOR_SUFFIX}-debug")
-endif (NOT BUILD_RELEASE)
+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")

 #
 macro (chrono_test_run TESTNAME)
   boost_test_run (${TESTNAME} 
     STATIC
-    DEPENDS boost_chrono boost_test_exec_monitor )
+    DEPENDS boost_chrono ${DEP_BOOST_TEST_EXEC_MONITOR})
   boost_test_run ("${TESTNAME}_dll"
     ${TESTNAME}.cpp
     SHARED
-    DEPENDS boost_chrono 
-    "boost_test_exec_monitor${BOOST_TEST_EXEC_MONITOR_SUFFIX}")
+    DEPENDS boost_chrono ${DEP_BOOST_TEST_EXEC_MONITOR})
 endmacro (chrono_test_run)

 #
diff -urp boost_1_48_0/libs/config/test/CMakeLists.txt boost_1_48_0.pm/libs/config/test/CMakeLists.txt
--- boost_1_48_0/libs/config/test/CMakeLists.txt	2012-01-16 20:26:38.520583702 +0100
+++ boost_1_48_0.pm/libs/config/test/CMakeLists.txt	2012-01-16 21:12:56.024647076 +0100
@@ -28,10 +28,11 @@ boost_test_run(config_info
 boost_test_run(math_info
   EXTRA_OPTIONS ${BOOST_CONFIG_BORLAND_STATIC_OPTIONS})

+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")

-boost_test_run(limits_test DEPENDS boost_test_exec_monitor)
+boost_test_run(limits_test DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
 boost_test_run(abi_test abi/abi_test.cpp abi/main.cpp)

 # TODO: config_link_test
 boost_test_compile_fail(test_thread_fail1 threads/test_thread_fail1.cpp)
-boost_test_compile_fail(test_thread_fail2 threads/test_thread_fail2.cpp)
\ No newline at end of file
+boost_test_compile_fail(test_thread_fail2 threads/test_thread_fail2.cpp)
diff -urp boost_1_48_0/libs/flyweight/test/CMakeLists.txt boost_1_48_0.pm/libs/flyweight/test/CMakeLists.txt
--- boost_1_48_0/libs/flyweight/test/CMakeLists.txt	2012-01-16 20:26:38.532583702 +0100
+++ boost_1_48_0.pm/libs/flyweight/test/CMakeLists.txt	2012-01-16 19:47:31.432530151 +0100
@@ -46,8 +46,17 @@ boost_add_library(intermod_holder_dll 
   NO_INSTALL
   )

+set(BOOST_INTERMOD_HOLDER_SUFFIX "")
+if (NOT BUILD_SINGLE_THREADED)
+  set(BOOST_INTERMOD_HOLDER_SUFFIX "-mt")
+endif()
+set(BOOST_INTERMOD_HOLDER_SUFFIX "${BOOST_INTERMOD_HOLDER_SUFFIX}-shared")
+if (NOT BUILD_RELEASE)
+  set(BOOST_INTERMOD_HOLDER_SUFFIX "${BOOST_INTERMOD_HOLDER_SUFFIX}-debug")
+endif()
+
 boost_test_run(intermod_holder
   test_intermod_holder.cpp test_intermod_holder_main.cpp
   LINK_LIBS ${CMAKE_THREAD_LIBS_INIT}
-  DEPENDS intermod_holder_dll)
+  DEPENDS "boost_intermod_holder_dll${BOOST_INTERMOD_HOLDER_SUFFIX}")

diff -urp boost_1_48_0/libs/format/test/CMakeLists.txt boost_1_48_0.pm/libs/format/test/CMakeLists.txt
--- boost_1_48_0/libs/format/test/CMakeLists.txt	2012-01-16 20:26:38.534583702 +0100
+++ boost_1_48_0.pm/libs/format/test/CMakeLists.txt	2012-01-16 21:11:47.422645503 +0100
@@ -6,8 +6,10 @@
 #
 boost_additional_test_dependencies(format BOOST_DEPENDS test)

-boost_test_run(format_test1 DEPENDS boost_test_exec_monitor)
-boost_test_run(format_test2 DEPENDS boost_test_exec_monitor)
-boost_test_run(format_test3 DEPENDS boost_test_exec_monitor)
-boost_test_run(format_test_wstring DEPENDS boost_test_exec_monitor)
+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")
+
+boost_test_run(format_test1 DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(format_test2 DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(format_test3 DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(format_test_wstring DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})

diff -urp boost_1_48_0/libs/graph/test/CMakeLists.txt boost_1_48_0.pm/libs/graph/test/CMakeLists.txt
--- boost_1_48_0/libs/graph/test/CMakeLists.txt	2012-01-16 20:26:38.545583702 +0100
+++ boost_1_48_0.pm/libs/graph/test/CMakeLists.txt	2012-01-16 21:17:05.352652768 +0100
@@ -6,6 +6,18 @@

 boost_additional_test_dependencies(graph BOOST_DEPENDS test assign)

+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")
+
+set (BOOST_LOCALE_MT_SUFFIX "")
+if (NOT BUILD_SINGLE_THREADED)
+  set (BOOST_LOCALE_MT_SUFFIX "-mt")
+endif (NOT BUILD_SINGLE_THREADED)
+set (BOOST_GRAPH_SUFFIX "${BOOST_LOCALE_MT_SUFFIX}-shared")
+if (NOT BUILD_RELEASE)
+  set (BOOST_GRAPH_SUFFIX "${BOOST_GRAPH_SUFFIX}-debug")
+endif (NOT BUILD_RELEASE)
+
+
 boost_test_run(transitive_closure_test)
 boost_test_compile(adj_list_cc)
 boost_test_run(adj_list_edge_list_set)
@@ -28,7 +40,8 @@ boost_test_run(generator_test)
 boost_test_run(graph)
 boost_test_compile(graph_concepts)
 boost_test_run(graphviz_test 
-  DEPENDS boost_test_exec_monitor boost_graph STATIC)
+  STATIC
+  DEPENDS "boost_graph${BOOST_GRAPH_SUFFIX}" ${DEP_BOOST_TEST_EXEC_MONITOR})
 boost_test_run(gursoy_atun_layout_test)
 boost_test_run(layout_test)
 boost_test_run(serialize DEPENDS boost_serialization)
diff -urp boost_1_48_0/libs/integer/test/CMakeLists.txt boost_1_48_0.pm/libs/integer/test/CMakeLists.txt
--- boost_1_48_0/libs/integer/test/CMakeLists.txt	2012-01-16 20:26:38.549583702 +0100
+++ boost_1_48_0.pm/libs/integer/test/CMakeLists.txt	2012-01-16 21:13:44.231648116 +0100
@@ -6,9 +6,16 @@
 #
 boost_additional_test_dependencies(integer BOOST_DEPENDS test) 

+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")
+
 boost_test_run(cstdint_test cstdint_test.cpp)
-boost_test_run(integer_mask_test integer_mask_test.cpp DEPENDS boost_test_exec_monitor)
-boost_test_run(integer_test integer_test.cpp DEPENDS boost_test_exec_monitor)
-boost_test_run(integer_traits_test integer_traits_test.cpp DEPENDS boost_test_exec_monitor)
-boost_test_run(static_log2_test static_log2_test.cpp DEPENDS boost_test_exec_monitor)
-boost_test_run(static_min_max_test static_min_max_test.cpp DEPENDS boost_test_exec_monitor)
+boost_test_run(integer_mask_test integer_mask_test.cpp
+    DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(integer_test integer_test.cpp
+    DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(integer_traits_test integer_traits_test.cpp
+    DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(static_log2_test static_log2_test.cpp
+    DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(static_min_max_test static_min_max_test.cpp
+    DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
diff -urp boost_1_48_0/libs/io/test/CMakeLists.txt boost_1_48_0.pm/libs/io/test/CMakeLists.txt
--- boost_1_48_0/libs/io/test/CMakeLists.txt	2012-01-16 20:26:38.552583702 +0100
+++ boost_1_48_0.pm/libs/io/test/CMakeLists.txt	2012-01-16 21:17:25.351653197 +0100
@@ -6,7 +6,8 @@
 #
 boost_additional_test_dependencies(io BOOST_DEPENDS test)

+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")

 boost_test_run(ios_state_unit_test DEPENDS boost_unit_test_framework)
-boost_test_run(ios_state_test DEPENDS boost_test_exec_monitor)
+boost_test_run(ios_state_test DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})

diff -urp boost_1_48_0/libs/lambda/test/CMakeLists.txt boost_1_48_0.pm/libs/lambda/test/CMakeLists.txt
--- boost_1_48_0/libs/lambda/test/CMakeLists.txt	2012-01-16 20:26:38.557583702 +0100
+++ boost_1_48_0.pm/libs/lambda/test/CMakeLists.txt	2012-01-16 21:19:47.063656407 +0100
@@ -6,19 +6,22 @@
 #
 boost_additional_test_dependencies(lambda BOOST_DEPENDS test any)

-boost_test_run(algorithm_test DEPENDS boost_test_exec_monitor)
-boost_test_run(bind_tests_simple DEPENDS boost_test_exec_monitor)
-boost_test_run(bind_tests_advanced DEPENDS boost_test_exec_monitor)
-boost_test_run(bind_tests_simple_f_refs DEPENDS boost_test_exec_monitor)
-boost_test_run(bll_and_function DEPENDS boost_test_exec_monitor)
-boost_test_run(lambda_cast_test 
-  cast_test.cpp DEPENDS boost_test_exec_monitor)
-boost_test_run(constructor_tests DEPENDS boost_test_exec_monitor)
-boost_test_run(control_structures DEPENDS boost_test_exec_monitor)
-boost_test_run(exception_test DEPENDS boost_test_exec_monitor)
-boost_test_run(extending_rt_traits DEPENDS boost_test_exec_monitor)
-boost_test_run(is_instance_of_test DEPENDS boost_test_exec_monitor)
-boost_test_run(member_pointer_test DEPENDS boost_test_exec_monitor)
-boost_test_run(operator_tests_simple DEPENDS boost_test_exec_monitor)
-boost_test_run(phoenix_control_structures DEPENDS boost_test_exec_monitor)
-boost_test_run(switch_construct DEPENDS boost_test_exec_monitor)
+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")
+
+boost_test_run(algorithm_test DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(bind_tests_simple DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(bind_tests_advanced DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(bind_tests_simple_f_refs DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(bll_and_function DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(lambda_cast_test cast_test.cpp
+	DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(constructor_tests DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(control_structures DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(exception_test DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(extending_rt_traits DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(is_instance_of_test DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(member_pointer_test DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(operator_tests_simple DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(phoenix_control_structures
+	DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(switch_construct DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
diff -urp boost_1_48_0/libs/locale/test/CMakeLists.txt boost_1_48_0.pm/libs/locale/test/CMakeLists.txt
--- boost_1_48_0/libs/locale/test/CMakeLists.txt	2012-01-16 20:26:38.558583702 +0100
+++ boost_1_48_0.pm/libs/locale/test/CMakeLists.txt	2012-01-16 22:17:06.432734938 +0100
@@ -6,55 +6,64 @@ boost_additional_test_dependencies (loca

 set (LOCALE_LIBRARIES
   boost_locale
-  boost_test_exec_monitor)
+  test_exec_monitor)

-set (BOOST_TEST_EXEC_MONITOR_SUFFIX "")
+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")
+
+set (BOOST_LOCALE_MT_SUFFIX "")
 if (NOT BUILD_SINGLE_THREADED)
-  set (BOOST_TEST_EXEC_MONITOR_SUFFIX "-mt")
+  set (BOOST_LOCALE_MT_SUFFIX "-mt")
 endif (NOT BUILD_SINGLE_THREADED)
-
-set (BOOST_TEST_EXEC_MONITOR_SUFFIX "${BOOST_TEST_EXEC_MONITOR_SUFFIX}-static")
+set (BOOST_LOCALE_STATIC_SUFFIX "${BOOST_LOCALE_MT_SUFFIX}-static")
+set (BOOST_LOCALE_SHARED_SUFFIX "${BOOST_LOCALE_MT_SUFFIX}-shared")
 if (NOT BUILD_RELEASE)
-  set (BOOST_TEST_EXEC_MONITOR_SUFFIX "${BOOST_TEST_EXEC_MONITOR_SUFFIX}-debug")
+  set (BOOST_LOCALE_SHARED_SUFFIX "${BOOST_LOCALE_SHARED_SUFFIX}-debug")
+  set (BOOST_LOCALE_STATIC_SUFFIX "${BOOST_LOCALE_STATIC_SUFFIX}-debug")
 endif (NOT BUILD_RELEASE)

 #
 macro (locale_test_run TESTNAME)
-  boost_test_run (${TESTNAME} 
-    STATIC
-    DEPENDS boost_locale boost_test_exec_monitor )
+  if (NO_STATIC_IF_ICU_FOUND)
+      boost_test_run (${TESTNAME} 
+	STATIC
+	DEPENDS
+	"boost_locale${BOOST_LOCALE_STATIC_SUFFIX}"
+	${DEP_BOOST_TEST_EXEC_MONITOR})
+  endif (NO_STATIC_IF_ICU_FOUND)
+
   boost_test_run ("${TESTNAME}_dll"
     ${TESTNAME}.cpp
     SHARED
-    DEPENDS boost_locale 
-    "boost_test_exec_monitor${BOOST_TEST_EXEC_MONITOR_SUFFIX}")
+    DEPENDS
+    "boost_locale${BOOST_LOCALE_SHARED_SUFFIX}" ${DEP_BOOST_TEST_EXEC_MONITOR})
 endmacro (locale_test_run)

 #
 set (TESTS 
-  test_config.cpp
-  test_utf.cpp
-  test_date_time.cpp
-  test_ios_prop.cpp
-  test_codepage_converter.cpp
-  test_codepage.cpp
-  test_message.cpp
-  test_generator.cpp
-  test_collate.cpp
-  test_convert.cpp
-  test_boundary.cpp
-  test_formatting.cpp
-  test_icu_vs_os_timezone.cpp
-  test_winapi_collate.cpp
-  test_winapi_convert.cpp
-  test_winapi_formatting.cpp
-  test_posix_collate.cpp
-  test_posix_convert.cpp
-  test_posix_formatting.cpp
-  test_std_collate.cpp
-  test_std_convert.cpp
-  test_std_formatting.cpp
+  test_config
+  test_utf
+  test_date_time
+  test_ios_prop
+  test_codepage_converter
+  test_codepage
+  test_message
+  test_generator
+  test_collate
+  test_convert
+  test_boundary
+  test_formatting
+  test_icu_vs_os_timezone
+  test_winapi_collate
+  test_winapi_convert
+  test_winapi_formatting
+  test_posix_collate
+  test_posix_convert
+  test_posix_formatting
+  test_std_collate
+  test_std_convert
+  test_std_formatting
   )

-#
-locale_test_(run_timer_test) 
+foreach (_test ${TESTS})
+  locale_test_run (${_test})
+endforeach (_test ${TESTS})
diff -urp boost_1_48_0/libs/math/test/CMakeLists.txt boost_1_48_0.pm/libs/math/test/CMakeLists.txt
--- boost_1_48_0/libs/math/test/CMakeLists.txt	2012-01-16 20:26:38.561583702 +0100
+++ boost_1_48_0.pm/libs/math/test/CMakeLists.txt	2012-01-16 21:18:20.016654473 +0100
@@ -7,6 +7,8 @@
 boost_additional_test_dependencies(math BOOST_DEPENDS test regex)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR})

+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")
+
 boost_test_run(common_factor_test DEPENDS boost_unit_test_framework)
 boost_test_run(octonion_test 
   ../octonion/octonion_test.cpp
@@ -28,6 +30,6 @@ foreach(mathtest
     hypot_test
     )

-  boost_test_run(${mathtest} DEPENDS boost_test_exec_monitor)
+  boost_test_run(${mathtest} DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
 endforeach()

diff -urp boost_1_48_0/libs/move/test/CMakeLists.txt boost_1_48_0.pm/libs/move/test/CMakeLists.txt
--- boost_1_48_0/libs/move/test/CMakeLists.txt	2012-01-16 20:26:38.562583702 +0100
+++ boost_1_48_0.pm/libs/move/test/CMakeLists.txt	2012-01-16 22:11:08.207726759 +0100
@@ -6,17 +6,18 @@ boost_additional_test_dependencies (move

 #
 set (TESTS
-  doc_clone_ptr
-  doc_construct_forward
-  doc_file_descriptor
-  doc_how_works
-  doc_move_algorithms
-  doc_move_inserter
-  doc_move_iterator
+    back_move_inserter
+    construct_forward
+    conversion_test
+    copy_elision_test
+    copy_move_optimization
+    move
+    move_algorithm
+    move_iterator
 )

 foreach (_test ${TESTS})
-  boost_test_run (${_test} DEPENDS boost_unit_test_framework)
+  boost_test_run (${_test} ${_test}.cpp DEPENDS boost_unit_test_framework)
 endforeach (_test ${TESTS})

 if (WIN32)
diff -urp boost_1_48_0/libs/multi_array/test/CMakeLists.txt boost_1_48_0.pm/libs/multi_array/test/CMakeLists.txt
--- boost_1_48_0/libs/multi_array/test/CMakeLists.txt	2012-01-16 20:26:38.568583702 +0100
+++ boost_1_48_0.pm/libs/multi_array/test/CMakeLists.txt	2012-01-16 21:19:05.431655516 +0100
@@ -30,18 +30,21 @@ boost_test_compile_fail(fail_ref_cview)
 boost_test_compile_fail(fail_ref_cview2)
 boost_test_compile_fail(fail_ref_cview3)

-boost_test_run(constructors DEPENDS boost_test_exec_monitor)
-boost_test_run(access DEPENDS boost_test_exec_monitor)
-boost_test_run(compare DEPENDS boost_test_exec_monitor)
-boost_test_run(iterators DEPENDS boost_test_exec_monitor)
-boost_test_run(slice DEPENDS boost_test_exec_monitor)
-boost_test_run(assign DEPENDS boost_test_exec_monitor)
-boost_test_run(assign_to_array DEPENDS boost_test_exec_monitor)
-boost_test_run(index_bases DEPENDS boost_test_exec_monitor)
-boost_test_run(storage_order DEPENDS boost_test_exec_monitor)
-boost_test_run(reshape DEPENDS boost_test_exec_monitor)
-boost_test_run(range1 DEPENDS boost_test_exec_monitor)
-boost_test_run(idxgen1 DEPENDS boost_test_exec_monitor)
-boost_test_run(stl_interaction DEPENDS boost_test_exec_monitor)
-boost_test_run(resize DEPENDS boost_test_exec_monitor)
+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")
+
+boost_test_run(constructors DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(access DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(compare DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(iterators DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(slice DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(assign DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(assign_to_array DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(index_bases DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(storage_order DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(reshape DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(range1 DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(idxgen1 DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(stl_interaction DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(resize DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+
 boost_test_compile(concept_checks)
diff -urp boost_1_48_0/libs/numeric/interval/test/CMakeLists.txt boost_1_48_0.pm/libs/numeric/interval/test/CMakeLists.txt
--- boost_1_48_0/libs/numeric/interval/test/CMakeLists.txt	2012-01-16 20:26:38.571583702 +0100
+++ boost_1_48_0.pm/libs/numeric/interval/test/CMakeLists.txt	2012-01-16 18:04:23.779388960 +0100
@@ -25,10 +25,10 @@ message(STATUS "numeric/interval/test/ov
 boost_test_run(pi)
 boost_test_run(pow)

-boost_test_run(cmp DEPENDS boost_test_exec_monitor)
-boost_test_run(cmp_exn DEPENDS boost_test_exec_monitor)
-boost_test_run(cmp_exp DEPENDS boost_test_exec_monitor)
-boost_test_run(cmp_lex DEPENDS boost_test_exec_monitor)
-boost_test_run(cmp_set DEPENDS boost_test_exec_monitor)
-boost_test_run(cmp_tribool DEPENDS boost_test_exec_monitor)
-boost_test_run(test_float DEPENDS boost_test_exec_monitor)
+boost_test_run(cmp DEPENDS test_exec_monitor)
+boost_test_run(cmp_exn DEPENDS test_exec_monitor)
+boost_test_run(cmp_exp DEPENDS test_exec_monitor)
+boost_test_run(cmp_lex DEPENDS test_exec_monitor)
+boost_test_run(cmp_set DEPENDS test_exec_monitor)
+boost_test_run(cmp_tribool DEPENDS test_exec_monitor)
+boost_test_run(test_float DEPENDS test_exec_monitor)
diff -urp boost_1_48_0/libs/phoenix/test/CMakeLists.txt boost_1_48_0.pm/libs/phoenix/test/CMakeLists.txt
--- boost_1_48_0/libs/phoenix/test/CMakeLists.txt	2012-01-16 20:26:38.575583702 +0100
+++ boost_1_48_0.pm/libs/phoenix/test/CMakeLists.txt	2012-01-16 22:09:50.184724968 +0100
@@ -30,24 +30,195 @@ IF( ${CMAKE_CXX_COMPILER} MATCHES "icpc"
     #TODO// Turn off debug symbols?
 ENDIF( ${CMAKE_CXX_COMPILER} MATCHES "icpc" )

-set(TESTS 
-algorithm
-bll_compatibility
-bind
-boost_bind_compatibility
-container
-core
-function
-include
-object
-operator
-regression
-scope
-statement
-stdlib)
+set(RUNTIME_TESTS
+    stdlib/cmath
+    scope/dynamic_tests
+    scope/bug3289
+    scope/lambda_tests_phx2
+    scope/bug_000008
+    scope/let_tests
+    scope/lambda_tests
+    scope/this
+    regression/bug4853
+    regression/bug5626
+    regression/bug5968
+    statement/if_tests
+    statement/exceptions
+    statement/switch_tests
+    statement/loops_tests
+    operator/unary_tests
+    operator/misc_binary_tests
+    operator/if_else_tests
+    operator/io_tests
+    operator/bitwise_tests
+    operator/comparison_tests
+    operator/member
+    operator/arithmetic_tests
+    operator/logical_tests
+    operator/self_tests
+    bll_compatibility/operator_tests_simple
+    bll_compatibility/switch_construct
+    bll_compatibility/phoenix_control_structures
+    bll_compatibility/is_instance_of_test
+    bll_compatibility/extending_rt_traits
+    bll_compatibility/istreambuf_test
+    bll_compatibility/member_pointer_test
+    bll_compatibility/ret_test
+    bll_compatibility/algorithm_test
+    bll_compatibility/bll_and_function
+    bll_compatibility/exception_test
+    bll_compatibility/result_of_tests
+    bll_compatibility/rvalue_test
+    bll_compatibility/cast_test
+    bll_compatibility/bind_tests_simple
+    bll_compatibility/control_structures
+    bll_compatibility/bind_tests_advanced
+    bll_compatibility/bind_tests_simple_f_refs
+    bll_compatibility/constructor_tests
+    function/adapt_function
+    function/function_tests
+    function/function_tests_phx2
+    object/cast_tests
+    object/new_delete_tests
+    algorithm/querying
+    algorithm/transformation3
+    algorithm/transformation1
+    algorithm/transformation2
+    algorithm/transformation4
+    algorithm/querying2
+    algorithm/iteration
+    bind/bind_function_object_tests
+    bind/bind_function_tests
+    bind/bug5782
+    bind/bind_member_function_tests
+    bind/bind_member_variable_tests
+    bind/bind_function_object_tests_phx2
+    include/phoenix
+    include/version
+    include/core
+    include/object
+    include/scope/let
+    include/scope/local_variable
+    include/scope/lambda
+    include/scope/dynamic
+    include/scope/scoped_environment
+    include/scope/this
+    include/operator
+    include/fusion/at
+    include/stl
+    include/statement/sequence
+    include/statement/do_while
+    include/statement/while
+    include/statement/if
+    include/statement/try_catch
+    include/statement/throw
+    include/statement/switch
+    include/statement/for
+    include/stl/algorithm
+    include/stl/algorithm/transformation
+    include/stl/algorithm/querying
+    include/stl/algorithm/iteration
+    include/stl/container
+    include/stl/container/container
+    include/operator/self
+    include/operator/io
+    include/operator/comparison
+    include/operator/logical
+    include/operator/if_else
+    include/operator/member
+    include/operator/bitwise
+    include/operator/arithmetic
+    include/function/function
+    include/object/delete
+    include/object/new
+    include/object/construct
+    include/object/dynamic_cast
+    include/object/const_cast
+    include/object/static_cast
+    include/object/reinterpret_cast
+    include/bind/bind_member_variable
+    include/bind/bind_member_function
+    include/fusion_at
+    include/support/iterate
+    include/support/preprocessor/round
+    include/statement
+    include/fusion
+    include/bind
+    include/function
+    include/scope
+    include/core/domain
+    include/core/environment
+    include/core/expression
+    include/core/meta_grammar
+    include/core/argument
+    include/core/actor
+    include/core/visit_each
+    include/core/is_actor
+    include/core/call
+    include/core/function_equal
+    include/core/value
+    include/core/is_nullary
+    include/core/terminal
+    include/core/nothing
+    include/core/limits
+    include/core/arity
+    include/core/reference
+    boost_bind_compatibility/bind_stdcall_test
+    boost_bind_compatibility/bind_test
+    boost_bind_compatibility/bind_fnobj2_test
+    boost_bind_compatibility/bind_dm3_test
+    boost_bind_compatibility/bind_rvalue_test
+    boost_bind_compatibility/bind_dm_test
+    boost_bind_compatibility/bind_placeholder_test
+    boost_bind_compatibility/bind_visit_test
+    boost_bind_compatibility/bind_rel_test
+    boost_bind_compatibility/bind_unary_addr
+    boost_bind_compatibility/bind_eq3_test
+    boost_bind_compatibility/bind_cv_test
+    boost_bind_compatibility/bind_lookup_problem_test
+    boost_bind_compatibility/bind_fastcall_test
+    boost_bind_compatibility/bind_fastcall_mf_test
+    boost_bind_compatibility/bind_not_test
+    boost_bind_compatibility/bind_stdcall_mf_test
+    boost_bind_compatibility/bind_cdecl_mf_test
+    boost_bind_compatibility/bind_stateful_test
+    boost_bind_compatibility/bind_and_or_test
+    boost_bind_compatibility/bind_eq_test
+    boost_bind_compatibility/bind_eq2_test
+    boost_bind_compatibility/bind_rv_sp_test
+    boost_bind_compatibility/bind_function_test
+    boost_bind_compatibility/bind_mf2_test
+    boost_bind_compatibility/bind_dm2_test
+    boost_bind_compatibility/bind_fn2_test
+    boost_bind_compatibility/bind_ref_test
+    boost_bind_compatibility/bind_const_test
+    container/container_tests3a
+    container/container_tests4b
+    container/container_tests5a
+    container/container_tests1b
+    container/container_tests5b
+    container/container_tests1a
+    container/container_tests2b
+    container/container_tests6b
+    container/container_tests2a
+    container/container_tests4a
+    container/container_tests6a
+    container/container_tests3b
+    core/primitives_tests
+)

-foreach(TEST ${TESTS})
-  boost_test_run(${TEST} DEPENDS boost_unit_test_framework)
+set(COMPILE_TESTS
+    include/operator/operator
+    include/bind/bind
+    include/core/test
+)
+
+foreach(TEST ${COMPILE_TESTS})
+    boost_test_compile(${TEST} "${TEST}.cpp" DEPENDS boost_unit_test_framework)
+endforeach(TEST ${TESTS})
+
+foreach(TEST ${RUNTIME_TESTS})
+    boost_test_run(${TEST} "${TEST}.cpp" DEPENDS boost_unit_test_framework)
 endforeach(TEST ${TESTS})

 if(WIN32)
diff -urp boost_1_48_0/libs/pool/test/CMakeLists.txt boost_1_48_0.pm/libs/pool/test/CMakeLists.txt
--- boost_1_48_0/libs/pool/test/CMakeLists.txt	2012-01-16 20:26:38.577583702 +0100
+++ boost_1_48_0.pm/libs/pool/test/CMakeLists.txt	2012-01-16 21:15:09.367650120 +0100
@@ -6,4 +6,6 @@
 #
 boost_additional_test_dependencies(pool BOOST_DEPENDS test)

-boost_test_run(test_pool_alloc DEPENDS boost_test_exec_monitor)
+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")
+
+boost_test_run(test_pool_alloc DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
diff -urp boost_1_48_0/libs/program_options/test/CMakeLists.txt boost_1_48_0.pm/libs/program_options/test/CMakeLists.txt
--- boost_1_48_0/libs/program_options/test/CMakeLists.txt	2012-01-16 20:26:38.580583702 +0100
+++ boost_1_48_0.pm/libs/program_options/test/CMakeLists.txt	2012-01-16 21:05:58.935637561 +0100
@@ -8,26 +8,18 @@ boost_additional_test_dependencies(progr

 set(PROGRAM_OPTIONS_LIBRARIES
   boost_program_options
-  boost_test_exec_monitor)
+  test_exec_monitor)

-set(BOOST_TEST_EXEC_MONITOR_SUFFIX "")
-if (NOT BUILD_SINGLE_THREADED)
-  set(BOOST_TEST_EXEC_MONITOR_SUFFIX "-mt")
-endif()
-set(BOOST_TEST_EXEC_MONITOR_SUFFIX "${BOOST_TEST_EXEC_MONITOR_SUFFIX}-static")
-if (NOT BUILD_RELEASE)
-  set(BOOST_TEST_EXEC_MONITOR_SUFFIX "${BOOST_TEST_EXEC_MONITOR_SUFFIX}-debug")
-endif()
+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")

 macro(program_options_test_run TESTNAME)
   boost_test_run(${TESTNAME} 
     STATIC
-    DEPENDS boost_program_options boost_test_exec_monitor )
+    DEPENDS boost_program_options ${DEP_BOOST_TEST_EXEC_MONITOR})
   boost_test_run("${TESTNAME}_dll"
     ${TESTNAME}.cpp
     SHARED
-    DEPENDS boost_program_options 
-            "boost_test_exec_monitor${BOOST_TEST_EXEC_MONITOR_SUFFIX}")
+    DEPENDS boost_program_options ${DEP_BOOST_TEST_EXEC_MONITOR})
 endmacro(program_options_test_run)

 program_options_test_run(options_description_test) 
diff -urp boost_1_48_0/libs/ratio/test/CMakeLists.txt boost_1_48_0.pm/libs/ratio/test/CMakeLists.txt
--- boost_1_48_0/libs/ratio/test/CMakeLists.txt	2012-01-16 20:26:38.590583702 +0100
+++ boost_1_48_0.pm/libs/ratio/test/CMakeLists.txt	2012-01-16 21:58:12.288709068 +0100
@@ -6,22 +6,76 @@
 #
 boost_additional_test_dependencies(ratio BOOST_DEPENDS test)

-#
-set(TESTS 
-ratio_arithmetic
-ratio_comparison
-ratio_extensions
-ratio_io
-ratio_ratio)
+set(COMPILE_TESTS
+    ratio_comparison/ratio_less_equal_pass
+    ratio_comparison/ratio_equal_pass
+    ratio_comparison/ratio_not_equal_pass
+    ratio_comparison/ratio_less_pass
+    ratio_comparison/ratio_greater_equal_pass
+    ratio_comparison/ratio_greater_pass
+    ratio_ratio/ratio3_fail
+    ratio_ratio/ratio4_fail
+    ratio_ratio/ratio2_fail
+    ratio_ratio/ratio1_fail
+    ratio_io/ratio_io_fail
+    ratio_arithmetic/ratio_add_3_fail
+    ratio_arithmetic/ratio_add_pass
+    ratio_arithmetic/ratio_divide_pass
+    ratio_arithmetic/ratio_multiply_pass
+    ratio_arithmetic/ratio_add_2_fail
+    ratio_arithmetic/ratio_subtract_pass
+    ratio_arithmetic/ratio_subtract_fail
+    ratio_arithmetic/ratio_multiply_fail
+    ratio_arithmetic/ratio_divide_fail
+    ratio_arithmetic/ratio_add_fail
+    typedefs_pass
+    ratio_extensions/mpl_less_equal_pass
+    ratio_extensions/mpl_greater_pass
+    ratio_extensions/mpl_negate_pass
+    ratio_extensions/mpl_equal_to_pass
+    ratio_extensions/mpl_not_equal_to_pass
+    ratio_extensions/mpl_divides_pass
+    ratio_extensions/mpl_abs_pass
+    ratio_extensions/mpl_less_pass
+    ratio_extensions/mpl_greater_equal_pass
+    ratio_extensions/mpl_times_pass
+    ratio_extensions/mpl_sign_pass
+    ratio_extensions/mpl_arithmetic_pass
+    ratio_extensions/mpl_rational_constant_pass
+    ratio_extensions/mpl_plus_pass
+    ratio_extensions/mpl_comparison_pass
+    ratio_extensions/mpl_minus_pass
+)
+
+set(RUNTIME_TESTS
+    ratio_ratio/ratio_pass
+    ratio_test
+    ratio_io/ratio_io_pass
+    ratio_extensions/ratio_ext_pass
+)
+
+foreach(TEST ${COMPILE_TESTS})
+    string(REGEX MATCH "_pass$" IS_PASS ${TEST})
+    if(IS_PASS)
+	boost_test_compile(${TEST} "${TEST}.cpp"
+		DEPENDS boost_unit_test_framework)
+    else()
+	boost_test_compile_fail(${TEST} "${TEST}.cpp"
+		DEPENDS boost_unit_test_framework)
+    endif()
+endforeach(TEST ${TESTS})

-foreach(TEST ${TESTS})
-  boost_test_run(${TEST} DEPENDS boost_unit_test_framework)
+foreach(TEST ${RUNTIME_TESTS})
+    string(REGEX MATCH "_pass$" IS_PASS ${TEST})
+    if(IS_PASS)
+	boost_test_run_fail(${TEST} "${TEST}.cpp"
+		DEPENDS boost_unit_test_framework)
+    else()
+	boost_test_run(${TEST} "${TEST}.cpp"
+		DEPENDS boost_unit_test_framework)
+    endif()
 endforeach(TEST ${TESTS})

 if(WIN32)
   message("Need to turn on iterator debugging")
 endif(WIN32)
-
-#
-ratio_test_run(ratio_test) 
-ratio_test_run(typedefs_pass) 
diff -urp boost_1_48_0/libs/signals2/test/CMakeLists.txt boost_1_48_0.pm/libs/signals2/test/CMakeLists.txt
--- boost_1_48_0/libs/signals2/test/CMakeLists.txt	2012-01-16 20:26:38.597583702 +0100
+++ boost_1_48_0.pm/libs/signals2/test/CMakeLists.txt	2012-01-16 21:15:35.281650746 +0100
@@ -4,6 +4,8 @@
 # Distributed under the Boost Software License, Version 1.0.
 # See http://www.boost.org/LICENSE_1_0.txt
 #
+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")
+
 foreach(test
     connection_test
     dead_slot_test
@@ -19,7 +21,7 @@ foreach(test
     trackable_test
     track_test
     )
-  boost_test_run(${test} DEPENDS boost_test_exec_monitor)
+  boost_test_run(${test} DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
 endforeach()

 boost_test_run(mutex_test DEPENDS boost_thread)
diff -urp boost_1_48_0/libs/statechart/test/CMakeLists.txt boost_1_48_0.pm/libs/statechart/test/CMakeLists.txt
--- boost_1_48_0/libs/statechart/test/CMakeLists.txt	2012-01-16 20:26:38.649583703 +0100
+++ boost_1_48_0.pm/libs/statechart/test/CMakeLists.txt	2012-01-16 18:04:23.577388954 +0100
@@ -30,22 +30,22 @@ macro(statechart_run TESTNAME)
   boost_test_run("${TESTNAME}Normal"
     ${TESTNAME}.cpp
     COMPILE_FLAGS "-DBOOST_DISABLE_THREADS"
-    DEPENDS boost_test_exec_monitor
+    DEPENDS test_exec_monitor
     )
   boost_test_run("${TESTNAME}Native"
     ${TESTNAME}.cpp
     COMPILE_FLAGS "-DBOOST_DISABLE_THREADS -DBOOST_STATECHART_USE_NATIVE_RTTI"
-    DEPENDS boost_test_exec_monitor
+    DEPENDS test_exec_monitor
     )
   boost_test_run("${TESTNAME}Relaxed"
     ${TESTNAME}.cpp
     COMPILE_FLAGS "-DBOOST_DISABLE_THREADS -DBOOST_STATECHART_RELAX_TRANSITION_CONTEXT"
-    DEPENDS boost_test_exec_monitor
+    DEPENDS test_exec_monitor
     )
   boost_test_run("${TESTNAME}Both"
     ${TESTNAME}.cpp
     COMPILE_FLAGS "-DBOOST_DISABLE_THREADS -DBOOST_STATECHART_USE_NATIVE_RTTI -DBOOST_STATECHART_RELAX_TRANSITION_CONTEXT"
-    DEPENDS boost_test_exec_monitor
+    DEPENDS test_exec_monitor
     )
 endmacro(statechart_run)

diff -urpN boost_1_48_0/libs/test/depend.cmake~ boost_1_48_0.pm/libs/test/depend.cmake~
--- boost_1_48_0/libs/test/depend.cmake~	1970-01-01 01:00:00.000000000 +0100
+++ boost_1_48_0.pm/libs/test/depend.cmake~	2012-01-16 20:50:35.462616464 +0100
@@ -0,0 +1,11 @@
+set (DEP_BOOST_TEST_EXEC_MONITOR "boost_test_exec_monitor")
+
+if (NOT BUILD_SINGLE_THREADED)
+  set (DEP_BOOST_TEST_EXEC_MONITOR "${DEP_BOOST_TEST_EXEC_MONITOR}-mt")
+endif (NOT BUILD_SINGLE_THREADED)
+
+set (DEP_BOOST_TEST_EXEC_MONITOR "${DEP_BOOST_TEST_EXEC_MONITOR}-static")
+
+if (NOT BUILD_RELEASE)
+  set (DEP_BOOST_TEST_EXEC_MONITOR "${DEP_BOOST_TEST_EXEC_MONITOR}-debug")
+endif (NOT BUILD_RELEASE)
diff -urp boost_1_48_0/libs/tokenizer/test/CMakeLists.txt boost_1_48_0.pm/libs/tokenizer/test/CMakeLists.txt
--- boost_1_48_0/libs/tokenizer/test/CMakeLists.txt	2012-01-16 20:26:38.657583705 +0100
+++ boost_1_48_0.pm/libs/tokenizer/test/CMakeLists.txt	2012-01-16 21:14:52.199649553 +0100
@@ -6,8 +6,9 @@
 #
 boost_additional_test_dependencies(tokenizer BOOST_DEPENDS test config detail iterator utility
array intrusive)

-boost_test_run(examples examples.cpp 
-  DEPENDS boost_test_exec_monitor)
+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")
+
+boost_test_run(examples examples.cpp DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
 boost_test_run(simple_example_1 simple_example_1.cpp)
 boost_test_run(simple_example_2 simple_example_2.cpp)
 boost_test_run(simple_example_3 simple_example_3.cpp)
diff -urp boost_1_48_0/libs/tuple/test/CMakeLists.txt boost_1_48_0.pm/libs/tuple/test/CMakeLists.txt
--- boost_1_48_0/libs/tuple/test/CMakeLists.txt	2012-01-16 20:26:38.659583705 +0100
+++ boost_1_48_0.pm/libs/tuple/test/CMakeLists.txt	2012-01-16 21:10:16.679643431 +0100
@@ -6,6 +6,7 @@
 #
 boost_additional_test_dependencies(tuple BOOST_DEPENDS test)

+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")

-boost_test_run(tuple_test_bench DEPENDS boost_test_exec_monitor)
-boost_test_run(io_test DEPENDS boost_test_exec_monitor)
+boost_test_run(tuple_test_bench DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(io_test DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
diff -urp boost_1_48_0/libs/utility/enable_if/test/CMakeLists.txt boost_1_48_0.pm/libs/utility/enable_if/test/CMakeLists.txt
--- boost_1_48_0/libs/utility/enable_if/test/CMakeLists.txt	2012-01-16 20:26:38.666583705 +0100
+++ boost_1_48_0.pm/libs/utility/enable_if/test/CMakeLists.txt	2012-01-16 21:00:38.222630238 +0100
@@ -4,6 +4,9 @@
 # Distributed under the Boost Software License, Version 1.0.
 # See http://www.boost.org/LICENSE_1_0.txt
 #
+
+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")
+
 foreach(T
     constructors
     dummy_arg_disambiguation
@@ -14,7 +17,5 @@ foreach(T
     no_disambiguation
     partial_specializations
     )
-  boost_test_run(${T} DEPENDS boost_test_exec_monitor)
+  boost_test_run(${T} DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
 endforeach()
-
-
diff -urp boost_1_48_0/libs/utility/swap/test/CMakeLists.txt boost_1_48_0.pm/libs/utility/swap/test/CMakeLists.txt
--- boost_1_48_0/libs/utility/swap/test/CMakeLists.txt	2012-01-16 20:26:38.667583705 +0100
+++ boost_1_48_0.pm/libs/utility/swap/test/CMakeLists.txt	2012-01-16 21:02:48.199633169 +0100
@@ -12,9 +12,7 @@ foreach(T 
   boost_test_compile(${T})
 endforeach() 

-
-#     [ run primitive.cpp ../../../test/build//boost_test_exec_monitor/<link>static                      ]
-
+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")

 foreach(T
     primitive
@@ -36,6 +34,6 @@ foreach(T
     array_of_class
     array_of_int
     array_of_template)
-  boost_test_run(${T} DEPENDS boost_test_exec_monitor)
+  boost_test_run(${T} DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
 endforeach()

diff -urp boost_1_48_0/libs/utility/test/CMakeLists.txt boost_1_48_0.pm/libs/utility/test/CMakeLists.txt
--- boost_1_48_0/libs/utility/test/CMakeLists.txt	2012-01-16 20:26:38.667583705 +0100
+++ boost_1_48_0.pm/libs/utility/test/CMakeLists.txt	2012-01-16 21:04:04.639634954 +0100
@@ -6,6 +6,8 @@
 #
 boost_additional_test_dependencies(utility BOOST_DEPENDS test)

+include("${CMAKE_SOURCE_DIR}/libs/test/depend.cmake")
+
 boost_test_run(addressof_fn_test ../addressof_fn_test.cpp)
 boost_test_run(addressof_test ../addressof_test.cpp)
 boost_test_run(addressof_test2 ../addressof_test2.cpp)
@@ -15,26 +17,22 @@ boost_test_run(binary_search_test ../bin
 boost_test_run(call_traits_test ../call_traits_test.cpp ARGS -u)
 boost_test_compile_fail(checked_delete_test ../checked_delete_test.cpp)
 boost_test_run(compressed_pair_test 
-  ../compressed_pair_test 
-  DEPENDS boost_test_exec_monitor)
+  ../compressed_pair_test  DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
 boost_test_run(current_function_test ../current_function_test.cpp)
 boost_test_run(iterators_test 
-  ../iterators_test.cpp 
-  DEPENDS boost_test_exec_monitor)
-boost_test_run(next_prior_test DEPENDS boost_test_exec_monitor)
+  ../iterators_test.cpp  DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
+boost_test_run(next_prior_test DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
 boost_test_compile_fail(noncopyable_test ../noncopyable_test.cpp)
 boost_test_run(numeric_traits_test ../numeric_traits_test.cpp)
 if (${CMAKE_SYSTEM} MATCHES "FreeBSD-.*")
 boost_test_compile_fail("operators_test_compilerbug")
 elseif(${CMAKE_SYSTEM} MATCHES "FreeBSD-.*")
 boost_test_run(operators_test 
-  ../operators_test.cpp
-  DEPENDS boost_test_exec_monitor)
+  ../operators_test.cpp DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
 endif(${CMAKE_SYSTEM} MATCHES "FreeBSD-.*")
 boost_test_compile(ref_ct_test ../ref_ct_test.cpp)
 boost_test_run(ref_test 
-  ../ref_test.cpp
-  DEPENDS boost_test_exec_monitor)
+  ../ref_test.cpp DEPENDS ${DEP_BOOST_TEST_EXEC_MONITOR})
 boost_test_compile(result_of_test)
 boost_test_run(shared_iterator_test ../shared_iterator_test.cpp)
 boost_test_run(value_init_test ../value_init_test.cpp)
@@ -44,4 +42,4 @@ boost_test_compile_fail(value_init_test_
   ../value_init_test_fail2.cpp)
 boost_test_compile_fail(value_init_test_fail3
   ../value_init_test_fail3.cpp)
-boost_test_run(verify_test ../verify_test.cpp)
\ No newline at end of file
+boost_test_run(verify_test ../verify_test.cpp)
_______________________________________________
Boost-cmake mailing list
Boost-cmake@...
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake
Mourad | 5 Jan 15:10

About BoostConfig*.cmake

Hi,

I hope this is the right place to send requests/"bug" reports about
boost-cmake project.

I'm using boost-cmake to build boost installers for Windows (using
cpack + NSIS). I noticed that recent versions of CMake can find boost
either in a "module" mode or a "config" mode. The problem I have is
about the config mode. In fact, in the generated BoostConfig*.cmake
files, the include/library dirs paths are hardcoded with the value of
CMAKE_INSTALL_PREFIX.

These hardcoded paths make the config mode of find_package(Boost...)
fail whenever Boost is installed (via my generated installer) to a
different folder than CMAKE_INSTALL_PREFIX used when building boost.
So, I suggest to avoid hardcoded paths, and prefer using relative
paths instead. Since Boost_DIR will be set to the location of
BoostConfig.cmake, we can retrieve the include/library dirs from
Boost_DIR.

Cheers,
Mourad
C. Bergström | 16 Sep 13:03
Favicon

Dead project?


Did this project die last July or what?  Anyone interested to keep it 
going... ?  Feel free to email me privately if you prefer not to post 
blunt truth to the list..

Thanks
boost | 15 Sep 21:20
Favicon

Cross Compile for Windows CE

Hello.
 
I need to compile Boost for Windows CE. This is unfortunate, since there are two things I know nearly nothing about: Boost.Build, and Windows development. The release notes of 1.47 indicate that it has been successfully compiled for Windows CE using STLport, but that was using Boost.Build and for reasons I won't go into here (wrong mailing list), it didn't work for me. Thankfully, my problems with Boost.Build can be helped by the existence of the CMake project for Boost (thanks!). Since I don't know much about Windows, I thought I'd try and use CEgcc on Linux.
 
I feel like I'm making good progress, but I eventually hit this error:
 
boost/config/requires_threads.hpp:47:5: error: #error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
 
-mthreads is part of the C and CXX flags-- the problem is that BOOST_PLATFORM_CONFIG is not defined by boost/config/select_platform_config.hpp. What should this be defined to for Windows CE? I figured it should be boost/config/platform/win32.hpp (which would then define BOOST_HAS_WINTHREADS, which would solve the above error). How can the release notes claim this works when select_platform_config.hpp doesn't seem to handle Windows CE cases? If BOOST_PLATFORM_CONFIG does indeed need to be boost/config/platform/win32.hpp, then I need to define either _WIN32, __WIN32__, or WIN32. My first reaction is that none of these should be used for compiling for CE. I would welcome any ideas!
 
Note that I would also welcome suggestions on how to compile for Windows CE using STLport with CMake on Windows. Thank you!
 
Kyle
_______________________________________________
Boost-cmake mailing list
Boost-cmake@...
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake
Denis Arnaud | 16 Feb 15:25
Gravatar

Re: find_package and Boost.Cmake

>From one of my colleagues...

---------- Forwarded message ----------
From: Daniel Perez
Date: 2011/2/16
Subject: Re: Fwd: [Boost-cmake] find_package and Boost.Cmake


I've been using an ugly trick for that purpose but I guess there might be a more beautiful way to do so by tweaking PATHS or other CMake variables.

I disable /usr/include when I include Boost headers since it seems that /usr/include always get first in find_package (I insist: there might be a nicer way to tell CMake which paths to use, but I didn't find). I do as follows:

1) Unzip a Boost distribution somewhere in your project's sources and enable it with include_directories(). I put Boost in the root of my sources so that I don't have to enable it with include_directories() since the root of the sources is always included by default in my projects.

2) In your CMakeLists.txt you add:

  find_package( Boost 1.43.0 )
 if(Boost_FOUND)
   include_directories(${Boost_INCLUDE_DIRS})
 else()
   set (USE_IN_SOURCE_TREE_BOOST true)
 endif()

so USE_IN_SOURCE_TREE_BOOST is defined in the case Boost is not found in the system. If you always want to use the in-source Boost, define that variable unconditionally. Take into consideration that I'm assuming that if you ship your own Boost version it means that you don't care about the version checks and the include paths checks. To note that this assumption only holds for header-only distributions of Boost.

3) You disable /usr/include for the desired set of headers by clearing STANDARD_INCLUDE_DIR:

#ifdef USE_IN_SOURCE_TREE_BOOST
 #define STANDARD_INCLUDE_DIR
#endif

// BOOST Gregorian
#include <boost/date_time/gregorian/gregorian.hpp>
// BOOST Spirit
#include <boost/spirit/include/qi.hpp>
// BOOST_TYPEOF
#include <boost/typeof/typeof.hpp>
// This is needed to use Fusion & maps
#include <boost/fusion/include/std_pair.hpp>
// Phoenix Bind, << operator for val() and some others,
// construct<> and at_c
#include <boost/spirit/include/phoenix.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_object.hpp>
#include <boost/spirit/home/phoenix/bind/bind_function.hpp>
#include <boost/spirit/include/phoenix_fusion.hpp>

I clear this variable in a .cpp file so it's not dangerous.

I hope it helps. And please, let me know if you find a better way of doing this (by supplying PATHS or the like).

Dani
_______________________________________________
Boost-cmake mailing list
Boost-cmake@...
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake
Travis Jensen | 15 Feb 03:53
Picon
Gravatar

find_package and Boost.Cmake

I'm trying to figure out how to ensure my build uses my internal version of boost. My directory structure looks like:


./CMakeLists.txt
./mylib/CMakeLists.txt
./dependencies/boost/...

How do I structure my find_package to use the internal one?  

I've tried this:

set(BOOST_ROOT "${DEPENDENCY_DIR}/boost")
find_package( Boost 
              COMPONENTS 
                  thread-mt system-mt program_options-mt date_time-mt
                  random-mt
              PATHS ${BOOST_ROOT} 
)

But that gives me the following error:

CMake Error at dependencies/boost/tools/build/CMake/BoostConfig.cmake:98 (boost_report_pretty):
  Unknown CMake command "boost_report_pretty".
Call Stack (most recent call first):
  CMakeLists.txt:287 (find_package)

If I don't specify PATHS (even if I specify BOOST_ROOT), it uses the boost I have installed on my system.

I can't find any documentation on how to actually use Boost.Cmake. :) Help greatly appreciated.

tj
--
Travis Jensen

Read the Software Maven <at>  http://softwaremaven.innerbrane.com/
Read my LinkedIn profile <at>  http://www.linkedin.com/in/travisjensen
Read my Twitter mumblings <at>  http://twitter.com/SoftwareMaven
Send me email <at>  travis.jensen-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org

*What kind of guy calls himself the Software Maven???*

_______________________________________________
Boost-cmake mailing list
Boost-cmake@...
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake
Brian Davis | 26 Oct 22:28
Picon

[Serialization] BUILD_BOOST_WSERIALIZATION appears to be ignored by Boost.CMake


A grep of boost-cmake-1_41_0

$ grep -R WSERIALIZATION  *
boost-cmake-1_41_0/tools/build/CMake/docs/build/html/build_configuration.html:BUILD_BOOST_WSERIALIZATION       ON
boost-cmake-1_41_0/tools/build/CMake/docs/build/html/_sources/build_configuration.txt:   BUILD_BOOST_WSERIALIZATION       ON
boost-cmake-1_41_0/tools/build/CMake/docs/source/build_configuration.rst:   BUILD_BOOST_WSERIALIZATION       ON

so it only appears in the documentation

And lowercase search results in:
 grep -R wserialization  *
boost-cmake-1_41_0/boost/archive/detail/auto_link_warchive.hpp:#define BOOST_LIB_NAME boost_wserialization
boost-cmake-1_41_0/Jamroot:explicit-alias wserialization : libs/serialization/build//boost_wserialization ;
boost-cmake-1_41_0/libs/serialization/build/Jamfile.v2:lib boost_wserialization
boost-cmake-1_41_0/libs/serialization/build/Jamfile.v2:boost-install boost_serialization boost_wserialization ;
boost-cmake-1_41_0/libs/serialization/src/CMakeLists.txt:boost_add_library(wserialization
boost-cmake-1_41_0/libs/serialization/test/CMakeLists.txt:        set(BSL_TEST_LIBRARIES "boost_wserialization" ${BSL_TEST_LIBRARIES})
boost-cmake-1_41_0/libs/serialization/util/test.jam:            ../build//boost_wserialization
boost-cmake-1_41_0/libs/serialization/vc7ide/LibraryW.vcproj:                           OutputFile="$(ConfigurationName)\boost_wserialization-vc71-mt-gd-1_41.dll"
boost-cmake-1_41_0/libs/serialization/vc7ide/LibraryW.vcproj:                   OutputDirectory="&quot;$(ProjectDir)..\..\..\bin\boost\libs\serialization\build\libboost_wserialization.lib\msvc-7.1\release\threading-multi\link-static&quot;"
boost-cmake-1_41_0/libs/serialization/vc7ide/LibraryW.vcproj:                           OutputFile="$(ConfigurationName)\libboost_wserialization-vc71-mt-sgd-1_41.lib"/>
boost-cmake-1_41_0/tools/build/CMake/install_me/BoostConfig.cmake:  set(Boost_FIND_COMPONENTS "filesystem;system;wserialization;thread;date_time")

so no dice.

This appears to be confirmed by:

https://svn.boost.org/trac/boost/ticket/3757

A simple addition of if/endif wrap of wserialization in boost-cmake-1_41_0/libs/serialization/src/CMakeLists.txt:

if( BUILD_BOOST_WSERIALIZATION )
boost_add_library(wserialization

  basic_text_wiprimitive.cpp
  basic_text_woprimitive.cpp
  text_wiarchive.cpp
  text_woarchive.cpp
  utf8_codecvt_facet.cpp
  xml_wgrammar.cpp
  xml_wiarchive.cpp
  xml_woarchive.cpp
  codecvt_null.cpp

  SHARED_COMPILE_FLAGS -DBOOST_SERIALIZATION_DYN_LINK=1
  DEPENDS boost_serialization
  )
endif()

makes it go poofdy.... gone.

and the unified diff:

--- libs/serialization/src/CMakeLists.txt    Mon Jan 19 16:26:36 1970
+++ libs/serialization/src/CMakeLists.txt    Mon Jan 19 16:26:36 1970
<at> <at> -39,6 +39,7 <at> <at>
   SHARED_COMPILE_FLAGS -DBOOST_SERIALIZATION_DYN_LINK=1
   )
 
+if( BUILD_BOOST_WSERIALIZATION )
 boost_add_library(wserialization
 
   basic_text_wiprimitive.cpp
<at> <at> -54,3 +55,4 <at> <at>
   SHARED_COMPILE_FLAGS -DBOOST_SERIALIZATION_DYN_LINK=1
   DEPENDS boost_serialization
   )
+endif()
\ No newline at end of file

I would like to know why wide char serialization is not working or how I and get it to work on VS2008 what I get is:

3>xml_wgrammar.obj : warning LNK4049: locally defined symbol ??_Darchive_exception <at> archive <at> boost <at> <at> QEAAXXZ (public: void __cdecl boost::archive::archive_exception::`vbase destructor'(void)) imported
3>xml_wiarchive.obj : warning LNK4049: locally defined symbol ??_Darchive_exception <at> archive <at> boost <at> <at> QEAAXXZ (public: void __cdecl boost::archive::archive_exception::`vbase destructor'(void)) imported
3>xml_woarchive.obj : warning LNK4049: locally defined symbol ??_Darchive_exception <at> archive <at> boost <at> <at> QEAAXXZ (public: void __cdecl boost::archive::archive_exception::`vbase destructor'(void)) imported
...
...
... yes there appears to be gobs and gobs more of this where ever this came from.
...
...
3>xml_wiarchive.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: unsigned int __cdecl boost::archive::detail::basic_iarchive::get_flags(void)const " (__imp_?get_flags <at> basic_iarchive <at> detail <at> archive <at> boost <at> <at> QEBAIXZ) referenced in function "protected: void __cdecl boost::archive::basic_xml_iarchive<class boost::archive::naked_xml_wiarchive>::load_end(char const *)" (?load_end <at> ?$basic_xml_iarchive <at> Vnaked_xml_wiarchive <at> archive <at> boost <at> <at> <at> archive <at> boost <at> <at> IEAAXPEBD <at> Z)


_______________________________________________
Boost-cmake mailing list
Boost-cmake@...
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake
Bill Hoffman | 7 Oct 15:17
Favicon
Gravatar

git://gitorious.org/~zeuner/boost/zeuners-boost-cmake.git and windows build

Hi,

I am trying to build 
git://gitorious.org/~zeuner/boost/zeuners-boost-cmake.git, branch 1.44.0.

I am getting some build errors:

1. Error linking boost_thread:

2>   Creating library

C:\Users\hoffman\Work\Projects\boost-cmake\zeuners-boost-cmake-build\lib\Debug\boost_thread-vc90-mt-gd-1_44.lib 
and object 
C:\Users\hoffman\Work\Projects\boost-cmake\zeuners-boost-cmake-build\lib\Debug\boost_thread-vc90-mt-gd-1_44.exp
1>tss_dll.obj : error LNK2019: unresolved external symbol 
_on_process_exit referenced in function _DllMain <at> 12
1>tss_dll.obj : error LNK2019: unresolved external symbol 
_on_thread_exit referenced in function _DllMain <at> 12
1>tss_dll.obj : error LNK2019: unresolved external symbol 
_on_thread_enter referenced in function _DllMain <at> 12

2. Errors about token_functions.hpp using
std::iswspace

6>greg_month.cpp
3>C:\Users\hoffman\Work\Projects\boost-cmake\zeuners-boost-cmake\boost/token_functions.hpp(218) 
: error C2039: 'iswspace' : is not a member of 'std'
3>

C:\Users\hoffman\Work\Projects\boost-cmake\zeuners-boost-cmake\boost/token_functions.hpp(217) 
: while compiling class template member function 'bool 
boost::tokenizer_detail::traits_extension<traits>::isspace(char)'
3>        with

3. some undefined stuff in text_wiarchive:

11>text_wiarchive.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) protected: __thiscall 
boost::archive::detail::basic_iarchive::~basic_iarchive(void)" 
(__imp_??1basic_iarchive <at> detail <at> archive <at> boost@@IAE <at> XZ) referenced in 
function "public: __thiscall 
boost::archive::detail::common_iarchive<class 
boost::archive::naked_text_wiarchive>::~common_iarchive<class 
boost::archive::naked_text_wiarchive>(void)" 
(??1?$common_iarchive <at> Vnaked_text_wiarchive <at> archive <at> boost@@@detail <at> archive <at> boost@@QAE <at> XZ)
11>xml_wiarchive.obj : error LNK2001: unresolved external s

Are these errors in upstream boost?  Or are the specific to the way 
CMake is building them?   Any thoughts on how to fix them?

Thanks.

-Bill

--

-- 
Bill Hoffman
Kitware, Inc.
28 Corporate Drive
Clifton Park, NY 12065
bill.hoffman@...
http://www.kitware.com
518 881-4905 (Direct)
518 371-3971 x105
Fax (518) 371-4573
John Faith | 23 Aug 20:50
Picon

Cross building 1.41.0 in OpenEmbedded

Hi,
I am trying to cross build 1.41.0 for ARM using OpenEmbedded, but see
a failure when linking date_time:

| CMAKE_AR-NOTFOUND cr ../../../lib/libboost_date_time-mt.a
CMakeFiles/boost_date_time-mt-static.dir/gregorian/greg_month.cpp.o
CMakeFiles/boost_date_time-mt-static.dir/gregorian/greg_weekday.cpp.o
CMakeFiles/boost_date_time-mt-static.dir/gregorian/date_generators.cpp.o
| Error running link command: No such file or directory

Where is a good place to start looking for the failure to find cross
ar?  Is this a boost or generic cmake problem? I'm not seeing anything
obvious in the log files.

Thanks!
John
Michael Jackson | 26 Aug 17:41
Favicon

Discussion of Boost-cmake moving forward


2010/8/24 Michael Jackson <mike.jackson@...>
I think we should have a branch for each boost release where people  
can go to get
boost with cmake and only have changes to the cmake files themselves
and not really the boost source files.

Having a structure reflecting upstream Boost seems a good thing, i.e.:
* Git pristine-release reflecting SVN branches/release
* Git pristine-master reflecting SVN trunk
* Git pristine-1.44.0 reflecting SVN tags/release/Boost_1_44_0

Then, having the same structure for CMake-ified Boost seems also not  
too bad:
* Git cmake-release reflecting CMake on top of SVN branches/release
* Git cmake-master reflecting CMake on top of SVN trunk
* Git cmake-1.44.0 reflecting CMake on top of SVN tags/release/ 
Boost_1_44_0

Now, I am not sure which is the best, between having in the cmake-xxx  
branches only the CMake additional files, or the whole CMake-ified  
Boost. I would choose the second option, as Git helps a lot in  
maintaining such a structure: upstream Boost patches are easily  
applied on the CMake-ified version (by Git, almost transparently).  
That option has the advantage for the developers to be complete: they  
do not have to fetch on one side Boost files, and on the other one  
CMake files, and then merge both file structures.

The main gitorious.org/boost has an SVN tracking branch. Troy would  
like someone else to take over
that for the time being. He runs a CRON script every so often that  
pulls changes from SVN and pushes those to the git repo. I think I  
have SVN write access to the main Boost repo. Maybe I should be the  
gatekeeper for changes to the cmake files that get posted to gitorious?

Gitorious does not allow to import SVN repositories. So, I was  
wondering how Troy was doing the synchronisation. GitHub allows  
Subversion imports, but I'm not sure that it allows for  
synchronisation, after initial import.
So, the only way is maybe to run, like Troy does, a cron somewhere on  
an Internet machine (I got one, if needed).

What type of developer are we serving? The dev who wants to work with  
Boost and Git would seem to be the case.

I think it's more open than that: all the developers wanting to build  
Boost with something more standard than BJam. For instance, I was not  
a big fan of Git, and I "converted myself" for Boost-CMake...
I guess that all the Linux and MacOSX distribution packagers will be  
interested, as CMake becomes increasingly a standard way to build  
packages. I "work for" Fedora/RedHAt, but Debianers, Ubuntuers,  
"Madrivaners", etc, may as well be interested.
Plus all the occasional developers finding BJam rather difficult to  
understand (and to integrate with their own software!).

I think the main Boost SVN repo does retain the CMake files so anyone  
can get the boost with cmake from the main boost site.

There was a discussion on the Boost ML a few months ago, and they  
decided to remove support for CMake (and to remove the corresponding  
CMake files), saying that some external developers were maintaining  
that non-official way of building Boost...
So, let's assume that upstream Boost will not help us that much.

Cheers

Denis

Gmane