aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathis <mathisloge@gmail.com>2021-09-17 01:16:18 +0200
committerGitHub <noreply@github.com>2021-09-16 16:16:18 -0700
commitc26101d71e1e3f8a8a010bf6854c983ab777b9e9 (patch)
treebe5ecbab6680ab4759ca0dee4820e40740c73823
parent30a3d841d88dbf1e668d875bcfc050aacdedc63b (diff)
downloadvcpkg-c26101d71e1e3f8a8a010bf6854c983ab777b9e9.tar.gz
vcpkg-c26101d71e1e3f8a8a010bf6854c983ab777b9e9.zip
[Mapnik] new port (#18849)
* add mapnik * version * update to latest ref * overwrite version * latest ref * fix hash * verison * update to latest upstream * version * false jpeg lib * version * update to latest ref * verssion * proj not needed * versioon * fix proj patch * version * actually the linkage is already checked in `supports`. Apply latest policies. Added default features * version * update to original ref * enable dynamic again * version * use date version * update version * do not add a second version * fix linux installing * version * Apply suggestions from code review Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com> * do not use port var * version * drop mapnik::core from general usage info. * version * don't add a new version * add comment to trigger ci * version Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com>
-rw-r--r--ports/mapnik/portfile.cmake113
-rw-r--r--ports/mapnik/usage9
-rw-r--r--ports/mapnik/use-proj.patch28
-rw-r--r--ports/mapnik/vcpkg.json227
-rw-r--r--versions/baseline.json4
-rw-r--r--versions/m-/mapnik.json9
6 files changed, 390 insertions, 0 deletions
diff --git a/ports/mapnik/portfile.cmake b/ports/mapnik/portfile.cmake
new file mode 100644
index 000000000..bc19d4ab9
--- /dev/null
+++ b/ports/mapnik/portfile.cmake
@@ -0,0 +1,113 @@
+# test application for this port: https://github.com/mathisloge/mapnik-vcpkg-test
+
+vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO mapnik/mapnik
+ REF 1ccbbf95b5e7bf254ab5b4dc21bdc373978c36a1
+ SHA512 21b4fc6e64d9b53550a046c5c9bcc32524324d7df39816b74b23a7ce2a64c4eeb291ad1c1aa09a3d5d79158f889ba8b7182cd0bf3435c39d1f17f33e4ffdce05
+ HEAD_REF master
+ PATCHES
+ use-proj.patch
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ "jpeg" USE_JPEG
+ "png" USE_PNG
+ "tiff" USE_TIFF
+ "webp" USE_WEBP
+ "libxml2" USE_LIBXML2
+ "cairo" USE_CAIRO
+ "proj" USE_PROJ
+ "grid-renderer" USE_GRID_RENDERER
+ "svg-renderer" USE_SVG_RENDERER
+ "input-csv" USE_PLUGIN_INPUT_CSV
+ "input-gdal" USE_PLUGIN_INPUT_GDAL
+ "input-geobuf" USE_PLUGIN_INPUT_GEOBUF
+ "input-geojson" USE_PLUGIN_INPUT_GEOJSON
+ "input-ogr" USE_PLUGIN_INPUT_OGR
+ "input-pgraster" USE_PLUGIN_INPUT_PGRASTER
+ "input-postgis" USE_PLUGIN_INPUT_POSTGIS
+ "input-raster" USE_PLUGIN_INPUT_RASTER
+ "input-shape" USE_PLUGIN_INPUT_SHAPE
+ "input-sqlite" USE_PLUGIN_INPUT_SQLITE
+ "input-topojson" USE_PLUGIN_INPUT_TOPOJSON
+ "viewer" BUILD_DEMO_VIEWER
+ "demo" BUILD_DEMO_CPP
+ "utility-geometry-to-wkb" BUILD_UTILITY_GEOMETRY_TO_WKB
+ "utility-mapnik-index" BUILD_UTILITY_MAPNIK_INDEX
+ "utility-mapnik-render" BUILD_UTILITY_MAPNIK_RENDER
+ "utility-ogrindex" BUILD_UTILITY_OGRINDEX
+ "utility-pgsql2sqlite" BUILD_UTILITY_PGSQL2SQLITE
+ "utility-shapeindex" BUILD_UTILITY_SHAPEINDEX
+ "utility-svg2png" BUILD_UTILITY_SVG2PNG
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DCOPY_LIBRARIES_FOR_EXECUTABLES=OFF
+ -DCOPY_FONTS_AND_PLUGINS_FOR_EXECUTABLES=OFF
+ -DINSTALL_DEPENDENCIES=OFF
+ -DBUILD_TEST=OFF
+ -DBUILD_BENCHMARK=OFF
+ -DUSE_EXTERNAL_MAPBOX_GEOMETRY=ON
+ -DUSE_EXTERNAL_MAPBOX_POLYLABEL=ON
+ -DUSE_EXTERNAL_MAPBOX_PROTOZERO=ON
+ -DUSE_EXTERNAL_MAPBOX_VARIANT=ON
+ -DINSTALL_CMAKE_DIR=share/mapnik/cmake
+ -DFONTS_INSTALL_DIR=share/mapnik/fonts
+)
+
+vcpkg_cmake_install()
+
+# copy plugins into tool path, if any plugin is installed
+if(IS_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin/plugins")
+ file(COPY "${CURRENT_PACKAGES_DIR}/bin/plugins" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
+endif()
+vcpkg_copy_pdbs()
+
+if("demo" IN_LIST FEATURES)
+ file(COPY "${SOURCE_PATH}/demo/data" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}/demo")
+ vcpkg_copy_tools(TOOL_NAMES mapnik-demo AUTO_CLEAN)
+endif()
+
+if("viewer" IN_LIST FEATURES)
+ # copy the ini file to reference the plugins correctly
+ file(COPY "${CURRENT_PACKAGES_DIR}/bin/viewer.ini" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
+ vcpkg_copy_tools(TOOL_NAMES mapnik-viewer AUTO_CLEAN)
+endif()
+
+if("utility-geometry-to-wkb" IN_LIST FEATURES)
+ vcpkg_copy_tools(TOOL_NAMES geometry_to_wkb AUTO_CLEAN)
+endif()
+
+if("utility-mapnik-index" IN_LIST FEATURES)
+ vcpkg_copy_tools(TOOL_NAMES mapnik-index AUTO_CLEAN)
+endif()
+if("utility-mapnik-render" IN_LIST FEATURES)
+ vcpkg_copy_tools(TOOL_NAMES mapnik-render AUTO_CLEAN)
+endif()
+if("utility-ogrindex" IN_LIST FEATURES)
+ # build is currently not supported
+ # vcpkg_copy_tools(TOOL_NAMES ogrindex AUTO_CLEAN)
+endif()
+if("utility-pgsql2sqlite" IN_LIST FEATURES)
+ vcpkg_copy_tools(TOOL_NAMES pgsql2sqlite AUTO_CLEAN)
+endif()
+if("utility-shapeindex" IN_LIST FEATURES)
+ vcpkg_copy_tools(TOOL_NAMES shapeindex AUTO_CLEAN)
+endif()
+if("utility-svg2png" IN_LIST FEATURES)
+ vcpkg_copy_tools(TOOL_NAMES svg2png AUTO_CLEAN)
+endif()
+
+vcpkg_cmake_config_fixup(CONFIG_PATH share/mapnik/cmake)
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
+
+file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
+file(INSTALL "${SOURCE_PATH}/fonts/unifont_license.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME fonts_copyright)
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
diff --git a/ports/mapnik/usage b/ports/mapnik/usage
new file mode 100644
index 000000000..3bd0f4a01
--- /dev/null
+++ b/ports/mapnik/usage
@@ -0,0 +1,9 @@
+The package mapnik provides CMake targets:
+
+ find_package(mapnik CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE mapnik::mapnik mapnik::json mapnik::wkt)
+
+If you only need the compile definitions without any sources, use target mapnik::core.
+
+If any plugins were installed, the variable ${MAPNIK_PLUGINS_DIR} contains the plugin directory
+Fonts are available with the variable ${MAPNIK_FONTS_DIR}
diff --git a/ports/mapnik/use-proj.patch b/ports/mapnik/use-proj.patch
new file mode 100644
index 000000000..35e588e37
--- /dev/null
+++ b/ports/mapnik/use-proj.patch
@@ -0,0 +1,28 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 54dda37..e82a817 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -254,21 +254,21 @@ endif()
+
+ if(USE_PROJ)
+ #https://proj.org/development/cmake.html
+ mapnik_find_package(PROJ QUIET)
+ # currently the cmake files are not installed, when installing proj via apt-get. So search via pkg-config
+ if(NOT PROJ_FOUND)
+ message(STATUS "PROJ not found via FindPROJ. Searching via pkg-config...")
+ pkg_check_modules(PROJ REQUIRED IMPORTED_TARGET proj)
+ string(REGEX MATCH "([0-9]+)\.([0-9]+)\.([0-9]+)" _dummy "${PROJ_VERSION}")
+ set(PROJ_VERSION_MAJOR "${CMAKE_MATCH_1}")
+ set(PROJ_VERSION_MINOR "${CMAKE_MATCH_2}")
+ set(PROJ_VERSION_PATCH "${CMAKE_MATCH_3}")
+ endif()
+ math(EXPR MAPNIK_PROJ_VERSION "${PROJ_VERSION_MAJOR}*10000 + ${PROJ_VERSION_MINOR}*100 + ${PROJ_VERSION_PATCH}" OUTPUT_FORMAT DECIMAL)
+ message(STATUS "Using mapnik PROJ version: ${MAPNIK_PROJ_VERSION}")
+ list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_USE_PROJ MAPNIK_PROJ_VERSION=${MAPNIK_PROJ_VERSION})
+- list(APPEND MAPNIK_OPTIONAL_LIBS ${PROJ_LIBRARIES})
+- list(APPEND MAPNIK_OPTIONAL_LIBS_INCLUDE ${PROJ_INCLUDE_DIRS})
++ list(APPEND MAPNIK_OPTIONAL_LIBS ${PROJ_LIBRARIES})
++ # list(APPEND MAPNIK_OPTIONAL_LIBS_INCLUDE ${PROJ_INCLUDE_DIRS}) # this adds some non existent directory when building with vcpgk -> commented out
+ endif()
+
+ if(USE_GRID_RENDERER)
diff --git a/ports/mapnik/vcpkg.json b/ports/mapnik/vcpkg.json
new file mode 100644
index 000000000..c6aebcc52
--- /dev/null
+++ b/ports/mapnik/vcpkg.json
@@ -0,0 +1,227 @@
+{
+ "name": "mapnik",
+ "version-date": "2021-09-15",
+ "description": "Mapnik is an open source toolkit for developing mapping applications.",
+ "homepage": "https://github.com/mapnik/mapnik",
+ "supports": "!(static & windows)",
+ "dependencies": [
+ "boost-assign",
+ "boost-bimap",
+ "boost-filesystem",
+ "boost-geometry",
+ "boost-gil",
+ "boost-interprocess",
+ {
+ "name": "boost-locale",
+ "features": [
+ "icu"
+ ]
+ },
+ "boost-msm",
+ "boost-property-tree",
+ {
+ "name": "boost-regex",
+ "features": [
+ "icu"
+ ]
+ },
+ "boost-spirit",
+ "boost-system",
+ {
+ "name": "freetype",
+ "features": [
+ "bzip2",
+ "png"
+ ]
+ },
+ {
+ "name": "harfbuzz",
+ "features": [
+ "icu"
+ ]
+ },
+ "icu",
+ "mapbox-geometry",
+ "mapbox-polylabel",
+ "mapbox-variant",
+ "protozero",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ],
+ "default-features": [
+ "grid-renderer",
+ "jpeg",
+ "png",
+ "proj",
+ "svg-renderer",
+ "tiff",
+ "webp"
+ ],
+ "features": {
+ "cairo": {
+ "description": "Cairo renderer",
+ "dependencies": [
+ "cairo",
+ "cairomm"
+ ]
+ },
+ "demo": {
+ "description": "Make demo application"
+ },
+ "grid-renderer": {
+ "description": "Grid renderer"
+ },
+ "input-csv": {
+ "description": "CSV input plugin"
+ },
+ "input-gdal": {
+ "description": "GDAL input plugin",
+ "dependencies": [
+ "gdal"
+ ]
+ },
+ "input-geobuf": {
+ "description": "GEOBUF input plugin",
+ "dependencies": [
+ "protozero"
+ ]
+ },
+ "input-geojson": {
+ "description": "GEOJSON input plugin"
+ },
+ "input-ogr": {
+ "description": "OGR input plugin",
+ "dependencies": [
+ "gdal"
+ ]
+ },
+ "input-pgraster": {
+ "description": "PGRASTER input plugin",
+ "dependencies": [
+ "libodb-pgsql",
+ "libpq"
+ ]
+ },
+ "input-postgis": {
+ "description": "POSTGIS input plugin",
+ "dependencies": [
+ "libodb-pgsql",
+ "libpq"
+ ]
+ },
+ "input-raster": {
+ "description": "RASTER input plugin"
+ },
+ "input-shape": {
+ "description": "SHAPE input plugin"
+ },
+ "input-sqlite": {
+ "description": "SQLITE input plugin",
+ "dependencies": [
+ "sqlite3"
+ ]
+ },
+ "input-topojson": {
+ "description": "TOPOJSON input plugin"
+ },
+ "jpeg": {
+ "description": "add jpeg support",
+ "dependencies": [
+ "libjpeg-turbo"
+ ]
+ },
+ "libxml2": {
+ "description": "use libxml2 instead of rapidxml",
+ "dependencies": [
+ "libxml2"
+ ]
+ },
+ "png": {
+ "description": "add png support",
+ "dependencies": [
+ "libpng"
+ ]
+ },
+ "proj": {
+ "description": "PROJ Functionalities",
+ "dependencies": [
+ {
+ "name": "proj4",
+ "features": [
+ "database"
+ ]
+ }
+ ]
+ },
+ "svg-renderer": {
+ "description": "SVG renderer"
+ },
+ "tiff": {
+ "description": "add tiff support",
+ "dependencies": [
+ "tiff"
+ ]
+ },
+ "utility-geometry-to-wkb": {
+ "description": "utility application geometry-to-wkb",
+ "dependencies": [
+ "boost-program-options"
+ ]
+ },
+ "utility-mapnik-index": {
+ "description": "utility application mapnik-index",
+ "dependencies": [
+ "boost-program-options"
+ ]
+ },
+ "utility-mapnik-render": {
+ "description": "utility application mapnik-render",
+ "dependencies": [
+ "boost-program-options"
+ ]
+ },
+ "utility-ogrindex": {
+ "description": "utility application ogrindex"
+ },
+ "utility-pgsql2sqlite": {
+ "description": "utility application pgsql2sqlite",
+ "dependencies": [
+ "boost-program-options",
+ "libodb-pgsql",
+ "libpq",
+ "sqlite3"
+ ]
+ },
+ "utility-shapeindex": {
+ "description": "utility application shapeindex",
+ "dependencies": [
+ "boost-program-options"
+ ]
+ },
+ "utility-svg2png": {
+ "description": "utility application svg2png",
+ "dependencies": [
+ "boost-program-options"
+ ]
+ },
+ "viewer": {
+ "description": "Make demo viewer application",
+ "dependencies": [
+ "qt5-base"
+ ]
+ },
+ "webp": {
+ "description": "add webp support",
+ "dependencies": [
+ "libwebp"
+ ]
+ }
+ }
+}
diff --git a/versions/baseline.json b/versions/baseline.json
index 7935c6405..900bb45e1 100644
--- a/versions/baseline.json
+++ b/versions/baseline.json
@@ -4096,6 +4096,10 @@
"baseline": "0.5.0",
"port-version": 0
},
+ "mapnik": {
+ "baseline": "2021-09-15",
+ "port-version": 0
+ },
"marble": {
"baseline": "19.08.2",
"port-version": 2
diff --git a/versions/m-/mapnik.json b/versions/m-/mapnik.json
new file mode 100644
index 000000000..7924f1250
--- /dev/null
+++ b/versions/m-/mapnik.json
@@ -0,0 +1,9 @@
+{
+ "versions": [
+ {
+ "git-tree": "794329d32e3af221bb8751cf747f354d087fceab",
+ "version-date": "2021-09-15",
+ "port-version": 0
+ }
+ ]
+}