]> git.proxmox.com Git - libgit2.git/blob - tests/util/CMakeLists.txt
New upstream version 1.5.0+ds
[libgit2.git] / tests / util / CMakeLists.txt
1 # util: the unit tests for libgit2's utility library
2
3 set(Python_ADDITIONAL_VERSIONS 3 2.7)
4 find_package(PythonInterp)
5
6 if(NOT PYTHONINTERP_FOUND)
7 message(FATAL_ERROR "Could not find a python interpeter, which is needed to build the tests. "
8 "Make sure python is available, or pass -DBUILD_TESTS=OFF to skip building the tests")
9 ENDIF()
10
11 set(CLAR_PATH "${libgit2_SOURCE_DIR}/tests/clar")
12 set(CLAR_FIXTURES "${libgit2_SOURCE_DIR}/tests/resources/")
13 set(TEST_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
14 add_definitions(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\")
15 add_definitions(-DCLAR_TMPDIR=\"libgit2_tests\")
16 add_definitions(-DCLAR_WIN32_LONGPATHS)
17 add_definitions(-D_FILE_OFFSET_BITS=64)
18
19 # Ensure that we do not use deprecated functions internally
20 add_definitions(-DGIT_DEPRECATE_HARD)
21
22 set(TEST_INCLUDES "${CLAR_PATH}" "${TEST_PATH}" "${CMAKE_CURRENT_BINARY_DIR}")
23 file(GLOB_RECURSE SRC_TEST ${TEST_PATH}/*.c ${TEST_PATH}/*.h ${TEST_PATH}/*/*.c ${TEST_PATH}/*/*.h)
24 file(GLOB_RECURSE SRC_CLAR ${CLAR_PATH}/*.c ${CLAR_PATH}/*.h)
25
26 if(MSVC_IDE)
27 list(APPEND SRC_TEST "precompiled.c")
28 endif()
29
30 add_custom_command(
31 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/clar.suite ${CMAKE_CURRENT_BINARY_DIR}/clar_suite.h
32 COMMAND ${PYTHON_EXECUTABLE} ${CLAR_PATH}/generate.py -o "${CMAKE_CURRENT_BINARY_DIR}" -f .
33 DEPENDS ${SRC_TEST}
34 WORKING_DIRECTORY ${TEST_PATH})
35
36 set_source_files_properties(
37 ${CLAR_PATH}/clar.c
38 PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/clar.suite)
39
40 add_executable(util_tests ${SRC_CLAR} ${SRC_TEST} ${LIBGIT2_OBJECTS})
41
42 set_target_properties(util_tests PROPERTIES C_STANDARD 90)
43 set_target_properties(util_tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${libgit2_BINARY_DIR})
44
45 target_include_directories(util_tests PRIVATE ${TEST_INCLUDES} ${LIBGIT2_INCLUDES} ${LIBGIT2_DEPENDENCY_INCLUDES})
46 target_include_directories(util_tests SYSTEM PRIVATE ${LIBGIT2_SYSTEM_INCLUDES})
47 target_link_libraries(util_tests ${LIBGIT2_SYSTEM_LIBS})
48
49 ide_split_sources(util_tests)
50
51 #
52 # Old versions of gcc require us to declare our test functions; don't do
53 # this on newer compilers to avoid unnecessary recompilation.
54 #
55 if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.0)
56 target_compile_options(util_tests PRIVATE -include "clar_suite.h")
57 endif()
58
59 if(MSVC_IDE)
60 # Precompiled headers
61 set_target_properties(util_tests PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h")
62 set_source_files_properties("precompiled.c" COMPILE_FLAGS "/Ycprecompiled.h")
63 endif()
64
65 enable_testing()
66
67 include(AddClarTest)
68 add_clar_test(util_tests util -v)