CMakeLists.txt 2.81 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
FIND_PACKAGE(PythonInterp)

IF(NOT PYTHONINTERP_FOUND)
  MESSAGE(FATAL_ERROR "Could not find a python interpeter, which is needed to build the tests. "
    "Make sure python is available, or pass -DBUILD_CLAR=OFF to skip building the tests")
ENDIF()

SET(CLAR_FIXTURES "${CMAKE_CURRENT_SOURCE_DIR}/resources/")
SET(CLAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\")
ADD_DEFINITIONS(-DCLAR_TMPDIR=\"libgit2_tests\")
12
ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64)
13

14 15 16
# Ensure that we do not use deprecated functions internally
ADD_DEFINITIONS(-DGIT_DEPRECATE_HARD)

17
INCLUDE_DIRECTORIES(${CLAR_PATH} ${libgit2_BINARY_DIR}/src)
18 19 20 21 22 23 24 25 26
FILE(GLOB_RECURSE SRC_TEST ${CLAR_PATH}/*/*.c ${CLAR_PATH}/*/*.h)
SET(SRC_CLAR "main.c" "clar_libgit2.c" "clar_libgit2_trace.c" "clar_libgit2_timer.c" "clar.c")

IF(MSVC_IDE)
	LIST(APPEND SRC_CLAR "precompiled.c")
ENDIF()

ADD_CUSTOM_COMMAND(
	OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/clar.suite
27
	COMMAND ${PYTHON_EXECUTABLE} generate.py -o "${CMAKE_CURRENT_BINARY_DIR}" -f -xonline -xstress -xperf .
28 29 30 31 32 33 34 35 36
	DEPENDS ${SRC_TEST}
	WORKING_DIRECTORY ${CLAR_PATH}
)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})

SET_SOURCE_FILES_PROPERTIES(
	${CLAR_PATH}/clar.c
	PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/clar.suite)

37
INCLUDE_DIRECTORIES(${LIBGIT2_INCLUDES})
38
INCLUDE_DIRECTORIES(SYSTEM ${LIBGIT2_SYSTEM_INCLUDES})
39

40
ADD_EXECUTABLE(libgit2_clar ${SRC_CLAR} ${SRC_TEST} ${LIBGIT2_OBJECTS})
41

42
SET_TARGET_PROPERTIES(libgit2_clar PROPERTIES C_STANDARD 90)
43
SET_TARGET_PROPERTIES(libgit2_clar PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${libgit2_BINARY_DIR})
44

45 46 47
IF (${CMAKE_VERSION} VERSION_LESS 2.8.12)
	# Already handled by a global INCLUDE_DIRECTORY()
ELSE()
48 49 50
	TARGET_INCLUDE_DIRECTORIES(libgit2_clar PRIVATE ../src PUBLIC ../include)
ENDIF()

51
TARGET_LINK_LIBRARIES(libgit2_clar ${LIBGIT2_LIBS})
52 53 54 55 56 57 58 59
IDE_SPLIT_SOURCES(libgit2_clar)

IF (MSVC_IDE)
	# Precompiled headers
	SET_TARGET_PROPERTIES(libgit2_clar PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h")
	SET_SOURCE_FILES_PROPERTIES("precompiled.c" COMPILE_FLAGS "/Ycprecompiled.h")
ENDIF ()

60 61 62 63 64 65 66 67 68 69 70 71
FUNCTION(ADD_CLAR_TEST name)
	IF (NOT USE_LEAK_CHECKER STREQUAL "OFF")
		ADD_TEST(${name} "${libgit2_SOURCE_DIR}/script/${USE_LEAK_CHECKER}.sh" "${libgit2_BINARY_DIR}/libgit2_clar" ${ARGN})
	ELSE()
		ADD_TEST(${name} "${libgit2_BINARY_DIR}/libgit2_clar" ${ARGN})
	ENDIF()
ENDFUNCTION(ADD_CLAR_TEST)

ADD_CLAR_TEST(offline   -v -xonline)
ADD_CLAR_TEST(invasive  -v -score::ftruncate -sfilter::stream::bigfile -sodb::largefiles -siterator::workdir::filesystem_gunk -srepo::init -srepo::init::at_filesystem_root)
ADD_CLAR_TEST(online    -v -sonline)
ADD_CLAR_TEST(gitdaemon -v -sonline::push)
72
ADD_CLAR_TEST(ssh       -v -sonline::push -sonline::clone::ssh_cert -sonline::clone::ssh_with_paths -sonline::clone::path_whitespace_ssh)
73
ADD_CLAR_TEST(proxy     -v -sonline::clone::proxy)