| From da71eb3945475ac3f219e9e6d77450ba34163e52 Mon Sep 17 00:00:00 2001 |
| From: Tatsuyuki Ishi <ishitatsuyuki@google.com> |
| Date: Mon, 10 Jun 2024 18:53:16 +0900 |
| Subject: [PATCH] BACKPORT: Abseil DLL patches |
| |
| See b/341182265 for how to reproduce the backport. |
| --- |
| CMake/AbseilDll.cmake | 87 +++++++++++++++++++++----- |
| CMake/AbseilHelpers.cmake | 2 +- |
| CMakeLists.txt | 9 +++ |
| absl/CMakeLists.txt | 4 +- |
| absl/copts/AbseilConfigureCopts.cmake | 2 +- |
| ci/linux_gcc-latest_libstdcxx_cmake.sh | 55 +++++++++------- |
| ci/linux_gcc_alpine_cmake.sh | 54 ++++++++++------ |
| ci/macos_xcode_cmake.sh | 43 ++++++++----- |
| ci/windows_msvc_cmake.bat | 1 - |
| create_lts.py | 27 ++++---- |
| 10 files changed, 196 insertions(+), 88 deletions(-) |
| |
| diff --git a/CMake/AbseilDll.cmake b/CMake/AbseilDll.cmake |
| index f0d984ae..e8470a86 100644 |
| --- a/CMake/AbseilDll.cmake |
| +++ b/CMake/AbseilDll.cmake |
| @@ -437,6 +437,44 @@ set(ABSL_INTERNAL_DLL_FILES |
| "debugging/leak_check.cc" |
| ) |
| |
| +if(NOT MSVC) |
| + list(APPEND ABSL_INTERNAL_DLL_FILES |
| + "flags/commandlineflag.cc" |
| + "flags/commandlineflag.h" |
| + "flags/config.h" |
| + "flags/declare.h" |
| + "flags/flag.cc" |
| + "flags/flag.h" |
| + "flags/internal/commandlineflag.cc" |
| + "flags/internal/commandlineflag.h" |
| + "flags/internal/flag.cc" |
| + "flags/internal/flag.h" |
| + "flags/internal/parse.h" |
| + "flags/internal/path_util.h" |
| + "flags/internal/private_handle_accessor.cc" |
| + "flags/internal/private_handle_accessor.h" |
| + "flags/internal/program_name.cc" |
| + "flags/internal/program_name.h" |
| + "flags/internal/registry.h" |
| + "flags/internal/sequence_lock.h" |
| + "flags/internal/usage.cc" |
| + "flags/internal/usage.h" |
| + "flags/marshalling.cc" |
| + "flags/marshalling.h" |
| + "flags/parse.cc" |
| + "flags/parse.h" |
| + "flags/reflection.cc" |
| + "flags/reflection.h" |
| + "flags/usage.cc" |
| + "flags/usage.h" |
| + "flags/usage_config.cc" |
| + "flags/usage_config.h" |
| + "log/flags.cc" |
| + "log/flags.h" |
| + "log/internal/flags.h" |
| + ) |
| +endif() |
| + |
| set(ABSL_INTERNAL_DLL_TARGETS |
| "absl_check" |
| "absl_log" |
| @@ -505,6 +543,7 @@ set(ABSL_INTERNAL_DLL_TARGETS |
| "log_internal_check_op" |
| "log_internal_conditions" |
| "log_internal_config" |
| + "log_internal_fnmatch" |
| "log_internal_format" |
| "log_internal_globals" |
| "log_internal_log_impl" |
| @@ -584,6 +623,7 @@ set(ABSL_INTERNAL_DLL_TARGETS |
| "strerror" |
| "strings" |
| "strings_internal" |
| + "string_view" |
| "symbolize" |
| "synchronization" |
| "thread_pool" |
| @@ -594,8 +634,29 @@ set(ABSL_INTERNAL_DLL_TARGETS |
| "type_traits" |
| "utility" |
| "variant" |
| + "vlog_config_internal" |
| ) |
| |
| +if(NOT MSVC) |
| + list(APPEND ABSL_INTERNAL_DLL_TARGETS |
| + "flags" |
| + "flags_commandlineflag" |
| + "flags_commandlineflag_internal" |
| + "flags_config" |
| + "flags_internal" |
| + "flags_marshalling" |
| + "flags_parse" |
| + "flags_path_util" |
| + "flags_private_handle_accessor" |
| + "flags_program_name" |
| + "flags_reflection" |
| + "flags_usage" |
| + "flags_usage_internal" |
| + "log_internal_flags" |
| + "log_flags" |
| + ) |
| +endif() |
| + |
| set(ABSL_INTERNAL_TEST_DLL_FILES |
| "hash/hash_testing.h" |
| "log/scoped_mock_log.cc" |
| @@ -653,12 +714,7 @@ function(absl_internal_dll_contains) |
| |
| STRING(REGEX REPLACE "^absl::" "" _target ${ABSL_INTERNAL_DLL_TARGET}) |
| |
| - list(FIND |
| - ABSL_INTERNAL_DLL_TARGETS |
| - "${_target}" |
| - _index) |
| - |
| - if (${_index} GREATER -1) |
| + if (_target IN_LIST ABSL_INTERNAL_DLL_TARGETS) |
| set(${ABSL_INTERNAL_DLL_OUTPUT} 1 PARENT_SCOPE) |
| else() |
| set(${ABSL_INTERNAL_DLL_OUTPUT} 0 PARENT_SCOPE) |
| @@ -675,12 +731,7 @@ function(absl_internal_test_dll_contains) |
| |
| STRING(REGEX REPLACE "^absl::" "" _target ${ABSL_INTERNAL_TEST_DLL_TARGET}) |
| |
| - list(FIND |
| - ABSL_INTERNAL_TEST_DLL_TARGETS |
| - "${_target}" |
| - _index) |
| - |
| - if (${_index} GREATER -1) |
| + if (_target IN_LIST ABSL_INTERNAL_TEST_DLL_TARGETS) |
| set(${ABSL_INTERNAL_TEST_DLL_OUTPUT} 1 PARENT_SCOPE) |
| else() |
| set(${ABSL_INTERNAL_TEST_DLL_OUTPUT} 0 PARENT_SCOPE) |
| @@ -732,7 +783,12 @@ function(absl_make_dll) |
| else() |
| set(_dll "abseil_dll") |
| set(_dll_files ${ABSL_INTERNAL_DLL_FILES}) |
| - set(_dll_libs "") |
| + set(_dll_libs |
| + Threads::Threads |
| + # TODO(#1495): Use $<LINK_LIBRARY:FRAMEWORK,CoreFoundation> once our |
| + # minimum CMake version >= 3.24 |
| + $<$<PLATFORM_ID:Darwin>:-Wl,-framework,CoreFoundation> |
| + ) |
| set(_dll_compile_definitions "") |
| set(_dll_includes "") |
| set(_dll_consume "ABSL_CONSUME_DLL") |
| @@ -750,7 +806,10 @@ function(absl_make_dll) |
| ${_dll_libs} |
| ${ABSL_DEFAULT_LINKOPTS} |
| ) |
| - set_property(TARGET ${_dll} PROPERTY LINKER_LANGUAGE "CXX") |
| + set_target_properties(${_dll} PROPERTIES |
| + LINKER_LANGUAGE "CXX" |
| + SOVERSION ${ABSL_SOVERSION} |
| + ) |
| target_include_directories( |
| ${_dll} |
| PUBLIC |
| diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake |
| index 3bd33ce8..561e67b0 100644 |
| --- a/CMake/AbseilHelpers.cmake |
| +++ b/CMake/AbseilHelpers.cmake |
| @@ -298,7 +298,7 @@ Cflags: -I\${includedir}${PC_CFLAGS}\n") |
| if(ABSL_ENABLE_INSTALL) |
| set_target_properties(${_NAME} PROPERTIES |
| OUTPUT_NAME "absl_${_NAME}" |
| - SOVERSION "2308.0.0" |
| + SOVERSION "${ABSL_SOVERSION}" |
| ) |
| endif() |
| else() |
| diff --git a/CMakeLists.txt b/CMakeLists.txt |
| index eef66267..8886d643 100644 |
| --- a/CMakeLists.txt |
| +++ b/CMakeLists.txt |
| @@ -54,6 +54,7 @@ if (POLICY CMP0141) |
| endif (POLICY CMP0141) |
| |
| project(absl LANGUAGES CXX VERSION 20230802) |
| +set(ABSL_SOVERSION "2308.0.0") |
| include(CTest) |
| |
| # Output directory is correct by default for most build setups. However, when |
| @@ -144,6 +145,14 @@ set(ABSL_LOCAL_GOOGLETEST_DIR "/usr/src/googletest" CACHE PATH |
| "If ABSL_USE_GOOGLETEST_HEAD is OFF and ABSL_GOOGLETEST_URL is not set, specifies the directory of a local GoogleTest checkout." |
| ) |
| |
| +option(ABSL_BUILD_MONOLITHIC_SHARED_LIBS |
| + "Build Abseil as a single shared library (always enabled for Windows)" |
| + OFF |
| +) |
| +if(NOT BUILD_SHARED_LIBS AND ABSL_BUILD_MONOLITHIC_SHARED_LIBS) |
| + message(WARNING "Not building a shared library because BUILD_SHARED_LIBS is not set. Ignoring ABSL_BUILD_MONOLITHIC_SHARED_LIBS.") |
| +endif() |
| + |
| if((BUILD_TESTING AND ABSL_BUILD_TESTING) OR ABSL_BUILD_TEST_HELPERS) |
| if (ABSL_USE_EXTERNAL_GOOGLETEST) |
| if (ABSL_FIND_GOOGLETEST) |
| diff --git a/absl/CMakeLists.txt b/absl/CMakeLists.txt |
| index 3a7c12fe..810d7f31 100644 |
| --- a/absl/CMakeLists.txt |
| +++ b/absl/CMakeLists.txt |
| @@ -36,9 +36,9 @@ add_subdirectory(time) |
| add_subdirectory(types) |
| add_subdirectory(utility) |
| |
| -if (${ABSL_BUILD_DLL}) |
| +if (ABSL_BUILD_DLL) |
| absl_make_dll() |
| - if (${ABSL_BUILD_TEST_HELPERS}) |
| + if ((BUILD_TESTING AND ABSL_BUILD_TESTING) OR ABSL_BUILD_TEST_HELPERS) |
| absl_make_dll(TEST ON) |
| endif() |
| endif() |
| diff --git a/absl/copts/AbseilConfigureCopts.cmake b/absl/copts/AbseilConfigureCopts.cmake |
| index 3f737c81..1afb9610 100644 |
| --- a/absl/copts/AbseilConfigureCopts.cmake |
| +++ b/absl/copts/AbseilConfigureCopts.cmake |
| @@ -3,7 +3,7 @@ include(GENERATED_AbseilCopts) |
| |
| set(ABSL_DEFAULT_LINKOPTS "") |
| |
| -if (BUILD_SHARED_LIBS AND MSVC) |
| +if (BUILD_SHARED_LIBS AND (MSVC OR ABSL_BUILD_MONOLITHIC_SHARED_LIBS)) |
| set(ABSL_BUILD_DLL TRUE) |
| set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) |
| else() |
| diff --git a/ci/linux_gcc-latest_libstdcxx_cmake.sh b/ci/linux_gcc-latest_libstdcxx_cmake.sh |
| index 1f721236..243901c2 100755 |
| --- a/ci/linux_gcc-latest_libstdcxx_cmake.sh |
| +++ b/ci/linux_gcc-latest_libstdcxx_cmake.sh |
| @@ -34,33 +34,46 @@ if [[ -z ${ABSL_CMAKE_BUILD_SHARED:-} ]]; then |
| ABSL_CMAKE_BUILD_SHARED="OFF ON" |
| fi |
| |
| +if [[ -z ${ABSL_CMAKE_BUILD_MONOLITHIC_SHARED_LIBS:-} ]]; then |
| + ABSL_CMAKE_BUILD_MONOLITHIC_SHARED_LIBS="OFF ON" |
| +fi |
| + |
| source "${ABSEIL_ROOT}/ci/linux_docker_containers.sh" |
| readonly DOCKER_CONTAINER=${LINUX_GCC_LATEST_CONTAINER} |
| |
| for std in ${ABSL_CMAKE_CXX_STANDARDS}; do |
| for compilation_mode in ${ABSL_CMAKE_BUILD_TYPES}; do |
| for build_shared in ${ABSL_CMAKE_BUILD_SHARED}; do |
| - time docker run \ |
| - --mount type=bind,source="${ABSEIL_ROOT}",target=/abseil-cpp,readonly \ |
| - --tmpfs=/buildfs:exec \ |
| - --workdir=/buildfs \ |
| - --cap-add=SYS_PTRACE \ |
| - --rm \ |
| - -e CFLAGS="-Werror" \ |
| - -e CXXFLAGS="-Werror" \ |
| - ${DOCKER_EXTRA_ARGS:-} \ |
| - "${DOCKER_CONTAINER}" \ |
| - /bin/bash -c " |
| - cmake /abseil-cpp \ |
| - -DABSL_GOOGLETEST_DOWNLOAD_URL=${ABSL_GOOGLETEST_DOWNLOAD_URL} \ |
| - -DBUILD_SHARED_LIBS=${build_shared} \ |
| - -DABSL_BUILD_TESTING=ON \ |
| - -DCMAKE_BUILD_TYPE=${compilation_mode} \ |
| - -DCMAKE_CXX_STANDARD=${std} \ |
| - -DCMAKE_MODULE_LINKER_FLAGS=\"-Wl,--no-undefined\" && \ |
| - make -j$(nproc) && \ |
| - TZDIR=/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo \ |
| - ctest -j$(nproc) --output-on-failure" |
| + if [[ $build_shared == "OFF" ]]; then |
| + monolithic_shared_options="OFF" |
| + else |
| + monolithic_shared_options="$ABSL_CMAKE_BUILD_MONOLITHIC_SHARED_LIBS" |
| + fi |
| + |
| + for monolithic_shared in $monolithic_shared_options; do |
| + time docker run \ |
| + --mount type=bind,source="${ABSEIL_ROOT}",target=/abseil-cpp,readonly \ |
| + --tmpfs=/buildfs:exec \ |
| + --workdir=/buildfs \ |
| + --cap-add=SYS_PTRACE \ |
| + --rm \ |
| + -e CFLAGS="-Werror" \ |
| + -e CXXFLAGS="-Werror" \ |
| + ${DOCKER_EXTRA_ARGS:-} \ |
| + "${DOCKER_CONTAINER}" \ |
| + /bin/bash -c " |
| + cmake /abseil-cpp \ |
| + -DABSL_GOOGLETEST_DOWNLOAD_URL=${ABSL_GOOGLETEST_DOWNLOAD_URL} \ |
| + -DBUILD_SHARED_LIBS=${build_shared} \ |
| + -DABSL_BUILD_TESTING=ON \ |
| + -DCMAKE_BUILD_TYPE=${compilation_mode} \ |
| + -DCMAKE_CXX_STANDARD=${std} \ |
| + -DABSL_BUILD_MONOLITHIC_SHARED_LIBS=${monolithic_shared} \ |
| + -DCMAKE_MODULE_LINKER_FLAGS=\"-Wl,--no-undefined\" && \ |
| + make -j$(nproc) && \ |
| + TZDIR=/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo \ |
| + ctest -j$(nproc) --output-on-failure" |
| + done |
| done |
| done |
| done |
| diff --git a/ci/linux_gcc_alpine_cmake.sh b/ci/linux_gcc_alpine_cmake.sh |
| index b784456f..f19954f5 100755 |
| --- a/ci/linux_gcc_alpine_cmake.sh |
| +++ b/ci/linux_gcc_alpine_cmake.sh |
| @@ -34,32 +34,46 @@ if [[ -z ${ABSL_CMAKE_BUILD_SHARED:-} ]]; then |
| ABSL_CMAKE_BUILD_SHARED="OFF ON" |
| fi |
| |
| +if [[ -z ${ABSL_CMAKE_BUILD_MONOLITHIC_SHARED_LIBS:-} ]]; then |
| + ABSL_CMAKE_BUILD_MONOLITHIC_SHARED_LIBS="OFF ON" |
| +fi |
| + |
| source "${ABSEIL_ROOT}/ci/linux_docker_containers.sh" |
| readonly DOCKER_CONTAINER=${LINUX_ALPINE_CONTAINER} |
| |
| for std in ${ABSL_CMAKE_CXX_STANDARDS}; do |
| for compilation_mode in ${ABSL_CMAKE_BUILD_TYPES}; do |
| for build_shared in ${ABSL_CMAKE_BUILD_SHARED}; do |
| - time docker run \ |
| - --mount type=bind,source="${ABSEIL_ROOT}",target=/abseil-cpp,readonly \ |
| - --tmpfs=/buildfs:exec \ |
| - --workdir=/buildfs \ |
| - --cap-add=SYS_PTRACE \ |
| - --rm \ |
| - -e CFLAGS="-Werror" \ |
| - -e CXXFLAGS="-Werror" \ |
| - ${DOCKER_EXTRA_ARGS:-} \ |
| - "${DOCKER_CONTAINER}" \ |
| - /bin/sh -c " |
| - cmake /abseil-cpp \ |
| - -DABSL_GOOGLETEST_DOWNLOAD_URL=${ABSL_GOOGLETEST_DOWNLOAD_URL} \ |
| - -DABSL_BUILD_TESTING=ON \ |
| - -DCMAKE_BUILD_TYPE=${compilation_mode} \ |
| - -DCMAKE_CXX_STANDARD=${std} \ |
| - -DCMAKE_MODULE_LINKER_FLAGS=\"-Wl,--no-undefined\" && \ |
| - make -j$(nproc) && \ |
| - TZDIR=/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo \ |
| - ctest -j$(nproc) --output-on-failure" |
| + if [[ $build_shared == "OFF" ]]; then |
| + monolithic_shared_options="OFF" |
| + else |
| + monolithic_shared_options="$ABSL_CMAKE_BUILD_MONOLITHIC_SHARED_LIBS" |
| + fi |
| + |
| + for monolithic_shared in $monolithic_shared_options; do |
| + time docker run \ |
| + --mount type=bind,source="${ABSEIL_ROOT}",target=/abseil-cpp,readonly \ |
| + --tmpfs=/buildfs:exec \ |
| + --workdir=/buildfs \ |
| + --cap-add=SYS_PTRACE \ |
| + --rm \ |
| + -e CFLAGS="-Werror" \ |
| + -e CXXFLAGS="-Werror" \ |
| + ${DOCKER_EXTRA_ARGS:-} \ |
| + "${DOCKER_CONTAINER}" \ |
| + /bin/sh -c " |
| + cmake /abseil-cpp \ |
| + -DABSL_GOOGLETEST_DOWNLOAD_URL=${ABSL_GOOGLETEST_DOWNLOAD_URL} \ |
| + -DBUILD_SHARED_LIBS=${build_shared} \ |
| + -DABSL_BUILD_TESTING=ON \ |
| + -DCMAKE_BUILD_TYPE=${compilation_mode} \ |
| + -DCMAKE_CXX_STANDARD=${std} \ |
| + -DABSL_BUILD_MONOLITHIC_SHARED_LIBS=${monolithic_shared} \ |
| + -DCMAKE_MODULE_LINKER_FLAGS=\"-Wl,--no-undefined\" && \ |
| + make -j$(nproc) && \ |
| + TZDIR=/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo \ |
| + ctest -j$(nproc) --output-on-failure" |
| + done |
| done |
| done |
| done |
| diff --git a/ci/macos_xcode_cmake.sh b/ci/macos_xcode_cmake.sh |
| index 690f86b8..c8780384 100755 |
| --- a/ci/macos_xcode_cmake.sh |
| +++ b/ci/macos_xcode_cmake.sh |
| @@ -36,22 +36,35 @@ if [[ -z ${ABSL_CMAKE_BUILD_SHARED:-} ]]; then |
| ABSL_CMAKE_BUILD_SHARED="OFF ON" |
| fi |
| |
| +if [[ -z ${ABSL_CMAKE_BUILD_MONOLITHIC_SHARED_LIBS:-} ]]; then |
| + ABSL_CMAKE_BUILD_MONOLITHIC_SHARED_LIBS="OFF ON" |
| +fi |
| + |
| for compilation_mode in ${ABSL_CMAKE_BUILD_TYPES}; do |
| for build_shared in ${ABSL_CMAKE_BUILD_SHARED}; do |
| - BUILD_DIR=$(mktemp -d ${compilation_mode}.XXXXXXXX) |
| - cd ${BUILD_DIR} |
| - |
| - # TODO(absl-team): Enable -Werror once all warnings are fixed. |
| - time cmake ${ABSEIL_ROOT} \ |
| - -GXcode \ |
| - -DBUILD_SHARED_LIBS=${build_shared} \ |
| - -DABSL_BUILD_TESTING=ON \ |
| - -DCMAKE_BUILD_TYPE=${compilation_mode} \ |
| - -DCMAKE_CXX_STANDARD=14 \ |
| - -DCMAKE_MODULE_LINKER_FLAGS="-Wl,--no-undefined" \ |
| - -DABSL_GOOGLETEST_DOWNLOAD_URL="${ABSL_GOOGLETEST_DOWNLOAD_URL}" |
| - time cmake --build . |
| - time TZDIR=${ABSEIL_ROOT}/absl/time/internal/cctz/testdata/zoneinfo \ |
| - ctest -C ${compilation_mode} --output-on-failure |
| + if [[ $build_shared == "OFF" ]]; then |
| + monolithic_shared_options="OFF" |
| + else |
| + monolithic_shared_options="$ABSL_CMAKE_BUILD_MONOLITHIC_SHARED_LIBS" |
| + fi |
| + |
| + for monolithic_shared in $monolithic_shared_options; do |
| + BUILD_DIR=$(mktemp -d ${compilation_mode}.XXXXXXXX) |
| + cd ${BUILD_DIR} |
| + |
| + # TODO(absl-team): Enable -Werror once all warnings are fixed. |
| + time cmake ${ABSEIL_ROOT} \ |
| + -GXcode \ |
| + -DBUILD_SHARED_LIBS=${build_shared} \ |
| + -DABSL_BUILD_TESTING=ON \ |
| + -DCMAKE_BUILD_TYPE=${compilation_mode} \ |
| + -DCMAKE_CXX_STANDARD=14 \ |
| + -DCMAKE_MODULE_LINKER_FLAGS="-Wl,--no-undefined" \ |
| + -DABSL_BUILD_MONOLITHIC_SHARED_LIBS=${monolithic_shared} \ |
| + -DABSL_GOOGLETEST_DOWNLOAD_URL="${ABSL_GOOGLETEST_DOWNLOAD_URL}" |
| + time cmake --build . |
| + time TZDIR=${ABSEIL_ROOT}/absl/time/internal/cctz/testdata/zoneinfo \ |
| + ctest -C ${compilation_mode} --output-on-failure |
| + done |
| done |
| done |
| diff --git a/ci/windows_msvc_cmake.bat b/ci/windows_msvc_cmake.bat |
| index 743b6f79..789f2c63 100755 |
| --- a/ci/windows_msvc_cmake.bat |
| +++ b/ci/windows_msvc_cmake.bat |
| @@ -51,7 +51,6 @@ CD "build" |
| SET CXXFLAGS="/WX" |
| |
| %CMAKE_BIN% ^ |
| - -DABSL_BUILD_TEST_HELPERS=ON ^ |
| -DABSL_BUILD_TESTING=ON ^ |
| -DABSL_GOOGLETEST_DOWNLOAD_URL=%ABSL_GOOGLETEST_DOWNLOAD_URL% ^ |
| -DBUILD_SHARED_LIBS=%ABSL_CMAKE_BUILD_SHARED% ^ |
| diff --git a/create_lts.py b/create_lts.py |
| index 642b8847..8ad2b64f 100755 |
| --- a/create_lts.py |
| +++ b/create_lts.py |
| @@ -111,20 +111,21 @@ def main(argv): |
| datestamp) |
| }) |
| ReplaceStringsInFile( |
| - 'CMakeLists.txt', { |
| - 'project(absl LANGUAGES CXX)': |
| + 'CMakeLists.txt', |
| + { |
| + 'project(absl LANGUAGES CXX)': ( |
| 'project(absl LANGUAGES CXX VERSION {})'.format(datestamp) |
| - }) |
| - # Set the SOVERSION to YYMM.0.0 - The first 0 means we only have ABI |
| - # compatible changes, and the second 0 means we can increment it to |
| - # mark changes as ABI-compatible, for patch releases. Note that we |
| - # only use the last two digits of the year and the month because the |
| - # MacOS linker requires the first part of the SOVERSION to fit into |
| - # 16 bits. |
| - # https://www.sicpers.info/2013/03/how-to-version-a-mach-o-library/ |
| - ReplaceStringsInFile( |
| - 'CMake/AbseilHelpers.cmake', |
| - {'SOVERSION 0': 'SOVERSION "{}.0.0"'.format(datestamp[2:6])}) |
| + ), |
| + # Set the SOVERSION to YYMM.0.0 - The first 0 means we only have ABI |
| + # compatible changes, and the second 0 means we can increment it to |
| + # mark changes as ABI-compatible, for patch releases. Note that we |
| + # only use the last two digits of the year and the month because the |
| + # MacOS linker requires the first part of the SOVERSION to fit into |
| + # 16 bits. |
| + # https://www.sicpers.info/2013/03/how-to-version-a-mach-o-library/ |
| + 'ABSL_SOVERSION 0': 'ABSL_SOVERSION "{}.0.0"'.format(datestamp[2:6]), |
| + }, |
| + ) |
| StripContentBetweenTags('CMakeLists.txt', '# absl:lts-remove-begin', |
| '# absl:lts-remove-end') |
| |
| -- |
| 2.45.2.505.gda0bf45e8d-goog |
| |