From 95664af53bc6faf352cf5b193fe9dfd42fa25e60 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Thu, 28 May 2015 09:13:51 -0700 Subject: Add USE_LIBGIT23_API as cmake option Just as we would expect, the libgit2 developers of course once again broke their API. In order to compile against current master we need to remap those APIs once again. Simply call cmake with -DUSE_LIBGIT23_API Signed-off-by: Dirk Hohndel --- CMakeLists.txt | 10 ++++++++++ git-access.c | 7 +++++++ save-git.c | 9 +++++++++ 3 files changed, 26 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5247b623b..4f80fefeb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,7 @@ option(LIBDC_FROM_PKGCONFIG "use pkg-config to retrieve libdivecomputer" OFF) option(NO_MARBLE "disable the marble widget" OFF) option(NO_TESTS "disable the tests" OFF) option(NO_DOCS "disable the docs" OFF) +option(USE_LIBGIT23_API "allow building with libgit2 master" OFF) set(CMAKE_MODULE_PATH ${${PROJECT_NAME}_SOURCE_DIR}/cmake/Modules) include_directories(. ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} qt-ui qt-ui/profile) @@ -35,9 +36,18 @@ pkg_config_library(LIBUSB libusb-1.0 QUIET) if(LIBGIT2_FROM_PKGCONFIG) pkg_config_library(LIBGIT2 libgit2 REQUIRED) set(LIBGIT2_LIBRARIES "") + if(USE_LIBGIT23_API) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_LIBGIT23_API") + pkg_config_library(LIBSSH2 libssh2 REQUIRED) + set(LIBGIT2_LIBRARIES ${LIBGIT2_LIBRARIES} ${LIBSSH2_LIBRARIES}) + endif() else() find_package(LIBGIT2 REQUIRED) include_directories(${LIBGIT2_INCLUDE_DIR}) + if(USE_LIBGIT23_API) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_LIBGIT23_API") + set(LIBGIT2_LIBRARIES ${LIBGIT2_LIBRARIES} -lssh2) + endif() endif() if(LIBDC_FROM_PKGCONFIG) diff --git a/git-access.c b/git-access.c index 7e1a47ee1..2b318e323 100644 --- a/git-access.c +++ b/git-access.c @@ -26,6 +26,13 @@ #define git_remote_fetch(remote, refspecs, signature, reflog) git_remote_fetch(remote, signature, reflog) #endif #endif +/* + * api break introduced in libgit2 master after 0.22 - let's guess this is the v0.23 API + */ +#if USE_LIBGIT23_API + #define git_branch_create(out, repo, branch_name, target, force, signature, log_message) \ + git_branch_create(out, repo, branch_name, target, force) +#endif static char *get_local_dir(const char *remote, const char *branch) { diff --git a/save-git.c b/save-git.c index a7b51446a..6461366f1 100644 --- a/save-git.c +++ b/save-git.c @@ -34,6 +34,15 @@ #else #define git_treebuilder_write(id, repo, bld) git_treebuilder_write(id, bld) #endif +/* + * api break introduced in libgit2 master after 0.22 - let's guess this is the v0.23 API + */ +#if USE_LIBGIT23_API + #define git_branch_create(out, repo, branch_name, target, force, signature, log_message) \ + git_branch_create(out, repo, branch_name, target, force) + #define git_reference_set_target(out, ref, id, author, log_message) \ + git_reference_set_target(out, ref, id, log_message) +#endif #define VA_BUF(b, fmt) do { va_list args; va_start(args, fmt); put_vformat(b, fmt, args); va_end(args); } while (0) -- cgit v1.2.3-70-g09d2