aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libgit2
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/libgit2')
-rw-r--r--vcpkg/ports/libgit2/c-standard.diff26
-rw-r--r--vcpkg/ports/libgit2/cli-include-dirs.diff12
-rw-r--r--vcpkg/ports/libgit2/dependencies.diff43
-rw-r--r--vcpkg/ports/libgit2/mingw-winhttp.diff13
-rw-r--r--vcpkg/ports/libgit2/portfile.cmake112
-rw-r--r--vcpkg/ports/libgit2/vcpkg.json97
6 files changed, 303 insertions, 0 deletions
diff --git a/vcpkg/ports/libgit2/c-standard.diff b/vcpkg/ports/libgit2/c-standard.diff
new file mode 100644
index 0000000..22214ae
--- /dev/null
+++ b/vcpkg/ports/libgit2/c-standard.diff
@@ -0,0 +1,26 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5be7bef..5f9ed79 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -57,7 +57,7 @@ option(DEPRECATE_HARD "Do not include deprecated functions in the libra
+ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Android")
+ set(CMAKE_C_STANDARD "99" CACHE STRING "The C standard to compile against")
+ else()
+- set(CMAKE_C_STANDARD "90" CACHE STRING "The C standard to compile against")
++ set(CMAKE_C_STANDARD "99" CACHE STRING "The C standard to compile against")
+ endif()
+ option(CMAKE_C_EXTENSIONS "Whether compiler extensions are supported" OFF)
+ option(ENABLE_WERROR "Enable compilation with -Werror" OFF)
+/tmp/bbb.patch (END)diff --git a/src/libgit2/CMakeLists.txt b/src/libgit2/CMakeLists.txt
+index 0dddb02..af85510 100644
+--- a/src/libgit2/CMakeLists.txt
++++ b/src/libgit2/CMakeLists.txt
+@@ -60,7 +60,7 @@ target_link_libraries(libgit2package ${LIBGIT2_SYSTEM_LIBS})
+ target_include_directories(libgit2package SYSTEM PRIVATE ${LIBGIT2_INCLUDES})
+ target_include_directories(libgit2package INTERFACE $<INSTALL_INTERFACE:include>)
+
+-set_target_properties(libgit2package PROPERTIES C_STANDARD 90)
++set_target_properties(libgit2package PROPERTIES C_STANDARD 99)
+ set_target_properties(libgit2package PROPERTIES C_EXTENSIONS OFF)
+ set_target_properties(libgit2package PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
+ set_target_properties(libgit2package PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
diff --git a/vcpkg/ports/libgit2/cli-include-dirs.diff b/vcpkg/ports/libgit2/cli-include-dirs.diff
new file mode 100644
index 0000000..e2a779c
--- /dev/null
+++ b/vcpkg/ports/libgit2/cli-include-dirs.diff
@@ -0,0 +1,12 @@
+diff --git a/src/cli/CMakeLists.txt b/src/cli/CMakeLists.txt
+index 84b6c19..df2119c 100644
+--- a/src/cli/CMakeLists.txt
++++ b/src/cli/CMakeLists.txt
+@@ -46,6 +46,7 @@ set_target_properties(git2_cli PROPERTIES OUTPUT_NAME ${LIBGIT2_FILENAME})
+ ide_split_sources(git2_cli)
+
+ target_include_directories(git2_cli PRIVATE ${CLI_INCLUDES})
++target_include_directories(git2_cli SYSTEM PRIVATE ${LIBGIT2_SYSTEM_INCLUDES})
+
+ if(MSVC_IDE)
+ # Precompiled headers
diff --git a/vcpkg/ports/libgit2/dependencies.diff b/vcpkg/ports/libgit2/dependencies.diff
new file mode 100644
index 0000000..092db72
--- /dev/null
+++ b/vcpkg/ports/libgit2/dependencies.diff
@@ -0,0 +1,43 @@
+diff --git a/cmake/SelectRegex.cmake b/cmake/SelectRegex.cmake
+index 2a3a91b..523fa72 100644
+--- a/cmake/SelectRegex.cmake
++++ b/cmake/SelectRegex.cmake
+@@ -17,7 +17,9 @@ if(REGEX_BACKEND STREQUAL "regcomp_l")
+ add_feature_info(regex ON "using system regcomp_l")
+ set(GIT_REGEX_REGCOMP_L 1)
+ elseif(REGEX_BACKEND STREQUAL "pcre2")
+- find_package(PCRE2)
++ find_package(PkgConfig REQUIRED)
++ pkg_check_modules(PCRE2 REQUIRED libpcre2-8)
++ set(PCRE2_LIBRARIES "${PCRE2_LINK_LIBRARIES}")
+
+ if(NOT PCRE2_FOUND)
+ MESSAGE(FATAL_ERROR "PCRE2 support was requested but not found")
+@@ -33,6 +35,9 @@ elseif(REGEX_BACKEND STREQUAL "pcre")
+ add_feature_info(regex ON "using system PCRE")
+ set(GIT_REGEX_PCRE 1)
+
++ find_package(PkgConfig REQUIRED)
++ pkg_check_modules(PCRE REQUIRED libpcre)
++ set(PCRE_LIBRARIES "${PCRE_LINK_LIBRARIES}")
+ list(APPEND LIBGIT2_SYSTEM_INCLUDES ${PCRE_INCLUDE_DIRS})
+ list(APPEND LIBGIT2_SYSTEM_LIBS ${PCRE_LIBRARIES})
+ list(APPEND LIBGIT2_PC_REQUIRES "libpcre")
+diff --git a/cmake/SelectSSH.cmake b/cmake/SelectSSH.cmake
+index 079857f50..a2e2bd212 100644
+--- a/cmake/SelectSSH.cmake
++++ b/cmake/SelectSSH.cmake
+@@ -4,7 +4,11 @@ if(USE_SSH STREQUAL "exec")
+
+ add_feature_info(SSH ON "using OpenSSH exec support")
+ elseif(USE_SSH STREQUAL ON OR USE_SSH STREQUAL "libssh2")
+- find_pkglibraries(LIBSSH2 libssh2)
++ find_package(PkgConfig REQUIRED)
++ pkg_check_modules(LIBSSH2 REQUIRED libssh2)
++ set(LIBSSH2_LIBRARIES "${LIBSSH2_LINK_LIBRARIES}")
++ set(LIBSSH2_LDFLAGS "")
++ list(APPEND LIBGIT2_PC_REQUIRES "libssh2")
+
+ if(NOT LIBSSH2_FOUND)
+ find_package(LibSSH2)
+
diff --git a/vcpkg/ports/libgit2/mingw-winhttp.diff b/vcpkg/ports/libgit2/mingw-winhttp.diff
new file mode 100644
index 0000000..2a47b0c
--- /dev/null
+++ b/vcpkg/ports/libgit2/mingw-winhttp.diff
@@ -0,0 +1,13 @@
+diff --git a/cmake/SelectHTTPSBackend.cmake b/cmake/SelectHTTPSBackend.cmake
+index 0316b3a..a70f6b6 100644
+--- a/cmake/SelectHTTPSBackend.cmake
++++ b/cmake/SelectHTTPSBackend.cmake
+@@ -125,7 +125,7 @@ if(USE_HTTPS)
+
+ # 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
+- if(MINGW)
++ if(0)
+ add_subdirectory("${PROJECT_SOURCE_DIR}/deps/winhttp" "${PROJECT_BINARY_DIR}/deps/winhttp")
+ list(APPEND LIBGIT2_SYSTEM_LIBS winhttp)
+ list(APPEND LIBGIT2_DEPENDENCY_INCLUDES "${PROJECT_SOURCE_DIR}/deps/winhttp")
diff --git a/vcpkg/ports/libgit2/portfile.cmake b/vcpkg/ports/libgit2/portfile.cmake
new file mode 100644
index 0000000..78283be
--- /dev/null
+++ b/vcpkg/ports/libgit2/portfile.cmake
@@ -0,0 +1,112 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO libgit2/libgit2
+ REF "v${VERSION}"
+ SHA512 3bec01704ad1acdb4f7e9454101c2a205b7e288a4dffaa5e1afc2b1f849fa3a42b961c532bed2669841925ab8f84fb35bb82a2df8039b1caf76c5779665032d9
+ HEAD_REF main
+ PATCHES
+ c-standard.diff # for 'inline' in system headers
+ cli-include-dirs.diff
+ dependencies.diff
+ mingw-winhttp.diff
+)
+file(REMOVE_RECURSE
+ "${SOURCE_PATH}/cmake/FindPCRE.cmake"
+ "${SOURCE_PATH}/cmake/FindPCRE2.cmake"
+ "${SOURCE_PATH}/deps/chromium-zlib"
+ "${SOURCE_PATH}/deps/http-parser"
+ "${SOURCE_PATH}/deps/pcre"
+ "${SOURCE_PATH}/deps/winhttp"
+ "${SOURCE_PATH}/deps/zlib"
+)
+
+string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" STATIC_CRT)
+
+set(REGEX_BACKEND OFF)
+set(USE_HTTPS OFF)
+set(USE_SSH OFF)
+
+function(set_regex_backend VALUE)
+ if(REGEX_BACKEND)
+ message(FATAL_ERROR "Only one regex backend (pcre,pcre2) is allowed")
+ endif()
+ set(REGEX_BACKEND ${VALUE} PARENT_SCOPE)
+endfunction()
+
+function(set_tls_backend VALUE)
+ if(USE_HTTPS)
+ message(FATAL_ERROR "Only one TLS backend (openssl,winhttp,sectransp,mbedtls) is allowed")
+ endif()
+ set(USE_HTTPS ${VALUE} PARENT_SCOPE)
+endfunction()
+
+foreach(GIT2_FEATURE ${FEATURES})
+ if(GIT2_FEATURE STREQUAL "pcre")
+ set_regex_backend("pcre")
+ elseif(GIT2_FEATURE STREQUAL "pcre2")
+ set_regex_backend("pcre2")
+ elseif(GIT2_FEATURE STREQUAL "openssl")
+ set_tls_backend("OpenSSL")
+ elseif(GIT2_FEATURE STREQUAL "winhttp")
+ set_tls_backend("WinHTTP")
+ elseif(GIT2_FEATURE STREQUAL "sectransp")
+ set_tls_backend("SecureTransport")
+ elseif(GIT2_FEATURE STREQUAL "mbedtls")
+ set_tls_backend("mbedTLS")
+ elseif(GIT2_FEATURE STREQUAL "ssh")
+ set(USE_SSH ON)
+ message(STATUS "This version of `libgit2` uses the default (`libssh2`) backend. To use the newer backend which utilizes the `ssh` CLI from a local install of OpenSSH instead, create an overlay port of this with USE_SSH set to 'exec' and the `libssh2` dependency removed.")
+ message(STATUS "This recipe is at ${CMAKE_CURRENT_LIST_DIR}")
+ message(STATUS "See the overlay ports documentation at https://learn.microsoft.com/vcpkg/concepts/overlay-ports")
+ endif()
+endforeach()
+
+if(NOT REGEX_BACKEND)
+ message(FATAL_ERROR "Must choose pcre or pcre2 regex backend")
+endif()
+
+vcpkg_find_acquire_program(PKGCONFIG)
+
+vcpkg_check_features(
+ OUT_FEATURE_OPTIONS GIT2_FEATURES
+ FEATURES
+ tools BUILD_CLI
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DBUILD_TESTS=OFF
+ -DUSE_HTTP_PARSER=system
+ -DUSE_HTTPS=${USE_HTTPS}
+ -DREGEX_BACKEND=${REGEX_BACKEND}
+ -DUSE_SSH=${USE_SSH}
+ -DSTATIC_CRT=${STATIC_CRT}
+ "-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}"
+ -DCMAKE_DISABLE_FIND_PACKAGE_GSSAPI:BOOL=ON
+ ${GIT2_FEATURES}
+ OPTIONS_DEBUG
+ -DBUILD_CLI=OFF
+ MAYBE_UNUSED_VARIABLES
+ STATIC_CRT
+)
+
+vcpkg_cmake_install()
+vcpkg_fixup_pkgconfig()
+vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/${PORT}")
+
+if("tools" IN_LIST FEATURES)
+ vcpkg_copy_tools(TOOL_NAMES git2 AUTO_CLEAN)
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+set(file_list "${SOURCE_PATH}/COPYING")
+if(NOT VCPKG_TARGET_IS_WINDOWS)
+ file(WRITE "${CURRENT_BUILDTREES_DIR}/Notice for ntlmclient" [[
+Copyright (c) Edward Thomson. All rights reserved.
+These source files are part of ntlmclient, distributed under the MIT license.
+]])
+ list(APPEND file_list "${CURRENT_BUILDTREES_DIR}/Notice for ntlmclient")
+endif()
+vcpkg_install_copyright(FILE_LIST ${file_list})
diff --git a/vcpkg/ports/libgit2/vcpkg.json b/vcpkg/ports/libgit2/vcpkg.json
new file mode 100644
index 0000000..fe8e5a6
--- /dev/null
+++ b/vcpkg/ports/libgit2/vcpkg.json
@@ -0,0 +1,97 @@
+{
+ "name": "libgit2",
+ "version-semver": "1.9.1",
+ "description": "A C library implementing the Git core methods with a solid API",
+ "homepage": "https://github.com/libgit2/libgit2",
+ "license": null,
+ "supports": "!uwp",
+ "dependencies": [
+ "http-parser",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ],
+ "default-features": [
+ "pcre",
+ "ssl"
+ ],
+ "features": {
+ "mbedtls": {
+ "description": "SSL support (mbedTLS)",
+ "supports": "!windows",
+ "dependencies": [
+ "mbedtls"
+ ]
+ },
+ "openssl": {
+ "description": "SSL support (OpenSSL)",
+ "dependencies": [
+ "openssl"
+ ]
+ },
+ "pcre": {
+ "description": "Build against external libpcre",
+ "dependencies": [
+ "pcre"
+ ]
+ },
+ "pcre2": {
+ "description": "Build against external libpcre2",
+ "dependencies": [
+ "pcre2"
+ ]
+ },
+ "sectransp": {
+ "description": "SSL support (sectransp)",
+ "supports": "osx"
+ },
+ "ssh": {
+ "description": "SSH support via libssh2",
+ "dependencies": [
+ "libssh2"
+ ]
+ },
+ "ssl": {
+ "description": "Default SSL backend",
+ "dependencies": [
+ {
+ "name": "libgit2",
+ "default-features": false,
+ "features": [
+ "sectransp"
+ ],
+ "platform": "osx"
+ },
+ {
+ "name": "libgit2",
+ "default-features": false,
+ "features": [
+ "winhttp"
+ ],
+ "platform": "windows"
+ },
+ {
+ "name": "libgit2",
+ "default-features": false,
+ "features": [
+ "openssl"
+ ],
+ "platform": "!windows & !osx"
+ }
+ ]
+ },
+ "tools": {
+ "description": "Build CLI tools"
+ },
+ "winhttp": {
+ "description": "SSL support (WinHTTP)",
+ "supports": "windows & !uwp"
+ }
+ }
+}