Mercurial > irccd
comparison cmake/function/IrccdDefineTest.cmake @ 207:6635b9187d71
Irccd: switch to 4 spaces indent, #518
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 21 Jun 2016 20:52:17 +0200 |
parents | 70ed0753ce0d |
children | 6bf457b71e0c |
comparison
equal
deleted
inserted
replaced
206:11808e98218f | 207:6635b9187d71 |
---|---|
19 # | 19 # |
20 # irccd_define_test | 20 # irccd_define_test |
21 # ------------------------------------------------------------------- | 21 # ------------------------------------------------------------------- |
22 # | 22 # |
23 # irccd_define_test( | 23 # irccd_define_test( |
24 # NAME the test name | 24 # NAME the test name |
25 # SOURCES the sources files | 25 # SOURCES the sources files |
26 # LIBRARIES (Optional) libraries to link | 26 # LIBRARIES (Optional) libraries to link |
27 # RESOURCES (Optional) some resources file to copy | 27 # RESOURCES (Optional) some resources file to copy |
28 # FLAGS (Optional) compilation flags | 28 # FLAGS (Optional) compilation flags |
29 # ) | 29 # ) |
30 # | 30 # |
31 # Create a unit test named test-${NAME} | 31 # Create a unit test named test-${NAME} |
32 # | 32 # |
33 # Resources files are copied VERBATIM into the same directory. | 33 # Resources files are copied VERBATIM into the same directory. |
34 # | 34 # |
35 | 35 |
36 function(irccd_define_test) | 36 function(irccd_define_test) |
37 set(oneValueArgs NAME) | 37 set(oneValueArgs NAME) |
38 set(multiValueArgs SOURCES LIBRARIES RESOURCES FLAGS) | 38 set(multiValueArgs SOURCES LIBRARIES RESOURCES FLAGS) |
39 | 39 |
40 cmake_parse_arguments(TEST "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) | 40 cmake_parse_arguments(TEST "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
41 | 41 |
42 if (NOT TEST_NAME) | 42 if (NOT TEST_NAME) |
43 message(FATAL_ERROR "Please set NAME") | 43 message(FATAL_ERROR "Please set NAME") |
44 endif () | 44 endif () |
45 if (NOT TEST_SOURCES) | 45 if (NOT TEST_SOURCES) |
46 message(FATAL_ERROR "Please set SOURCES") | 46 message(FATAL_ERROR "Please set SOURCES") |
47 endif () | 47 endif () |
48 | 48 |
49 foreach (r ${TEST_RESOURCES}) | 49 foreach (r ${TEST_RESOURCES}) |
50 file(RELATIVE_PATH output ${CMAKE_CURRENT_SOURCE_DIR} ${r}) | 50 file(RELATIVE_PATH output ${CMAKE_CURRENT_SOURCE_DIR} ${r}) |
51 | 51 |
52 add_custom_command( | 52 add_custom_command( |
53 OUTPUT ${CMAKE_BINARY_DIR}/tests/${output} | 53 OUTPUT ${CMAKE_BINARY_DIR}/tests/${output} |
54 COMMAND ${CMAKE_COMMAND} -E copy ${r} ${CMAKE_BINARY_DIR}/tests/${output} | 54 COMMAND ${CMAKE_COMMAND} -E copy ${r} ${CMAKE_BINARY_DIR}/tests/${output} |
55 DEPENDS ${r} | 55 DEPENDS ${r} |
56 ) | 56 ) |
57 | 57 |
58 list(APPEND RESOURCES ${CMAKE_BINARY_DIR}/tests/${output}) | 58 list(APPEND RESOURCES ${CMAKE_BINARY_DIR}/tests/${output}) |
59 endforeach () | 59 endforeach () |
60 | 60 |
61 # Always link to googletest | 61 # Always link to googletest |
62 list(APPEND TEST_LIBRARIES extern-gtest) | 62 list(APPEND TEST_LIBRARIES extern-gtest) |
63 | 63 |
64 # Executable | 64 # Executable |
65 add_executable(test-${TEST_NAME} ${TEST_SOURCES} ${TEST_RESOURCES} ${RESOURCES}) | 65 add_executable(test-${TEST_NAME} ${TEST_SOURCES} ${TEST_RESOURCES} ${RESOURCES}) |
66 target_link_libraries(test-${TEST_NAME} ${TEST_LIBRARIES}) | 66 target_link_libraries(test-${TEST_NAME} ${TEST_LIBRARIES}) |
67 source_group(Auto-generated FILES ${RESOURCES}) | 67 source_group(Auto-generated FILES ${RESOURCES}) |
68 | 68 |
69 target_include_directories( | 69 target_include_directories( |
70 test-${TEST_NAME} | 70 test-${TEST_NAME} |
71 PRIVATE | 71 PRIVATE |
72 ${irccd_SOURCE_DIR} | 72 ${irccd_SOURCE_DIR} |
73 ) | 73 ) |
74 | 74 |
75 target_compile_definitions( | 75 target_compile_definitions( |
76 test-${TEST_NAME} | 76 test-${TEST_NAME} |
77 PRIVATE | 77 PRIVATE |
78 ${TEST_FLAGS} | 78 ${TEST_FLAGS} |
79 SOURCEDIR="${CMAKE_CURRENT_SOURCE_DIR}" | 79 SOURCEDIR="${CMAKE_CURRENT_SOURCE_DIR}" |
80 BINARYDIR="${CMAKE_CURRENT_BINARY_DIR}" | 80 BINARYDIR="${CMAKE_CURRENT_BINARY_DIR}" |
81 IRCCD_TESTS_DIRECTORY="${CMAKE_BINARY_DIR}/tests" | 81 IRCCD_TESTS_DIRECTORY="${CMAKE_BINARY_DIR}/tests" |
82 ) | 82 ) |
83 | 83 |
84 # Tests are all in the same directory | 84 # Tests are all in the same directory |
85 set_target_properties( | 85 set_target_properties( |
86 test-${TEST_NAME} | 86 test-${TEST_NAME} |
87 PROPERTIES | 87 PROPERTIES |
88 PROJECT_LABEL ${TEST_NAME} | 88 PROJECT_LABEL ${TEST_NAME} |
89 FOLDER test | 89 FOLDER test |
90 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/tests | 90 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/tests |
91 RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/tests | 91 RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/tests |
92 RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/tests | 92 RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/tests |
93 RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/tests | 93 RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/tests |
94 RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_BINARY_DIR}/tests | 94 RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_BINARY_DIR}/tests |
95 ) | 95 ) |
96 | 96 |
97 if (UNIX) | 97 if (UNIX) |
98 set_target_properties(test-${TEST_NAME} PROPERTIES LINK_FLAGS -pthread) | 98 set_target_properties(test-${TEST_NAME} PROPERTIES LINK_FLAGS -pthread) |
99 endif () | 99 endif () |
100 | 100 |
101 # And test | 101 # And test |
102 add_test( | 102 add_test( |
103 NAME test-${TEST_NAME} | 103 NAME test-${TEST_NAME} |
104 COMMAND test-${TEST_NAME} | 104 COMMAND test-${TEST_NAME} |
105 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tests | 105 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tests |
106 ) | 106 ) |
107 endfunction() | 107 endfunction() |