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/libkml | |
Diffstat (limited to 'vcpkg/ports/libkml')
| -rw-r--r-- | vcpkg/ports/libkml/add-target-include-directories.patch | 12 | ||||
| -rw-r--r-- | vcpkg/ports/libkml/fix-cmake-min-version.patch | 8 | ||||
| -rw-r--r-- | vcpkg/ports/libkml/fix-mingw.patch | 41 | ||||
| -rw-r--r-- | vcpkg/ports/libkml/fix-minizip.patch | 72 | ||||
| -rw-r--r-- | vcpkg/ports/libkml/patch_empty_literal_on_vc.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/libkml/portfile.cmake | 47 | ||||
| -rw-r--r-- | vcpkg/ports/libkml/vcpkg.json | 23 |
7 files changed, 216 insertions, 0 deletions
diff --git a/vcpkg/ports/libkml/add-target-include-directories.patch b/vcpkg/ports/libkml/add-target-include-directories.patch new file mode 100644 index 0000000..9431a0c --- /dev/null +++ b/vcpkg/ports/libkml/add-target-include-directories.patch @@ -0,0 +1,12 @@ +diff --git a/cmake/LibKMLHelper.cmake b/cmake/LibKMLHelper.cmake +index 5cc166a..3ed3079 100644 +--- a/cmake/LibKMLHelper.cmake ++++ b/cmake/LibKMLHelper.cmake +@@ -1,6 +1,7 @@ + macro(build_target) + cmake_parse_arguments(LIB "" "NAME" "SRCS;INCS;LINKS;DEPENDS" ${ARGN} ) + add_library(${LIB_NAME} ${LIB_SRCS}) ++ target_include_directories(${LIB_NAME} INTERFACE $<INSTALL_INTERFACE:include>) + + foreach(LIB_DEPEND ${LIB_DEPENDS}) + add_dependencies(${LIB_NAME} ${LIB_DEPEND}) diff --git a/vcpkg/ports/libkml/fix-cmake-min-version.patch b/vcpkg/ports/libkml/fix-cmake-min-version.patch new file mode 100644 index 0000000..25b5134 --- /dev/null +++ b/vcpkg/ports/libkml/fix-cmake-min-version.patch @@ -0,0 +1,8 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 028f50a..bb63ffb 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,2 +1,2 @@ cmake_minimum_required(VERSION 2.8) +-cmake_minimum_required(VERSION 2.8) ++cmake_minimum_required(VERSION 3.5) + project(LibKML) diff --git a/vcpkg/ports/libkml/fix-mingw.patch b/vcpkg/ports/libkml/fix-mingw.patch new file mode 100644 index 0000000..32a2a80 --- /dev/null +++ b/vcpkg/ports/libkml/fix-mingw.patch @@ -0,0 +1,41 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 028f50a..bb63ffb 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -26,6 +26,9 @@ set(LIBKML_DATA_DIR ${CMAKE_SOURCE_DIR}/testdata CACHE "Directory containing te + if(CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter -pedantic -fno-rtti") + set(TEST_FLAGS "-Wall -Wextra -Wno-unused-parameter -fno-rtti -DGTEST_HAS_RTTI=0") ++if(WIN32) ++ add_definitions(-DUNICODE -D_UNICODE) ++endif() + + else() + if(MSVC) +diff --git a/src/kml/base/file_win32.cc b/src/kml/base/file_win32.cc +index 28ccb36..6ba79cd 100644 +--- a/src/kml/base/file_win32.cc ++++ b/src/kml/base/file_win32.cc +@@ -34,7 +34,9 @@ + #include "kml/base/file.h" + #include <windows.h> + #include <tchar.h> ++#ifndef __MINGW32__ + #include <xstring> ++#endif + #include <algorithm> + + namespace kmlbase { +diff --git a/src/kml/base/string_util.cc b/src/kml/base/string_util.cc +index b3a9654..842f1cd 100644 +--- a/src/kml/base/string_util.cc ++++ b/src/kml/base/string_util.cc +@@ -113,7 +113,7 @@ bool StringEndsWith(const string& str, const string& end) { + } + + bool StringCaseEqual(const string& a, const string& b) { +-#ifdef WIN32 ++#if defined(WIN32) && !defined(__MINGW32__) + # define strncasecmp(s1, s2, n) _strnicmp (s1, s2, n) + #endif + return a.size() == b.size() && strncasecmp(a.data(), b.data(), a.size()) == 0; diff --git a/vcpkg/ports/libkml/fix-minizip.patch b/vcpkg/ports/libkml/fix-minizip.patch new file mode 100644 index 0000000..ccf7b43 --- /dev/null +++ b/vcpkg/ports/libkml/fix-minizip.patch @@ -0,0 +1,72 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9728ead..028f50a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -110,9 +110,9 @@ else() + list(APPEND MINIZIP_DEPENDS ZLIB) + endif() + +-find_package(MiniZip) ++find_package(MINIZIP NAMES unofficial-minizip REQUIRED) + if(MINIZIP_FOUND) +- include_directories(${MINIZIP_INCLUDE_DIR}) ++ set(MINIZIP_LIBRARY unofficial::minizip::minizip) + else() + include(External_minizip) + list(APPEND KMLBASE_DEPENDS MINIZIP) +diff --git a/cmake/LibKMLConfig.cmake.in b/cmake/LibKMLConfig.cmake.in +index 3e295f4..97826df 100644 +--- a/cmake/LibKMLConfig.cmake.in ++++ b/cmake/LibKMLConfig.cmake.in +@@ -1,3 +1,6 @@ ++include(CMakeFindDependencyMacro) ++find_dependency(unofficial-minizip CONFIG) ++ + # Compute paths + get_filename_component(LIBKML_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) + +diff --git a/src/kml/base/contrib/minizip/iomem_simple.c b/src/kml/base/contrib/minizip/iomem_simple.c +index be89226..6be61d5 100644 +--- a/src/kml/base/contrib/minizip/iomem_simple.c ++++ b/src/kml/base/contrib/minizip/iomem_simple.c +@@ -219,7 +219,7 @@ int ZCALLBACK mem_error (opaque, stream) + return 0; + } + +-ZEXTERN void* ZEXPORT mem_simple_create_file(zlib_filefunc_def* api, void* buffer, size_t buf_len) ++extern void* mem_simple_create_file(zlib_filefunc_def* api, void* buffer, size_t buf_len) + { + MEMFILE* handle = malloc(sizeof(*handle)); + api->zopen_file = NULL; +diff --git a/src/kml/base/contrib/minizip/iomem_simple.h b/src/kml/base/contrib/minizip/iomem_simple.h +index ec11396..515e24e 100644 +--- a/src/kml/base/contrib/minizip/iomem_simple.h ++++ b/src/kml/base/contrib/minizip/iomem_simple.h +@@ -70,7 +70,7 @@ void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); + * This declaration is from the proposed iomem_simple package found at + * http://code.trak.dk. See iomem_simple.c + */ +-extern void* ZEXPORT mem_simple_create_file(zlib_filefunc_def* pzlib_filefunc_def, void* buffer, size_t buflen); ++extern void* mem_simple_create_file(zlib_filefunc_def* pzlib_filefunc_def, void* buffer, size_t buflen); + + #ifdef __cplusplus + } +diff --git a/src/kml/base/contrib/minizip/unzip.c b/src/kml/base/contrib/minizip/unzip.c +index a062863..fb69189 100644 +--- a/src/kml/base/contrib/minizip/unzip.c ++++ b/src/kml/base/contrib/minizip/unzip.c +@@ -43,6 +43,14 @@ woven in by Terry Thorsen 1/2003. + #include "unzip.h" + #include "iomem_simple.h" + #undef NOUNCRYPT ++#ifdef ZEXPORT ++# undef ZEXPORT ++#endif ++#define ZEXPORT ++#ifdef ZEXTERN ++# undef ZEXTERN ++#endif ++#define ZEXTERN extern + + #ifdef STDC + # include <stddef.h> diff --git a/vcpkg/ports/libkml/patch_empty_literal_on_vc.patch b/vcpkg/ports/libkml/patch_empty_literal_on_vc.patch new file mode 100644 index 0000000..8a3581a --- /dev/null +++ b/vcpkg/ports/libkml/patch_empty_literal_on_vc.patch @@ -0,0 +1,13 @@ +diff --git a/src/kml/base/file_win32.cc b/src/kml/base/file_win32.cc +index c46e099..28ccb36 100644 +--- a/src/kml/base/file_win32.cc ++++ b/src/kml/base/file_win32.cc +@@ -42,7 +42,7 @@ namespace kmlbase { + // Internal to the win32 file class. We need a conversion from string to + // LPCWSTR. + static std::wstring Str2Wstr(const string& str) { +- std::wstring wstr(str.length(), L''); ++ std::wstring wstr(str.length(), L' '); + std::copy(str.begin(), str.end(), wstr.begin()); + return wstr; + } diff --git a/vcpkg/ports/libkml/portfile.cmake b/vcpkg/ports/libkml/portfile.cmake new file mode 100644 index 0000000..99b1498 --- /dev/null +++ b/vcpkg/ports/libkml/portfile.cmake @@ -0,0 +1,47 @@ +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +endif() + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO libkml/libkml + REF "${VERSION}" + SHA512 aa48158103d3af764bf98c1fb4cf3e1356b9cc6c8e79d80b96850916f0a8ccb1dac3a46427735dd0bf20647daa047d10e722ac3da2a214d4c1559bf6d5d7c853 + HEAD_REF master + PATCHES + fix-cmake-min-version.patch + patch_empty_literal_on_vc.patch + fix-mingw.patch + fix-minizip.patch + add-target-include-directories.patch +) + +file(REMOVE + "${SOURCE_PATH}/cmake/External_boost.cmake" + "${SOURCE_PATH}/cmake/External_expat.cmake" + "${SOURCE_PATH}/cmake/External_minizip.cmake" + "${SOURCE_PATH}/cmake/External_uriparser.cmake" + "${SOURCE_PATH}/cmake/External_zlib.cmake" + "${SOURCE_PATH}/src/kml/base/contrib/minizip/ioapi.h" +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DCMAKE_POLICY_DEFAULT_CMP0022=NEW + # libkml uses std::unary_function that was deprecated in C++11 and removed in C++17 + # compilers are starting to ship C++17 as the defualt so explicitly set C++11 + -DCMAKE_CXX_STANDARD=11 +) + +vcpkg_cmake_install() +vcpkg_copy_pdbs() +vcpkg_fixup_pkgconfig() +if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_cmake_config_fixup(CONFIG_PATH cmake) +else() + vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/libkml) +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/vcpkg/ports/libkml/vcpkg.json b/vcpkg/ports/libkml/vcpkg.json new file mode 100644 index 0000000..4e544cf --- /dev/null +++ b/vcpkg/ports/libkml/vcpkg.json @@ -0,0 +1,23 @@ +{ + "name": "libkml", + "version": "1.3.0", + "port-version": 14, + "description": "Reference implementation of OGC KML 2.2", + "homepage": "https://github.com/libkml/libkml", + "license": "BSD-3-Clause", + "dependencies": [ + "boost-smart-ptr", + "expat", + "minizip", + "uriparser", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + "zlib" + ] +} |