From: Jakub Jirutka Date: Mon, 11 Apr 2017 3:23:00 +0200 Subject: [PATCH] Build both static and dynamic library This is very hack-ish, it makes option BUILD_SHARED_LIBS unusable. --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,6 @@ # Build options # OPTION( SONAME "Set the (SO)VERSION of the target" ON ) -OPTION( BUILD_SHARED_LIBS "Build Shared Library (OFF for Static)" ON ) OPTION( THREADSAFE "Build libgit2 as threadsafe" ON ) OPTION( BUILD_CLAR "Build Tests using the Clar suite" ON ) OPTION( BUILD_EXAMPLES "Build library usage example apps" OFF ) @@ -44,6 +43,8 @@ OPTION( CURL "Use curl for HTTP if available" ON) OPTION( DEBUG_POOL "Enable debug pool allocator" OFF ) +SET( BUILD_SHARED_LIBS ON ) + IF(DEBUG_POOL) ADD_DEFINITIONS(-DGIT_DEBUG_POOL) ENDIF() @@ -602,7 +603,8 @@ ENDIF() # Compile and link libgit2 -ADD_LIBRARY(git2 ${SRC_H} ${SRC_GIT2} ${SRC_OS} ${SRC_ZLIB} ${SRC_HTTP} ${SRC_REGEX} ${SRC_SSH} ${SRC_SHA1} ${WIN_RC}) +ADD_LIBRARY(objlib OBJECT ${SRC_H} ${SRC_GIT2} ${SRC_OS} ${SRC_ZLIB} ${SRC_HTTP} ${SRC_REGEX} ${SRC_SSH} ${SRC_SHA1} ${WIN_RC}) +ADD_LIBRARY(git2 SHARED $) TARGET_LINK_LIBRARIES(git2 ${SECURITY_DIRS}) TARGET_LINK_LIBRARIES(git2 ${COREFOUNDATION_DIRS}) TARGET_LINK_LIBRARIES(git2 ${SSL_LIBRARIES}) @@ -611,6 +613,9 @@ TARGET_LINK_LIBRARIES(git2 ${ICONV_LIBRARIES}) TARGET_OS_LIBRARIES(git2) +ADD_LIBRARY(git2_static STATIC $) +SET_TARGET_PROPERTIES(git2_static PROPERTIES OUTPUT_NAME git2 CLEAN_DIRECT_OUTPUT 1) + # Workaround for Cmake bug #0011240 (see http://public.kitware.com/Bug/view.php?id=11240) # Win64+MSVC+static libs = linker error IF(MSVC AND GIT_ARCH_64 AND NOT BUILD_SHARED_LIBS) @@ -639,7 +644,7 @@ ENDIF () # Install -INSTALL(TARGETS git2 +INSTALL(TARGETS git2 git2_static RUNTIME DESTINATION ${BIN_INSTALL_DIR} LIBRARY DESTINATION ${LIB_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR}