From 14384d1d66ee3843974dc0ff96e971f8c8b33053 Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Tue, 16 Jul 2024 18:28:59 +0000 Subject: [PATCH] Add abseil vcpkg port that has tests disabled. --- packaging/vcpkg/ports/abseil/portfile.cmake | 59 +++++++++++++++++++++ packaging/vcpkg/ports/abseil/vcpkg.json | 27 ++++++++++ vcpkg.json | 5 ++ 3 files changed, 91 insertions(+) create mode 100644 packaging/vcpkg/ports/abseil/portfile.cmake create mode 100644 packaging/vcpkg/ports/abseil/vcpkg.json diff --git a/packaging/vcpkg/ports/abseil/portfile.cmake b/packaging/vcpkg/ports/abseil/portfile.cmake new file mode 100644 index 00000000..e2ad69b3 --- /dev/null +++ b/packaging/vcpkg/ports/abseil/portfile.cmake @@ -0,0 +1,59 @@ +if (NOT VCPKG_TARGET_IS_WINDOWS) + vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +endif() + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO abseil/abseil-cpp + REF "${VERSION}" + SHA512 41504899ac4fd4a6eaa0a5fdf27a7765ec81962fb99b6a07982ceed32c5289e9eb12206c83a70fd44c5c3e1b96c2bfa160eb12f1dbbb45f1109d632c7690de90 + HEAD_REF master +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + cxx17 ABSL_USE_CXX17 +) + +# With ABSL_PROPAGATE_CXX_STD=ON abseil automatically detect if it is being +# compiled with C++14 or C++17, and modifies the installed `absl/base/options.h` +# header accordingly. This works even if CMAKE_CXX_STANDARD is not set. Abseil +# uses the compiler default behavior to update `absl/base/options.h` as needed. +if (ABSL_USE_CXX17) + set(ABSL_USE_CXX17_OPTION "-DCMAKE_CXX_STANDARD=17") +endif () + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DABSL_PROPAGATE_CXX_STD=ON + -DABSL_BUILD_TESTING=OFF + ${ABSL_USE_CXX17_OPTION} +) + +vcpkg_cmake_install() +vcpkg_cmake_config_fixup(PACKAGE_NAME absl CONFIG_PATH lib/cmake/absl) +vcpkg_fixup_pkgconfig() + +vcpkg_copy_pdbs() +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share" + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/include/absl/copts" + "${CURRENT_PACKAGES_DIR}/include/absl/strings/testdata" + "${CURRENT_PACKAGES_DIR}/include/absl/time/internal/cctz/testdata" +) + +if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + file(GLOB_RECURSE headers "${CURRENT_PACKAGES_DIR}/include/absl/*.h") + foreach(header IN LISTS ${headers}) + vcpkg_replace_string("${header}" + "!defined(ABSL_CONSUME_DLL)" "0" + ) + vcpkg_replace_string("${header}" + "defined(ABSL_CONSUME_DLL)" "1" + ) + endforeach() +endif() + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/packaging/vcpkg/ports/abseil/vcpkg.json b/packaging/vcpkg/ports/abseil/vcpkg.json new file mode 100644 index 00000000..2749d4f1 --- /dev/null +++ b/packaging/vcpkg/ports/abseil/vcpkg.json @@ -0,0 +1,27 @@ +{ + "name": "abseil", + "version": "20240116.1", + "port-version": 1, + "description": [ + "Abseil is an open-source collection of C++ library code designed to augment the C++ standard library. The Abseil library code is collected from Google's own C++ code base, has been extensively tested and used in production, and is the same code we depend on in our daily coding lives.", + "In some cases, Abseil provides pieces missing from the C++ standard; in others, Abseil provides alternatives to the standard for special needs we've found through usage in the Google code base. We denote those cases clearly within the library code we provide you.", + "Abseil is not meant to be a competitor to the standard library; we've just found that many of these utilities serve a purpose within our code base, and we now want to provide those resources to the C++ community as a whole." + ], + "homepage": "https://github.com/abseil/abseil-cpp", + "license": "Apache-2.0", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "cxx17": { + "description": "Enable compiler C++17." + } + } +} diff --git a/vcpkg.json b/vcpkg.json index 82a84794..4e51002a 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -36,6 +36,11 @@ "version": "2.3.1" } ], + "vcpkg-configuration": { + "overlay-ports": [ + "packaging/vcpkg/ports/abseil" + ] + }, "features": { "protocol": { "description": "Enable building the client protocol",