double-conversion: Implement cmake config to switch between shared/static link (#24408)
This commit is contained in:
parent
b133c201b9
commit
40ace1b9a7
@ -4,7 +4,7 @@ _realname=double-conversion
|
||||
pkgbase=mingw-w64-${_realname}
|
||||
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
|
||||
pkgver=3.3.1
|
||||
pkgrel=2
|
||||
pkgrel=3
|
||||
pkgdesc="Binary-decimal and decimal-binary routines for IEEE doubles (mingw-w64)"
|
||||
arch=('any')
|
||||
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
|
||||
@ -14,8 +14,18 @@ depends=("${MINGW_PACKAGE_PREFIX}-cc-libs")
|
||||
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
|
||||
"${MINGW_PACKAGE_PREFIX}-cmake"
|
||||
"${MINGW_PACKAGE_PREFIX}-ninja")
|
||||
source=("https://github.com/google/double-conversion/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz")
|
||||
sha256sums=('fe54901055c71302dcdc5c3ccbe265a6c191978f3761ce1414d0895d6b0ea90e')
|
||||
source=("https://github.com/google/double-conversion/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz"
|
||||
cmake-version.patch
|
||||
cmake-dual-lib.patch)
|
||||
sha256sums=('fe54901055c71302dcdc5c3ccbe265a6c191978f3761ce1414d0895d6b0ea90e'
|
||||
'677de958606a7884147525cd985d0b133c95eafaac580d0eed1fd84ff339eedf'
|
||||
'66e1bf3216676dce9f5149e7a1b381e692653679e206f0e729fe5e9d158459a6')
|
||||
|
||||
prepare() {
|
||||
cd ${srcdir}/${_realname}-${pkgver}
|
||||
patch -p1 -i ${srcdir}/cmake-version.patch
|
||||
patch -p1 -i ${srcdir}/cmake-dual-lib.patch
|
||||
}
|
||||
|
||||
build() {
|
||||
# shared
|
||||
@ -25,7 +35,6 @@ build() {
|
||||
${MINGW_PREFIX}/bin/cmake \
|
||||
-G'Ninja' \
|
||||
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
|
||||
-DCMAKE_POLICY_VERSION_MINIMUM=4.0 \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||
-DBUILD_SHARED_LIBS=ON \
|
||||
@ -40,7 +49,6 @@ build() {
|
||||
${MINGW_PREFIX}/bin/cmake \
|
||||
-G'Ninja' \
|
||||
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
|
||||
-DCMAKE_POLICY_VERSION_MINIMUM=4.0 \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
|
||||
88
mingw-w64-double-conversion/cmake-dual-lib.patch
Normal file
88
mingw-w64-double-conversion/cmake-dual-lib.patch
Normal file
@ -0,0 +1,88 @@
|
||||
diff -Naur double-conversion-3.3.1-orig/CMakeLists.txt double-conversion-3.3.1/CMakeLists.txt
|
||||
--- double-conversion-3.3.1-orig/CMakeLists.txt 2025-02-14 13:03:13.000000000 +0300
|
||||
+++ double-conversion-3.3.1/CMakeLists.txt 2025-05-23 21:15:21.673245400 +0300
|
||||
@@ -10,6 +10,12 @@
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /D_DEBUG /D_ITERATOR_DEBUG_LEVEL=2")
|
||||
endif()
|
||||
|
||||
+if (BUILD_SHARED_LIBS)
|
||||
+ set (target_suffix "shared")
|
||||
+else ()
|
||||
+ set (target_suffix "static")
|
||||
+endif ()
|
||||
+
|
||||
set(headers
|
||||
double-conversion/bignum.h
|
||||
double-conversion/bignum-dtoa.h
|
||||
@@ -121,6 +128,7 @@
|
||||
EXPORT "${targets_export_name}"
|
||||
NAMESPACE "${namespace}"
|
||||
DESTINATION "${config_install_dir}"
|
||||
+ FILE double-conversion-${target_suffix}-targets.cmake
|
||||
)
|
||||
|
||||
if (MSVC AND BUILD_SHARED_LIBS)
|
||||
diff -Naur double-conversion-3.3.1-orig/cmake/Config.cmake.in double-conversion-3.3.1/cmake/Config.cmake.in
|
||||
--- double-conversion-3.3.1-orig/cmake/Config.cmake.in 2025-02-14 13:03:13.000000000 +0300
|
||||
+++ double-conversion-3.3.1/cmake/Config.cmake.in 2025-05-23 21:12:16.251588400 +0300
|
||||
@@ -1,4 +1,59 @@
|
||||
@PACKAGE_INIT@
|
||||
|
||||
-include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake")
|
||||
+set(@PROJECT_NAME@_known_comps static shared)
|
||||
+set(@PROJECT_NAME@_comp_static NO)
|
||||
+set(@PROJECT_NAME@_comp_shared NO)
|
||||
+foreach (@PROJECT_NAME@_comp IN LISTS ${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS)
|
||||
+ if (@PROJECT_NAME@_comp IN_LIST @PROJECT_NAME@_known_comps)
|
||||
+ set(@PROJECT_NAME@_comp_${@PROJECT_NAME@_comp} YES)
|
||||
+ else ()
|
||||
+ set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE
|
||||
+ "@PROJECT_NAME@ does not recognize component `${@PROJECT_NAME@_comp}`.")
|
||||
+ set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
|
||||
+ return()
|
||||
+ endif ()
|
||||
+endforeach ()
|
||||
+
|
||||
+if (@PROJECT_NAME@_comp_static AND @PROJECT_NAME@_comp_shared)
|
||||
+ set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE
|
||||
+ "@PROJECT_NAME@ `static` and `shared` components are mutually exclusive.")
|
||||
+ set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
|
||||
+ return()
|
||||
+endif ()
|
||||
+
|
||||
+set(@PROJECT_NAME@_static_targets "${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-static-targets.cmake")
|
||||
+set(@PROJECT_NAME@_shared_targets "${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-shared-targets.cmake")
|
||||
+
|
||||
+macro(prj_load_targets type)
|
||||
+ if (NOT EXISTS "${@PROJECT_NAME@_${type}_targets}")
|
||||
+ set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE
|
||||
+ "@PROJECT_NAME@ `${type}` libraries were requested but not found.")
|
||||
+ set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
|
||||
+ return()
|
||||
+ endif ()
|
||||
+ include("${@PROJECT_NAME@_${type}_targets}")
|
||||
+endmacro()
|
||||
+
|
||||
+if (@PROJECT_NAME@_comp_static)
|
||||
+ prj_load_targets(static)
|
||||
+elseif (@PROJECT_NAME@_comp_shared)
|
||||
+ prj_load_targets(shared)
|
||||
+elseif (DEFINED @PROJECT_NAME@_SHARED_LIBS AND @PROJECT_NAME@_SHARED_LIBS)
|
||||
+ prj_load_targets(shared)
|
||||
+elseif (DEFINED @PROJECT_NAME@_SHARED_LIBS AND NOT @PROJECT_NAME@_SHARED_LIBS)
|
||||
+ prj_load_targets(static)
|
||||
+elseif (BUILD_SHARED_LIBS)
|
||||
+ if (EXISTS "${@PROJECT_NAME@_shared_targets}")
|
||||
+ prj_load_targets(shared)
|
||||
+ else ()
|
||||
+ prj_load_targets(static)
|
||||
+ endif ()
|
||||
+else ()
|
||||
+ if (EXISTS "${@PROJECT_NAME@_static_targets}")
|
||||
+ prj_load_targets(static)
|
||||
+ else ()
|
||||
+ prj_load_targets(shared)
|
||||
+ endif ()
|
||||
+endif ()
|
||||
+
|
||||
check_required_components("@PROJECT_NAME@")
|
||||
9
mingw-w64-double-conversion/cmake-version.patch
Normal file
9
mingw-w64-double-conversion/cmake-version.patch
Normal file
@ -0,0 +1,9 @@
|
||||
diff -Naur double-conversion-3.3.1-orig/CMakeLists.txt double-conversion-3.3.1/CMakeLists.txt
|
||||
--- double-conversion-3.3.1-orig/CMakeLists.txt 2025-02-14 13:03:13.000000000 +0300
|
||||
+++ double-conversion-3.3.1/CMakeLists.txt 2025-05-23 21:15:21.673245400 +0300
|
||||
@@ -1,4 +1,4 @@
|
||||
-cmake_minimum_required(VERSION 3.0)
|
||||
+cmake_minimum_required(VERSION 3.15...4.0.1)
|
||||
project(double-conversion VERSION 3.3.0)
|
||||
|
||||
option(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" OFF)
|
||||
Loading…
x
Reference in New Issue
Block a user