From de3c48d72ec7064e7f0522877fe759c729df0c50 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Wed, 25 Mar 2020 11:32:18 -0400 Subject: [PATCH] Allow using a system provided libgit2 library Setting the USE_SYSTEM_LIBGIT2 Make or CMake variable (through the BUILD_OPTIONS variable) to any value enables using the system library. The default behavior of using a bundled copy of libgit2 is unchanged. --- CMakeLists.txt | 9 +++++++-- Makefile | 11 +++++++++++ src/CMakeLists.txt | 9 +++++++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a393d7c..75d6ca6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,9 +7,14 @@ set(BUILD_SHARED_LIBS OFF CACHE BOOL "shared" FORCE) set(BUILD_CLAR OFF CACHE BOOL "clar" FORCE) set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DEGIT_DEBUG") -add_subdirectory(libgit2) +if(USE_SYSTEM_LIBGIT2) + find_package(PkgConfig REQUIRED) + pkg_check_modules(git2 REQUIRED IMPORTED_TARGET libgit2) +else() + add_subdirectory(libgit2) + find_library(git2 libgit2.a) +endif() -find_library(git2 libgit2.a) add_subdirectory(src) enable_testing() diff --git a/Makefile b/Makefile index 8199532..6a6a4e1 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,13 @@ ifeq ($(UNAME),MSYS) BUILD_OPTIONS+= -G "MSYS Makefiles" endif +# If the variable USE_SYSTEM_LIBGIT2 is set to *any* value, use the +# system provided libgit2 library. +USE_SYSTEM_LIBGIT2? := \ + $(if $(or $(USE_SYSTEM_LIBGIT2),\ + $(findstring USE_SYSTEM_LIBGIT2,$(BUILD_OPTIONS))),\ + true) + ifeq "$(TRAVIS)" "true" ## Makefile for Travis ################################################### # @@ -87,7 +94,11 @@ submodule-update: @git submodule update libgit2: +ifeq ($(USE_SYSTEM_LIBGIT2?),) @git submodule update --init +else + @echo "Using the system provided libgit2 library" +endif CLEAN = $(ELCS) $(PKG)-autoloads.el build diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cfb5777..0dbad8a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -13,8 +13,13 @@ if(WIN32) set_target_properties(egit2 PROPERTIES PREFIX lib) endif(WIN32) -target_link_libraries(egit2 git2) -target_include_directories(egit2 SYSTEM PRIVATE "${libgit2_SOURCE_DIR}/include") +if(USE_SYSTEM_LIBGIT2) + target_link_libraries(egit2 PRIVATE PkgConfig::git2) +else() + target_link_libraries(egit2 git2) + target_include_directories( + egit2 SYSTEM PRIVATE "${libgit2_SOURCE_DIR}/include") +endif() if(CMAKE_COMPILER_IS_GNUCC) target_compile_options(egit2 PRIVATE -Wall -Wextra) -- 2.26.2 a54ceea420840'>import: print: Quasiquote properties...* guix/import/print.scm (package->code): Quasiquote properties. * tests/print.scm (pkg-with-properties, pkg-with-properties-source): New variables. ("package with properties"): New test Signed-off-by: Ludovic Courtès <ludo@gnu.org> itd