Mercurial > irccd
annotate cmake/function/IrccdDefineTest.cmake @ 887:d1cfe59eed06 release-3.0 3.0.1
misc: update before 3.0.1
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 01 Sep 2019 17:08:59 +0200 |
parents | 6af323b76970 |
children | 5e25439fe98d |
rev | line source |
---|---|
0 | 1 # |
2 # IrccdDefineTest.cmake -- CMake build system for irccd | |
3 # | |
824
06cc2f95f479
misc: happy new year!
David Demelier <markand@malikania.fr>
parents:
800
diff
changeset
|
4 # Copyright (c) 2013-2019 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 | |
659 | 21 # ----------------- |
0 | 22 # |
23 # irccd_define_test( | |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
24 # NAME the test name |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
25 # SOURCES the sources files |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
26 # LIBRARIES (Optional) libraries to link |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
27 # FLAGS (Optional) compilation flags |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
28 # DEPENDS (Optional) list of dependencies |
0 | 29 # ) |
30 # | |
31 # Create a unit test named test-${NAME} | |
32 # | |
33 # Resources files are copied VERBATIM into the same directory. | |
34 # | |
35 | |
515
9c18bfff72ef
CMake: add QUIET to find_package for Boost, closes #722
David Demelier <markand@malikania.fr>
parents:
514
diff
changeset
|
36 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
|
37 |
0 | 38 function(irccd_define_test) |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
39 set(oneValueArgs NAME) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
40 set(multiValueArgs DEPENDS SOURCES LIBRARIES FLAGS) |
0 | 41 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
42 cmake_parse_arguments(TEST "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
0 | 43 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
44 if (NOT TEST_NAME) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
45 message(FATAL_ERROR "Please set NAME") |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
46 endif () |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
47 if (NOT TEST_SOURCES) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
48 message(FATAL_ERROR "Please set SOURCES") |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
49 endif () |
0 | 50 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
51 list( |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
52 APPEND |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
53 TEST_LIBRARIES |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
54 libirccd-test |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
55 ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
56 ) |
0 | 57 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
58 add_executable(test-${TEST_NAME} ${TEST_SOURCES}) |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
659
diff
changeset
|
59 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
60 if (TEST_DEPENDS) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
61 add_dependencies(test-${TEST_NAME} ${TEST_DEPENDS}) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
62 endif () |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
659
diff
changeset
|
63 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
64 target_link_libraries(test-${TEST_NAME} ${TEST_LIBRARIES}) |
0 | 65 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
66 target_include_directories( |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
67 test-${TEST_NAME} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
68 PRIVATE |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
69 ${irccd_SOURCE_DIR} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
70 ) |
0 | 71 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
72 target_compile_definitions( |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
73 test-${TEST_NAME} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
74 PRIVATE |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
75 ${TEST_FLAGS} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
76 BOOST_TEST_DYN_LINK |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
77 TESTS_SOURCE_DIR="${tests_SOURCE_DIR}" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
78 TESTS_BINARY_DIR="${tests_SOURCE_DIR}" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
79 CMAKE_BINARY_DIR="${CMAKE_BINARY_DIR}" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
80 CMAKE_SOURCE_DIR="${CMAKE_SOURCE_DIR}" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
81 CMAKE_CURRENT_BINARY_DIR="${CMAKE_CURRENT_BINARY_DIR}" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
82 CMAKE_CURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
83 ) |
0 | 84 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
85 # Tests are all in the same directory |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
86 set_target_properties( |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
87 test-${TEST_NAME} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
88 PROPERTIES |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
89 PROJECT_LABEL ${TEST_NAME} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
90 FOLDER test |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
91 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin |
858
6af323b76970
cmake: install macros and reduce IrccdOptions.cmake, closes #951 @1h
David Demelier <markand@malikania.fr>
parents:
824
diff
changeset
|
92 CXX_STANDARD 17 |
6af323b76970
cmake: install macros and reduce IrccdOptions.cmake, closes #951 @1h
David Demelier <markand@malikania.fr>
parents:
824
diff
changeset
|
93 CXX_STANDARD_REQUIRED On |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
94 ) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
95 foreach (c ${CMAKE_CONFIGURATION_TYPES}) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
96 string(TOUPPER ${c} cu) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
97 set_target_properties( |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
98 test-${TEST_NAME} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
99 PROPERTIES |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
100 RUNTIME_OUTPUT_DIRECTORY_${cu} ${CMAKE_BINARY_DIR}/bin/${c} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
101 ) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
102 endforeach() |
0 | 103 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
104 # And test |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
105 add_test( |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
106 NAME test-${TEST_NAME} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
107 COMMAND test-${TEST_NAME} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
108 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tests |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
109 ) |
0 | 110 endfunction() |