summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt62
-rw-r--r--src/common.h1
-rw-r--r--src/features.h.in34
-rw-r--r--src/unix/posix.h1
-rw-r--r--tests/CMakeLists.txt2
5 files changed, 70 insertions, 30 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 469580176..3f9ecd849 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,7 +51,7 @@ OPTION( USE_EXT_HTTP_PARSER "Use system HTTP_Parser if available" ON)
OPTION( DEBUG_POOL "Enable debug pool allocator" OFF )
IF(DEBUG_POOL)
- ADD_DEFINITIONS(-DGIT_DEBUG_POOL)
+ SET(GIT_DEBUG_POOL 1)
ENDIF()
IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
@@ -237,12 +237,12 @@ IF (WIN32 AND EMBED_SSH_PATH)
FILE(GLOB SRC_SSH "${EMBED_SSH_PATH}/src/*.c")
INCLUDE_DIRECTORIES("${EMBED_SSH_PATH}/include")
FILE(WRITE "${EMBED_SSH_PATH}/src/libssh2_config.h" "#define HAVE_WINCNG\n#define LIBSSH2_WINCNG\n#include \"../win32/libssh2_config.h\"")
- ADD_DEFINITIONS(-DGIT_SSH)
+ SET(GIT_SSH 1)
ENDIF()
IF (WIN32 AND WINHTTP)
- ADD_DEFINITIONS(-DGIT_WINHTTP)
- ADD_DEFINITIONS(-DGIT_HTTPS)
+ SET(GIT_WINHTTP 1)
+ SET(GIT_HTTPS 1)
# Since MinGW does not come with headers or an import library for winhttp,
# we have to include a private header and generate our own import library
@@ -289,7 +289,7 @@ ELSE ()
ENDIF ()
IF (CURL_FOUND)
- ADD_DEFINITIONS(-DGIT_CURL)
+ SET(GIT_CURL 1)
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
LINK_DIRECTORIES(${CURL_LIBRARY_DIRS})
LINK_LIBRARIES(${CURL_LIBRARIES})
@@ -299,18 +299,18 @@ ENDIF()
# Specify sha1 implementation
IF (USE_SHA1DC)
- ADD_DEFINITIONS(-DGIT_SHA1_COLLISIONDETECT)
+ SET(GIT_SHA1_COLLISIONDETECT 1)
ADD_DEFINITIONS(-DSHA1DC_NO_STANDARD_INCLUDES=1)
ADD_DEFINITIONS(-DSHA1DC_CUSTOM_INCLUDE_SHA1_C=\"common.h\")
ADD_DEFINITIONS(-DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"common.h\")
FILE(GLOB SRC_SHA1 src/hash/hash_collisiondetect.c src/hash/sha1dc/*)
ELSEIF (WIN32 AND NOT MINGW)
- ADD_DEFINITIONS(-DGIT_SHA1_WIN32)
+ SET(GIT_SHA1_WIN32 1)
FILE(GLOB SRC_SHA1 src/hash/hash_win32.c)
ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- ADD_DEFINITIONS(-DGIT_SHA1_COMMON_CRYPTO)
+ SET(GIT_SHA1_COMMON_CRYPTO 1)
ELSEIF (OPENSSL_FOUND)
- ADD_DEFINITIONS(-DGIT_SHA1_OPENSSL)
+ SET(GIT_SHA1_OPENSSL 1)
IF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
LIST(APPEND LIBGIT2_PC_LIBS "-lssl")
ELSE()
@@ -322,7 +322,7 @@ ENDIF()
# Enable tracing
IF (ENABLE_TRACE STREQUAL "ON")
- ADD_DEFINITIONS(-DGIT_TRACE)
+ SET(GIT_TRACE 1)
ENDIF()
# Include POSIX regex when it is required
@@ -365,7 +365,7 @@ IF (USE_SSH)
PKG_CHECK_MODULES(LIBSSH2 libssh2)
ENDIF()
IF (LIBSSH2_FOUND)
- ADD_DEFINITIONS(-DGIT_SSH)
+ SET(GIT_SSH 1)
INCLUDE_DIRECTORIES(${LIBSSH2_INCLUDE_DIRS})
LINK_DIRECTORIES(${LIBSSH2_LIBRARY_DIRS})
LIST(APPEND LIBGIT2_PC_LIBS ${LIBSSH2_LDFLAGS})
@@ -374,7 +374,7 @@ IF (LIBSSH2_FOUND)
CHECK_LIBRARY_EXISTS("${LIBSSH2_LIBRARIES}" libssh2_userauth_publickey_frommemory "${LIBSSH2_LIBRARY_DIRS}" HAVE_LIBSSH2_MEMORY_CREDENTIALS)
IF (HAVE_LIBSSH2_MEMORY_CREDENTIALS)
- ADD_DEFINITIONS(-DGIT_SSH_MEMORY_CREDENTIALS)
+ SET(GIT_SSH_MEMORY_CREDENTIALS 1)
ENDIF()
ELSE()
MESSAGE(STATUS "LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of the default search path.")
@@ -385,7 +385,7 @@ IF (USE_GSSAPI)
FIND_PACKAGE(GSSAPI)
ENDIF()
IF (GSSAPI_FOUND)
- ADD_DEFINITIONS(-DGIT_GSSAPI)
+ SET(GIT_GSSAPI 1)
ENDIF()
# Optional external dependency: iconv
@@ -393,7 +393,7 @@ IF (USE_ICONV)
FIND_PACKAGE(Iconv)
ENDIF()
IF (ICONV_FOUND)
- ADD_DEFINITIONS(-DGIT_USE_ICONV)
+ SET(GIT_USE_ICONV 1)
INCLUDE_DIRECTORIES(${ICONV_INCLUDE_DIR})
LIST(APPEND LIBGIT2_PC_LIBS ${ICONV_LIBRARIES})
ENDIF()
@@ -421,7 +421,8 @@ IF (MSVC)
ENDIF()
IF (MSVC_CRTDBG)
- SET(CRT_FLAG_DEBUG "${CRT_FLAG_DEBUG} /DGIT_MSVC_CRTDBG")
+ SET(GIT_MSVC_CRTDBG 1)
+ SET(CRT_FLAG_DEBUG "${CRT_FLAG_DEBUG}")
SET(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES}" "Dbghelp.lib")
ENDIF()
@@ -548,16 +549,16 @@ ELSE()
ENDIF()
IF (SECURITY_FOUND)
- ADD_DEFINITIONS(-DGIT_SECURE_TRANSPORT)
- ADD_DEFINITIONS(-DGIT_HTTPS)
- INCLUDE_DIRECTORIES(${SECURITY_INCLUDE_DIR})
+ SET(GIT_SECURE_TRANSPORT 1)
+ SET(GIT_HTTPS 1)
+ INCLUDE_DIRECTORIES(${SECURITY_INCLUDE_DIR})
ENDIF ()
IF (OPENSSL_FOUND)
- ADD_DEFINITIONS(-DGIT_OPENSSL)
- ADD_DEFINITIONS(-DGIT_HTTPS)
- INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
- SET(SSL_LIBRARIES ${OPENSSL_LIBRARIES})
+ SET(GIT_OPENSSL 1)
+ SET(GIT_HTTPS 1)
+ INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
+ SET(SSL_LIBRARIES ${OPENSSL_LIBRARIES})
ENDIF()
@@ -567,19 +568,19 @@ IF (THREADSAFE)
FIND_PACKAGE(Threads REQUIRED)
ENDIF()
- ADD_DEFINITIONS(-DGIT_THREADS)
+ SET(GIT_THREADS 1)
ENDIF()
IF (USE_NSEC)
- ADD_DEFINITIONS(-DGIT_USE_NSEC)
+ SET(GIT_USE_NSEC 1)
ENDIF()
IF (HAVE_STRUCT_STAT_ST_MTIM)
- ADD_DEFINITIONS(-DGIT_USE_STAT_MTIM)
+ SET(GIT_USE_STAT_MTIM 1)
ELSEIF (HAVE_STRUCT_STAT_ST_MTIMESPEC)
- ADD_DEFINITIONS(-DGIT_USE_STAT_MTIMESPEC)
+ SET(GIT_USE_STAT_MTIMESPEC 1)
ELSEIF (HAVE_STRUCT_STAT_ST_MTIME_NSEC)
- ADD_DEFINITIONS(-DGIT_USE_STAT_MTIME_NSEC)
+ SET(GIT_USE_STAT_MTIME_NSEC 1)
ENDIF()
ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64)
@@ -603,15 +604,18 @@ FILE(GLOB SRC_GIT2 src/*.c src/*.h src/transports/*.c src/transports/*.h src/xdi
# Determine architecture of the machine
IF (CMAKE_SIZEOF_VOID_P EQUAL 8)
- ADD_DEFINITIONS(-DGIT_ARCH_64)
+ SET(GIT_ARCH_64 1)
ELSEIF (CMAKE_SIZEOF_VOID_P EQUAL 4)
- ADD_DEFINITIONS(-DGIT_ARCH_32)
+ SET(GIT_ARCH_32 1)
ELSEIF (CMAKE_SIZEOF_VOID_P)
MESSAGE(FATAL_ERROR "Unsupported architecture (pointer size is ${CMAKE_SIZEOF_VOID_P} bytes)")
ELSE()
MESSAGE(FATAL_ERROR "Unsupported architecture (CMAKE_SIZEOF_VOID_P is unset)")
ENDIF()
+CONFIGURE_FILE(src/features.h.in git2/sys/features.h)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
+
SET(GIT2INTERNAL_OBJECTS ${SRC_H} ${SRC_GIT2} ${SRC_OS} ${SRC_ZLIB} ${SRC_HTTP} ${SRC_REGEX} ${SRC_SSH} ${SRC_SHA1})
IF (CMAKE_VERSION VERSION_GREATER 2.8.7)
diff --git a/src/common.h b/src/common.h
index 7a93d997c..17b9c14e5 100644
--- a/src/common.h
+++ b/src/common.h
@@ -7,6 +7,7 @@
#ifndef INCLUDE_common_h__
#define INCLUDE_common_h__
+#include "git2/sys/features.h"
#include "git2/common.h"
#include "cc-compat.h"
diff --git a/src/features.h.in b/src/features.h.in
new file mode 100644
index 000000000..c3fcc5170
--- /dev/null
+++ b/src/features.h.in
@@ -0,0 +1,34 @@
+#ifndef INCLUDE_features_h__
+#define INCLUDE_features_h__
+
+#cmakedefine GIT_DEBUG_POOL 1
+#cmakedefine GIT_TRACE 1
+#cmakedefine GIT_THREADS 1
+#cmakedefine GIT_MSVC_CRTDBG 1
+
+#cmakedefine GIT_ARCH_64 1
+#cmakedefine GIT_ARCH_32 1
+
+#cmakedefine GIT_USE_ICONV 1
+#cmakedefine GIT_USE_NSEC 1
+#cmakedefine GIT_USE_STAT_MTIM 1
+#cmakedefine GIT_USE_STAT_MTIMESPEC 1
+#cmakedefine GIT_USE_STAT_MTIME_NSEC 1
+
+#cmakedefine GIT_SSH 1
+#cmakedefine GIT_SSH_MEMORY_CREDENTIALS 1
+
+#cmakedefine GIT_GSSAPI 1
+#cmakedefine GIT_WINHTTP 1
+#cmakedefine GIT_CURL 1
+
+#cmakedefine GIT_HTTPS 1
+#cmakedefine GIT_OPENSSL 1
+#cmakedefine GIT_SECURE_TRANSPORT 1
+
+#cmakedefine GIT_SHA1_COLLISIONDETECT 1
+#cmakedefine GIT_SHA1_WIN32 1
+#cmakedefine GIT_SHA1_COMMON_CRYPTO 1
+#cmakedefine GIT_SHA1_OPENSSL 1
+
+#endif
diff --git a/src/unix/posix.h b/src/unix/posix.h
index 52985fd8a..548341906 100644
--- a/src/unix/posix.h
+++ b/src/unix/posix.h
@@ -7,6 +7,7 @@
#ifndef INCLUDE_posix__unix_h__
#define INCLUDE_posix__unix_h__
+#include "git2/sys/features.h"
#include <stdio.h>
#include <dirent.h>
#include <sys/param.h>
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 31144c64f..6566f53e6 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -10,7 +10,7 @@ SET(CLAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\")
ADD_DEFINITIONS(-DCLAR_TMPDIR=\"libgit2_tests\")
-INCLUDE_DIRECTORIES(${CLAR_PATH})
+INCLUDE_DIRECTORIES(${CLAR_PATH} ${CMAKE_BINARY_DIR}/src)
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")