]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | # Copyright 2001, Raffi Enficiaud |
2 | ||
3 | # Use, modification, and distribution are subject to the | |
4 | # Boost Software License, Version 1.0. (See accompanying file | |
5 | # LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
6 | # | |
7 | # See http://www.boost.org/libs/test for the library home page. | |
8 | ||
9 | cmake_minimum_required(VERSION 2.8.11) | |
10 | project(BoostTest) | |
11 | ||
12 | set_property(GLOBAL PROPERTY USE_FOLDERS ON) | |
13 | set(CMAKE_MACOSX_RPATH ON) | |
14 | ||
15 | add_definitions(-DBOOST_TEST_NO_LIB) | |
16 | ||
17 | # build type, by default to release (with optimisations) | |
18 | if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) | |
19 | message(STATUS "Setting build type to 'Release' as none was specified.") | |
20 | set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) | |
21 | # Set the possible values of build type for cmake-gui | |
22 | set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") | |
23 | endif() | |
24 | ||
25 | if(NOT WITHOUT_TESTS) | |
26 | # ctest sets BUILD_TESTING automatically, but does not seem to serve its purpose. | |
27 | include(CTest) | |
28 | enable_testing() | |
29 | endif() | |
30 | ||
31 | ||
32 | include(CheckCXXCompilerFlag) | |
33 | include(CheckIncludeFileCXX) | |
34 | ||
35 | if(NOT MSVC) | |
36 | # c++11 options | |
37 | check_cxx_compiler_flag(-std=c++11 HAS_CXX11_FLAG) | |
38 | check_cxx_compiler_flag(-std=c++0x HAS_CXX0X_FLAG) | |
39 | if(HAS_CXX11_FLAG) | |
40 | message(STATUS "Compiling with C++11 support") | |
41 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") | |
42 | elseif(HAS_CXX0X_FLAG) | |
43 | #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") | |
44 | endif() | |
45 | endif() | |
46 | ||
47 | if(MSVC) | |
48 | add_definitions(-D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS) | |
49 | set(MSVC_Additional_flags "/fp:fast /GF /Oy /GT /Ox /Ob2 /Oi /Os") | |
50 | set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${MSVC_Additional_flags}") | |
51 | endif() | |
52 | ||
53 | ||
54 | ||
55 | ||
56 | ||
57 | # global path | |
58 | set(BOOST_TEST_ROOT_DIR ${BoostTest_SOURCE_DIR}/..) | |
59 | set(BOOST_ROOT_DIR ${BOOST_TEST_ROOT_DIR}/../..) | |
60 | get_filename_component(BOOST_TEST_ROOT_DIR_ABS ${BoostTest_SOURCE_DIR}/.. ABSOLUTE) | |
61 | get_filename_component(BOOST_ROOT_DIR_ABS ${BOOST_ROOT_DIR} ABSOLUTE) | |
62 | ||
63 | # global include on boost | |
64 | include_directories(${BOOST_ROOT_DIR_ABS}/) | |
65 | ||
66 | # include globs | |
67 | file(GLOB_RECURSE | |
68 | BOOST_UTF_HEADERS | |
69 | ${BOOST_TEST_ROOT_DIR}/include/*.hpp | |
70 | ${BOOST_TEST_ROOT_DIR}/include/*.ipp) | |
71 | ||
72 | # organize files | |
73 | foreach(_h IN LISTS BOOST_UTF_HEADERS) | |
74 | get_filename_component(_hh ${_h} ABSOLUTE) | |
75 | file(RELATIVE_PATH _v ${BOOST_TEST_ROOT_DIR_ABS}/include/boost/test ${_hh}) | |
76 | get_filename_component(_v "${_v}" DIRECTORY) | |
77 | string(REPLACE "/" "\\" _v "${_v}") | |
78 | source_group(${_v} FILES ${_h}) | |
79 | endforeach() | |
80 | ||
81 | set(BOOST_UTF_SRC | |
82 | ${BOOST_TEST_ROOT_DIR}/src/compiler_log_formatter.cpp | |
83 | ||
84 | ${BOOST_TEST_ROOT_DIR}/src/debug.cpp | |
85 | ${BOOST_TEST_ROOT_DIR}/src/decorator.cpp | |
86 | ${BOOST_TEST_ROOT_DIR}/src/execution_monitor.cpp | |
87 | ${BOOST_TEST_ROOT_DIR}/src/framework.cpp | |
88 | ${BOOST_TEST_ROOT_DIR}/src/junit_log_formatter.cpp | |
89 | ${BOOST_TEST_ROOT_DIR}/src/plain_report_formatter.cpp | |
90 | ${BOOST_TEST_ROOT_DIR}/src/progress_monitor.cpp | |
91 | ${BOOST_TEST_ROOT_DIR}/src/results_collector.cpp | |
92 | ${BOOST_TEST_ROOT_DIR}/src/results_reporter.cpp | |
93 | ${BOOST_TEST_ROOT_DIR}/src/test_tools.cpp | |
94 | ${BOOST_TEST_ROOT_DIR}/src/test_tree.cpp | |
95 | ${BOOST_TEST_ROOT_DIR}/src/unit_test_log.cpp | |
96 | ${BOOST_TEST_ROOT_DIR}/src/unit_test_main.cpp | |
97 | ${BOOST_TEST_ROOT_DIR}/src/unit_test_monitor.cpp | |
98 | ${BOOST_TEST_ROOT_DIR}/src/unit_test_parameters.cpp | |
99 | ${BOOST_TEST_ROOT_DIR}/src/xml_log_formatter.cpp | |
100 | ${BOOST_TEST_ROOT_DIR}/src/xml_report_formatter.cpp | |
101 | ) | |
102 | ||
103 | add_library(boost_test_framework | |
104 | STATIC | |
105 | ${BOOST_UTF_HEADERS} | |
106 | ${BOOST_UTF_SRC}) | |
107 | target_compile_definitions(boost_test_framework PUBLIC "-DBOOST_TEST_DYN_LINK=0") | |
108 | target_include_directories(boost_test_framework PUBLIC ${BOOST_TEST_ROOT_DIR}/include/) | |
109 | set_target_properties(boost_test_framework PROPERTIES FOLDER "UTF") | |
110 | ||
111 | ||
112 | #### | |
113 | # Documentation files (files only, no target) | |
114 | file(GLOB_RECURSE | |
115 | BOOST_UTF_DOC_FILES | |
116 | ${BOOST_TEST_ROOT_DIR}/doc/*.qbk) | |
117 | add_custom_target( | |
118 | quickbook | |
119 | SOURCES ${BOOST_UTF_DOC_FILES}) | |
120 | set_property(TARGET quickbook PROPERTY FOLDER "Documentation/") | |
121 | ||
122 | ||
123 | #### | |
124 | # Unit tests | |
125 | ||
126 | # documentation tests | |
127 | file(GLOB_RECURSE | |
128 | BOOST_UTF_DOC_EXAMPLES | |
129 | ${BOOST_TEST_ROOT_DIR}/doc/examples/*.cpp) | |
130 | ||
131 | foreach(_h IN LISTS BOOST_UTF_DOC_EXAMPLES) | |
132 | get_filename_component(_hh ${_h} NAME_WE) | |
133 | add_executable(${_hh} ${_h} ${BOOST_TEST_ROOT_DIR}/doc/examples/${_hh}.output) | |
134 | target_include_directories(${_hh} PUBLIC ${BOOST_TEST_ROOT_DIR}/include/) | |
135 | set_target_properties(${_hh} PROPERTIES FOLDER "Doc examples") | |
136 | ||
137 | add_test(NAME doc-${_hh} | |
138 | COMMAND ${_hh}) | |
139 | get_filename_component(_ext ${_h} EXT) | |
140 | string(FIND ${_ext} "fail" _index_fail) | |
141 | if(${_index_fail} GREATER -1) | |
142 | message(STATUS "test ${_hh}.${_ext} = ${_index_fail}") | |
143 | set_tests_properties(doc-${_hh} PROPERTIES WILL_FAIL TRUE) | |
144 | endif() | |
145 | endforeach() | |
146 | ||
147 | ||
148 | # unit tests folder | |
149 | set(BOOST_TEST_UNITTESTS_FOLDER ${BOOST_TEST_ROOT_DIR}/test) | |
150 | ||
151 | # datasets | |
152 | file(GLOB | |
153 | BOOST_TEST_UNITTESTS_DATASET | |
154 | ${BOOST_TEST_UNITTESTS_FOLDER}/test-organization-ts/datasets-test/*.cpp | |
155 | ${BOOST_TEST_UNITTESTS_FOLDER}/test-organization-ts/datasets-test/*.hpp) | |
156 | add_executable(boost_test_datasets ${BOOST_TEST_UNITTESTS_DATASET}) | |
157 | target_include_directories(boost_test_datasets PUBLIC ${BOOST_TEST_ROOT_DIR}/include/) | |
158 | target_link_libraries(boost_test_datasets boost_test_framework) | |
159 | target_compile_definitions(boost_test_datasets PUBLIC "BOOST_TEST_DYN_LINK=1") | |
160 | set_target_properties(boost_test_datasets PROPERTIES FOLDER "Unit tests") | |
161 | add_test(NAME bt-unittest-dataset | |
162 | COMMAND boost_test_datasets) | |
163 | ||
164 | ||
165 | #### | |
166 | # TS writing-test-ts | |
167 | ||
168 | set(BOOST_UTF_TESTS_IND_FILES | |
169 | writing-test-ts | |
170 | execution_monitor-ts | |
171 | framework-ts | |
172 | usage-variants-ts | |
173 | utils-ts | |
174 | test-organization-ts) | |
175 | ||
176 | ||
177 | foreach(_ts IN LISTS BOOST_UTF_TESTS_IND_FILES) | |
178 | ||
179 | message("parsing test suite ${_ts}") | |
180 | file(GLOB | |
181 | _boost_utf_current_tsuite | |
182 | ${BOOST_TEST_UNITTESTS_FOLDER}/${_ts}/*.cpp) | |
183 | ||
184 | ||
185 | foreach(_h IN LISTS _boost_utf_current_tsuite) | |
186 | get_filename_component(_hh ${_h} ABSOLUTE) | |
187 | get_filename_component(_name ${_h} NAME_WE) | |
188 | file(RELATIVE_PATH _v ${BOOST_TEST_UNITTESTS_FOLDER} ${_hh}) | |
189 | #get_filename_component(_v "${_v}" DIRECTORY) | |
190 | message("adding ${_ts}/${_name}") | |
191 | add_executable(${_name} ${_hh}) | |
192 | target_link_libraries(${_name} PRIVATE boost_test_framework) | |
193 | set_target_properties(${_name} PROPERTIES FOLDER "Unit tests/${_ts}") | |
194 | add_test(NAME bt-unittest-${_name} | |
195 | COMMAND ${_name}) | |
196 | endforeach() | |
197 | ||
198 | unset(_boost_utf_current_tsuite) | |
199 | ||
200 | endforeach() # test suite | |
201 |