@@ -20,24 +20,29 @@ if (NOT TARGET tests)
2020 set_property (TARGET tests PROPERTY FOLDER Dependencies)
2121endif ()
2222
23- # Replicate error flags from Jamfile
23+ # MSVC compiler heap size (always applied to avoid C1060 "out of heap space")
24+ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC" )
25+ set (BOOST_OPENMETHOD_MSVC_HEAP_FLAGS "/Zm500" )
26+ endif ()
27+
28+ # Warning flags (applied only when WARNINGS_AS_ERRORS is enabled)
2429if (BOOST_OPENMETHOD_WARNINGS_AS_ERRORS)
2530 if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
2631 if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7)
27- set (BOOST_OPENMETHOD_TEST_FLAGS "-Wall -Werror -Wno-unused-but-set-variable -Wno-maybe-uninitialized" )
32+ set (BOOST_OPENMETHOD_WARNING_FLAGS "-Wall -Werror -Wno-unused-but-set-variable -Wno-maybe-uninitialized" )
2833 else ()
29- set (BOOST_OPENMETHOD_TEST_FLAGS "-Wall -Werror -Wno-unused-but-set-variable" )
34+ set (BOOST_OPENMETHOD_WARNING_FLAGS "-Wall -Werror -Wno-unused-but-set-variable" )
3035 endif ()
3136 elseif (CMAKE_CXX_COMPILER_ID MATCHES "AppleClang" )
32- set (BOOST_OPENMETHOD_TEST_FLAGS "-Wall -Werror" )
37+ set (BOOST_OPENMETHOD_WARNING_FLAGS "-Wall -Werror" )
3338 elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC" )
3439 if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13)
35- set (BOOST_OPENMETHOD_TEST_FLAGS "-Wall -Werror -Wno-unused-but-set-variable" )
40+ set (BOOST_OPENMETHOD_WARNING_FLAGS "-Wall -Werror -Wno-unused-but-set-variable" )
3641 else ()
37- set (BOOST_OPENMETHOD_TEST_FLAGS "-Wall -Werror" )
42+ set (BOOST_OPENMETHOD_WARNING_FLAGS "-Wall -Werror" )
3843 endif ()
3944 elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC" )
40- set (BOOST_OPENMETHOD_TEST_FLAGS "/W4 /WX /we4265 /wd4251 /Zm500 " )
45+ set (BOOST_OPENMETHOD_WARNING_FLAGS "/W4 /WX /we4265 /wd4251" )
4146 endif ()
4247
4348 # Print test configuration if running in CI
@@ -49,7 +54,8 @@ if (BOOST_OPENMETHOD_WARNINGS_AS_ERRORS)
4954 endif ()
5055 message (STATUS "Boost.OpenMethod Tests - Platform: ${CMAKE_SYSTEM_NAME } / ${CMAKE_SYSTEM_VERSION } " )
5156 message (STATUS "Boost.OpenMethod Tests - C++ standard: ${CMAKE_CXX_STANDARD } " )
52- message (STATUS "Boost.OpenMethod Tests - Test error flags: ${BOOST_OPENMETHOD_TEST_FLAGS} " )
57+ message (STATUS "Boost.OpenMethod Tests - Test warning flags: ${BOOST_OPENMETHOD_WARNING_FLAGS} " )
58+ message (STATUS "Boost.OpenMethod Tests - Test heap flags: ${BOOST_OPENMETHOD_MSVC_HEAP_FLAGS} " )
5359 endif ()
5460endif ()
5561
@@ -70,12 +76,28 @@ foreach(test_cpp ${test_cpp_files})
7076 set (test_target "boost_openmethod-${test} " )
7177 add_executable (${test_target} EXCLUDE_FROM_ALL ${test_cpp} )
7278 target_link_libraries (${test_target} PRIVATE Boost::openmethod Boost::unit_test_framework )
79+ # Always apply MSVC heap flags to avoid C1060 "out of heap space"
80+ if (BOOST_OPENMETHOD_MSVC_HEAP_FLAGS)
81+ target_compile_options (${test_target} PRIVATE ${BOOST_OPENMETHOD_MSVC_HEAP_FLAGS} )
82+ endif ()
83+ # Apply warning flags only if WARNINGS_AS_ERRORS is enabled
84+ if (BOOST_OPENMETHOD_WARNING_FLAGS)
85+ target_compile_options (${test_target} PRIVATE ${BOOST_OPENMETHOD_WARNING_FLAGS} )
86+ endif ()
7387 boost_openmethod_add_test (${test_target} )
7488 add_dependencies (tests ${test_target} )
7589endforeach ()
7690
7791add_executable (boost_openmethod-test_mix_release_debug EXCLUDE_FROM_ALL mix_release_debug/main.cpp mix_release_debug/lib.cpp )
7892target_link_libraries (boost_openmethod-test_mix_release_debug PRIVATE Boost::openmethod Boost::unit_test_framework )
93+ # Always apply MSVC heap flags
94+ if (BOOST_OPENMETHOD_MSVC_HEAP_FLAGS)
95+ target_compile_options (boost_openmethod-test_mix_release_debug PRIVATE ${BOOST_OPENMETHOD_MSVC_HEAP_FLAGS} )
96+ endif ()
97+ # Apply warning flags only if WARNINGS_AS_ERRORS is enabled
98+ if (BOOST_OPENMETHOD_WARNING_FLAGS)
99+ target_compile_options (boost_openmethod-test_mix_release_debug PRIVATE ${BOOST_OPENMETHOD_WARNING_FLAGS} )
100+ endif ()
79101boost_openmethod_add_test (boost_openmethod-test_mix_release_debug )
80102add_dependencies (tests boost_openmethod-test_mix_release_debug )
81103
0 commit comments