Mercurial > malikania
annotate cmake/function/MalikaniaDefineTest.cmake @ 182:3107ce017c3a
Misc: switch back to SDL
Qt Quick and QML was an exciting experiment but it's definitely not enough
flexible and easy to use for game development.
Using SDL2 will let us focusing on our own drawing functions without any kind of
overhead.
While here, start massive cleanup.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 19 Oct 2018 20:18:19 +0200 |
parents | 3e3040d085b5 |
children | 387f6b0a5420 |
rev | line source |
---|---|
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 # MalikaniaDefineTest.cmake -- CMake build system for malikania |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 # |
158
4b292c20124c
Misc: update copyrights
David Demelier <markand@malikania.fr>
parents:
156
diff
changeset
|
4 # Copyright (c) 2013-2018 David Demelier <markand@malikania.fr> |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 # Permission to use, copy, modify, and/or distribute this software for any |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 # purpose with or without fee is hereby granted, provided that the above |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 # copyright notice and this permission notice appear in all copies. |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 # malikania_create_test |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 # --------------------- |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 # malikania_create_test( |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 # NAME Test name (must be lowercase) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 # SOURCES Test sources files |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 # LIBRARIES (Optional) Libraries to link to |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 # RESOURCES (Optional) Resources files to copy verbatim |
106
f8c6d2244795
Server: rework model and dao
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
28 # FLAGS (Optional) Add list of compile definitions |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 # ) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 # This will generate a target named test-<name> where name is the parameter NAME. The test is created |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 # under CMAKE_BINARY_DIR/test/<NAME> and resources are copied there with the same hierarchy. |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 include(CMakeParseArguments) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
54
0edaba9986ba
CMake: add vera++, closes 602
David Demelier <markand@malikania.fr>
parents:
49
diff
changeset
|
37 include(${CMAKE_CURRENT_LIST_DIR}/MalikaniaVeraCheck.cmake) |
0edaba9986ba
CMake: add vera++, closes 602
David Demelier <markand@malikania.fr>
parents:
49
diff
changeset
|
38 |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 function(malikania_create_test) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 set(singleArgs NAME) |
106
f8c6d2244795
Server: rework model and dao
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
41 set(multiArgs FLAGS LIBRARIES SOURCES RESOURCES) |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 cmake_parse_arguments(TEST "" "${singleArgs}" "${multiArgs}" ${ARGN}) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 if (NOT TEST_NAME) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 message(FATAL_ERROR "Missing NAME parameter") |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 endif () |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 if (NOT TEST_SOURCES) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 message(FATAL_ERROR "Missing SOURCES parameter") |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 endif () |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/test/${TEST_NAME}) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 if (UNIX) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 list(APPEND TEST_LIBRARIES pthread) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 endif () |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 # Resources files added before as custom output |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 foreach (f ${TEST_RESOURCES}) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 get_filename_component(absolute ${f} ABSOLUTE) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 file(RELATIVE_PATH basename ${CMAKE_CURRENT_SOURCE_DIR} ${absolute}) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 set(output ${CMAKE_BINARY_DIR}/test/${TEST_NAME}/${basename}) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 add_custom_command( |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 OUTPUT ${output} |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 COMMAND ${CMAKE_COMMAND} -E copy ${absolute} ${output} |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 DEPENDS ${absolute} |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 ) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 list(APPEND TEST_SOURCES ${absolute}) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 list(APPEND outputs ${output}) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 endforeach () |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 add_executable(test-${TEST_NAME} ${TEST_SOURCES} ${outputs}) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 source_group(private\\Resources FILES ${outputs}) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 target_compile_definitions( |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 test-${TEST_NAME} |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 PRIVATE |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 BOOST_TEST_DYN_LINK |
163
a99a7db489bd
CMake: clean up resources and variables, closes #756 @10m
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
80 CMAKE_CURRENT_BINARY_DIR="${CMAKE_CURRENT_BINARY_DIR}" |
a99a7db489bd
CMake: clean up resources and variables, closes #756 @10m
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
81 CMAKE_CURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" |
106
f8c6d2244795
Server: rework model and dao
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
82 ${TEST_FLAGS} |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 ) |
111
8963c68f023c
CMake: output everything in bin, closes #691
David Demelier <markand@malikania.fr>
parents:
110
diff
changeset
|
84 |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 set_target_properties( |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 test-${TEST_NAME} |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 PROPERTIES |
111
8963c68f023c
CMake: output everything in bin, closes #691
David Demelier <markand@malikania.fr>
parents:
110
diff
changeset
|
88 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 ) |
111
8963c68f023c
CMake: output everything in bin, closes #691
David Demelier <markand@malikania.fr>
parents:
110
diff
changeset
|
90 foreach (c ${CMAKE_CONFIGURATION_TYPES}) |
8963c68f023c
CMake: output everything in bin, closes #691
David Demelier <markand@malikania.fr>
parents:
110
diff
changeset
|
91 string(TOUPPER ${c} cu) |
8963c68f023c
CMake: output everything in bin, closes #691
David Demelier <markand@malikania.fr>
parents:
110
diff
changeset
|
92 set_target_properties( |
8963c68f023c
CMake: output everything in bin, closes #691
David Demelier <markand@malikania.fr>
parents:
110
diff
changeset
|
93 test-${TEST_NAME} |
8963c68f023c
CMake: output everything in bin, closes #691
David Demelier <markand@malikania.fr>
parents:
110
diff
changeset
|
94 PROPERTIES |
8963c68f023c
CMake: output everything in bin, closes #691
David Demelier <markand@malikania.fr>
parents:
110
diff
changeset
|
95 RUNTIME_OUTPUT_DIRECTORY_${cu} ${CMAKE_BINARY_DIR}/bin/${c} |
8963c68f023c
CMake: output everything in bin, closes #691
David Demelier <markand@malikania.fr>
parents:
110
diff
changeset
|
96 ) |
8963c68f023c
CMake: output everything in bin, closes #691
David Demelier <markand@malikania.fr>
parents:
110
diff
changeset
|
97 endforeach () |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 add_test( |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 NAME ${TEST_NAME} |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 COMMAND $<TARGET_FILE:test-${TEST_NAME}> |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/test/${TEST_NAME} |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 ) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 target_link_libraries( |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 test-${TEST_NAME} |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 ${TEST_LIBRARIES} |
99
0addfab87b17
Common: implement basic tilesets, closes #664
David Demelier <markand@malikania.fr>
parents:
76
diff
changeset
|
107 Boost::boost |
0addfab87b17
Common: implement basic tilesets, closes #664
David Demelier <markand@malikania.fr>
parents:
76
diff
changeset
|
108 Boost::unit_test_framework |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 ) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 |
182
3107ce017c3a
Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
165
diff
changeset
|
111 add_dependencies(tests test-${TEST_NAME}) |
3107ce017c3a
Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
165
diff
changeset
|
112 |
68
0a1e3bb3c629
CMake: quote sources in malikania_vera_check to pass the whole list
David Demelier <markand@malikania.fr>
parents:
54
diff
changeset
|
113 malikania_vera_check(test-${TEST_NAME} "${TEST_SOURCES}") |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 endfunction() |