diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/geos | |
Diffstat (limited to 'vcpkg/ports/geos')
| -rw-r--r-- | vcpkg/ports/geos/fix-exported-config.patch | 80 | ||||
| -rw-r--r-- | vcpkg/ports/geos/portfile.cmake | 53 | ||||
| -rw-r--r-- | vcpkg/ports/geos/usage | 14 | ||||
| -rw-r--r-- | vcpkg/ports/geos/vcpkg.json | 17 |
4 files changed, 164 insertions, 0 deletions
diff --git a/vcpkg/ports/geos/fix-exported-config.patch b/vcpkg/ports/geos/fix-exported-config.patch new file mode 100644 index 0000000..2e05f83 --- /dev/null +++ b/vcpkg/ports/geos/fix-exported-config.patch @@ -0,0 +1,80 @@ +diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt +index a8c034fb2..a5cd14c13 100644 +--- a/tools/CMakeLists.txt ++++ b/tools/CMakeLists.txt +@@ -61,11 +61,22 @@ function(configure_install_geos_pc) + set(libdir "$\{exec_prefix\}/${CMAKE_INSTALL_LIBDIR}") + endif() + set(VERSION ${GEOS_VERSION}) +- set(EXTRA_LIBS "-lstdc++") ++ set(EXTRA_LIBS "") ++ foreach(lib IN LISTS CMAKE_CXX_IMPLICIT_LINK_LIBRARIES) ++ if(lib IN_LIST CMAKE_C_IMPLICIT_LINK_LIBRARIES) ++ continue() ++ elseif(EXISTS "${lib}") ++ list(APPEND EXTRA_LIBS "${lib}") ++ else() ++ list(APPEND EXTRA_LIBS "-l${lib}") ++ endif() ++ endforeach() + if(HAVE_LIBM) ++ list(REMOVE_ITEM EXTRA_LIBS "-lm") + list(APPEND EXTRA_LIBS "-lm") + endif() + list(JOIN EXTRA_LIBS " " EXTRA_LIBS) ++ set(EXTRA_LIBS "${EXTRA_LIBS}" PARENT_SCOPE) # for geos-config + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/geos.pc.in +@@ -77,9 +88,9 @@ function(configure_install_geos_pc) + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + endfunction() + ++configure_install_geos_pc() + if(NOT MSVC) + configure_install_geos_config() +- configure_install_geos_pc() + endif() + + option(BUILD_ASTYLE "Build astyle (Artistic Style) tool" OFF) +diff --git a/tools/geos-config.in b/tools/geos-config.in +index 6eff1eb14..8827f6ac6 100644 +--- a/tools/geos-config.in ++++ b/tools/geos-config.in +@@ -1,9 +1,11 @@ + #!/bin/sh + +-prefix=@prefix@ +-exec_prefix=@exec_prefix@ +-includedir=@includedir@ +-libdir=@libdir@ ++DIRNAME=$(dirname $0) ++TOOLS=$(dirname $DIRNAME) ++prefix=$(CDPATH= cd -- "${DIRNAME%/tools/geos/*}" && pwd -P) ++exec_prefix=${prefix} ++includedir=${prefix}/include ++libdir=${prefix}${TOOLS##*/geos}/lib + + usage() + { +@@ -47,16 +49,16 @@ while test $# -gt 0; do + echo -L${libdir} -lgeos + ;; + --clibs) +- echo -L${libdir} -lgeos_c ++ echo -L${libdir} -lgeos_c $(if test "@BUILD_SHARED_LIBS@" != "ON"; then echo "-lgeos @EXTRA_LIBS@"; fi) + ;; + --cclibs) +- echo -L${libdir} -lgeos ++ echo -L${libdir} -lgeos $(if test "@BUILD_SHARED_LIBS@" != "ON"; then echo "@EXTRA_LIBS@"; fi) + ;; + --static-clibs) +- echo -L${libdir} -lgeos_c -lgeos -lstdc++ -lm ++ echo -L${libdir} -lgeos_c -lgeos @EXTRA_LIBS@ + ;; + --static-cclibs) +- echo -L${libdir} -lgeos -lstdc++ -lm ++ echo -L${libdir} -lgeos @EXTRA_LIBS@ + ;; + --cflags) + echo -I${includedir} diff --git a/vcpkg/ports/geos/portfile.cmake b/vcpkg/ports/geos/portfile.cmake new file mode 100644 index 0000000..6da78f6 --- /dev/null +++ b/vcpkg/ports/geos/portfile.cmake @@ -0,0 +1,53 @@ +vcpkg_download_distfile(ARCHIVE + URLS "https://download.osgeo.org/geos/geos-${VERSION}.tar.bz2" + FILENAME "geos-${VERSION}.tar.bz2" + SHA512 a5a27c34249a6b7fa8bc5d6d557f278bcc3a81ca188f9f543bee7afb6e47d9f8a545e676c5884c0651530bccd24eb929feaaf95cda8e73b033296073e6626f0d +) +vcpkg_extract_source_archive(SOURCE_PATH + ARCHIVE "${ARCHIVE}" + SOURCE_BASE "v${VERSION}" + PATCHES + fix-exported-config.patch +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DBUILD_ASTYLE=OFF + -DBUILD_DOCUMENTATION=OFF + -DBUILD_GEOSOP=OFF + -DBUILD_TESTING=OFF + -DBUILD_BENCHMARKS=OFF +) +vcpkg_cmake_install() +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/GEOS) +vcpkg_fixup_pkgconfig() + +if(NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_MINGW) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin") + file(RENAME "${CURRENT_PACKAGES_DIR}/bin/geos-config" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/geos-config") + file(CHMOD "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/geos-config" FILE_PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE + ) + if(NOT VCPKG_BUILD_TYPE) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/bin") + file(RENAME "${CURRENT_PACKAGES_DIR}/debug/bin/geos-config" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/bin/geos-config") + file(CHMOD "${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/bin/geos-config" FILE_PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE + ) + endif() +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static" OR NOT VCPKG_TARGET_IS_WINDOWS) + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") +endif() + +vcpkg_copy_pdbs() + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") diff --git a/vcpkg/ports/geos/usage b/vcpkg/ports/geos/usage new file mode 100644 index 0000000..ef1fdf9 --- /dev/null +++ b/vcpkg/ports/geos/usage @@ -0,0 +1,14 @@ +geos provides CMake targets: + + # C API (provides long-term ABI stability) + find_package(GEOS CONFIG REQUIRED) + target_link_libraries(main PRIVATE GEOS::geos_c) + + # C++ API (will likely change across versions) + find_package(GEOS CONFIG REQUIRED) + target_link_libraries(main PRIVATE GEOS::geos) + +geos provides pkg-config modules: + + # Geometry Engine, Open Source - C API + geos diff --git a/vcpkg/ports/geos/vcpkg.json b/vcpkg/ports/geos/vcpkg.json new file mode 100644 index 0000000..df9de9c --- /dev/null +++ b/vcpkg/ports/geos/vcpkg.json @@ -0,0 +1,17 @@ +{ + "name": "geos", + "version": "3.14.1", + "description": "Geometry Engine Open Source", + "homepage": "https://libgeos.org/", + "license": "LGPL-2.1-only", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} |