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()