From 2978f18ad33b138581d06badae64ad08fdff4653 Mon Sep 17 00:00:00 2001 From: Mateusz Loskot Date: Fri, 18 May 2018 08:42:45 +0200 Subject: [PATCH] Add PDAL 1.7.1 (#3452) * Add PDAL 1.7.1 First stab at porting PDAL (https://pdal.io), creates package: - with minimal set of required dependencies - with dynamic library only - dependency GDAL does not build as static - with pdal executable * [pdal] Allow building static libs on top of DLLs. --- .../0001-win32_compiler_options.cmake.patch | 14 ++++ ports/pdal/CONTROL | 4 + ports/pdal/FindGDAL.cmake | 13 +++ ports/pdal/FindGEOS.cmake | 13 +++ ports/pdal/FindGeoTIFF.cmake | 13 +++ ports/pdal/portfile.cmake | 79 +++++++++++++++++++ 6 files changed, 136 insertions(+) create mode 100644 ports/pdal/0001-win32_compiler_options.cmake.patch create mode 100644 ports/pdal/CONTROL create mode 100644 ports/pdal/FindGDAL.cmake create mode 100644 ports/pdal/FindGEOS.cmake create mode 100644 ports/pdal/FindGeoTIFF.cmake create mode 100644 ports/pdal/portfile.cmake diff --git a/ports/pdal/0001-win32_compiler_options.cmake.patch b/ports/pdal/0001-win32_compiler_options.cmake.patch new file mode 100644 index 000000000..8486cc1cd --- /dev/null +++ b/ports/pdal/0001-win32_compiler_options.cmake.patch @@ -0,0 +1,14 @@ +diff -Nuar a/cmake/win32_compiler_options.cmake b/cmake/win32_compiler_options.cmake +--- a/cmake/win32_compiler_options.cmake 2018-04-06 20:24:17.000000000 +0200 ++++ b/cmake/win32_compiler_options.cmake 2018-04-28 19:40:54.534593200 +0200 +@@ -67,10 +67,6 @@ + endif() + endif() + +-set(CMAKE_INCLUDE_PATH "c:/OSGeo4W64/include;$ENV{CMAKE_INCLUDE_PATH}") +-set(CMAKE_LIBRARY_PATH "c:/OSGeo4W64/lib;$ENV{CMAKE_LIBRARY_PATH}") +-set(CMAKE_PREFIX_PATH "c:/OSGeo4W64/cmake;$ENV{CMAKE_LIBRARY_PATH}") +- + #ABELL (& gadomski) - WHY? + set(PDAL_PLATFORM_WIN32 1) + set(WINSOCK_LIBRARY ws2_32) diff --git a/ports/pdal/CONTROL b/ports/pdal/CONTROL new file mode 100644 index 000000000..3db5c51ac --- /dev/null +++ b/ports/pdal/CONTROL @@ -0,0 +1,4 @@ +Source: pdal +Version: 1.7.1-1 +Description: PDAL - Point Data Abstraction Library is a library for manipulating point cloud data. +Build-Depends: gdal, geos, jsoncpp, libgeotiff diff --git a/ports/pdal/FindGDAL.cmake b/ports/pdal/FindGDAL.cmake new file mode 100644 index 000000000..9683cb0e5 --- /dev/null +++ b/ports/pdal/FindGDAL.cmake @@ -0,0 +1,13 @@ +find_path(GDAL_INCLUDE_DIR gdal.h) + +find_library(GDAL_LIBRARY_DEBUG NAMES gdald) +find_library(GDAL_LIBRARY_RELEASE NAMES gdal) + +include(SelectLibraryConfigurations) +select_library_configurations(GDAL) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS( + GDAL DEFAULT_MSG + GDAL_LIBRARY GDAL_INCLUDE_DIR +) diff --git a/ports/pdal/FindGEOS.cmake b/ports/pdal/FindGEOS.cmake new file mode 100644 index 000000000..88d17b073 --- /dev/null +++ b/ports/pdal/FindGEOS.cmake @@ -0,0 +1,13 @@ +find_path(GEOS_INCLUDE_DIR geos_c.h) + +find_library(GEOS_LIBRARY_DEBUG NAMES geos_cd) +find_library(GEOS_LIBRARY_RELEASE NAMES geos_c) + +include(SelectLibraryConfigurations) +select_library_configurations(GEOS) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS( + GEOS DEFAULT_MSG + GEOS_LIBRARY GEOS_INCLUDE_DIR +) diff --git a/ports/pdal/FindGeoTIFF.cmake b/ports/pdal/FindGeoTIFF.cmake new file mode 100644 index 000000000..51a5fb2d8 --- /dev/null +++ b/ports/pdal/FindGeoTIFF.cmake @@ -0,0 +1,13 @@ +find_path(GEOTIFF_INCLUDE_DIR geotiff.h) + +find_library(GEOTIFF_LIBRARY_DEBUG NAMES geotiff_d) +find_library(GEOTIFF_LIBRARY_RELEASE NAMES geotiff) + +include(SelectLibraryConfigurations) +select_library_configurations(GEOTIFF) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS( + GEOTIFF DEFAULT_MSG + GEOTIFF_LIBRARY GEOTIFF_INCLUDE_DIR +) diff --git a/ports/pdal/portfile.cmake b/ports/pdal/portfile.cmake new file mode 100644 index 000000000..f9b413218 --- /dev/null +++ b/ports/pdal/portfile.cmake @@ -0,0 +1,79 @@ +# vcpkg portfile.cmake for PDAL +# +# NOTE: update the version string for new PDAL release +set(PDAL_VERSION_STR "1.7.1") +set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/PDAL-${PDAL_VERSION_STR}-src) + +include(vcpkg_common_functions) + +vcpkg_download_distfile(ARCHIVE + URLS "http://download.osgeo.org/pdal/PDAL-${PDAL_VERSION_STR}-src.tar.gz" + FILENAME "PDAL-${PDAL_VERSION_STR}-src.tar.gz" + SHA512 e3e63bb05930c1a28c4f46c7edfaa8e9ea20484f1888d845b660a29a76f1dd1daea3db30a98607be0c2eeb86930ec8bfd0965d5d7d84b07a4fe4cb4512da9b09 +) +vcpkg_extract_source_archive(${ARCHIVE}) + +vcpkg_apply_patches( + SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/PDAL-${PDAL_VERSION_STR}-src + PATCHES + ${CURRENT_PORT_DIR}/0001-win32_compiler_options.cmake.patch +) + +# Deploy custom CMake modules to enforce expected dependencies look-up +foreach(_module IN ITEMS FindGDAL FindGEOS FindGeoTIFF) + file(REMOVE "${SOURCE_PATH}/cmake/modules/${_module}.cmake") + file(COPY ${CMAKE_CURRENT_LIST_DIR}/${_module}.cmake + DESTINATION ${SOURCE_PATH}/cmake/modules/ + ) +endforeach() + +# NOTE: CMake native BUILD_SHARED_LIBS option will be set by vcpkg_configure_cmake +# TODO: Remove this as soon as PDAL switches to use BUILD_SHARED_LIBS +if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + set(PDAL_BUILD_STATIC OFF) +else() + set(PDAL_BUILD_STATIC ON) +endif() + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DPDAL_BUILD_STATIC:BOOL=${PDAL_BUILD_STATIC} + -DWITH_TESTS:BOOL=OFF + -DWITH_COMPLETION:BOOL=OFF +) + +vcpkg_install_cmake(ADD_BIN_TO_PATH) +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/pdal/cmake) +vcpkg_copy_pdbs() + +# Install copyright +file(INSTALL ${SOURCE_PATH}/LICENSE.txt + DESTINATION ${CURRENT_PACKAGES_DIR}/share/pdal RENAME copyright +) + +# Install PDAL executable +file(GLOB _pdal_apps ${CURRENT_PACKAGES_DIR}/bin/*.exe) +file(COPY ${_pdal_apps} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/pdal) +file(REMOVE ${_pdal_apps}) +vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT}) + +# Post-install clean-up +file(REMOVE_RECURSE + ${CURRENT_PACKAGES_DIR}/lib/pdal + ${CURRENT_PACKAGES_DIR}/debug/lib/pdal + ${CURRENT_PACKAGES_DIR}/debug/include + ${CURRENT_PACKAGES_DIR}/debug/share +) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL static) + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin ${CURRENT_PACKAGES_DIR}/bin) +else() + file(GLOB _pdal_bats ${CURRENT_PACKAGES_DIR}/bin/*.bat) + file(REMOVE ${_pdal_bats}) + file(GLOB _pdal_bats ${CURRENT_PACKAGES_DIR}/debug/bin/*.bat) + file(REMOVE ${_pdal_bats}) + file(GLOB _pdal_apps ${CURRENT_PACKAGES_DIR}/debug/bin/*.exe) + file(REMOVE ${_pdal_apps}) +endif()