Mercurial > irccd
annotate cmake/function/IrccdDefineTest.cmake @ 601:48c6a1167245
CMake: give FindThreads a try
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 06 Dec 2017 21:47:11 +0100 |
parents | c59b87f66b67 |
children | 27587ff92a64 |
rev | line source |
---|---|
0 | 1 # |
2 # IrccdDefineTest.cmake -- CMake build system for irccd | |
3 # | |
394 | 4 # Copyright (c) 2013-2017 David Demelier <markand@malikania.fr> |
0 | 5 # |
6 # Permission to use, copy, modify, and/or distribute this software for any | |
7 # purpose with or without fee is hereby granted, provided that the above | |
8 # copyright notice and this permission notice appear in all copies. | |
9 # | |
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 # | |
18 | |
19 # | |
20 # irccd_define_test | |
21 # ------------------------------------------------------------------- | |
22 # | |
23 # irccd_define_test( | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
24 # NAME the test name |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
25 # SOURCES the sources files |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
26 # LIBRARIES (Optional) libraries to link |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
27 # FLAGS (Optional) compilation flags |
0 | 28 # ) |
29 # | |
30 # Create a unit test named test-${NAME} | |
31 # | |
32 # Resources files are copied VERBATIM into the same directory. | |
33 # | |
34 | |
515
9c18bfff72ef
CMake: add QUIET to find_package for Boost, closes #722
David Demelier <markand@malikania.fr>
parents:
514
diff
changeset
|
35 find_package(Boost REQUIRED QUIET COMPONENTS unit_test_framework) |
489
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
36 |
510
6ec510722582
CMake: enable vera++ as code checking, closes #603
David Demelier <markand@malikania.fr>
parents:
509
diff
changeset
|
37 include(${CMAKE_CURRENT_LIST_DIR}/IrccdVeraCheck.cmake) |
6ec510722582
CMake: enable vera++ as code checking, closes #603
David Demelier <markand@malikania.fr>
parents:
509
diff
changeset
|
38 |
0 | 39 function(irccd_define_test) |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
40 set(oneValueArgs NAME) |
395
f9b4101fa51c
Tests: do not copy resources anymore
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
41 set(multiValueArgs SOURCES LIBRARIES FLAGS) |
0 | 42 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
43 cmake_parse_arguments(TEST "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
0 | 44 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
45 if (NOT TEST_NAME) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
46 message(FATAL_ERROR "Please set NAME") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
47 endif () |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
48 if (NOT TEST_SOURCES) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
49 message(FATAL_ERROR "Please set SOURCES") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
50 endif () |
0 | 51 |
489
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
52 list( |
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
53 APPEND |
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
54 TEST_LIBRARIES |
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
55 libirccd-test |
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
56 Boost::unit_test_framework |
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
57 ) |
0 | 58 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
59 # Executable |
395
f9b4101fa51c
Tests: do not copy resources anymore
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
60 add_executable(test-${TEST_NAME} ${TEST_SOURCES}) |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
61 target_link_libraries(test-${TEST_NAME} ${TEST_LIBRARIES}) |
0 | 62 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
63 target_include_directories( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
64 test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
65 PRIVATE |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
66 ${irccd_SOURCE_DIR} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
67 ) |
0 | 68 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
69 target_compile_definitions( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
70 test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
71 PRIVATE |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
72 ${TEST_FLAGS} |
489
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
73 BOOST_TEST_DYN_LINK |
532
c59b87f66b67
CMake: share same resources, closes #725
David Demelier <markand@malikania.fr>
parents:
515
diff
changeset
|
74 CMAKE_BINARY_DIR="${CMAKE_BINARY_DIR}" |
487
beb6c638b841
Tests: create plugin_test fixture, closes #677
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
75 CMAKE_SOURCE_DIR="${CMAKE_SOURCE_DIR}" |
500
458e34f16c1f
Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
489
diff
changeset
|
76 CMAKE_CURRENT_BINARY_DIR="${CMAKE_CURRENT_BINARY_DIR}" |
487
beb6c638b841
Tests: create plugin_test fixture, closes #677
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
77 CMAKE_CURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
78 ) |
0 | 79 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
80 # Tests are all in the same directory |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
81 set_target_properties( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
82 test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
83 PROPERTIES |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
84 PROJECT_LABEL ${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
85 FOLDER test |
509
c9a6d9df083f
CMake: output all runtimes to bin, closes #715
David Demelier <markand@malikania.fr>
parents:
500
diff
changeset
|
86 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
87 ) |
509
c9a6d9df083f
CMake: output all runtimes to bin, closes #715
David Demelier <markand@malikania.fr>
parents:
500
diff
changeset
|
88 foreach (c ${CMAKE_CONFIGURATION_TYPES}) |
c9a6d9df083f
CMake: output all runtimes to bin, closes #715
David Demelier <markand@malikania.fr>
parents:
500
diff
changeset
|
89 string(TOUPPER ${c} cu) |
c9a6d9df083f
CMake: output all runtimes to bin, closes #715
David Demelier <markand@malikania.fr>
parents:
500
diff
changeset
|
90 set_target_properties( |
c9a6d9df083f
CMake: output all runtimes to bin, closes #715
David Demelier <markand@malikania.fr>
parents:
500
diff
changeset
|
91 test-${TEST_NAME} |
c9a6d9df083f
CMake: output all runtimes to bin, closes #715
David Demelier <markand@malikania.fr>
parents:
500
diff
changeset
|
92 PROPERTIES |
c9a6d9df083f
CMake: output all runtimes to bin, closes #715
David Demelier <markand@malikania.fr>
parents:
500
diff
changeset
|
93 RUNTIME_OUTPUT_DIRECTORY_${cu} ${CMAKE_BINARY_DIR}/bin/${c} |
c9a6d9df083f
CMake: output all runtimes to bin, closes #715
David Demelier <markand@malikania.fr>
parents:
500
diff
changeset
|
94 ) |
c9a6d9df083f
CMake: output all runtimes to bin, closes #715
David Demelier <markand@malikania.fr>
parents:
500
diff
changeset
|
95 endforeach() |
0 | 96 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
97 # And test |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
98 add_test( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
99 NAME test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
100 COMMAND test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
101 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tests |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
102 ) |
510
6ec510722582
CMake: enable vera++ as code checking, closes #603
David Demelier <markand@malikania.fr>
parents:
509
diff
changeset
|
103 |
6ec510722582
CMake: enable vera++ as code checking, closes #603
David Demelier <markand@malikania.fr>
parents:
509
diff
changeset
|
104 irccd_vera_check(test-${TEST_NAME} "${TEST_SOURCES}") |
0 | 105 endfunction() |