Unverified Commit 9b04a307 by Edward Thomson Committed by GitHub

Merge pull request #6084 from libgit2/ethomson/cmake

cmake: cleanups and consistency
parents a89db0e7 52693ab4
...@@ -4,18 +4,18 @@ ...@@ -4,18 +4,18 @@
# TODO: The Chromium build file (in deps/chromium-zlib/zlib/BUILD.gn) supports # TODO: The Chromium build file (in deps/chromium-zlib/zlib/BUILD.gn) supports
# more platforms (like ARM with NEON), more can be enabled as needed. # more platforms (like ARM with NEON), more can be enabled as needed.
CMAKE_MINIMUM_REQUIRED(VERSION 3.11) cmake_minimum_required(VERSION 3.11)
include(FetchContent) include(FetchContent)
include(FindGit) include(FindGit)
# Ensure that the git binary is present to download the sources. # Ensure that the git binary is present to download the sources.
find_package(Git) find_package(Git)
IF(NOT Git_FOUND) if(NOT Git_FOUND)
message(FATAL_ERROR "git is required to download the Chromium zlib sources") message(FATAL_ERROR "git is required to download the Chromium zlib sources")
ENDIF() endif()
FetchContent_Populate(chromium_zlib_src fetchcontent_populate(chromium_zlib_src
GIT_REPOSITORY https://chromium.googlesource.com/chromium/src/third_party/zlib.git GIT_REPOSITORY https://chromium.googlesource.com/chromium/src/third_party/zlib.git
GIT_TAG 2c183c9f93a328bfb3121284da13cf89a0f7e64a GIT_TAG 2c183c9f93a328bfb3121284da13cf89a0f7e64a
QUIET QUIET
...@@ -31,8 +31,8 @@ disable_warnings(missing-declarations) ...@@ -31,8 +31,8 @@ disable_warnings(missing-declarations)
# -O3 is also set by the Chromium configuration and has been deemed safe enough # -O3 is also set by the Chromium configuration and has been deemed safe enough
# for them. # for them.
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG") set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG")
SET(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG") set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
# Common definitions. # Common definitions.
add_definitions( add_definitions(
......
FILE(GLOB SRC_NTLMCLIENT "ntlm.c" "ntlm.h" "util.c" "util.h") file(GLOB SRC_NTLMCLIENT "ntlm.c" "ntlm.h" "util.c" "util.h")
LIST(SORT SRC_NTLMCLIENT) list(SORT SRC_NTLMCLIENT)
ADD_DEFINITIONS(-DNTLM_STATIC=1) add_definitions(-DNTLM_STATIC=1)
DISABLE_WARNINGS(implicit-fallthrough) disable_warnings(implicit-fallthrough)
IF(USE_ICONV) if(USE_ICONV)
ADD_DEFINITIONS(-DUNICODE_ICONV=1) add_definitions(-DUNICODE_ICONV=1)
FILE(GLOB SRC_NTLMCLIENT_UNICODE "unicode_iconv.c" "unicode_iconv.h") file(GLOB SRC_NTLMCLIENT_UNICODE "unicode_iconv.c" "unicode_iconv.h")
ELSE() else()
ADD_DEFINITIONS(-DUNICODE_BUILTIN=1) add_definitions(-DUNICODE_BUILTIN=1)
FILE(GLOB SRC_NTLMCLIENT_UNICODE "unicode_builtin.c" "unicode_builtin.h") file(GLOB SRC_NTLMCLIENT_UNICODE "unicode_builtin.c" "unicode_builtin.h")
ENDIF() endif()
IF(USE_HTTPS STREQUAL "SecureTransport") if(USE_HTTPS STREQUAL "SecureTransport")
ADD_DEFINITIONS(-DCRYPT_COMMONCRYPTO) add_definitions(-DCRYPT_COMMONCRYPTO)
SET(SRC_NTLMCLIENT_CRYPTO "crypt_commoncrypto.c" "crypt_commoncrypto.h") set(SRC_NTLMCLIENT_CRYPTO "crypt_commoncrypto.c" "crypt_commoncrypto.h")
# CC_MD4 has been deprecated in macOS 10.15. # CC_MD4 has been deprecated in macOS 10.15.
SET_SOURCE_FILES_PROPERTIES("crypt_commoncrypto.c" COMPILE_FLAGS "-Wno-deprecated") set_source_files_properties("crypt_commoncrypto.c" COMPILE_FLAGS "-Wno-deprecated")
ELSEIF(USE_HTTPS STREQUAL "OpenSSL") elseif(USE_HTTPS STREQUAL "OpenSSL")
ADD_DEFINITIONS(-DCRYPT_OPENSSL) add_definitions(-DCRYPT_OPENSSL)
INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR}) include_directories(${OPENSSL_INCLUDE_DIR})
SET(SRC_NTLMCLIENT_CRYPTO "crypt_openssl.c" "crypt_openssl.h") set(SRC_NTLMCLIENT_CRYPTO "crypt_openssl.c" "crypt_openssl.h")
ELSEIF(USE_HTTPS STREQUAL "OpenSSL-Dynamic") elseif(USE_HTTPS STREQUAL "OpenSSL-Dynamic")
ADD_DEFINITIONS(-DCRYPT_OPENSSL) add_definitions(-DCRYPT_OPENSSL)
ADD_DEFINITIONS(-DCRYPT_OPENSSL_DYNAMIC) add_definitions(-DCRYPT_OPENSSL_DYNAMIC)
SET(SRC_NTLMCLIENT_CRYPTO "crypt_openssl.c" "crypt_openssl.h") set(SRC_NTLMCLIENT_CRYPTO "crypt_openssl.c" "crypt_openssl.h")
ELSEIF(USE_HTTPS STREQUAL "mbedTLS") elseif(USE_HTTPS STREQUAL "mbedTLS")
ADD_DEFINITIONS(-DCRYPT_MBEDTLS) add_definitions(-DCRYPT_MBEDTLS)
INCLUDE_DIRECTORIES(${MBEDTLS_INCLUDE_DIR}) include_directories(${MBEDTLS_INCLUDE_DIR})
SET(SRC_NTLMCLIENT_CRYPTO "crypt_mbedtls.c" "crypt_mbedtls.h") set(SRC_NTLMCLIENT_CRYPTO "crypt_mbedtls.c" "crypt_mbedtls.h")
ELSE() else()
MESSAGE(FATAL_ERROR "Unable to use libgit2's HTTPS backend (${USE_HTTPS}) for NTLM crypto") message(FATAL_ERROR "Unable to use libgit2's HTTPS backend (${USE_HTTPS}) for NTLM crypto")
ENDIF() endif()
ADD_LIBRARY(ntlmclient OBJECT ${SRC_NTLMCLIENT} ${SRC_NTLMCLIENT_UNICODE} ${SRC_NTLMCLIENT_CRYPTO}) add_library(ntlmclient OBJECT ${SRC_NTLMCLIENT} ${SRC_NTLMCLIENT_UNICODE} ${SRC_NTLMCLIENT_CRYPTO})
INCLUDE(CheckIncludeFile) include(CheckIncludeFile)
INCLUDE(CheckFunctionExists) include(CheckFunctionExists)
INCLUDE(CheckTypeSize) include(CheckTypeSize)
CHECK_INCLUDE_FILE(dirent.h HAVE_DIRENT_H) check_include_file(dirent.h HAVE_DIRENT_H)
CHECK_INCLUDE_FILE(stdint.h HAVE_STDINT_H) check_include_file(stdint.h HAVE_STDINT_H)
CHECK_INCLUDE_FILE(inttypes.h HAVE_INTTYPES_H) check_include_file(inttypes.h HAVE_INTTYPES_H)
CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H) check_include_file(sys/stat.h HAVE_SYS_STAT_H)
CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H) check_include_file(sys/types.h HAVE_SYS_TYPES_H)
CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H) check_include_file(unistd.h HAVE_UNISTD_H)
CHECK_INCLUDE_FILE(windows.h HAVE_WINDOWS_H) check_include_file(windows.h HAVE_WINDOWS_H)
CHECK_FUNCTION_EXISTS(bcopy HAVE_BCOPY) check_function_exists(bcopy HAVE_BCOPY)
CHECK_FUNCTION_EXISTS(memmove HAVE_MEMMOVE) check_function_exists(memmove HAVE_MEMMOVE)
CHECK_FUNCTION_EXISTS(strerror HAVE_STRERROR) check_function_exists(strerror HAVE_STRERROR)
CHECK_FUNCTION_EXISTS(strtoll HAVE_STRTOLL) check_function_exists(strtoll HAVE_STRTOLL)
CHECK_FUNCTION_EXISTS(strtoq HAVE_STRTOQ) check_function_exists(strtoq HAVE_STRTOQ)
CHECK_FUNCTION_EXISTS(_strtoi64 HAVE__STRTOI64) check_function_exists(_strtoi64 HAVE__STRTOI64)
CHECK_TYPE_SIZE("long long" LONG_LONG) check_type_size("long long" LONG_LONG)
CHECK_TYPE_SIZE("unsigned long long" UNSIGNED_LONG_LONG) check_type_size("unsigned long long" UNSIGNED_LONG_LONG)
DISABLE_WARNINGS(unused-function) disable_warnings(unused-function)
DISABLE_WARNINGS(implicit-fallthrough) disable_warnings(implicit-fallthrough)
# User-configurable options # User-configurable options
SET(SUPPORT_PCRE8 1) set(SUPPORT_PCRE8 1)
SET(PCRE_LINK_SIZE "2") set(PCRE_LINK_SIZE "2")
SET(PCRE_PARENS_NEST_LIMIT "250") set(PCRE_PARENS_NEST_LIMIT "250")
SET(PCRE_MATCH_LIMIT "10000000") set(PCRE_MATCH_LIMIT "10000000")
SET(PCRE_MATCH_LIMIT_RECURSION "MATCH_LIMIT") set(PCRE_MATCH_LIMIT_RECURSION "MATCH_LIMIT")
SET(PCRE_NEWLINE "LF") set(PCRE_NEWLINE "LF")
SET(NO_RECURSE 1) set(NO_RECURSE 1)
SET(PCRE_POSIX_MALLOC_THRESHOLD "10") set(PCRE_POSIX_MALLOC_THRESHOLD "10")
SET(BSR_ANYCRLF 0) set(BSR_ANYCRLF 0)
IF (MINGW) if(MINGW)
OPTION(NON_STANDARD_LIB_PREFIX option(NON_STANDARD_LIB_PREFIX
"ON=Shared libraries built in mingw will be named pcre.dll, etc., instead of libpcre.dll, etc." "ON=Shared libraries built in mingw will be named pcre.dll, etc., instead of libpcre.dll, etc."
OFF) OFF)
OPTION(NON_STANDARD_LIB_SUFFIX option(NON_STANDARD_LIB_SUFFIX
"ON=Shared libraries built in mingw will be named libpcre-0.dll, etc., instead of libpcre.dll, etc." "ON=Shared libraries built in mingw will be named libpcre-0.dll, etc., instead of libpcre.dll, etc."
OFF) OFF)
ENDIF(MINGW) endif(MINGW)
# Prepare build configuration # Prepare build configuration
SET(pcre_have_long_long 0) set(pcre_have_long_long 0)
SET(pcre_have_ulong_long 0) set(pcre_have_ulong_long 0)
IF(HAVE_LONG_LONG) if(HAVE_LONG_LONG)
SET(pcre_have_long_long 1) set(pcre_have_long_long 1)
ENDIF(HAVE_LONG_LONG) endif(HAVE_LONG_LONG)
IF(HAVE_UNSIGNED_LONG_LONG) if(HAVE_UNSIGNED_LONG_LONG)
SET(pcre_have_ulong_long 1) set(pcre_have_ulong_long 1)
ENDIF(HAVE_UNSIGNED_LONG_LONG) endif(HAVE_UNSIGNED_LONG_LONG)
SET(NEWLINE "") set(NEWLINE "")
IF(PCRE_NEWLINE STREQUAL "LF") if(PCRE_NEWLINE STREQUAL "LF")
SET(NEWLINE "10") set(NEWLINE "10")
ENDIF(PCRE_NEWLINE STREQUAL "LF") endif(PCRE_NEWLINE STREQUAL "LF")
IF(PCRE_NEWLINE STREQUAL "CR") if(PCRE_NEWLINE STREQUAL "CR")
SET(NEWLINE "13") set(NEWLINE "13")
ENDIF(PCRE_NEWLINE STREQUAL "CR") endif(PCRE_NEWLINE STREQUAL "CR")
IF(PCRE_NEWLINE STREQUAL "CRLF") if(PCRE_NEWLINE STREQUAL "CRLF")
SET(NEWLINE "3338") set(NEWLINE "3338")
ENDIF(PCRE_NEWLINE STREQUAL "CRLF") endif(PCRE_NEWLINE STREQUAL "CRLF")
IF(PCRE_NEWLINE STREQUAL "ANY") if(PCRE_NEWLINE STREQUAL "ANY")
SET(NEWLINE "-1") set(NEWLINE "-1")
ENDIF(PCRE_NEWLINE STREQUAL "ANY") endif(PCRE_NEWLINE STREQUAL "ANY")
IF(PCRE_NEWLINE STREQUAL "ANYCRLF") if(PCRE_NEWLINE STREQUAL "ANYCRLF")
SET(NEWLINE "-2") set(NEWLINE "-2")
ENDIF(PCRE_NEWLINE STREQUAL "ANYCRLF") endif(PCRE_NEWLINE STREQUAL "ANYCRLF")
IF(NEWLINE STREQUAL "") if(NEWLINE STREQUAL "")
MESSAGE(FATAL_ERROR "The PCRE_NEWLINE variable must be set to one of the following values: \"LF\", \"CR\", \"CRLF\", \"ANY\", \"ANYCRLF\".") message(FATAL_ERROR "The PCRE_NEWLINE variable must be set to one of the following values: \"LF\", \"CR\", \"CRLF\", \"ANY\", \"ANYCRLF\".")
ENDIF(NEWLINE STREQUAL "") endif(NEWLINE STREQUAL "")
# Output files # Output files
CONFIGURE_FILE(config.h.in configure_file(config.h.in
${PROJECT_BINARY_DIR}/src/pcre/config.h ${PROJECT_BINARY_DIR}/src/pcre/config.h
@ONLY) @ONLY)
# Source code # Source code
SET(PCRE_HEADERS ${PROJECT_BINARY_DIR}/src/pcre/config.h) set(PCRE_HEADERS ${PROJECT_BINARY_DIR}/src/pcre/config.h)
SET(PCRE_SOURCES set(PCRE_SOURCES
pcre_byte_order.c pcre_byte_order.c
pcre_chartables.c pcre_chartables.c
pcre_compile.c pcre_compile.c
...@@ -113,28 +113,28 @@ SET(PCRE_SOURCES ...@@ -113,28 +113,28 @@ SET(PCRE_SOURCES
pcre_xclass.c pcre_xclass.c
) )
SET(PCREPOSIX_HEADERS pcreposix.h) set(PCREPOSIX_HEADERS pcreposix.h)
SET(PCREPOSIX_SOURCES pcreposix.c) set(PCREPOSIX_SOURCES pcreposix.c)
# Fix static compilation with MSVC: https://bugs.exim.org/show_bug.cgi?id=1681 # Fix static compilation with MSVC: https://bugs.exim.org/show_bug.cgi?id=1681
# This code was taken from the CMake wiki, not from WebM. # This code was taken from the CMake wiki, not from WebM.
# Build setup # Build setup
ADD_DEFINITIONS(-DHAVE_CONFIG_H) add_definitions(-DHAVE_CONFIG_H)
IF(MSVC) if(MSVC)
ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS) add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS)
ENDIF(MSVC) endif(MSVC)
SET(CMAKE_INCLUDE_CURRENT_DIR 1) set(CMAKE_INCLUDE_CURRENT_DIR 1)
SET(targets) set(targets)
# Libraries # Libraries
# pcre # pcre
INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}/src/pcre) include_directories(${PROJECT_BINARY_DIR}/src/pcre)
ADD_LIBRARY(pcre OBJECT ${PCRE_HEADERS} ${PCRE_SOURCES} ${PCREPOSIX_SOURCES}) add_library(pcre OBJECT ${PCRE_HEADERS} ${PCRE_SOURCES} ${PCREPOSIX_SOURCES})
# end CMakeLists.txt # end CMakeLists.txt
FIND_PROGRAM(DLLTOOL dlltool CMAKE_FIND_ROOT_PATH_BOTH) find_program(DLLTOOL dlltool CMAKE_FIND_ROOT_PATH_BOTH)
IF (NOT DLLTOOL) if(NOT DLLTOOL)
MESSAGE(FATAL_ERROR "Could not find dlltool command") message(FATAL_ERROR "Could not find dlltool command")
ENDIF () endif()
SET(LIBWINHTTP_PATH "${libgit2_BINARY_DIR}/deps/winhttp") set(LIBWINHTTP_PATH "${libgit2_BINARY_DIR}/deps/winhttp")
SET(LIBWINHTTP_PATH ${LIBWINHTTP_PATH} PARENT_SCOPE) set(LIBWINHTTP_PATH ${LIBWINHTTP_PATH} PARENT_SCOPE)
FILE(MAKE_DIRECTORY ${LIBWINHTTP_PATH}) file(MAKE_DIRECTORY ${LIBWINHTTP_PATH})
IF (CMAKE_SIZEOF_VOID_P EQUAL 8) if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(WINHTTP_DEF "winhttp64.def") set(WINHTTP_DEF "winhttp64.def")
ELSE() else()
set(WINHTTP_DEF "winhttp.def") set(WINHTTP_DEF "winhttp.def")
ENDIF() endif()
ADD_CUSTOM_COMMAND( add_custom_command(
OUTPUT ${LIBWINHTTP_PATH}/libwinhttp.a OUTPUT ${LIBWINHTTP_PATH}/libwinhttp.a
COMMAND ${DLLTOOL} -d ${WINHTTP_DEF} -k -D winhttp.dll -l libwinhttp.a COMMAND ${DLLTOOL} -d ${WINHTTP_DEF} -k -D winhttp.dll -l libwinhttp.a
DEPENDS ${WINHTTP_DEF} DEPENDS ${WINHTTP_DEF}
WORKING_DIRECTORY ${LIBWINHTTP_PATH} WORKING_DIRECTORY ${LIBWINHTTP_PATH}
) )
SET_SOURCE_FILES_PROPERTIES( set_source_files_properties(
${CMAKE_CURRENT_SOURCE_DIR}/src/transports/winhttp.c ${CMAKE_CURRENT_SOURCE_DIR}/src/transports/winhttp.c
PROPERTIES OBJECT_DEPENDS ${LIBWINHTTP_PATH}/libwinhttp.a PROPERTIES OBJECT_DEPENDS ${LIBWINHTTP_PATH}/libwinhttp.a
) )
INCLUDE_DIRECTORIES(${LIBGIT2_INCLUDES}) include_directories(${LIBGIT2_INCLUDES})
INCLUDE_DIRECTORIES(SYSTEM ${LIBGIT2_SYSTEM_INCLUDES}) include_directories(SYSTEM ${LIBGIT2_SYSTEM_INCLUDES})
FILE(GLOB LG2_SOURCES *.c *.h) file(GLOB LG2_SOURCES *.c *.h)
ADD_EXECUTABLE(lg2 ${LG2_SOURCES}) add_executable(lg2 ${LG2_SOURCES})
SET_TARGET_PROPERTIES(lg2 PROPERTIES C_STANDARD 90) set_target_properties(lg2 PROPERTIES C_STANDARD 90)
# Ensure that we do not use deprecated functions internally # Ensure that we do not use deprecated functions internally
ADD_DEFINITIONS(-DGIT_DEPRECATE_HARD) add_definitions(-DGIT_DEPRECATE_HARD)
IF(WIN32 OR ANDROID) if(WIN32 OR ANDROID)
TARGET_LINK_LIBRARIES(lg2 git2) target_link_libraries(lg2 git2)
ELSE() else()
TARGET_LINK_LIBRARIES(lg2 git2 pthread) target_link_libraries(lg2 git2 pthread)
ENDIF() endif()
LINK_DIRECTORIES(${LIBGIT2_LIBDIRS}) link_directories(${LIBGIT2_LIBDIRS})
INCLUDE_DIRECTORIES(${LIBGIT2_INCLUDES}) include_directories(${LIBGIT2_INCLUDES})
INCLUDE_DIRECTORIES(SYSTEM ${LIBGIT2_SYSTEM_INCLUDES}) include_directories(SYSTEM ${LIBGIT2_SYSTEM_INCLUDES})
IF(BUILD_FUZZERS AND NOT USE_STANDALONE_FUZZERS) if(BUILD_FUZZERS AND NOT USE_STANDALONE_FUZZERS)
ADD_C_FLAG(-fsanitize=fuzzer) add_c_flag(-fsanitize=fuzzer)
ENDIF () endif()
FILE(GLOB SRC_FUZZ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *_fuzzer.c) file(GLOB SRC_FUZZ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *_fuzzer.c)
FOREACH(fuzz_target_src ${SRC_FUZZ}) foreach(fuzz_target_src ${SRC_FUZZ})
STRING(REPLACE ".c" "" fuzz_target_name ${fuzz_target_src}) string(REPLACE ".c" "" fuzz_target_name ${fuzz_target_src})
STRING(REPLACE "_fuzzer" "" fuzz_name ${fuzz_target_name}) string(REPLACE "_fuzzer" "" fuzz_name ${fuzz_target_name})
SET(${fuzz_target_name}_SOURCES ${fuzz_target_src} ${LIBGIT2_OBJECTS}) set(${fuzz_target_name}_SOURCES ${fuzz_target_src} ${LIBGIT2_OBJECTS})
IF(USE_STANDALONE_FUZZERS) if(USE_STANDALONE_FUZZERS)
LIST(APPEND ${fuzz_target_name}_SOURCES "standalone_driver.c") list(APPEND ${fuzz_target_name}_SOURCES "standalone_driver.c")
ENDIF() endif()
ADD_EXECUTABLE(${fuzz_target_name} ${${fuzz_target_name}_SOURCES}) add_executable(${fuzz_target_name} ${${fuzz_target_name}_SOURCES})
SET_TARGET_PROPERTIES(${fuzz_target_name} PROPERTIES C_STANDARD 90) set_target_properties(${fuzz_target_name} PROPERTIES C_STANDARD 90)
TARGET_LINK_LIBRARIES(${fuzz_target_name} ${LIBGIT2_LIBS}) target_link_libraries(${fuzz_target_name} ${LIBGIT2_LIBS})
ADD_TEST(${fuzz_target_name} "${CMAKE_CURRENT_BINARY_DIR}/${fuzz_target_name}" "${CMAKE_CURRENT_SOURCE_DIR}/corpora/${fuzz_name}") add_test(${fuzz_target_name} "${CMAKE_CURRENT_BINARY_DIR}/${fuzz_target_name}" "${CMAKE_CURRENT_SOURCE_DIR}/corpora/${fuzz_name}")
ENDFOREACH() endforeach()
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
#cmakedefine GIT_DEBUG_STRICT_ALLOC 1 #cmakedefine GIT_DEBUG_STRICT_ALLOC 1
#cmakedefine GIT_DEBUG_STRICT_OPEN 1 #cmakedefine GIT_DEBUG_STRICT_OPEN 1
#cmakedefine GIT_TRACE 1
#cmakedefine GIT_THREADS 1 #cmakedefine GIT_THREADS 1
#cmakedefine GIT_WIN32_LEAKCHECK 1 #cmakedefine GIT_WIN32_LEAKCHECK 1
......
...@@ -11,15 +11,10 @@ ...@@ -11,15 +11,10 @@
#include "runtime.h" #include "runtime.h"
#include "git2/trace.h" #include "git2/trace.h"
#ifdef GIT_TRACE
struct git_trace_data git_trace__data = {0}; struct git_trace_data git_trace__data = {0};
#endif
int git_trace_set(git_trace_level_t level, git_trace_cb callback) int git_trace_set(git_trace_level_t level, git_trace_cb callback)
{ {
#ifdef GIT_TRACE
GIT_ASSERT_ARG(level == 0 || callback != NULL); GIT_ASSERT_ARG(level == 0 || callback != NULL);
git_trace__data.level = level; git_trace__data.level = level;
...@@ -27,12 +22,4 @@ int git_trace_set(git_trace_level_t level, git_trace_cb callback) ...@@ -27,12 +22,4 @@ int git_trace_set(git_trace_level_t level, git_trace_cb callback)
GIT_MEMORY_BARRIER; GIT_MEMORY_BARRIER;
return 0; return 0;
#else
GIT_UNUSED(level);
GIT_UNUSED(callback);
git_error_set(GIT_ERROR_INVALID,
"this version of libgit2 was not built with tracing.");
return -1;
#endif
} }
...@@ -12,8 +12,6 @@ ...@@ -12,8 +12,6 @@
#include <git2/trace.h> #include <git2/trace.h>
#include "str.h" #include "str.h"
#ifdef GIT_TRACE
struct git_trace_data { struct git_trace_data {
git_trace_level_t level; git_trace_level_t level;
git_trace_cb callback; git_trace_cb callback;
...@@ -50,19 +48,4 @@ GIT_INLINE(void) git_trace(git_trace_level_t level, const char *fmt, ...) ...@@ -50,19 +48,4 @@ GIT_INLINE(void) git_trace(git_trace_level_t level, const char *fmt, ...)
} }
} }
#else
GIT_INLINE(void) git_trace__null(
git_trace_level_t level,
const char *fmt, ...)
{
GIT_UNUSED(level);
GIT_UNUSED(fmt);
}
#define git_trace_level() ((git_trace_level_t)0)
#define git_trace git_trace__null
#endif
#endif #endif
SET(Python_ADDITIONAL_VERSIONS 3 2.7) set(Python_ADDITIONAL_VERSIONS 3 2.7)
FIND_PACKAGE(PythonInterp) find_package(PythonInterp)
IF(NOT PYTHONINTERP_FOUND) if(NOT PYTHONINTERP_FOUND)
MESSAGE(FATAL_ERROR "Could not find a python interpeter, which is needed to build the tests. " message(FATAL_ERROR "Could not find a python interpeter, which is needed to build the tests. "
"Make sure python is available, or pass -DBUILD_TESTS=OFF to skip building the tests") "Make sure python is available, or pass -DBUILD_TESTS=OFF to skip building the tests")
ENDIF() ENDIF()
SET(CLAR_FIXTURES "${CMAKE_CURRENT_SOURCE_DIR}/resources/") set(CLAR_FIXTURES "${CMAKE_CURRENT_SOURCE_DIR}/resources/")
SET(CLAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}") set(CLAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\") add_definitions(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\")
ADD_DEFINITIONS(-DCLAR_TMPDIR=\"libgit2_tests\") add_definitions(-DCLAR_TMPDIR=\"libgit2_tests\")
ADD_DEFINITIONS(-DCLAR_WIN32_LONGPATHS) add_definitions(-DCLAR_WIN32_LONGPATHS)
ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64) add_definitions(-D_FILE_OFFSET_BITS=64)
# Ensure that we do not use deprecated functions internally # Ensure that we do not use deprecated functions internally
ADD_DEFINITIONS(-DGIT_DEPRECATE_HARD) add_definitions(-DGIT_DEPRECATE_HARD)
INCLUDE_DIRECTORIES(${CLAR_PATH} ${libgit2_BINARY_DIR}/src) include_directories(${CLAR_PATH} ${libgit2_BINARY_DIR}/src)
FILE(GLOB_RECURSE SRC_TEST ${CLAR_PATH}/*/*.c ${CLAR_PATH}/*/*.h) 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") set(SRC_CLAR "main.c" "clar_libgit2.c" "clar_libgit2_trace.c" "clar_libgit2_timer.c" "clar.c")
IF(MSVC_IDE) if(MSVC_IDE)
LIST(APPEND SRC_CLAR "precompiled.c") list(APPEND SRC_CLAR "precompiled.c")
ENDIF() endif()
ADD_CUSTOM_COMMAND( add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/clar.suite OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/clar.suite
COMMAND ${PYTHON_EXECUTABLE} generate.py -o "${CMAKE_CURRENT_BINARY_DIR}" -f -xonline -xstress -xperf . COMMAND ${PYTHON_EXECUTABLE} generate.py -o "${CMAKE_CURRENT_BINARY_DIR}" -f -xonline -xstress -xperf .
DEPENDS ${SRC_TEST} DEPENDS ${SRC_TEST}
WORKING_DIRECTORY ${CLAR_PATH} WORKING_DIRECTORY ${CLAR_PATH}
) )
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR})
SET_SOURCE_FILES_PROPERTIES( set_source_files_properties(
${CLAR_PATH}/clar.c ${CLAR_PATH}/clar.c
PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/clar.suite) PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/clar.suite)
INCLUDE_DIRECTORIES(${LIBGIT2_INCLUDES}) include_directories(${LIBGIT2_INCLUDES})
INCLUDE_DIRECTORIES(SYSTEM ${LIBGIT2_SYSTEM_INCLUDES}) include_directories(SYSTEM ${LIBGIT2_SYSTEM_INCLUDES})
ADD_EXECUTABLE(libgit2_tests ${SRC_CLAR} ${SRC_TEST} ${LIBGIT2_OBJECTS}) add_executable(libgit2_tests ${SRC_CLAR} ${SRC_TEST} ${LIBGIT2_OBJECTS})
SET_TARGET_PROPERTIES(libgit2_tests PROPERTIES C_STANDARD 90) set_target_properties(libgit2_tests PROPERTIES C_STANDARD 90)
SET_TARGET_PROPERTIES(libgit2_tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${libgit2_BINARY_DIR}) set_target_properties(libgit2_tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${libgit2_BINARY_DIR})
TARGET_INCLUDE_DIRECTORIES(libgit2_tests PRIVATE ../src PUBLIC ../include) target_include_directories(libgit2_tests PRIVATE ../src PUBLIC ../include)
TARGET_LINK_LIBRARIES(libgit2_tests ${LIBGIT2_LIBS}) target_link_libraries(libgit2_tests ${LIBGIT2_LIBS})
IDE_SPLIT_SOURCES(libgit2_tests) ide_split_sources(libgit2_tests)
IF (MSVC_IDE) if(MSVC_IDE)
# Precompiled headers # Precompiled headers
SET_TARGET_PROPERTIES(libgit2_tests PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h") set_target_properties(libgit2_tests PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h")
SET_SOURCE_FILES_PROPERTIES("precompiled.c" COMPILE_FLAGS "/Ycprecompiled.h") set_source_files_properties("precompiled.c" COMPILE_FLAGS "/Ycprecompiled.h")
ENDIF () endif()
FUNCTION(ADD_CLAR_TEST name) function(ADD_CLAR_TEST name)
IF (NOT USE_LEAK_CHECKER STREQUAL "OFF") if(NOT USE_LEAK_CHECKER STREQUAL "OFF")
ADD_TEST(${name} "${libgit2_SOURCE_DIR}/script/${USE_LEAK_CHECKER}.sh" "${libgit2_BINARY_DIR}/libgit2_tests" ${ARGN}) add_test(${name} "${libgit2_SOURCE_DIR}/script/${USE_LEAK_CHECKER}.sh" "${libgit2_BINARY_DIR}/libgit2_tests" ${ARGN})
ELSE() else()
ADD_TEST(${name} "${libgit2_BINARY_DIR}/libgit2_tests" ${ARGN}) add_test(${name} "${libgit2_BINARY_DIR}/libgit2_tests" ${ARGN})
ENDIF() endif()
ENDFUNCTION(ADD_CLAR_TEST) endfunction(ADD_CLAR_TEST)
ADD_CLAR_TEST(offline -v -xonline) 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(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 -xonline::customcert) add_clar_test(online -v -sonline -xonline::customcert)
ADD_CLAR_TEST(online_customcert -v -sonline::customcert) add_clar_test(online_customcert -v -sonline::customcert)
ADD_CLAR_TEST(gitdaemon -v -sonline::push) add_clar_test(gitdaemon -v -sonline::push)
ADD_CLAR_TEST(ssh -v -sonline::push -sonline::clone::ssh_cert -sonline::clone::ssh_with_paths -sonline::clone::path_whitespace_ssh) add_clar_test(ssh -v -sonline::push -sonline::clone::ssh_cert -sonline::clone::ssh_with_paths -sonline::clone::path_whitespace_ssh)
ADD_CLAR_TEST(proxy -v -sonline::clone::proxy) add_clar_test(proxy -v -sonline::clone::proxy)
ADD_CLAR_TEST(auth_clone -v -sonline::clone::cred) add_clar_test(auth_clone -v -sonline::clone::cred)
ADD_CLAR_TEST(auth_clone_and_push -v -sonline::clone::push -sonline::push) add_clar_test(auth_clone_and_push -v -sonline::clone::push -sonline::push)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment