aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libkml
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/libkml')
-rw-r--r--vcpkg/ports/libkml/add-target-include-directories.patch12
-rw-r--r--vcpkg/ports/libkml/fix-cmake-min-version.patch8
-rw-r--r--vcpkg/ports/libkml/fix-mingw.patch41
-rw-r--r--vcpkg/ports/libkml/fix-minizip.patch72
-rw-r--r--vcpkg/ports/libkml/patch_empty_literal_on_vc.patch13
-rw-r--r--vcpkg/ports/libkml/portfile.cmake47
-rw-r--r--vcpkg/ports/libkml/vcpkg.json23
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"
+ ]
+}