diff options
author | Patrick Steinhardt <ps@pks.im> | 2020-06-05 10:24:30 +0200 |
---|---|---|
committer | Patrick Steinhardt <ps@pks.im> | 2020-07-12 14:45:47 +0200 |
commit | 53911edd46ea0946c4d6a53f9fd8c8d36a2b5104 (patch) | |
tree | a5e8cbdce7ed8808b1c8e94fc97f5107ccb8df81 | |
parent | 19eb1e4bb740d72ebaddc9eb5084d8e013c68ddc (diff) | |
download | libgit2-53911edd46ea0946c4d6a53f9fd8c8d36a2b5104.tar.gz |
cmake: use git2internal target to populate sources
Modern CMake is usually target-driven in that a target is first defined
and then the likes of `target_sources`, `target_include_directories`
etc. are used to further populate the target. We still use old-style
CMake, where we first set up a set of variables and then populate the
target in a single call.
Let's migrate to modern CMake usage by starting to populate the sources
of our git2internal target piece-by-piece. While this is a small step,
it allows us to convert to target-based build instructions
piece-by-piece.
-rw-r--r-- | src/CMakeLists.txt | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bbbfd0e5e..4ec2091f1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,3 +1,6 @@ +add_library(git2internal OBJECT) +set_target_properties(git2internal PROPERTIES C_STANDARD 90) + IF(DEBUG_POOL) SET(GIT_DEBUG_POOL 1) ENDIF() @@ -81,6 +84,8 @@ ADD_FEATURE_INFO(threadsafe THREADSAFE "threadsafe support") if(WIN32 AND EMBED_SSH_PATH) file(GLOB SRC_SSH "${EMBED_SSH_PATH}/src/*.c") list(SORT SRC_SSH) + target_sources(git2internal PRIVATE ${SRC_SSH}) + list(APPEND LIBGIT2_SYSTEM_INCLUDES "${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\"") set(GIT_SSH 1) @@ -104,8 +109,9 @@ IF (WIN32 AND WINHTTP) LIST(APPEND LIBGIT2_PC_LIBS "-lrpcrt4" "-lcrypt32" "-lole32") ENDIF() -Include(SelectHTTPSBackend) -Include(SelectHashes) +include(SelectHTTPSBackend) +include(SelectHashes) +target_sources(git2internal PRIVATE ${SRC_SHA1}) # Specify regular expression implementation FIND_PACKAGE(PCRE) @@ -275,6 +281,7 @@ file(GLOB SRC_H "${libgit2_SOURCE_DIR}/include/git2/*.h" "${libgit2_SOURCE_DIR}/include/git2/sys/*.h") list(SORT SRC_H) +target_sources(git2internal PRIVATE ${SRC_H}) # On Windows use specific platform sources if(WIN32 AND NOT CYGWIN) @@ -282,11 +289,13 @@ if(WIN32 AND NOT CYGWIN) file(GLOB SRC_OS win32/*.c win32/*.h) list(SORT SRC_OS) + target_sources(git2internal PRIVATE ${SRC_OS}) elseif(AMIGA) add_definitions(-DNO_ADDRINFO -DNO_READDIR_R -DNO_MMAP) else() file(GLOB SRC_OS unix/*.c unix/*.h) list(SORT SRC_OS) + target_sources(git2internal PRIVATE ${SRC_OS}) endif() IF (USE_LEAK_CHECKER STREQUAL "valgrind") @@ -299,6 +308,7 @@ file(GLOB SRC_GIT2 *.c *.h transports/*.c transports/*.h xdiff/*.c xdiff/*.h) list(SORT SRC_GIT2) +target_sources(git2internal PRIVATE ${SRC_GIT2}) IF(APPLE) # The old Secure Transport API has been deprecated in macOS 10.15. @@ -325,10 +335,6 @@ ENDIF() CONFIGURE_FILE(features.h.in git2/sys/features.h) -SET(LIBGIT2_SOURCES ${SRC_H} ${SRC_GIT2} ${SRC_OS} ${SRC_SSH} ${SRC_SHA1}) - -ADD_LIBRARY(git2internal OBJECT ${LIBGIT2_SOURCES}) -SET_TARGET_PROPERTIES(git2internal PROPERTIES C_STANDARD 90) IDE_SPLIT_SOURCES(git2internal) LIST(APPEND LIBGIT2_OBJECTS $<TARGET_OBJECTS:git2internal>) |