diff options
| author | Mathis <mathisloge@gmail.com> | 2021-09-17 01:16:18 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-16 16:16:18 -0700 |
| commit | c26101d71e1e3f8a8a010bf6854c983ab777b9e9 (patch) | |
| tree | be5ecbab6680ab4759ca0dee4820e40740c73823 | |
| parent | 30a3d841d88dbf1e668d875bcfc050aacdedc63b (diff) | |
| download | vcpkg-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.cmake | 113 | ||||
| -rw-r--r-- | ports/mapnik/usage | 9 | ||||
| -rw-r--r-- | ports/mapnik/use-proj.patch | 28 | ||||
| -rw-r--r-- | ports/mapnik/vcpkg.json | 227 | ||||
| -rw-r--r-- | versions/baseline.json | 4 | ||||
| -rw-r--r-- | versions/m-/mapnik.json | 9 |
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 + } + ] +} |
