From 850e556f54ca7eec3c67b73fa00d9b3798fc6c7d Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sun, 3 May 2020 22:50:39 +0200 Subject: [PATCH 01/77] [vtk-m] new port vtk-m --- ports/vtk-m/CONTROL | 23 +++++++++++++++ ports/vtk-m/portfile.cmake | 57 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 ports/vtk-m/CONTROL create mode 100644 ports/vtk-m/portfile.cmake diff --git a/ports/vtk-m/CONTROL b/ports/vtk-m/CONTROL new file mode 100644 index 00000000000000..12dd9d6a67d8de --- /dev/null +++ b/ports/vtk-m/CONTROL @@ -0,0 +1,23 @@ +Source: vtk-m +Version: 1.5.0 +Homepage: https://gitlab.kitware.com/vtk/vtk-m/ +Description: VTK-m is a toolkit of scientific visualization algorithms for emerging processor architectures. + +Feature: cuda +Description: Use the NVIDIA CUDA device adapter. +Build-Depends: cuda + +Feature: omp +Description: Use the OpenMP device adapter. + +Feature: tbb +Description: Use the Intel TBB device adapter. +Build-Depends: tbb + +Feature: mpi +Description: Use the MPI controller. +Build-Depends: mpi + +Feature: double +Description: Use double precision in floating point calculations +Build-Depends: diff --git a/ports/vtk-m/portfile.cmake b/ports/vtk-m/portfile.cmake new file mode 100644 index 00000000000000..4451fd68236f8a --- /dev/null +++ b/ports/vtk-m/portfile.cmake @@ -0,0 +1,57 @@ +# VENDORED DEPENDENCIES! +# add_subdirectory(thirdparty/diy) +# add_subdirectory(thirdparty/lodepng) +# if(VTKm_ENABLE_LOGGING) + # add_subdirectory(thirdparty/loguru) +# endif() +# add_subdirectory(thirdparty/optionparser) +# add_subdirectory(thirdparty/taotuple) +# add_subdirectory(thirdparty/lcl) + +vcpkg_check_features (OUT_FEATURE_OPTIONS OPTIONS + FEATURES + cuda VTKm_ENABLE_CUDA + omp VTKm_ENABLE_OPENMP + tbb VTKm_ENABLE_TBB + mpi VTKm_ENABLE_MPI + double VTKm_USE_DOUBLE_PRECISION + ) + +if("cuda" IN_LIST FEATURES AND NOT ENV{CUDACXX}) + set(ENV{CUDACXX} "$ENV{CUDA_PATH}/bin/nvcc") + if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + message(STATUS "Feature CUDA forces static build!") + endif() + set(VCPKG_LIBRARY_LINKAGE "static") # CUDA forces static build. +endif() + +list(APPEND OPTIONS -DVTKm_ENABLE_RENDERING=ON) +list(APPEND OPTIONS -DVTKm_ENABLE_DEVELOPER_FLAGS=OFF) +list(APPEND OPTIONS -DVTKm_ENABLE_CPACK=OFF) +list(APPEND OPTIONS -DVTKm_USE_DEFAULT_TYPES_FOR_VTK=ON) +#list(APPEND OPTIONS -DVTKm_ENABLE_GL_CONTEXT=ON) or +#list(APPEND OPTIONS -DVTKm_ENABLE_EGL_CONTEXT=ON) or +#list(APPEND OPTIONS -DVTKm_ENABLE_OSMESA_CONTEXT=ON) +list(APPEND OPTIONS -DBUILD_TESTING=OFF) + +vcpkg_from_gitlab(GITLAB_URL "https://gitlab.kitware.com" + OUT_SOURCE_PATH SOURCE_PATH + REPO vtk/vtk-m + REF f2aa6ad5be1a97e3fb41ef4680ee2c76c3434ac0 # v1.5.0 locked to VTK 9.0 + SHA512 2f2a273f74d9a583df9e25a4792440d8d89652fa14b3153f2ea5afbd329b50970e7b9bd68e0ccd036baf5c1f3ad7a8302d95c01dbb30d9a46c045987eebf5370) + #REF 74ffad9bd0679d061bc87e544a728f1c3c926269 # v1.5.1 + #SHA512 c9e1c18432b6c11ae086445255acf9477fe4c888122a2b2a9713dc63a40d2e4c2375742157526b5f0869f14c62a4ad66d81ee58d6cc75a1d53a1d615525a03c9) +vcpkg_configure_cmake(SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS ${OPTIONS}) +vcpkg_install_cmake() +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/vtkm-1.5 TARGET_PATH share/vtkm) + +file(READ ${CURRENT_PACKAGES_DIR}/share/vtkm/VTKmConfig.cmake _contents) +string(REPLACE [[set_and_check(VTKm_CONFIG_DIR "${PACKAGE_PREFIX_DIR}/lib/cmake/vtkm-1.5")]] [[set_and_check(VTKm_CONFIG_DIR "${PACKAGE_PREFIX_DIR}/share/vtkm")]] _contents ${_contents}) +file(WRITE ${CURRENT_PACKAGES_DIR}/share/vtkm/VTKmConfig.cmake ${_contents}) + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) + +file(INSTALL ${SOURCE_PATH}/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) From 06ecd9ac1f8d9752bbf62c05c876ab49ae42266a Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sun, 3 May 2020 22:54:00 +0200 Subject: [PATCH 02/77] [VTK] Update to 9.0 --- ports/vtk/CONTROL | 22 +- ports/vtk/FindGDAL.cmake | 127 ----------- ports/vtk/FindHDF5.cmake | 23 ++ ports/vtk/FindLZ4.patch | 47 ++++ ports/vtk/FindLZMA.patch | 86 +++++++ ports/vtk/FindLibHaru.patch | 37 +++ ports/vtk/FindPostgreSQL.cmake | 269 ++++++++++++++++++++++ ports/vtk/Findproj.patch | 13 ++ ports/vtk/NoUndefDebug.patch | 13 ++ ports/vtk/fix-VTKConfig-cmake.patch | 29 --- ports/vtk/fix-find-lz4.patch | 20 -- ports/vtk/fix-find-lzma.patch | 16 -- ports/vtk/fix-proj4.patch | 175 -------------- ports/vtk/fix-pugixml-link.patch | 28 --- ports/vtk/fix_ogg_linkage.patch | 12 - ports/vtk/hdf5_static.patch | 22 -- ports/vtk/portfile.cmake | 341 +++++++++++++++------------- ports/vtk/pythonwrapper.patch | 19 ++ ports/vtk/vtkm.patch | 109 +++++++++ 19 files changed, 815 insertions(+), 593 deletions(-) delete mode 100644 ports/vtk/FindGDAL.cmake create mode 100644 ports/vtk/FindHDF5.cmake create mode 100644 ports/vtk/FindLZ4.patch create mode 100644 ports/vtk/FindLZMA.patch create mode 100644 ports/vtk/FindLibHaru.patch create mode 100644 ports/vtk/FindPostgreSQL.cmake create mode 100644 ports/vtk/Findproj.patch create mode 100644 ports/vtk/NoUndefDebug.patch delete mode 100644 ports/vtk/fix-VTKConfig-cmake.patch delete mode 100644 ports/vtk/fix-find-lz4.patch delete mode 100644 ports/vtk/fix-find-lzma.patch delete mode 100644 ports/vtk/fix-proj4.patch delete mode 100644 ports/vtk/fix-pugixml-link.patch delete mode 100644 ports/vtk/fix_ogg_linkage.patch delete mode 100644 ports/vtk/hdf5_static.patch create mode 100644 ports/vtk/pythonwrapper.patch create mode 100644 ports/vtk/vtkm.patch diff --git a/ports/vtk/CONTROL b/ports/vtk/CONTROL index 09d2417027470b..209da4aa5edeb3 100644 --- a/ports/vtk/CONTROL +++ b/ports/vtk/CONTROL @@ -1,8 +1,12 @@ Source: vtk -Version: 8.2.0-13 +Version: 9.0 Description: Software system for 3D computer graphics, image processing, and visualization Homepage: https://github.com/Kitware/VTK -Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, libtheora, eigen3, double-conversion, pugixml, libharu, sqlite3, netcdf-c +Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, liblzma, libtheora, eigen3, double-conversion, pugixml, libharu[notiffsymbols], sqlite3, netcdf-c, utfcpp, libogg, pegtl + +Feature: vtkm +Description: Build with vtk-m accelerator and module. +Build-Depends: vtk-m[core] Feature: openvr Description: OpenVR functionality for VTK @@ -10,11 +14,11 @@ Build-Depends: sdl2, openvr Feature: qt Description: Qt functionality for VTK -Build-Depends: qt5 +Build-Depends: qt5-xmlpatterns, qt5-tools, qt5-imageformats, qt5-x11extras (linux) Feature: mpi Description: MPI functionality for VTK -Build-Depends: mpi, hdf5[parallel] +Build-Depends: mpi, hdf5[parallel], vtk-m[core,mpi] Feature: python Description: Python functionality for VTK @@ -22,4 +26,12 @@ Build-Depends: python3 Feature: atlmfc Description: Mfc functionality for vtk on Windows -Build-Depends: atlmfc (windows) \ No newline at end of file +Build-Depends: atlmfc (windows) + +Feature: paraview +Description: Build vtk modules required by paraview +Build-Depends: vtk[core, qt], vtk[core, atlmfc] (windows) + +Feature: all +Description: Build vtk modules required by paraview +Build-Depends: libmysql, ffmpeg, gdal, vtk[core, qt, python, mpi], vtk[atlmfc] (windows) \ No newline at end of file diff --git a/ports/vtk/FindGDAL.cmake b/ports/vtk/FindGDAL.cmake deleted file mode 100644 index e4f2f303be3bca..00000000000000 --- a/ports/vtk/FindGDAL.cmake +++ /dev/null @@ -1,127 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#.rst: -# FindGDAL -# -------- -# -# -# -# Locate gdal -# -# This module accepts the following environment variables: -# -# :: -# -# GDAL_DIR or GDAL_ROOT - Specify the location of GDAL -# -# -# -# This module defines the following CMake variables: -# -# :: -# -# GDAL_FOUND - True if libgdal is found -# GDAL_LIBRARY - A variable pointing to the GDAL library -# GDAL_INCLUDE_DIR - Where to find the headers - -# -# $GDALDIR is an environment variable that would -# correspond to the ./configure --prefix=$GDAL_DIR -# used in building gdal. -# -# Created by Eric Wing. I'm not a gdal user, but OpenSceneGraph uses it -# for osgTerrain so I whipped this module together for completeness. -# I actually don't know the conventions or where files are typically -# placed in distros. -# Any real gdal users are encouraged to correct this (but please don't -# break the OS X framework stuff when doing so which is what usually seems -# to happen). - -# This makes the presumption that you are include gdal.h like -# -#include "gdal.h" - -find_path(GDAL_INCLUDE_DIR gdal.h - HINTS - ENV GDAL_DIR - ENV GDAL_ROOT - PATH_SUFFIXES - include/gdal - include/GDAL - include - PATHS - ~/Library/Frameworks/gdal.framework/Headers - /Library/Frameworks/gdal.framework/Headers - /sw # Fink - /opt/local # DarwinPorts - /opt/csw # Blastwave - /opt -) - -if(UNIX) - # Use gdal-config to obtain the library version (this should hopefully - # allow us to -lgdal1.x.y where x.y are correct version) - # For some reason, libgdal development packages do not contain - # libgdal.so... - find_program(GDAL_CONFIG gdal-config - HINTS - ENV GDAL_DIR - ENV GDAL_ROOT - PATH_SUFFIXES bin - PATHS - /sw # Fink - /opt/local # DarwinPorts - /opt/csw # Blastwave - /opt - ) - - if(GDAL_CONFIG) - exec_program(${GDAL_CONFIG} ARGS --libs OUTPUT_VARIABLE GDAL_CONFIG_LIBS) - if(GDAL_CONFIG_LIBS) - string(REGEX MATCHALL "-l[^ ]+" _gdal_dashl ${GDAL_CONFIG_LIBS}) - string(REPLACE "-l" "" _gdal_lib "${_gdal_dashl}") - string(REGEX MATCHALL "-L[^ ]+" _gdal_dashL ${GDAL_CONFIG_LIBS}) - string(REPLACE "-L" "" _gdal_libpath "${_gdal_dashL}") - endif() - endif() -endif() - -find_library(GDAL_LIBRARY_RELEASE - NAMES ${_gdal_lib} gdal gdal_i gdal1.5.0 gdal1.4.0 gdal1.3.2 GDAL - HINTS - ENV GDAL_DIR - ENV GDAL_ROOT - ${_gdal_libpath} - PATH_SUFFIXES lib - PATHS - /sw - /opt/local - /opt/csw - /opt - /usr/freeware -) - -find_library(GDAL_LIBRARY_DEBUG - NAMES ${_gdal_lib} gdald gdald_i gdald1.5.0 gdald1.4.0 gdald1.3.2 GDALD - HINTS - ENV GDAL_DIR - ENV GDAL_ROOT - ${_gdal_libpath} - PATH_SUFFIXES lib - PATHS - /sw - /opt/local - /opt/csw - /opt - /usr/freeware -) - -include(SelectLibraryConfigurations) -select_library_configurations(GDAL) - -include(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(GDAL DEFAULT_MSG GDAL_LIBRARY GDAL_INCLUDE_DIR) - -set(GDAL_LIBRARIES ${GDAL_LIBRARY}) -set(GDAL_INCLUDE_DIRS ${GDAL_INCLUDE_DIR}) diff --git a/ports/vtk/FindHDF5.cmake b/ports/vtk/FindHDF5.cmake new file mode 100644 index 00000000000000..731eb6bd205757 --- /dev/null +++ b/ports/vtk/FindHDF5.cmake @@ -0,0 +1,23 @@ +#The original VTK file is overdoing it and still prdouces errors that the target hdf5::hdf5_hl-shared cannot be found in dynamic builds +find_package(hdf5 QUIET NO_MODULE) +if(TARGET hdf5::hdf5-shared) + set_target_properties(hdf5::hdf5-shared PROPERTIES IMPORTED_GLOBAL TRUE) + add_library(hdf5::hdf5 ALIAS hdf5::hdf5-shared) +elseif(TARGET hdf5::hdf5-static) + set_target_properties(hdf5::hdf5-static PROPERTIES IMPORTED_GLOBAL TRUE) + add_library(hdf5::hdf5 ALIAS hdf5::hdf5-static) +else() + message(FATAL_ERROR "HDF5 target not found") +endif() +if(TARGET hdf5::hdf5_hl-shared) + set_target_properties(hdf5::hdf5_hl-shared PROPERTIES IMPORTED_GLOBAL TRUE) + add_library(hdf5::hdf5_hl ALIAS hdf5::hdf5_hl-shared) +elseif(TARGET hdf5::hdf5_hl-static) + set_target_properties(hdf5::hdf5_hl-static PROPERTIES IMPORTED_GLOBAL TRUE) + add_library(hdf5::hdf5_hl ALIAS hdf5::hdf5_hl-static) +else() + message(FATAL_ERROR "HDF5 HL target not found") +endif() +set(HDF5_IS_PARALLEL ${HDF5_ENABLE_PARALLEL} CACHE BOOL "" FORCE) +set(HDF5_FOUND ON CACHE BOOL "" FORCE) +set(hdf5_FOUND ON CACHE BOOL "" FORCE) diff --git a/ports/vtk/FindLZ4.patch b/ports/vtk/FindLZ4.patch new file mode 100644 index 00000000000000..dced8bf56ffd56 --- /dev/null +++ b/ports/vtk/FindLZ4.patch @@ -0,0 +1,47 @@ +diff --git a/CMake/FindLZ4.cmake b/CMake/FindLZ4.cmake +index 8c94e3bcd..ade3f9451 100644 +--- a/CMake/FindLZ4.cmake ++++ b/CMake/FindLZ4.cmake +@@ -1,38 +1,3 @@ +-find_path(LZ4_INCLUDE_DIR +- NAMES lz4.h +- DOC "lz4 include directory") +-mark_as_advanced(LZ4_INCLUDE_DIR) +-find_library(LZ4_LIBRARY +- NAMES lz4 liblz4 +- DOC "lz4 library") +-mark_as_advanced(LZ4_LIBRARY) +- +-if (LZ4_INCLUDE_DIR) +- file(STRINGS "${LZ4_INCLUDE_DIR}/lz4.h" _lz4_version_lines +- REGEX "#define[ \t]+LZ4_VERSION_(MAJOR|MINOR|RELEASE)") +- string(REGEX REPLACE ".*LZ4_VERSION_MAJOR *\([0-9]*\).*" "\\1" _lz4_version_major "${_lz4_version_lines}") +- string(REGEX REPLACE ".*LZ4_VERSION_MINOR *\([0-9]*\).*" "\\1" _lz4_version_minor "${_lz4_version_lines}") +- string(REGEX REPLACE ".*LZ4_VERSION_RELEASE *\([0-9]*\).*" "\\1" _lz4_version_release "${_lz4_version_lines}") +- set(LZ4_VERSION "${_lz4_version_major}.${_lz4_version_minor}.${_lz4_version_release}") +- unset(_lz4_version_major) +- unset(_lz4_version_minor) +- unset(_lz4_version_release) +- unset(_lz4_version_lines) +-endif () +- +-include(FindPackageHandleStandardArgs) +-find_package_handle_standard_args(LZ4 +- REQUIRED_VARS LZ4_LIBRARY LZ4_INCLUDE_DIR +- VERSION_VAR LZ4_VERSION) +- +-if (LZ4_FOUND) +- set(LZ4_INCLUDE_DIRS "${LZ4_INCLUDE_DIR}") +- set(LZ4_LIBRARIES "${LZ4_LIBRARY}") +- +- if (NOT TARGET LZ4::LZ4) +- add_library(LZ4::LZ4 UNKNOWN IMPORTED) +- set_target_properties(LZ4::LZ4 PROPERTIES +- IMPORTED_LOCATION "${LZ4_LIBRARY}" +- INTERFACE_INCLUDE_DIRECTORIES "${LZ4_INCLUDE_DIR}") +- endif () +-endif () ++find_package(LZ4 CONFIG REQUIRED) ++set_target_properties(lz4::lz4 PROPERTIES IMPORTED_GLOBAL TRUE) ++add_library(LZ4::LZ4 ALIAS lz4::lz4) +\ No newline at end of file diff --git a/ports/vtk/FindLZMA.patch b/ports/vtk/FindLZMA.patch new file mode 100644 index 00000000000000..8da36b06bba2a0 --- /dev/null +++ b/ports/vtk/FindLZMA.patch @@ -0,0 +1,86 @@ +diff --git a/CMake/FindLZMA.cmake b/CMake/FindLZMA.cmake +index 0c8c7943c..d60669484 100644 +--- a/CMake/FindLZMA.cmake ++++ b/CMake/FindLZMA.cmake +@@ -1,9 +1,17 @@ + find_path(LZMA_INCLUDE_DIR + NAMES lzma.h + DOC "lzma include directory") +-find_library(LZMA_LIBRARY ++# Note LZMA_LIBRARY is set somewhere else. Maybe one of the configs/wrappers installed by VCPKG defines it. ++# The original FindLZMA chokes on it since it contains optimized/debug keywords ++# VTK should probably switch to FindLibLZMA from CMake ++find_library(LZMA_LIBRARY_RELEASE + NAMES lzma + DOC "lzma library") ++find_library(LZMA_LIBRARY_DEBUG ++ NAMES lzmad lzma NAMES_PER_DIR ++ DOC "lzma library") ++ include(SelectLibraryConfigurations) ++ select_library_configurations( LZMA ) + + if (LZMA_INCLUDE_DIR) + file(STRINGS "${LZMA_INCLUDE_DIR}/lzma/version.h" _lzma_version_lines +@@ -20,22 +26,50 @@ endif () + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(LZMA +- REQUIRED_VARS LZMA_LIBRARY LZMA_INCLUDE_DIR ++ REQUIRED_VARS LZMA_LIBRARY LZMA_LIBRARY_RELEASE LZMA_LIBRARY_DEBUG LZMA_INCLUDE_DIR + VERSION_VAR LZMA_VERSION) + + if (LZMA_FOUND) + set(LZMA_LIBRARIES "${LZMA_LIBRARY}") + set(LZMA_INCLUDE_DIRS "${LZMA_INCLUDE_DIR}") +- ++ + if (NOT TARGET LZMA::LZMA) + include(vtkDetectLibraryType) +- vtk_detect_library_type(lzma_library_type +- PATH "${LZMA_LIBRARY}") +- add_library(LZMA::LZMA "${lzma_library_type}" IMPORTED) +- unset(lzma_library_type) +- set_target_properties(LZMA::LZMA PROPERTIES +- IMPORTED_LOCATION "${LZMA_LIBRARY}" +- IMPORTED_IMPLIB "${LZMA_LIBRARY}" +- INTERFACE_INCLUDE_DIRECTORIES "${LZMA_INCLUDE_DIR}") +- endif () ++ if(LZMA_LIBRARY_RELEASE) ++ vtk_detect_library_type(lzma_library_type ++ PATH "${LZMA_LIBRARY_RELEASE}") ++ elseif(LZMA_LIBRARY_DEBUG) ++ vtk_detect_library_type(lzma_library_type ++ PATH "${LZMA_LIBRARY_DEBUG}") ++ else() ++ vtk_detect_library_type(lzma_library_type ++ PATH "${LZMA_LIBRARY}") ++ endif() ++ ++ add_library(LZMA::LZMA "${lzma_library_type}" IMPORTED) ++ set_target_properties(LZMA::LZMA PROPERTIES ++ INTERFACE_INCLUDE_DIRECTORIES "${LZMA_INCLUDE_DIR}") ++ if(LZMA_LIBRARY_RELEASE) ++ set_target_properties(LZMA::LZMA PROPERTIES ++ IMPORTED_LOCATION_RELEASE "${LZMA_LIBRARY_RELEASE}" ++ IMPORTED_IMPLIB_RELEASE "${LZMA_LIBRARY_RELEASE}") ++ endif() ++ if(LZMA_LIBRARY_DEBUG) ++ set_target_properties(LZMA::LZMA PROPERTIES ++ IMPORTED_LOCATION_DEBUG "${LZMA_LIBRARY_DEBUG}" ++ IMPORTED_IMPLIB_DEBUG "${LZMA_LIBRARY_DEBUG}") ++ endif() ++ ++ # Guard against possible stupidity of VTK reading only LOCATION without configuration ++ if(CMAKE_BUILD_TYPE MATCHES "Debug") ++ set_target_properties(LZMA::LZMA PROPERTIES ++ IMPORTED_LOCATION "${LZMA_LIBRARY_DEBUG}" ++ IMPORTED_IMPLIB "${LZMA_LIBRARY_DEBUG}") ++ else() ++ set_target_properties(LZMA::LZMA PROPERTIES ++ IMPORTED_LOCATION "${LZMA_LIBRARY_RELEASE}" ++ IMPORTED_IMPLIB "${LZMA_LIBRARY_RELEASE}") ++ endif() ++ endif() ++ #set_target_properties(LZMA::LZMA PROPERTIES IMPORTED_GLOBAL TRUE) + endif () + \ No newline at end of file diff --git a/ports/vtk/FindLibHaru.patch b/ports/vtk/FindLibHaru.patch new file mode 100644 index 00000000000000..1b47a14b7afbf5 --- /dev/null +++ b/ports/vtk/FindLibHaru.patch @@ -0,0 +1,37 @@ +diff --git a/CMake/FindLibHaru.cmake b/CMake/FindLibHaru.cmake +index 7ef877a49..2a18e0694 100644 +--- a/CMake/FindLibHaru.cmake ++++ b/CMake/FindLibHaru.cmake +@@ -43,6 +43,31 @@ if (LibHaru_FOUND) + set(LibHaru_INCLUDE_DIRS "${LibHaru_INCLUDE_DIR}") + set(LibHaru_LIBRARIES "${LibHaru_LIBRARY}") + ++ add_library(LibHaru::LibHaru UNKNOWN IMPORTED) ++ set_target_properties(LibHaru::LibHaru PROPERTIES ++ INTERFACE_INCLUDE_DIRECTORIES "${LibHaru_INCLUDE_DIR}") ++ if(LZMA_LIBRARY_RELEASE) ++ set_target_properties(LibHaru::LibHaru PROPERTIES ++ IMPORTED_LOCATION_RELEASE "${LibHaru_LIBRARY_RELEASE}" ++ IMPORTED_IMPLIB_RELEASE "${LibHaru_LIBRARY_RELEASE}") ++ endif() ++ if(LZMA_LIBRARY_DEBUG) ++ set_target_properties(LibHaru::LibHaru PROPERTIES ++ IMPORTED_LOCATION_DEBUG "${LibHaru_LIBRARY_DEBUG}" ++ IMPORTED_IMPLIB_DEBUG "${LibHaru_LIBRARY_DEBUG}") ++ endif() ++ ++ # Guard against possible stupidity of VTK reading only LOCATION without configuration ++ if(CMAKE_BUILD_TYPE MATCHES "Debug") ++ set_target_properties(LibHaru::LibHaru PROPERTIES ++ IMPORTED_LOCATION "${LibHaru_LIBRARY_DEBUG}" ++ IMPORTED_IMPLIB "${LibHaru_LIBRARY_DEBUG}") ++ else() ++ set_target_properties(LibHaru::LibHaru PROPERTIES ++ IMPORTED_LOCATION "${LibHaru_LIBRARY_RELEASE}" ++ IMPORTED_IMPLIB "${LibHaru_LIBRARY_RELEASE}") ++ endif() ++ + if (NOT TARGET LibHaru::LibHaru) + include(vtkDetectLibraryType) + vtk_detect_library_type(libharu_library_type + \ No newline at end of file diff --git a/ports/vtk/FindPostgreSQL.cmake b/ports/vtk/FindPostgreSQL.cmake new file mode 100644 index 00000000000000..913c8b9ae2653b --- /dev/null +++ b/ports/vtk/FindPostgreSQL.cmake @@ -0,0 +1,269 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#[=======================================================================[.rst: +FindPostgreSQL +-------------- + +Find the PostgreSQL installation. + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines :prop_tgt:`IMPORTED` target ``PostgreSQL::PostgreSQL`` +if PostgreSQL has been found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``PostgreSQL_FOUND`` + True if PostgreSQL is found. +``PostgreSQL_LIBRARIES`` + the PostgreSQL libraries needed for linking +``PostgreSQL_INCLUDE_DIRS`` + the directories of the PostgreSQL headers +``PostgreSQL_LIBRARY_DIRS`` + the link directories for PostgreSQL libraries +``PostgreSQL_VERSION_STRING`` + the version of PostgreSQL found +#]=======================================================================] + +# ---------------------------------------------------------------------------- +# History: +# This module is derived from the module originally found in the VTK source tree. +# +# ---------------------------------------------------------------------------- +# Note: +# PostgreSQL_ADDITIONAL_VERSIONS is a variable that can be used to set the +# version number of the implementation of PostgreSQL. +# In Windows the default installation of PostgreSQL uses that as part of the path. +# E.g C:\Program Files\PostgreSQL\8.4. +# Currently, the following version numbers are known to this module: +# "11" "10" "9.6" "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0" +# +# To use this variable just do something like this: +# set(PostgreSQL_ADDITIONAL_VERSIONS "9.2" "8.4.4") +# before calling find_package(PostgreSQL) in your CMakeLists.txt file. +# This will mean that the versions you set here will be found first in the order +# specified before the default ones are searched. +# +# ---------------------------------------------------------------------------- +# You may need to manually set: +# PostgreSQL_INCLUDE_DIR - the path to where the PostgreSQL include files are. +# PostgreSQL_LIBRARY_DIR - The path to where the PostgreSQL library files are. +# If FindPostgreSQL.cmake cannot find the include files or the library files. +# +# ---------------------------------------------------------------------------- +# The following variables are set if PostgreSQL is found: +# PostgreSQL_FOUND - Set to true when PostgreSQL is found. +# PostgreSQL_INCLUDE_DIRS - Include directories for PostgreSQL +# PostgreSQL_LIBRARY_DIRS - Link directories for PostgreSQL libraries +# PostgreSQL_LIBRARIES - The PostgreSQL libraries. +# +# The ``PostgreSQL::PostgreSQL`` imported target is also created. +# +# ---------------------------------------------------------------------------- +# If you have installed PostgreSQL in a non-standard location. +# (Please note that in the following comments, it is assumed that +# points to the root directory of the include directory of PostgreSQL.) +# Then you have three options. +# 1) After CMake runs, set PostgreSQL_INCLUDE_DIR to /include and +# PostgreSQL_LIBRARY_DIR to wherever the library pq (or libpq in windows) is +# 2) Use CMAKE_INCLUDE_PATH to set a path to /PostgreSQL<-version>. This will allow find_path() +# to locate PostgreSQL_INCLUDE_DIR by utilizing the PATH_SUFFIXES option. e.g. In your CMakeLists.txt file +# set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "/include") +# 3) Set an environment variable called ${PostgreSQL_ROOT} that points to the root of where you have +# installed PostgreSQL, e.g. . +# +# ---------------------------------------------------------------------------- + +set(PostgreSQL_INCLUDE_PATH_DESCRIPTION "top-level directory containing the PostgreSQL include directories. E.g /usr/local/include/PostgreSQL/8.4 or C:/Program Files/PostgreSQL/8.4/include") +set(PostgreSQL_INCLUDE_DIR_MESSAGE "Set the PostgreSQL_INCLUDE_DIR cmake cache entry to the ${PostgreSQL_INCLUDE_PATH_DESCRIPTION}") +set(PostgreSQL_LIBRARY_PATH_DESCRIPTION "top-level directory containing the PostgreSQL libraries.") +set(PostgreSQL_LIBRARY_DIR_MESSAGE "Set the PostgreSQL_LIBRARY_DIR cmake cache entry to the ${PostgreSQL_LIBRARY_PATH_DESCRIPTION}") +set(PostgreSQL_ROOT_DIR_MESSAGE "Set the PostgreSQL_ROOT system variable to where PostgreSQL is found on the machine E.g C:/Program Files/PostgreSQL/8.4") + + +set(PostgreSQL_KNOWN_VERSIONS ${PostgreSQL_ADDITIONAL_VERSIONS} + "11" "10" "9.6" "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0") + +# Define additional search paths for root directories. +set( PostgreSQL_ROOT_DIRECTORIES + ENV PostgreSQL_ROOT + ${PostgreSQL_ROOT} +) +foreach(suffix ${PostgreSQL_KNOWN_VERSIONS}) + if(WIN32) + list(APPEND PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES + "PostgreSQL/${suffix}/lib") + list(APPEND PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES + "PostgreSQL/${suffix}/include") + list(APPEND PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES + "PostgreSQL/${suffix}/include/server") + endif() + if(UNIX) + list(APPEND PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES + "pgsql-${suffix}/lib") + list(APPEND PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES + "pgsql-${suffix}/include") + list(APPEND PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES + "postgresql/${suffix}/server" + "pgsql-${suffix}/include/server") + endif() +endforeach() + +# +# Look for an installation. +# +find_path(PostgreSQL_INCLUDE_DIR + NAMES libpq-fe.h + PATHS + # Look in other places. + ${PostgreSQL_ROOT_DIRECTORIES} + PATH_SUFFIXES + pgsql + postgresql + include + ${PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES} + # Help the user find it if we cannot. + DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}" +) + +find_path(PostgreSQL_TYPE_INCLUDE_DIR + NAMES catalog/pg_type.h + PATHS + # Look in other places. + ${PostgreSQL_ROOT_DIRECTORIES} + PATH_SUFFIXES + postgresql + pgsql/server + postgresql/server + include/server + ${PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES} + # Help the user find it if we cannot. + DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}" +) + +# The PostgreSQL library. +set (PostgreSQL_LIBRARY_TO_FIND pq) +# Setting some more prefixes for the library +set (PostgreSQL_LIB_PREFIX "") +if ( WIN32 ) + set (PostgreSQL_LIB_PREFIX ${PostgreSQL_LIB_PREFIX} "lib") + set (PostgreSQL_LIBRARY_TO_FIND ${PostgreSQL_LIB_PREFIX}${PostgreSQL_LIBRARY_TO_FIND}) +endif() + +function(__postgresql_find_library _name) + find_library(${_name} + NAMES ${ARGN} + PATHS + ${PostgreSQL_ROOT_DIRECTORIES} + PATH_SUFFIXES + lib + ${PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES} + # Help the user find it if we cannot. + DOC "The ${PostgreSQL_LIBRARY_DIR_MESSAGE}" + ) +endfunction() + +# For compatibility with versions prior to this multi-config search, honor +# any PostgreSQL_LIBRARY that is already specified and skip the search. +if(PostgreSQL_LIBRARY) + set(PostgreSQL_LIBRARIES "${PostgreSQL_LIBRARY}") + get_filename_component(PostgreSQL_LIBRARY_DIR "${PostgreSQL_LIBRARY}" PATH) +else() + __postgresql_find_library(PostgreSQL_LIBRARY_RELEASE ${PostgreSQL_LIBRARY_TO_FIND}) + __postgresql_find_library(PostgreSQL_LIBRARY_DEBUG ${PostgreSQL_LIBRARY_TO_FIND}d) + include(SelectLibraryConfigurations) + select_library_configurations(PostgreSQL) + mark_as_advanced(PostgreSQL_LIBRARY_RELEASE PostgreSQL_LIBRARY_DEBUG) + if(PostgreSQL_LIBRARY_RELEASE) + get_filename_component(PostgreSQL_LIBRARY_DIR "${PostgreSQL_LIBRARY_RELEASE}" PATH) + elseif(PostgreSQL_LIBRARY_DEBUG) + get_filename_component(PostgreSQL_LIBRARY_DIR "${PostgreSQL_LIBRARY_DEBUG}" PATH) + else() + set(PostgreSQL_LIBRARY_DIR "") + endif() +endif() + +if (PostgreSQL_INCLUDE_DIR) + # Some platforms include multiple pg_config.hs for multi-lib configurations + # This is a temporary workaround. A better solution would be to compile + # a dummy c file and extract the value of the symbol. + file(GLOB _PG_CONFIG_HEADERS "${PostgreSQL_INCLUDE_DIR}/pg_config*.h") + foreach(_PG_CONFIG_HEADER ${_PG_CONFIG_HEADERS}) + if(EXISTS "${_PG_CONFIG_HEADER}") + file(STRINGS "${_PG_CONFIG_HEADER}" pgsql_version_str + REGEX "^#define[\t ]+PG_VERSION_NUM[\t ]+.*") + if(pgsql_version_str) + string(REGEX REPLACE "^#define[\t ]+PG_VERSION_NUM[\t ]+([0-9]*).*" + "\\1" _PostgreSQL_VERSION_NUM "${pgsql_version_str}") + break() + endif() + endif() + endforeach() + if (_PostgreSQL_VERSION_NUM) + math(EXPR _PostgreSQL_major_version "${_PostgreSQL_VERSION_NUM} / 10000") + math(EXPR _PostgreSQL_minor_version "${_PostgreSQL_VERSION_NUM} % 10000") + set(PostgreSQL_VERSION_STRING "${_PostgreSQL_major_version}.${_PostgreSQL_minor_version}") + unset(_PostgreSQL_major_version) + unset(_PostgreSQL_minor_version) + else () + foreach(_PG_CONFIG_HEADER ${_PG_CONFIG_HEADERS}) + if(EXISTS "${_PG_CONFIG_HEADER}") + file(STRINGS "${_PG_CONFIG_HEADER}" pgsql_version_str + REGEX "^#define[\t ]+PG_VERSION[\t ]+\".*\"") + if(pgsql_version_str) + string(REGEX REPLACE "^#define[\t ]+PG_VERSION[\t ]+\"([^\"]*)\".*" + "\\1" PostgreSQL_VERSION_STRING "${pgsql_version_str}") + break() + endif() + endif() + endforeach() + endif () + unset(_PostgreSQL_VERSION_NUM) + unset(pgsql_version_str) +endif() + +# Did we find anything? +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(PostgreSQL + REQUIRED_VARS PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR + VERSION_VAR PostgreSQL_VERSION_STRING) +set(PostgreSQL_FOUND ${POSTGRESQL_FOUND}) + +function(__postgresql_import_library _target _var _config) + if(_config) + set(_config_suffix "_${_config}") + else() + set(_config_suffix "") + endif() + + set(_lib "${${_var}${_config_suffix}}") + if(EXISTS "${_lib}") + if(_config) + set_property(TARGET ${_target} APPEND PROPERTY + IMPORTED_CONFIGURATIONS ${_config}) + endif() + set_target_properties(${_target} PROPERTIES + IMPORTED_LOCATION${_config_suffix} "${_lib}") + endif() +endfunction() + +# Now try to get the include and library path. +if(PostgreSQL_FOUND) + if (NOT TARGET PostgreSQL::PostgreSQL) + add_library(PostgreSQL::PostgreSQL UNKNOWN IMPORTED) + set_target_properties(PostgreSQL::PostgreSQL PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${PostgreSQL_INCLUDE_DIR};${PostgreSQL_TYPE_INCLUDE_DIR}") + __postgresql_import_library(PostgreSQL::PostgreSQL PostgreSQL_LIBRARY "") + __postgresql_import_library(PostgreSQL::PostgreSQL PostgreSQL_LIBRARY "RELEASE") + __postgresql_import_library(PostgreSQL::PostgreSQL PostgreSQL_LIBRARY "DEBUG") + endif () + set(PostgreSQL_INCLUDE_DIRS ${PostgreSQL_INCLUDE_DIR} ${PostgreSQL_TYPE_INCLUDE_DIR} ) + set(PostgreSQL_LIBRARY_DIRS ${PostgreSQL_LIBRARY_DIR} ) +endif() + +mark_as_advanced(PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR) diff --git a/ports/vtk/Findproj.patch b/ports/vtk/Findproj.patch new file mode 100644 index 00000000000000..d83b0f4510d8ea --- /dev/null +++ b/ports/vtk/Findproj.patch @@ -0,0 +1,13 @@ +diff --git a/CMake/FindLibPROJ.cmake b/CMake/FindLibPROJ.cmake +index e2344bb17..bac4c747e 100644 +--- a/CMake/FindLibPROJ.cmake ++++ b/CMake/FindLibPROJ.cmake +@@ -9,7 +9,7 @@ find_library(LibPROJ_LIBRARY_RELEASE + mark_as_advanced(LibPROJ_LIBRARY_RELEASE) + + find_library(LibPROJ_LIBRARY_DEBUG +- NAMES projd ++ NAMES projd proj_d proj NAMES_PER_DIR + DOC "libproj debug library") + mark_as_advanced(LibPROJ_LIBRARY_DEBUG) + diff --git a/ports/vtk/NoUndefDebug.patch b/ports/vtk/NoUndefDebug.patch new file mode 100644 index 00000000000000..3fc8f5de8cd558 --- /dev/null +++ b/ports/vtk/NoUndefDebug.patch @@ -0,0 +1,13 @@ +diff --git a/Utilities/Python/vtkPython.h b/Utilities/Python/vtkPython.h +index 166f24104..79ae1d371 100644 +--- a/Utilities/Python/vtkPython.h ++++ b/Utilities/Python/vtkPython.h +@@ -50,7 +50,7 @@ + # include + # include + # include +-# undef _DEBUG ++ + # if defined(_MSC_VER) + # define _CRT_NOFORCE_MANIFEST 1 + # endif diff --git a/ports/vtk/fix-VTKConfig-cmake.patch b/ports/vtk/fix-VTKConfig-cmake.patch deleted file mode 100644 index a507d22a833900..00000000000000 --- a/ports/vtk/fix-VTKConfig-cmake.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/CMake/VTKConfig.cmake.in b/CMake/VTKConfig.cmake.in -index 13e4db42..d28e0cc2 100644 ---- a/CMake/VTKConfig.cmake.in -+++ b/CMake/VTKConfig.cmake.in -@@ -66,19 +66,11 @@ set(VTK_USE_FILE "${VTK_CMAKE_DIR}/UseVTK.cmake") - # The rendering backend VTK was configured to use. - set(VTK_RENDERING_BACKEND "@VTK_RENDERING_BACKEND@") - --if (__vtk_install_tree) -- if (WIN32) -- set (VTK_RUNTIME_DIRS "@CMAKE_INSTALL_PREFIX@/@VTK_INSTALL_RUNTIME_DIR@") -- else () -- set (VTK_RUNTIME_DIRS "@CMAKE_INSTALL_PREFIX@/@VTK_INSTALL_LIBRARY_DIR@") -- endif () --else() -- if (WIN32) -- set (VTK_RUNTIME_DIRS "@CMAKE_BINARY_DIR@/bin") -- else () -- set (VTK_RUNTIME_DIRS "@CMAKE_BINARY_DIR@/lib") -- endif () --endif() -+if (WIN32) -+ set (VTK_RUNTIME_DIRS "@CMAKE_INSTALL_PREFIX@/@VTK_INSTALL_RUNTIME_DIR@") -+else () -+ set (VTK_RUNTIME_DIRS "@CMAKE_INSTALL_PREFIX@/@VTK_INSTALL_LIBRARY_DIR@") -+endif () - - # Setup VTK-m if it was enabled - set(VTK_HAS_VTKM @VTK_HAS_VTKM@) diff --git a/ports/vtk/fix-find-lz4.patch b/ports/vtk/fix-find-lz4.patch deleted file mode 100644 index 488640de8b4116..00000000000000 --- a/ports/vtk/fix-find-lz4.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/CMake/FindLZ4.cmake b/CMake/FindLZ4.cmake -index 07343e1f79..b43a9af2c7 100644 ---- a/CMake/FindLZ4.cmake -+++ b/CMake/FindLZ4.cmake -@@ -1,7 +1,13 @@ -- --find_library(LZ4_LIBRARIES NAMES lz4) -+find_library(LZ4_LIBRARY NAMES lz4 PATH_SUFFIXES lib) -+find_library(LZ4_LIBRARY_DEBUG NAMES lz4d PATH_SUFFIXES debug/lib) - find_path(LZ4_INCLUDE_DIRS NAMES lz4.h) - -+if(NOT LZ4_LIBRARY_DEBUG) -+ set(LZ4_LIBRARY_DEBUG ${LZ4_LIBRARY}) -+endif(NOT LZ4_LIBRARY_DEBUG) -+ -+set(LZ4_LIBRARIES optimized ${LZ4_LIBRARY} debug ${LZ4_LIBRARY_DEBUG}) -+ - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(LZ4 - DEFAULT_MSG diff --git a/ports/vtk/fix-find-lzma.patch b/ports/vtk/fix-find-lzma.patch deleted file mode 100644 index b2e375fc44a702..00000000000000 --- a/ports/vtk/fix-find-lzma.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/CMake/FindLZMA.cmake b/CMake/FindLZMA.cmake -index 213ab18df1..1e290da4cb 100644 ---- a/CMake/FindLZMA.cmake -+++ b/CMake/FindLZMA.cmake -@@ -1,7 +1,10 @@ - --find_library(LZMA_LIBRARIES NAMES lzma) -+find_library(LZMA_LIBRARY_RELEASE NAMES lzma PATH_SUFFIXES lib) -+find_library(LZMA_LIBRARY_DEBUG NAMES lzmad PATH_SUFFIXES debug/lib) - find_path(LZMA_INCLUDE_DIRS NAMES lzma.h) - -+select_library_configurations(LZMA) -+ - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(LZMA - DEFAULT_MSG diff --git a/ports/vtk/fix-proj4.patch b/ports/vtk/fix-proj4.patch deleted file mode 100644 index ad49b1523e3aa2..00000000000000 --- a/ports/vtk/fix-proj4.patch +++ /dev/null @@ -1,175 +0,0 @@ -diff --git a/Geovis/Core/vtkGeoProjection.cxx b/Geovis/Core/vtkGeoProjection.cxx -index f3a8852..8240603 100644 ---- a/Geovis/Core/vtkGeoProjection.cxx -+++ b/Geovis/Core/vtkGeoProjection.cxx -@@ -72,6 +72,9 @@ public: - } - - std::map< std::string, std::string > OptionalParameters; -+#if PROJ_VERSION_MAJOR >= 5 -+ PJ_PROJ_INFO ProjInfo; -+#endif - }; - - //----------------------------------------------------------------------------- -@@ -80,7 +83,7 @@ int vtkGeoProjection::GetNumberOfProjections() - if ( vtkGeoProjectionNumProj < 0 ) - { - vtkGeoProjectionNumProj = 0; -- for ( const PJ_LIST* pj = pj_get_list_ref(); pj && pj->id; ++ pj ) -+ for ( const PJ_LIST* pj = proj_list_operations(); pj && pj->id; ++ pj ) - ++ vtkGeoProjectionNumProj; - } - return vtkGeoProjectionNumProj; -@@ -91,7 +94,7 @@ const char* vtkGeoProjection::GetProjectionName( int projection ) - if ( projection < 0 || projection >= vtkGeoProjection::GetNumberOfProjections() ) - return nullptr; - -- return pj_get_list_ref()[projection].id; -+ return proj_list_operations()[projection].id; - } - //----------------------------------------------------------------------------- - const char* vtkGeoProjection::GetProjectionDescription( int projection ) -@@ -99,7 +102,7 @@ const char* vtkGeoProjection::GetProjectionDescription( int projection ) - if ( projection < 0 || projection >= vtkGeoProjection::GetNumberOfProjections() ) - return nullptr; - -- return pj_get_list_ref()[projection].descr[0]; -+ return proj_list_operations()[projection].descr[0]; - } - //----------------------------------------------------------------------------- - vtkGeoProjection::vtkGeoProjection() -@@ -144,7 +147,7 @@ void vtkGeoProjection::PrintSelf( ostream& os, vtkIndent indent ) - int vtkGeoProjection::GetIndex() - { - int i = 0; -- for ( const PJ_LIST* proj = pj_get_list_ref(); proj && proj->id; ++ proj, ++ i ) -+ for ( const PJ_LIST* proj = proj_list_operations(); proj && proj->id; ++ proj, ++ i ) - { - if ( ! strcmp( proj->id, this->Name ) ) - { -@@ -161,7 +164,11 @@ const char* vtkGeoProjection::GetDescription() - { - return nullptr; - } -+#if PROJ_VERSION_MAJOR >= 5 -+ return this->Internals->ProjInfo.description; -+#else - return this->Projection->descr; -+#endif - } - //----------------------------------------------------------------------------- - projPJ vtkGeoProjection::GetProjection() -@@ -232,6 +239,9 @@ int vtkGeoProjection::UpdateProjection() - this->ProjectionMTime = this->GetMTime(); - if ( this->Projection ) - { -+#if PROJ_VERSION_MAJOR >= 5 -+ this->Internals->ProjInfo = proj_pj_info(this->Projection); -+#endif - return 0; - } - return 1; -diff --git a/Geovis/Core/vtkGeoTransform.cxx b/Geovis/Core/vtkGeoTransform.cxx -index aeeabc1..b80a8c0 100644 ---- a/Geovis/Core/vtkGeoTransform.cxx -+++ b/Geovis/Core/vtkGeoTransform.cxx -@@ -167,9 +167,17 @@ void vtkGeoTransform::InternalTransformPoints( double* x, vtkIdType numPts, int - double* coord = x; - for ( vtkIdType i = 0; i < numPts; ++ i ) - { -+#if PROJ_VERSION_MAJOR >= 5 -+ xy.x = coord[0]; xy.y = coord[1]; -+#else - xy.u = coord[0]; xy.v = coord[1]; -+#endif - lp = pj_inv( xy, src ); -+#if PROJ_VERSION_MAJOR >= 5 -+ coord[0] = lp.lam; coord[1] = lp.phi; -+#else - coord[0] = lp.u; coord[1] = lp.v; -+#endif - coord += stride; - } - } -@@ -191,9 +199,17 @@ void vtkGeoTransform::InternalTransformPoints( double* x, vtkIdType numPts, int - double* coord = x; - for ( vtkIdType i = 0; i < numPts; ++ i ) - { -+#if PROJ_VERSION_MAJOR >= 5 -+ lp.lam = coord[0]; lp.phi = coord[1]; -+#else - lp.u = coord[0]; lp.v = coord[1]; -+#endif - xy = pj_fwd( lp, dst ); -+#if PROJ_VERSION_MAJOR >= 5 -+ coord[0] = xy.x; coord[1] = xy.y; -+#else - coord[0] = xy.u; coord[1] = xy.v; -+#endif - coord += stride; - } - } -diff --git a/ThirdParty/libproj/CMakeLists.txt b/ThirdParty/libproj/CMakeLists.txt -index a19609e..e23e44b 100644 ---- a/ThirdParty/libproj/CMakeLists.txt -+++ b/ThirdParty/libproj/CMakeLists.txt -@@ -1,4 +1,9 @@ - vtk_module_third_party(LibPROJ - LIBRARIES vtklibproj -+ USE_VARIABLES LibPROJ_MAJOR_VERSION - INCLUDE_DIRS ${vtklibproj_SOURCE_DIR}/vtklibproj - ${vtklibproj_BINARY_DIR}/vtklibproj) -+ -+if (NOT VTK_MODULE_USE_EXTERNAL_VTK_libproj) -+ set(LibPROJ_MAJOR_VERSION "4") -+endif () -\ No newline at end of file -diff --git a/ThirdParty/libproj/vtk_libproj.h.in b/ThirdParty/libproj/vtk_libproj.h.in -index cd9edc3..d441a1a 100644 ---- a/ThirdParty/libproj/vtk_libproj.h.in -+++ b/ThirdParty/libproj/vtk_libproj.h.in -@@ -17,8 +17,23 @@ - - /* Use the libproj library configured for VTK. */ - #cmakedefine VTK_USE_SYSTEM_LIBPROJ -+ -+#define VTK_LibPROJ_MAJOR_VERSION @LibPROJ_MAJOR_VERSION@ -+ -+#if VTK_LibPROJ_MAJOR_VERSION < 5 -+# define PROJ_VERSION_MAJOR @LibPROJ_MAJOR_VERSION@ -+# define proj_list_operations pj_get_list_ref -+#endif - #ifdef VTK_USE_SYSTEM_LIBPROJ --# include -+# if VTK_LibPROJ_MAJOR_VERSION >= 5 -+# include -+# endif -+# if VTK_LibPROJ_MAJOR_VERSION < 6 -+# include -+# endif -+# if VTK_LibPROJ_MAJOR_VERSION >= 6 -+# define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H 1 -+# endif - # include - # include - #else -diff --git a/CMake/FindLibPROJ.cmake b/CMake/FindLibPROJ.cmake -index 2d8301d..d8d08cd 100644 ---- a/CMake/FindLibPROJ.cmake -+++ b/CMake/FindLibPROJ.cmake -@@ -5,6 +5,14 @@ - # LibPROJ_LIBRARIES to libproj4 and any dependent libraries - # If LibPROJ_REQUIRED is defined, then a fatal error message will be generated if libproj4 is not found - -+find_package(PROJ4 6 CONFIG REQUIRED) -+if (PROJ4_FOUND) -+ set(LibPROJ_FOUND 1) -+ set(LibPROJ_INCLUDE_DIR ${PROJ4_INCLUDE_DIRS}) -+ set(LibPROJ_LIBRARIES ${PROJ_LIBRARY}) -+ set(LibPROJ_MAJOR_VERSION 6) -+endif() -+ - if ( NOT LibPROJ_INCLUDE_DIR OR NOT LibPROJ_LIBRARIES OR NOT LibPROJ_FOUND ) - - if ( $ENV{LibPROJ_DIR} ) diff --git a/ports/vtk/fix-pugixml-link.patch b/ports/vtk/fix-pugixml-link.patch deleted file mode 100644 index aadd41adb89944..00000000000000 --- a/ports/vtk/fix-pugixml-link.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/CMake/VTKConfig.cmake.in b/CMake/VTKConfig.cmake.in -index d28e0cc..7ed48bc 100644 ---- a/CMake/VTKConfig.cmake.in -+++ b/CMake/VTKConfig.cmake.in -@@ -88,6 +88,9 @@ if(VTK_HAS_VTKM AND NOT TARGET vtkm_cont) - ) - endif() - -+# Find dependencies -+include(CMakeFindDependencyMacro) -+find_dependency(pugixml REQUIRED) - - #----------------------------------------------------------------------------- - # Load requested modules. -diff --git a/IO/CityGML/CMakeLists.txt b/IO/CityGML/CMakeLists.txt -index ce979ba..744c6f1 100644 ---- a/IO/CityGML/CMakeLists.txt -+++ b/IO/CityGML/CMakeLists.txt -@@ -4,8 +4,5 @@ vtk_module_library(vtkIOCityGML ${Module_SRCS}) - # pugixml does not set _INCLUDE_DIRS or _LIBRARIES - if(VTK_USE_SYSTEM_PUGIXML AND NOT pugixml_INCLUDE_DIRS) - find_package(pugixml REQUIRED) -- get_target_property(pugixml_INCLUDE_DIRS pugixml INTERFACE_INCLUDE_DIRECTORIES) -- get_target_property(pugixml_LIBRARIES pugixml LOCATION) -- include_directories(${pugixml_INCLUDE_DIRS}) -- vtk_module_link_libraries(vtkIOCityGML LINK_PRIVATE ${pugixml_LIBRARIES}) -+ vtk_module_link_libraries(vtkIOCityGML LINK_PUBLIC pugixml) - endif() diff --git a/ports/vtk/fix_ogg_linkage.patch b/ports/vtk/fix_ogg_linkage.patch deleted file mode 100644 index c7f22f4c8f0369..00000000000000 --- a/ports/vtk/fix_ogg_linkage.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/IO/Movie/module.cmake b/IO/Movie/module.cmake -index 4275171..88204ad 100644 ---- a/IO/Movie/module.cmake -+++ b/IO/Movie/module.cmake -@@ -14,6 +14,7 @@ vtk_module(vtkIOMovie - vtkIO - DEPENDS - ${vtkIOMovie_vtkoggtheora} -+ vtkogg - vtkCommonExecutionModel - PRIVATE_DEPENDS - vtkCommonCore diff --git a/ports/vtk/hdf5_static.patch b/ports/vtk/hdf5_static.patch deleted file mode 100644 index 52ade3f082f9c2..00000000000000 --- a/ports/vtk/hdf5_static.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/CMake/FindHDF5.cmake b/CMake/FindHDF5.cmake -index 6d558e39..c301e165 100644 ---- a/CMake/FindHDF5.cmake -+++ b/CMake/FindHDF5.cmake -@@ -8,7 +8,16 @@ if(CMAKE_VERSION VERSION_LESS 3.6.1) - else() - include(${CMAKE_ROOT}/Modules/FindHDF5.cmake) - endif() -- -+#It would be better if VTK would actually use HDF5 & SZIP targets. -+#But current module load order is wrong which will lead to the target being used before it is defined! -+if("${HDF5_LIBRARIES}" MATCHES "libhdf5") -+ find_library(SZIP_LIBRARY_RELEASE NAMES sz libsz szip libszip NAMES_PER_DIR) -+ find_library(SZIP_LIBRARY_DEBUG NAMES sz_d libsz_d szip_d libszip_d NAMES_PER_DIR) -+ select_library_configurations(SZIP) -+ list(APPEND HDF5_LIBRARIES "${SZIP_LIBRARIES}") -+ find_package(ZLIB) -+ list(APPEND HDF5_LIBRARIES "${ZLIB_LIBRARIES}") -+endif() - if(HDF5_FOUND AND (HDF5_IS_PARALLEL OR HDF5_ENABLE_PARALLEL)) - include(vtkMPI) - if(MPI_C_INCLUDE_PATH) diff --git a/ports/vtk/portfile.cmake b/ports/vtk/portfile.cmake index b42f0d3567da95..0b418fcead4bfc 100644 --- a/ports/vtk/portfile.cmake +++ b/ports/vtk/portfile.cmake @@ -2,122 +2,144 @@ if(NOT VCPKG_TARGET_IS_WINDOWS) message(WARNING "You will need to install Xorg dependencies to build vtk:\napt-get install libxt-dev\n") endif() -set(VTK_SHORT_VERSION "8.2") -set(VTK_LONG_VERSION "${VTK_SHORT_VERSION}.0") -# ============================================================================= -# Options: -vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS - qt VTK_WITH_QT - mpi VTK_Group_MPI - python VTK_WITH_PYTHON - openvr Module_vtkRenderingOpenVR - atlmfc Module_vtkGUISupportMFC -) - -set(VTK_WITH_ALL_MODULES OFF) # IMPORTANT: if ON make sure `qt5`, `mpi`, `python3`, `ffmpeg`, `gdal`, `fontconfig`, - # `libmysql` and `atlmfc` are listed as dependency in the CONTROL file +# TODO: +# - add loguru as a dependency requires #8682 # ============================================================================= -# Clone & patch -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO Kitware/VTK - REF "v${VTK_LONG_VERSION}" - SHA512 fd1d9c2872baa6eca7f8105b0057b56ec554e9d5eaf25985302e7fc032bdce72255d79e3f5f16ca50504151bda49cb3a148272ba32e0f410b4bdb70959b8f3f4 - HEAD_REF master - PATCHES - fix-find-lz4.patch - fix_ogg_linkage.patch - fix-pugixml-link.patch - hdf5_static.patch - fix-find-lzma.patch - fix-proj4.patch - fix-VTKConfig-cmake.patch -) - -# Remove the FindGLEW.cmake and FindPythonLibs.cmake that are distributed with VTK, -# since they do not detect the debug libraries correctly. -# The default files distributed with CMake (>= 3.9) should be superior by all means. -# For GDAL, the one distributed with CMake does not detect the debug libraries correctly, -# so we provide an own one. -file(REMOVE ${SOURCE_PATH}/CMake/FindGLEW.cmake) -file(REMOVE ${SOURCE_PATH}/CMake/FindPythonLibs.cmake) +# Options: +# Collect CMake options for optional components +if("qt" IN_LIST FEATURES) + list(APPEND ADDITIONAL_OPTIONS + -DVTK_GROUP_ENABLE_Qt=YES + -DVTK_MODULE_ENABLE_VTK_RenderingQt=YES + -DVTK_MODULE_ENABLE_VTK_ViewsQt=YES + ) +endif() -file(COPY ${CMAKE_CURRENT_LIST_DIR}/FindGDAL.cmake DESTINATION ${SOURCE_PATH}/CMake) +#if("qtdesignerplugin" IN_LIST FEATURES) +# list(APPEND ADDITIONAL_OPTIONS +# -DVTK_BUILD_QT_DESIGNER_PLUGIN=ON +# ) +#else() +# list(APPEND ADDITIONAL_OPTIONS +# -DVTK_BUILD_QT_DESIGNER_PLUGIN=OFF) +#endif() -# ============================================================================= -# Collect CMake options for optional components -if(VTK_WITH_QT) +if("vtkm" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS - -DVTK_Group_Qt=ON - -DVTK_QT_VERSION=5 - -DVTK_BUILD_QT_DESIGNER_PLUGIN=OFF + -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKm=YES + -DVTK_MODULE_ENABLE_VTK_vtkm=YES ) endif() -if(VTK_WITH_PYTHON) +if("python" IN_LIST FEATURES) vcpkg_find_acquire_program(PYTHON3) list(APPEND ADDITIONAL_OPTIONS -DVTK_WRAP_PYTHON=ON -DVTK_PYTHON_VERSION=3 + -DPython3_FIND_REGISTRY=NEVER + "-DPython3_LIBRARY_RELEASE=${CURRENT_INSTALLED_DIR}/lib/python37.lib" + "-DPython3_LIBRARY_DEBUG=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib" + "-DPython3_INCLUDE_DIR=${CURRENT_INSTALLED_DIR}/include/python3.7" + "-DPython3_EXECUTABLE=${PYTHON3}" + ) + #VTK_PYTHON_SITE_PACKAGES_SUFFIX should be set to the install dir of the site-packages + +endif() + +if("paraview" IN_LIST FEATURES) + list(APPEND ADDITIONAL_OPTIONS + -DVTK_MODULE_ENABLE_VTK_FiltersParallelStatistics=YES + -DVTK_MODULE_ENABLE_VTK_IOParallelExodus=YES + -DVTK_MODULE_ENABLE_VTK_RenderingContextOpenGL2=YES + -DVTK_MODULE_ENABLE_VTK_RenderingParallel=YES + -DVTK_MODULE_ENABLE_VTK_RenderingVolumeAMR=YES + -DVTK_MODULE_ENABLE_VTK_IOXdmf2=YES + -DVTK_MODULE_ENABLE_VTK_IOH5part=YES + -DVTK_MODULE_ENABLE_VTK_IOParallelLSDyna=YES + -DVTK_MODULE_ENABLE_VTK_IOTRUCHAS=YES + -DVTK_MODULE_ENABLE_VTK_IOVPIC=YES + -DVTK_MODULE_ENABLE_VTK_RenderingLICOpenGL2=YES + -DVTK_MODULE_ENABLE_VTK_RenderingAnnotation=YES ) endif() +if("python" IN_LIST FEATURES AND "paraview" IN_LIST FEATURES) + list(APPEND ADDITIONAL_OPTIONS + -DVTK_MODULE_ENABLE_VTK_RenderingMatplotlib=YES + ) +endif() + +if("mpi" IN_LIST FEATURES) + set(VTK_GROUP_ENABLE_MPI NO) +endif() + +if("all" IN_LIST FEATURES) + set(VTK_WITH_ALL_MODULES ON) # IMPORTANT: if ON make sure `qt5`, `mpi`, `python3`, `ffmpeg`, `gdal`, `fontconfig`, + # `libmysql` and `atlmfc` are listed as dependency in the CONTROL file +else() + set(VTK_WITH_ALL_MODULES OFF) +endif() + +# ============================================================================= +# Clone & patch +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO Kitware/VTK + REF ab278e87b181e3a02082bea7361fbaa3ddafb3ad # v9.0 + SHA512 50a324f55b58bc4415f972f711420e83b41a100b27729266db4541c24bc7d7bcd27d9158ce2588178b9b2e43c20b9695ffe382605f5cde331e8371e213655164 + HEAD_REF master + PATCHES + FindLibHaru.patch + FindLZMA.patch + FindLZ4.patch + Findproj.patch + vtkm.patch # To include an external VTKm build (v.1.5 required) + ##pythonwrapper.patch # needs checking + ##NoUndefDebug.patch # needs checking + + # Last patch TODO: Patch out internal loguru +) + +# ============================================================================= +#Overwrite outdated modules if they have not been patched: +file(COPY "${CURRENT_PORT_DIR}/FindPostgreSQL.cmake" DESTINATION "${SOURCE_PATH}/CMake") +file(COPY "${CURRENT_PORT_DIR}/FindHDF5.cmake" DESTINATION "${SOURCE_PATH}/CMake/patches/99") +# ============================================================================= + if(VTK_WITH_ALL_MODULES) list(APPEND ADDITIONAL_OPTIONS -DVTK_BUILD_ALL_MODULES=ON -DVTK_USE_TK=OFF # TCL/TK currently not included in vcpkg - # -DVTK_USE_SYSTEM_AUTOBAHN=ON - # -DVTK_USE_SYSTEM_SIX=ON - # -DVTK_USE_SYSTEM_MPI4PY=ON - # -DVTK_USE_SYSTEM_CONSTANTLY=ON - # -DVTK_USE_SYSTEM_INCREMENTAL=ON - # -DVTK_USE_SYSTEM_TWISTED=ON - # -DVTK_USE_SYSTEM_XDMF2=ON - # -DVTK_USE_SYSTEM_XDMF3=ON - # -DVTK_USE_SYSTEM_ZFP=ON - # -DVTK_USE_SYSTEM_ZOPE=ON - # -DVTK_USE_SYSTEM_LIBPROJ=ON ) endif() -if (VCPKG_TARGET_IS_WINDOWS) - set(PROJ_LIBRARY_REL "${CURRENT_INSTALLED_DIR}/lib/proj.lib") - set(PROJ_LIBRARY_DBG "${CURRENT_INSTALLED_DIR}/debug/lib/proj_d.lib") -else() - set(PROJ_LIBRARY_REL "${CURRENT_INSTALLED_DIR}/lib/libproj.a") - set(PROJ_LIBRARY_DBG "${CURRENT_INSTALLED_DIR}/debug/lib/libproj.a") -endif() # ============================================================================= # Configure & Install +# We set all libraries to "system" and explicitly list the ones that should use embedded copies vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA OPTIONS ${FEATURE_OPTIONS} -DBUILD_TESTING=OFF - -DBUILD_EXAMPLES=OFF + -DVTK_BUILD_TESTING=OFF + -DVTK_BUILD_EXAMPLES=OFF -DVTK_INSTALL_INCLUDE_DIR=include -DVTK_INSTALL_DATA_DIR=share/vtk/data -DVTK_INSTALL_DOC_DIR=share/vtk/doc -DVTK_INSTALL_PACKAGE_DIR=share/vtk -DVTK_INSTALL_RUNTIME_DIR=bin -DVTK_FORBID_DOWNLOADS=ON - - # We set all libraries to "system" and explicitly list the ones that should use embedded copies - -DVTK_USE_SYSTEM_LIBRARIES=ON - -DVTK_USE_SYSTEM_GL2PS=OFF - + #VTK groups to enable + -DVTK_GROUP_ENABLE_StandAlone=YES + -DVTK_GROUP_ENABLE_Rendering=YES + -DVTK_GROUP_ENABLE_Views=YES # Select modules / groups to install - -DVTK_Group_Imaging=ON - -DVTK_Group_Views=ON - -DPYTHON_EXECUTABLE=${PYTHON3} - + -DVTK_USE_EXTERNAL:BOOL=ON + -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=OFF # Not yet in VCPKG + -DVTK_MODULE_ENABLE_VTK_IOMotionFX:STRING=NO # currently buggy ${ADDITIONAL_OPTIONS} - OPTIONS_RELEASE - -DPROJ_LIBRARY=${PROJ_LIBRARY_REL} - OPTIONS_DEBUG - -DPROJ_LIBRARY=${PROJ_LIBRARY_DBG} ) vcpkg_install_cmake() @@ -125,99 +147,66 @@ vcpkg_copy_pdbs() # ============================================================================= # Fixup target files -vcpkg_fixup_cmake_targets() +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/vtk-9.00) # For some reason the references to the XDMF libraries in the target files do not end up # correctly, so we fix them here. -if(VTK_WITH_ALL_MODULES) - if(EXISTS ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-release.cmake) - file(READ ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-release.cmake VTK_TARGETS_RELEASE_CONTENT) - string(REPLACE "lib/../XdmfCore.lib" "lib/XdmfCore.lib" VTK_TARGETS_RELEASE_CONTENT "${VTK_TARGETS_RELEASE_CONTENT}") - string(REPLACE "bin/../XdmfCore.dll" "bin/XdmfCore.dll" VTK_TARGETS_RELEASE_CONTENT "${VTK_TARGETS_RELEASE_CONTENT}") - string(REPLACE "lib/../vtkxdmf3.lib" "lib/vtkxdmf3.lib" VTK_TARGETS_RELEASE_CONTENT "${VTK_TARGETS_RELEASE_CONTENT}") - string(REPLACE "bin/../vtkxdmf3.dll" "bin/vtkxdmf3.dll" VTK_TARGETS_RELEASE_CONTENT "${VTK_TARGETS_RELEASE_CONTENT}") - file(WRITE ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-release.cmake "${VTK_TARGETS_RELEASE_CONTENT}") - endif() +# if(VTK_WITH_ALL_MODULES) + # file(READ ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-release.cmake VTK_TARGETS_RELEASE_CONTENT) + # string(REPLACE "lib/../XdmfCore.lib" "lib/XdmfCore.lib" VTK_TARGETS_RELEASE_CONTENT "${VTK_TARGETS_RELEASE_CONTENT}") + # string(REPLACE "bin/../XdmfCore.dll" "bin/XdmfCore.dll" VTK_TARGETS_RELEASE_CONTENT "${VTK_TARGETS_RELEASE_CONTENT}") + # string(REPLACE "lib/../vtkxdmf3.lib" "lib/vtkxdmf3.lib" VTK_TARGETS_RELEASE_CONTENT "${VTK_TARGETS_RELEASE_CONTENT}") + # string(REPLACE "bin/../vtkxdmf3.dll" "bin/vtkxdmf3.dll" VTK_TARGETS_RELEASE_CONTENT "${VTK_TARGETS_RELEASE_CONTENT}") + # file(WRITE ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-release.cmake "${VTK_TARGETS_RELEASE_CONTENT}") - if(EXISTS ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-debug.cmake) - file(READ ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-debug.cmake VTK_TARGETS_DEBUG_CONTENT) - string(REPLACE "lib/../XdmfCore.lib" "lib/XdmfCore.lib" VTK_TARGETS_DEBUG_CONTENT "${VTK_TARGETS_DEBUG_CONTENT}") - string(REPLACE "bin/../XdmfCore.dll" "bin/XdmfCore.dll" VTK_TARGETS_DEBUG_CONTENT "${VTK_TARGETS_DEBUG_CONTENT}") - string(REPLACE "lib/../vtkxdmf3.lib" "lib/vtkxdmf3.lib" VTK_TARGETS_DEBUG_CONTENT "${VTK_TARGETS_DEBUG_CONTENT}") - string(REPLACE "bin/../vtkxdmf3.dll" "bin/vtkxdmf3.dll" VTK_TARGETS_DEBUG_CONTENT "${VTK_TARGETS_DEBUG_CONTENT}") - file(WRITE ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-debug.cmake "${VTK_TARGETS_DEBUG_CONTENT}") - endif() -endif() - -#file(READ "${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets.cmake" VTK_TARGETS_CONTENT) -# Remove unset of _IMPORT_PREFIX in VTKTargets.cmake -#_IMPORT_PREFIX is required by vtkModules due to vcpkg_fixup_cmake_targets changing all cmake files (to use _IMPORT_PREFIX). -#STRING(REPLACE [[set(_IMPORT_PREFIX)]] -#[[ -# VCPKG: The value of _IMPORT_PREFIX should not be unset. -#set(_IMPORT_PREFIX) -#]] -#VTK_TARGETS_CONTENT "${VTK_TARGETS_CONTENT}") -#file(WRITE "${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets.cmake" "${VTK_TARGETS_CONTENT}") - -#file(READ "${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets.cmake" VTK_TARGETS_CONTENT) - -# Fix _IMPORT_PREFIX. It is not set within the Modules cmake (only set in VTKTargets.cmake). -# Since for VCPKG _IMPORT_PREFIX == VTK_INSTALL_PREFIX we just replace it with that. -file(GLOB_RECURSE CMAKE_FILES ${CURRENT_PACKAGES_DIR}/share/vtk/Modules/*.cmake) -foreach(FILE IN LISTS CMAKE_FILES) - file(READ "${FILE}" _contents) - string(REPLACE "\${_IMPORT_PREFIX}" "\${VTK_INSTALL_PREFIX}" _contents "${_contents}") - file(WRITE "${FILE}" "${_contents}") -endforeach() + # file(READ ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-debug.cmake VTK_TARGETS_DEBUG_CONTENT) + # string(REPLACE "lib/../XdmfCore.lib" "lib/XdmfCore.lib" VTK_TARGETS_DEBUG_CONTENT "${VTK_TARGETS_DEBUG_CONTENT}") + # string(REPLACE "bin/../XdmfCore.dll" "bin/XdmfCore.dll" VTK_TARGETS_DEBUG_CONTENT "${VTK_TARGETS_DEBUG_CONTENT}") + # string(REPLACE "lib/../vtkxdmf3.lib" "lib/vtkxdmf3.lib" VTK_TARGETS_DEBUG_CONTENT "${VTK_TARGETS_DEBUG_CONTENT}") + # string(REPLACE "bin/../vtkxdmf3.dll" "bin/vtkxdmf3.dll" VTK_TARGETS_DEBUG_CONTENT "${VTK_TARGETS_DEBUG_CONTENT}") + # file(WRITE ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-debug.cmake "${VTK_TARGETS_DEBUG_CONTENT}") +# endif() # ============================================================================= # Clean-up other directories # Delete the debug binary TOOL_NAME that is not required function(_vtk_remove_debug_tool TOOL_NAME) - # on windows, the tools end with .exe - set(filename_win ${CURRENT_PACKAGES_DIR}/debug/bin/${TOOL_NAME}.exe) - if(EXISTS ${filename_win}) - file(REMOVE ${filename_win}) + set(filename ${CURRENT_PACKAGES_DIR}/debug/bin/${TOOL_NAME}${VCPKG_TARGET_EXECUTABLE_SUFFIX}) + if(EXISTS ${filename}) + file(REMOVE ${filename}) endif() - # on other OS, it doesn't - set(filename_unix ${CURRENT_PACKAGES_DIR}/debug/bin/${TOOL_NAME}) - if(EXISTS ${filename_unix}) - file(REMOVE ${filename_unix}) + set(filename ${CURRENT_PACKAGES_DIR}/debug/bin/${TOOL_NAME}d${VCPKG_TARGET_EXECUTABLE_SUFFIX}) + if(EXISTS ${filename}) + file(REMOVE ${filename}) endif() # we also have to bend the lines referencing the tools in VTKTargets-debug.cmake # to make them point to the release version of the tools - if(EXISTS ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-debug.cmake) - file(READ "${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-debug.cmake" VTK_TARGETS_CONTENT_DEBUG) - string(REPLACE "debug/bin/${TOOL_NAME}" "tools/vtk/${TOOL_NAME}" VTK_TARGETS_CONTENT_DEBUG "${VTK_TARGETS_CONTENT_DEBUG}") - file(WRITE "${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-debug.cmake" "${VTK_TARGETS_CONTENT_DEBUG}") - endif() + file(READ "${CURRENT_PACKAGES_DIR}/share/vtk/VTK-targets-debug.cmake" VTK_TARGETS_CONTENT_DEBUG) + string(REPLACE "debug/bin/${TOOL_NAME}" "tools/vtk/${TOOL_NAME}" VTK_TARGETS_CONTENT_DEBUG "${VTK_TARGETS_CONTENT_DEBUG}") + string(REPLACE "tools/vtk/${TOOL_NAME}d" "tools/vtk/${TOOL_NAME}" VTK_TARGETS_CONTENT_DEBUG "${VTK_TARGETS_CONTENT_DEBUG}") + file(WRITE "${CURRENT_PACKAGES_DIR}/share/vtk/VTK-targets-debug.cmake" "${VTK_TARGETS_CONTENT_DEBUG}") endfunction() # Move the release binary TOOL_NAME from bin to tools function(_vtk_move_release_tool TOOL_NAME) - # on windows, the tools end with .exe - set(old_filename_win "${CURRENT_PACKAGES_DIR}/bin/${TOOL_NAME}.exe") - if(EXISTS ${old_filename_win}) - file(INSTALL ${old_filename_win} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/vtk") - file(REMOVE ${old_filename_win}) - endif() - # on other OS, it doesn't - set(old_filename_unix "${CURRENT_PACKAGES_DIR}/bin/${TOOL_NAME}") - if(EXISTS ${old_filename_unix}) - file(INSTALL ${old_filename_unix} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/vtk") - file(REMOVE ${old_filename_unix}) + set(old_filename "${CURRENT_PACKAGES_DIR}/bin/${TOOL_NAME}${VCPKG_TARGET_EXECUTABLE_SUFFIX}") + if(EXISTS ${old_filename}) + file(INSTALL ${old_filename} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/vtk") + file(REMOVE ${old_filename}) endif() + # we also have to bend the lines referencing the tools in VTKTargets-release.cmake # to make them point to the tool folder - if(EXISTS ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-release.cmake) - file(READ "${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-release.cmake" VTK_TARGETS_CONTENT_RELEASE) - string(REPLACE "bin/${TOOL_NAME}" "tools/vtk/${TOOL_NAME}" VTK_TARGETS_CONTENT_RELEASE "${VTK_TARGETS_CONTENT_RELEASE}") - file(WRITE "${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-release.cmake" "${VTK_TARGETS_CONTENT_RELEASE}") + file(READ "${CURRENT_PACKAGES_DIR}/share/vtk/VTK-targets-release.cmake" VTK_TARGETS_CONTENT_RELEASE) + string(REPLACE "bin/${TOOL_NAME}" "tools/vtk/${TOOL_NAME}" VTK_TARGETS_CONTENT_RELEASE "${VTK_TARGETS_CONTENT_RELEASE}") + file(WRITE "${CURRENT_PACKAGES_DIR}/share/vtk/VTK-targets-release.cmake" "${VTK_TARGETS_CONTENT_RELEASE}") + + if("python" IN_LIST FEATURES) endif() endfunction() +set(VTK_SHORT_VERSION 9.00) set(VTK_TOOLS vtkEncodeString-${VTK_SHORT_VERSION} vtkHashSource-${VTK_SHORT_VERSION} @@ -229,6 +218,8 @@ set(VTK_TOOLS vtkWrapHierarchy-${VTK_SHORT_VERSION} vtkParseJava-${VTK_SHORT_VERSION} vtkParseOGLExt-${VTK_SHORT_VERSION} + vtkProbeOpenGLVersion-${VTK_SHORT_VERSION} + vtkTestOpenGLVersion-${VTK_SHORT_VERSION} vtkpython pvtkpython ) @@ -238,17 +229,12 @@ foreach(TOOL_NAME IN LISTS VTK_TOOLS) _vtk_move_release_tool("${TOOL_NAME}") endforeach() -file(READ "${CURRENT_PACKAGES_DIR}/share/vtk/Modules/vtkhdf5.cmake" _contents) -string(REPLACE "vtk::hdf5::hdf5_hl" "" _contents "${_contents}") -string(REPLACE "vtk::hdf5::hdf5" "" _contents "${_contents}") -file(WRITE "${CURRENT_PACKAGES_DIR}/share/vtk/Modules/vtkhdf5.cmake" "${_contents}") - # ============================================================================= # Remove other files and directories that are not valid for vcpkg -if(VTK_WITH_ALL_MODULES) - file(REMOVE ${CURRENT_PACKAGES_DIR}/XdmfConfig.cmake) - file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/XdmfConfig.cmake) -endif() +# if(VTK_WITH_ALL_MODULES) + # file(REMOVE ${CURRENT_PACKAGES_DIR}/XdmfConfig.cmake) + # file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/XdmfConfig.cmake) +# endif() if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin) @@ -258,8 +244,45 @@ endif() file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) -vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/vtk) - # ============================================================================= # Handle copyright -file(INSTALL ${SOURCE_PATH}/Copyright.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) +file(COPY ${SOURCE_PATH}/Copyright.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/vtk) +file(RENAME ${CURRENT_PACKAGES_DIR}/share/vtk/Copyright.txt ${CURRENT_PACKAGES_DIR}/share/vtk/copyright) + +vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/vtk) + +## Files Modules needed by ParaView +if("paraview" IN_LIST FEATURES) + set(VTK_CMAKE_NEEDED vtkCompilerChecks vtkCompilerPlatformFlags vtkCompilerExtraFlags vtkInitializeBuildType vtkSupportMacros vtkDirectories vtkVersion FindPythonModules) + foreach(module ${VTK_CMAKE_NEEDED}) + file(INSTALL "${SOURCE_PATH}/CMake/${module}.cmake" DESTINATION ${CURRENT_PACKAGES_DIR}/share/vtk) + endforeach() + file(INSTALL "${SOURCE_PATH}/CMake/vtkRequireLargeFilesSupport.cxx" DESTINATION ${CURRENT_PACKAGES_DIR}/share/vtk) + + #ParaView requires some internal headers + file(INSTALL ${SOURCE_PATH}/Rendering/Annotation/vtkScalarBarActorInternal.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-8.90) + file(INSTALL ${SOURCE_PATH}/Filters/Statistics/vtkStatisticsAlgorithmPrivate.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-8.90) + file(INSTALL ${SOURCE_PATH}/Rendering/OpenGL2/vtkCompositePolyDataMapper2Internal.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-8.90) + file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Rendering/OpenGL2/vtkTextureObjectVS.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-8.90) +endif() + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + if(EXISTS ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/CMakeFiles/static_python) #python headers + file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/CMakeFiles/static_python DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-8.90) + endif() +endif() + +#remove one get_filename_component(_vtk_module_import_prefix "${_vtk_module_import_prefix}" DIRECTORY) from vtk-prefix.cmake and VTK-vtk-module-properties and vtk-python.cmake +set(filenames_fix_prefix vtk-prefix VTK-vtk-module-properties vtk-python) +foreach(name ${filenames_fix_prefix}) +if(EXISTS "${CURRENT_PACKAGES_DIR}/share/vtk/${name}.cmake") + file(READ "${CURRENT_PACKAGES_DIR}/share/vtk/${name}.cmake" _contents) + string(REPLACE +[[set(_vtk_module_import_prefix "${CMAKE_CURRENT_LIST_DIR}") +get_filename_component(_vtk_module_import_prefix "${_vtk_module_import_prefix}" DIRECTORY)]] +[[set(_vtk_module_import_prefix "${CMAKE_CURRENT_LIST_DIR}")]] _contents "${_contents}") + file(WRITE "${CURRENT_PACKAGES_DIR}/share/vtk/${name}.cmake" "${_contents}") +else() + #message(STATUS "FILE:${CURRENT_PACKAGES_DIR}/share/vtk/${name}.cmake does not exist! No prefix correction!") +endif() +endforeach() diff --git a/ports/vtk/pythonwrapper.patch b/ports/vtk/pythonwrapper.patch new file mode 100644 index 00000000000000..d7585cf0f5fc76 --- /dev/null +++ b/ports/vtk/pythonwrapper.patch @@ -0,0 +1,19 @@ +diff --git a/CMake/vtkModuleWrapPython.cmake b/CMake/vtkModuleWrapPython.cmake +index 5d2c2e1bf..e33a16d68 100644 +--- a/CMake/vtkModuleWrapPython.cmake ++++ b/CMake/vtkModuleWrapPython.cmake +@@ -75,10 +75,13 @@ function (_vtk_module_wrap_python_sources module sources classes) + "$") + set(_vtk_python_genex_include_directories + "$") ++ set(_vtk_python_genex_interface_include_directories ++ "$") + file(GENERATE + OUTPUT "${_vtk_python_args_file}" + CONTENT "$<$:\n-D\'$\'>\n +-$<$:\n-I\'$\'>\n") ++$<$:\n-I\'$\'>\n ++$<$:\n-I\'$\'>\n") + + _vtk_module_get_module_property("${module}" + PROPERTY "hierarchy" diff --git a/ports/vtk/vtkm.patch b/ports/vtk/vtkm.patch new file mode 100644 index 00000000000000..f549beaa0dbdfd --- /dev/null +++ b/ports/vtk/vtkm.patch @@ -0,0 +1,109 @@ +diff --git a/Accelerators/Vtkm/CMakeLists.txt b/Accelerators/Vtkm/CMakeLists.txt +index 4297575bd..643df6fd5 100644 +--- a/Accelerators/Vtkm/CMakeLists.txt ++++ b/Accelerators/Vtkm/CMakeLists.txt +@@ -14,8 +14,10 @@ + ## + ##============================================================================= + +-list(INSERT 0 CMAKE_MODULE_PATH +- "${VTK_SOURCE_DIR}/ThirdParty/vtkm/vtkvtkm/vtk-m/CMake") ++find_package(VTKm CONFIG REQUIRED) ++ ++#list(INSERT 0 CMAKE_MODULE_PATH ++# "${VTK_SOURCE_DIR}/ThirdParty/vtkm/vtkvtkm/vtk-m/CMake") + + set(sources + vtkmlib/ArrayConvertersReal.cxx +diff --git a/CMake/FindVTKm.cmake b/CMake/FindVTKm.cmake +new file mode 100644 +index 000000000..c0fe00c0e +--- /dev/null ++++ b/CMake/FindVTKm.cmake +@@ -0,0 +1 @@ ++find_package(VTKm CONFIG REQUIRED) +\ No newline at end of file +diff --git a/CMake/vtkCompilerPlatformFlags.cmake b/CMake/vtkCompilerPlatformFlags.cmake +index b0bdba1e6..69c570a25 100644 +--- a/CMake/vtkCompilerPlatformFlags.cmake ++++ b/CMake/vtkCompilerPlatformFlags.cmake +@@ -107,7 +107,7 @@ if(MSVC) + if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") + STRING(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + else() +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /bigobj") + endif() + endif() + +diff --git a/ThirdParty/vtkm/CMakeLists.txt b/ThirdParty/vtkm/CMakeLists.txt +index 5817d42f8..bc5a33d93 100644 +--- a/ThirdParty/vtkm/CMakeLists.txt ++++ b/ThirdParty/vtkm/CMakeLists.txt +@@ -1,6 +1,47 @@ +-vtk_module_third_party_internal( +- LICENSE_FILES "vtkvtkm/vtk-m/LICENSE.txt" +- VERSION "master" +- SUBDIRECTORY vtkvtkm +- STANDARD_INCLUDE_DIRS +- INTERFACE) ++#vtk_module_third_party_internal( ++# LICENSE_FILES "vtkvtkm/vtk-m/LICENSE.txt" ++# VERSION "master" ++# SUBDIRECTORY vtkvtkm ++# STANDARD_INCLUDE_DIRS ++# INTERFACE) ++ ++message(STATUS "VTK_MODULE_USE_EXTERNAL_VTK_vtkm: ${VTK_MODULE_USE_EXTERNAL_VTK_vtkm}") ++if(TRUE) ++ message(STATUS "Searching for external VTKm") ++ find_package(VTKm CONFIG REQUIRED) ++ if(TARGET vtkm_compiler_flags) ++ get_target_property(VTKm_INCLUDE_DIRS vtkm_compiler_flags INTERFACE_INCLUDE_DIRECTORIES) ++ message(STATUS "INCLUDE: ${VTKm_INCLUDE_DIRS}") ++ get_target_property(VTKm_DIY_INCLUDE_DIRS vtkm_diy INTERFACE_INCLUDE_DIRECTORIES) ++ get_target_property(VTKm_OPTION_INCLUDE_DIRS vtkm_optionparser INTERFACE_INCLUDE_DIRECTORIES) ++ get_target_property(VTKm_TAO_INCLUDE_DIRS vtkm_taotuple INTERFACE_INCLUDE_DIRECTORIES) ++ if(MSVC) ++ set(VTKm_DEFINITIONS /bigobj) ++ endif() ++ else() ++ message(FATAL_ERROR "VTKM target missing") ++ endif() ++ if(VTKM_FOUND) ++ message(STATUS "Found VTKm") ++ endif() ++endif() ++ ++vtk_module_third_party( ++ INTERNAL ++ HEADER_ONLY ++ LICENSE_FILES "vtkvtkm/vtk-m/LICENSE.txt" ++ VERSION "master" ++ SUBDIRECTORY vtkvtkm ++ STANDARD_INCLUDE_DIRS ++ INTERFACE ++ EXTERNAL ++ PACKAGE VTKm ++ TARGETS vtkm_cont vtkm_filter vtkm_diy vtkm_optionparser vtkm_taotuple ++ #LIBRARIES vtkm_cont vtkm_filter vtkm_diy vtkm_optionparser vtkm_taotuple ++ INCLUDE_DIRS VTKm_INCLUDE_DIRS VTKm_DIY_INCLUDE_DIRS VTKm_OPTION_INCLUDE_DIRS VTKm_TAO_INCLUDE_DIRS) ++# configure_file( ++ # "${CMAKE_CURRENT_SOURCE_DIR}/vtk_utf8.h.in" ++ # "${CMAKE_CURRENT_BINARY_DIR}/vtk_utf8.h") ++ ++# vtk_module_install_headers( ++ # FILES "${CMAKE_CURRENT_BINARY_DIR}/vtk_utf8.h") +diff --git a/ThirdParty/vtkm/vtk.module b/ThirdParty/vtkm/vtk.module +index a8e4dad0f..c7bbbf0e8 100644 +--- a/ThirdParty/vtkm/vtk.module ++++ b/ThirdParty/vtkm/vtk.module +@@ -3,5 +3,7 @@ NAME + PRIVATE_DEPENDS + # While not needed to satisfy symbols, this is necessary to guarantee that + # VTK_SMP_IMPLEMENTATION_TYPE is available when configuring vtk-m. +- VTK::CommonCore ++ # VTK::CommonCore ++LIBRARY_NAME ++ VTKm + THIRD_PARTY From 712d2656d0928a5a73964f710b615f15ef114e32 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sun, 3 May 2020 23:08:53 +0200 Subject: [PATCH 03/77] include local buildtree changes --- ports/vtk/portfile.cmake | 4 ++-- ports/vtk/vtkm.patch | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ports/vtk/portfile.cmake b/ports/vtk/portfile.cmake index 0b418fcead4bfc..2b4e5f59e33c0d 100644 --- a/ports/vtk/portfile.cmake +++ b/ports/vtk/portfile.cmake @@ -147,7 +147,7 @@ vcpkg_copy_pdbs() # ============================================================================= # Fixup target files -vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/vtk-9.00) +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/vtk-9.0) # For some reason the references to the XDMF libraries in the target files do not end up # correctly, so we fix them here. @@ -206,7 +206,7 @@ function(_vtk_move_release_tool TOOL_NAME) endif() endfunction() -set(VTK_SHORT_VERSION 9.00) +set(VTK_SHORT_VERSION 9.0) set(VTK_TOOLS vtkEncodeString-${VTK_SHORT_VERSION} vtkHashSource-${VTK_SHORT_VERSION} diff --git a/ports/vtk/vtkm.patch b/ports/vtk/vtkm.patch index f549beaa0dbdfd..6acb30b547af44 100644 --- a/ports/vtk/vtkm.patch +++ b/ports/vtk/vtkm.patch @@ -15,6 +15,23 @@ index 4297575bd..643df6fd5 100644 set(sources vtkmlib/ArrayConvertersReal.cxx +diff --git a/Accelerators/Vtkm/CMakeLists.txt b/Accelerators/Vtkm/CMakeLists.txt +index a01a6bda3..889c87ebb 100644 +--- a/Accelerators/Vtkm/CMakeLists.txt ++++ b/Accelerators/Vtkm/CMakeLists.txt +@@ -126,9 +126,9 @@ vtkm_add_target_information(${vtkm_accel_target} + MODIFY_CUDA_FLAGS + DEVICE_SOURCES ${sources}) + +-vtk_module_set_property(VTK::AcceleratorsVTKm +- PROPERTY JOB_POOL_COMPILE +- VALUE vtkm_pool) ++#vtk_module_set_property(VTK::AcceleratorsVTKm ++# PROPERTY JOB_POOL_COMPILE ++# VALUE vtkm_pool) + vtk_module_link(VTK::AcceleratorsVTKm + PRIVATE + vtkm_worklet diff --git a/CMake/FindVTKm.cmake b/CMake/FindVTKm.cmake new file mode 100644 index 000000000..c0fe00c0e From d14828bb247b934051608168b95429cccf4b6286 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 4 May 2020 00:23:05 +0200 Subject: [PATCH 04/77] [pcl] disable VTK due to API changes in VTK 9.0 --- ports/pcl/CONTROL | 2 +- ports/pcl/portfile.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/pcl/CONTROL b/ports/pcl/CONTROL index 9f23fc43efd504..d21a0b8fd22175 100644 --- a/ports/pcl/CONTROL +++ b/ports/pcl/CONTROL @@ -1,5 +1,5 @@ Source: pcl -Version: 1.9.1-12 +Version: 1.9.1-13 Homepage: https://github.com/PointCloudLibrary/pcl Description: Point Cloud Library (PCL) is open source library for 2D/3D image and point cloud processing. Build-Depends: eigen3, flann, qhull, vtk, libpng, boost-system, boost-filesystem, boost-thread, boost-date-time, boost-iostreams, boost-random, boost-foreach, boost-dynamic-bitset, boost-property-map, boost-graph, boost-multi-array, boost-signals2, boost-ptr-container, boost-uuid, boost-interprocess, boost-asio diff --git a/ports/pcl/portfile.cmake b/ports/pcl/portfile.cmake index ce3f91a8f7b15b..0f4c30127e09b9 100644 --- a/ports/pcl/portfile.cmake +++ b/ports/pcl/portfile.cmake @@ -45,7 +45,7 @@ vcpkg_configure_cmake( -DWITH_LIBUSB=OFF -DWITH_PNG=ON -DWITH_QHULL=ON - -DWITH_VTK=ON + -DWITH_VTK=OFF # disabled due to API changes in 9.0 # FEATURES ${FEATURE_OPTIONS} ) From b8412bc7260ef42414c9f3a9bb53690d10361957 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 4 May 2020 00:27:01 +0200 Subject: [PATCH 05/77] [vtk-m] add supports field to be only x64 --- ports/vtk-m/CONTROL | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/vtk-m/CONTROL b/ports/vtk-m/CONTROL index 12dd9d6a67d8de..c0ecda5673d613 100644 --- a/ports/vtk-m/CONTROL +++ b/ports/vtk-m/CONTROL @@ -2,6 +2,7 @@ Source: vtk-m Version: 1.5.0 Homepage: https://gitlab.kitware.com/vtk/vtk-m/ Description: VTK-m is a toolkit of scientific visualization algorithms for emerging processor architectures. +Supports: x64 Feature: cuda Description: Use the NVIDIA CUDA device adapter. From 5037be55936931e5c6e0c8a608b33519d2c53c7f Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 4 May 2020 00:27:27 +0200 Subject: [PATCH 06/77] [vtk-dicom] add python executable. --- ports/vtk-dicom/CONTROL | 2 +- ports/vtk-dicom/portfile.cmake | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ports/vtk-dicom/CONTROL b/ports/vtk-dicom/CONTROL index 2041f21e18da3a..2413146f397587 100644 --- a/ports/vtk-dicom/CONTROL +++ b/ports/vtk-dicom/CONTROL @@ -1,7 +1,7 @@ Source: vtk-dicom Version: 0.8.12 Description: DICOM for VTK -Build-Depends: vtk, zlib +Build-Depends: vtk[core], zlib Feature: gdcm Description: Use gdcm for decompressing DICOM files. diff --git a/ports/vtk-dicom/portfile.cmake b/ports/vtk-dicom/portfile.cmake index bd137e61eb3510..aba121bf5005ee 100644 --- a/ports/vtk-dicom/portfile.cmake +++ b/ports/vtk-dicom/portfile.cmake @@ -21,13 +21,14 @@ if(USE_GDCM) -DUSE_DCMTK=OFF ) endif() - +vcpkg_find_acquire_program(PYTHON3) vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA OPTIONS -DBUILD_PROGRAMS=OFF -DBUILD_EXAMPLES=OFF + "-DPython3_EXECUTABLE=${PYTHON3}" ${ADDITIONAL_OPTIONS} ) From cc62abd1a118a837ad40be622b258e32fffaf7b8 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 4 May 2020 13:21:50 +0200 Subject: [PATCH 07/77] fix vtkm dependency --- ports/vtk/vtkm.patch | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ports/vtk/vtkm.patch b/ports/vtk/vtkm.patch index 6acb30b547af44..27b7f40940d87b 100644 --- a/ports/vtk/vtkm.patch +++ b/ports/vtk/vtkm.patch @@ -124,3 +124,18 @@ index a8e4dad0f..c7bbbf0e8 100644 +LIBRARY_NAME + VTKm THIRD_PARTY +diff --git a/CMake/vtk-config.cmake.in b/CMake/vtk-config.cmake.in +index 1ecfde326..ae5576e66 100644 +--- a/CMake/vtk-config.cmake.in ++++ b/CMake/vtk-config.cmake.in +@@ -114,9 +114,7 @@ set("${CMAKE_FIND_PACKAGE_NAME}_AVAILABLE_COMPONENTS" "@vtk_all_components@") + unset("${CMAKE_FIND_PACKAGE_NAME}_FOUND") + set("${CMAKE_FIND_PACKAGE_NAME}_HAS_VTKm" "@vtk_has_vtkm@") + if (${CMAKE_FIND_PACKAGE_NAME}_HAS_VTKm) +- find_package(VTKm +- PATHS "${CMAKE_CURRENT_LIST_DIR}/vtkm" +- NO_DEFAULT_PATH) ++ find_package(VTKm CONFIG REQUIRED) + if (NOT VTKm_FOUND) + set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" 0) + endif () From a9879e975c83ce57d0ec29ced5a76731633465cf Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 4 May 2020 13:26:47 +0200 Subject: [PATCH 08/77] [vtk-dicom] fix missing std:: namespace --- ports/vtk-dicom/portfile.cmake | 2 + ports/vtk-dicom/std.patch | 74 ++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 ports/vtk-dicom/std.patch diff --git a/ports/vtk-dicom/portfile.cmake b/ports/vtk-dicom/portfile.cmake index aba121bf5005ee..787917942be7a2 100644 --- a/ports/vtk-dicom/portfile.cmake +++ b/ports/vtk-dicom/portfile.cmake @@ -6,6 +6,7 @@ vcpkg_from_github( REF 5034c68450de857b70fbe4a4b9f8dddb62badef3 # v0.8.12 SHA512 bad1ed6a4a412402a2cd69e5f85b2b73f1ee7ea46a6bbcac31c5f66d07ae006679ffbd9a3c70f9baa1b05b1af0a2d4ca0efc34ec0a85a92f5116b900e81635cd HEAD_REF master + PATCHES std.patch ) if ("gdcm" IN_LIST FEATURES) @@ -33,6 +34,7 @@ vcpkg_configure_cmake( ) vcpkg_install_cmake() +vcpkg_fixup_cmake_targets(CONFIG_PATH /lib/cmake) vcpkg_copy_pdbs() file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) diff --git a/ports/vtk-dicom/std.patch b/ports/vtk-dicom/std.patch new file mode 100644 index 00000000000000..59160f089b7b7c --- /dev/null +++ b/ports/vtk-dicom/std.patch @@ -0,0 +1,74 @@ +diff --git a/Source/vtkScancoCTReader.cxx b/Source/vtkScancoCTReader.cxx +index a71f2e46e..afe202ffc 100644 +--- a/Source/vtkScancoCTReader.cxx ++++ b/Source/vtkScancoCTReader.cxx +@@ -176,7 +176,7 @@ int vtkScancoCTReader::CheckVersion(const char header[16]) + //---------------------------------------------------------------------------- + int vtkScancoCTReader::CanReadFile(const char *filename) + { +- ifstream infile(filename, ios::in | ios::binary); ++ std::ifstream infile(filename, ios::in | ios::binary); + + bool canRead = false; + if (infile.good()) +@@ -409,7 +409,7 @@ void vtkScancoCTReader::StripString(char *dest, const char *cp, size_t l) + } + + //---------------------------------------------------------------------------- +-int vtkScancoCTReader::ReadISQHeader(ifstream *file, unsigned long bytesRead) ++int vtkScancoCTReader::ReadISQHeader(std::ifstream *file, unsigned long bytesRead) + { + if (bytesRead < 512) + { +@@ -620,7 +620,7 @@ int vtkScancoCTReader::ReadISQHeader(ifstream *file, unsigned long bytesRead) + } + + //---------------------------------------------------------------------------- +-int vtkScancoCTReader::ReadAIMHeader(ifstream *file, unsigned long bytesRead) ++int vtkScancoCTReader::ReadAIMHeader(std::ifstream *file, unsigned long bytesRead) + { + if (bytesRead < 160) + { +@@ -987,7 +987,7 @@ int vtkScancoCTReader::RequestInformation( + const char *ufilename = filename; + #endif + +- ifstream infile(ufilename, ios::in | ios::binary); ++ std::ifstream infile(ufilename, ios::in | ios::binary); + if (!infile.good()) + { + vtkErrorMacro("Cannot open file " << filename); +@@ -1115,7 +1115,7 @@ int vtkScancoCTReader::RequestData( + static_cast(data->GetScalarPointer()); + + // open the file +- ifstream infile(filename, ios::in | ios::binary); ++ std::ifstream infile(filename, ios::in | ios::binary); + if (!infile.good()) + { + vtkErrorMacro("Cannot open file " << filename); +diff --git a/Source/vtkScancoCTReader.h b/Source/vtkScancoCTReader.h +index ca31d7572..240d532f2 100644 +--- a/Source/vtkScancoCTReader.h ++++ b/Source/vtkScancoCTReader.h +@@ -34,6 +34,7 @@ + #ifndef vtkScancoCTReader_h + #define vtkScancoCTReader_h + ++#include + #include "vtkImageReader2.h" + #include "vtkDICOMModule.h" // For export macro + #include "vtkDICOMConfig.h" // For configuration details +@@ -185,10 +186,10 @@ protected: + void InitializeHeader(); + + //! Read an ISQ header. +- int ReadISQHeader(ifstream *file, unsigned long bytesRead); ++ int ReadISQHeader(std::ifstream *file, unsigned long bytesRead); + + //! Read AIM header. +- int ReadAIMHeader(ifstream *file, unsigned long bytesRead); ++ int ReadAIMHeader(std::ifstream *file, unsigned long bytesRead); + + //! Check the file header to see what type of file it is. + /*! From e9c70792c3feeb60dd4d6f788086b687297b7202 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 4 May 2020 13:33:13 +0200 Subject: [PATCH 09/77] [vtk-m] add uwp to unsupported triplets --- ports/vtk-m/CONTROL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/vtk-m/CONTROL b/ports/vtk-m/CONTROL index c0ecda5673d613..2a8e19887733e0 100644 --- a/ports/vtk-m/CONTROL +++ b/ports/vtk-m/CONTROL @@ -2,7 +2,7 @@ Source: vtk-m Version: 1.5.0 Homepage: https://gitlab.kitware.com/vtk/vtk-m/ Description: VTK-m is a toolkit of scientific visualization algorithms for emerging processor architectures. -Supports: x64 +Supports: x64 & !uwp Feature: cuda Description: Use the NVIDIA CUDA device adapter. From be19c645b1b9901ae07dac4358ea295e49e862e9 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 4 May 2020 14:23:13 +0200 Subject: [PATCH 10/77] [vtk] add pegtl include patch, reenable IOMotionFX --- ports/vtk/pegtl.patch | 13 +++++++++++++ ports/vtk/portfile.cmake | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 ports/vtk/pegtl.patch diff --git a/ports/vtk/pegtl.patch b/ports/vtk/pegtl.patch new file mode 100644 index 00000000000000..af05a8c4467bea --- /dev/null +++ b/ports/vtk/pegtl.patch @@ -0,0 +1,13 @@ +diff --git a/ThirdParty/pegtl/vtk_pegtl.h.in b/ThirdParty/pegtl/vtk_pegtl.h.in +index 12e26962b..5af91e44f 100644 +--- a/ThirdParty/pegtl/vtk_pegtl.h.in ++++ b/ThirdParty/pegtl/vtk_pegtl.h.in +@@ -19,7 +19,7 @@ + #cmakedefine01 VTK_MODULE_USE_EXTERNAL_vtkpegtl + + #if VTK_MODULE_USE_EXTERNAL_vtkpegtl +-# define VTK_PEGTL(x) ++# define VTK_PEGTL(x) + #else + # include + # define VTK_PEGTL(x) diff --git a/ports/vtk/portfile.cmake b/ports/vtk/portfile.cmake index 2b4e5f59e33c0d..744481926c639d 100644 --- a/ports/vtk/portfile.cmake +++ b/ports/vtk/portfile.cmake @@ -95,9 +95,9 @@ vcpkg_from_github( FindLZ4.patch Findproj.patch vtkm.patch # To include an external VTKm build (v.1.5 required) + pegtl.patch ##pythonwrapper.patch # needs checking ##NoUndefDebug.patch # needs checking - # Last patch TODO: Patch out internal loguru ) @@ -138,7 +138,7 @@ vcpkg_configure_cmake( # Select modules / groups to install -DVTK_USE_EXTERNAL:BOOL=ON -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=OFF # Not yet in VCPKG - -DVTK_MODULE_ENABLE_VTK_IOMotionFX:STRING=NO # currently buggy + #-DVTK_MODULE_ENABLE_VTK_IOMotionFX:STRING=NO # currently buggy ${ADDITIONAL_OPTIONS} ) From 7f54cda6d39728e28c7218320f70b6224e40b10a Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 4 May 2020 16:28:24 +0200 Subject: [PATCH 11/77] remove hdf5 changes for testing --- ports/vtk/portfile.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ports/vtk/portfile.cmake b/ports/vtk/portfile.cmake index 744481926c639d..c5a99cf6526998 100644 --- a/ports/vtk/portfile.cmake +++ b/ports/vtk/portfile.cmake @@ -104,7 +104,7 @@ vcpkg_from_github( # ============================================================================= #Overwrite outdated modules if they have not been patched: file(COPY "${CURRENT_PORT_DIR}/FindPostgreSQL.cmake" DESTINATION "${SOURCE_PATH}/CMake") -file(COPY "${CURRENT_PORT_DIR}/FindHDF5.cmake" DESTINATION "${SOURCE_PATH}/CMake/patches/99") +#file(COPY "${CURRENT_PORT_DIR}/FindHDF5.cmake" DESTINATION "${SOURCE_PATH}/CMake/patches/99") # ============================================================================= if(VTK_WITH_ALL_MODULES) @@ -139,6 +139,7 @@ vcpkg_configure_cmake( -DVTK_USE_EXTERNAL:BOOL=ON -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=OFF # Not yet in VCPKG #-DVTK_MODULE_ENABLE_VTK_IOMotionFX:STRING=NO # currently buggy + -DHDF5_FIND_DEBUG=ON ${ADDITIONAL_OPTIONS} ) From 9dd615dd88ed193809a33e3df09e9ae672daa4a1 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 4 May 2020 16:28:44 +0200 Subject: [PATCH 12/77] use different pgetl patch which redirects to the installed config of pegtl --- ports/vtk/pegtl.patch | 70 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/ports/vtk/pegtl.patch b/ports/vtk/pegtl.patch index af05a8c4467bea..f12aebba4d0025 100644 --- a/ports/vtk/pegtl.patch +++ b/ports/vtk/pegtl.patch @@ -1,3 +1,71 @@ +diff --git a/CMake/FindPEGTL.cmake b/CMake/FindPEGTL.cmake +index 73eee02f7..22d8bc159 100644 +--- a/CMake/FindPEGTL.cmake ++++ b/CMake/FindPEGTL.cmake +@@ -19,31 +19,37 @@ + # Copyright (c) 2009 Benoit Jacob + # Redistribution and use is allowed according to the terms of the 2-clause BSD license. + +-find_path(PEGTL_INCLUDE_DIR +- NAMES pegtl/version.hpp +- PATH_SUFFIXES tao +- DOC "Path to PEGTL headers") +-mark_as_advanced(PEGTL_INCLUDE_DIR) ++find_package(PEGTL CONFIG REQUIRED) ++if(TARGET taocpp::pegtl) ++ set_target_properties(taocpp::pegtl PROPERTIES IMPORTED_GLOBAL TRUE) ++ add_library(PEGTL::PEGTL ALIAS taocpp::pegtl) ++else() ++ find_path(PEGTL_INCLUDE_DIR ++ NAMES pegtl/version.hpp ++ PATH_SUFFIXES tao ++ DOC "Path to PEGTL headers") ++ mark_as_advanced(PEGTL_INCLUDE_DIR) + +-if (PEGTL_INCLUDE_DIR) +- file(STRINGS "${PEGTL_INCLUDE_DIR}/pegtl/version.hpp" _pegtl_version_header +- REGEX "TAO_PEGTL_VERSION") +- string(REGEX MATCH "define[ \t]+TAO_PEGTL_VERSION[ \t]+\"([0-9.]+)\"" _pegtl_version_match "${_pegtl_version_header}") +- set(PEGTL_VERSION "${CMAKE_MATCH_1}") +- unset(_pegtl_version_header) +- unset(_pegtl_version_match) +-endif () ++ if (PEGTL_INCLUDE_DIR) ++ file(STRINGS "${PEGTL_INCLUDE_DIR}/pegtl/version.hpp" _pegtl_version_header ++ REGEX "TAO_PEGTL_VERSION") ++ string(REGEX MATCH "define[ \t]+TAO_PEGTL_VERSION[ \t]+\"([0-9.]+)\"" _pegtl_version_match "${_pegtl_version_header}") ++ set(PEGTL_VERSION "${CMAKE_MATCH_1}") ++ unset(_pegtl_version_header) ++ unset(_pegtl_version_match) ++ endif () + +-include(FindPackageHandleStandardArgs) +-find_package_handle_standard_args(PEGTL +- REQUIRED_VARS PEGTL_INCLUDE_DIR +- VERSION_VAR PEGTL_VERSION) ++ include(FindPackageHandleStandardArgs) ++ find_package_handle_standard_args(PEGTL ++ REQUIRED_VARS PEGTL_INCLUDE_DIR ++ VERSION_VAR PEGTL_VERSION) + +-if (PEGTL_FOUND) +- set(PEGTL_INCLUDE_DIRS "${PEGTL_INCLUDE_DIR}") +- if (NOT TARGET PEGTL::PEGTL) +- add_library(PEGTL::PEGTL INTERFACE IMPORTED) +- set_target_properties(PEGTL::PEGTL PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${PEGTL_INCLUDE_DIR}") +- endif () +-endif () ++ if (PEGTL_FOUND) ++ set(PEGTL_INCLUDE_DIRS "${PEGTL_INCLUDE_DIR}") ++ if (NOT TARGET PEGTL::PEGTL) ++ add_library(PEGTL::PEGTL INTERFACE IMPORTED) ++ set_target_properties(PEGTL::PEGTL PROPERTIES ++ INTERFACE_INCLUDE_DIRECTORIES "${PEGTL_INCLUDE_DIR}") ++ endif () ++ endif () ++endif () +\ No newline at end of file diff --git a/ThirdParty/pegtl/vtk_pegtl.h.in b/ThirdParty/pegtl/vtk_pegtl.h.in index 12e26962b..5af91e44f 100644 --- a/ThirdParty/pegtl/vtk_pegtl.h.in @@ -7,7 +75,7 @@ index 12e26962b..5af91e44f 100644 #if VTK_MODULE_USE_EXTERNAL_vtkpegtl -# define VTK_PEGTL(x) -+# define VTK_PEGTL(x) ++# define VTK_PEGTL(x) #else # include # define VTK_PEGTL(x) From 487b6187b74fd7e72ac3fca919600a1a8f06c785 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 4 May 2020 18:44:00 +0200 Subject: [PATCH 13/77] [pegtl-2] version file needs renaming too --- ports/pegtl-2/CONTROL | 2 +- ports/pegtl-2/portfile.cmake | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ports/pegtl-2/CONTROL b/ports/pegtl-2/CONTROL index aba1579d1fd88c..9013d2d16d5404 100644 --- a/ports/pegtl-2/CONTROL +++ b/ports/pegtl-2/CONTROL @@ -1,3 +1,3 @@ Source: pegtl-2 -Version: 2.8.1 +Version: 2.8.1-1 Description: The Parsing Expression Grammar Template Library (PEGTL) is a zero-dependency C++ header-only parser combinator library for creating parsers according to a Parsing Expression Grammar (PEG). This version maintains compatibility with C++11. diff --git a/ports/pegtl-2/portfile.cmake b/ports/pegtl-2/portfile.cmake index 4e43c40ce95b2b..42caf1d507acd2 100644 --- a/ports/pegtl-2/portfile.cmake +++ b/ports/pegtl-2/portfile.cmake @@ -29,3 +29,4 @@ file(RENAME ${CURRENT_PACKAGES_DIR}/share/pegtl-2/LICENSE ${CURRENT_PACKAGES_DIR # Handle collision with latest pegtl file(RENAME ${CURRENT_PACKAGES_DIR}/share/pegtl-2/pegtl-config.cmake ${CURRENT_PACKAGES_DIR}/share/pegtl-2/pegtl-2-config.cmake) +file(RENAME ${CURRENT_PACKAGES_DIR}/share/pegtl-2/pegtl-config-version.cmake ${CURRENT_PACKAGES_DIR}/share/pegtl-2/pegtl-2-config-version.cmake) From a173464f5e5f0d779b887f671d35cadb5fbbddff Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 4 May 2020 18:44:36 +0200 Subject: [PATCH 14/77] [vtk] change dependency to pgetl-2 and fix the patch --- ports/vtk/CONTROL | 2 +- ports/vtk/pegtl.patch | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ports/vtk/CONTROL b/ports/vtk/CONTROL index 209da4aa5edeb3..20429e7853bc20 100644 --- a/ports/vtk/CONTROL +++ b/ports/vtk/CONTROL @@ -2,7 +2,7 @@ Source: vtk Version: 9.0 Description: Software system for 3D computer graphics, image processing, and visualization Homepage: https://github.com/Kitware/VTK -Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, liblzma, libtheora, eigen3, double-conversion, pugixml, libharu[notiffsymbols], sqlite3, netcdf-c, utfcpp, libogg, pegtl +Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, liblzma, libtheora, eigen3, double-conversion, pugixml, libharu[notiffsymbols], sqlite3, netcdf-c, utfcpp, libogg, pegtl-2 Feature: vtkm Description: Build with vtk-m accelerator and module. diff --git a/ports/vtk/pegtl.patch b/ports/vtk/pegtl.patch index f12aebba4d0025..79451f9a926728 100644 --- a/ports/vtk/pegtl.patch +++ b/ports/vtk/pegtl.patch @@ -2,7 +2,7 @@ diff --git a/CMake/FindPEGTL.cmake b/CMake/FindPEGTL.cmake index 73eee02f7..22d8bc159 100644 --- a/CMake/FindPEGTL.cmake +++ b/CMake/FindPEGTL.cmake -@@ -19,31 +19,37 @@ +@@ -19,31 +19,39 @@ # Copyright (c) 2009 Benoit Jacob # Redistribution and use is allowed according to the terms of the 2-clause BSD license. @@ -11,8 +11,10 @@ index 73eee02f7..22d8bc159 100644 - PATH_SUFFIXES tao - DOC "Path to PEGTL headers") -mark_as_advanced(PEGTL_INCLUDE_DIR) -+find_package(PEGTL CONFIG REQUIRED) ++message(STATUS "Searching for PGETL") ++find_package(PEGTL CONFIG NAMES PEGTL-2) +if(TARGET taocpp::pegtl) ++message(STATUS "Target taocpp::pegtl found!") + set_target_properties(taocpp::pegtl PROPERTIES IMPORTED_GLOBAL TRUE) + add_library(PEGTL::PEGTL ALIAS taocpp::pegtl) +else() From e6026177ff3df683abea3462fe0418bc60b70ea0 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 4 May 2020 18:45:31 +0200 Subject: [PATCH 15/77] [vtk] put in hdf5 fix again and correct manually installed include files --- ports/vtk/portfile.cmake | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/ports/vtk/portfile.cmake b/ports/vtk/portfile.cmake index c5a99cf6526998..c1560e355963d3 100644 --- a/ports/vtk/portfile.cmake +++ b/ports/vtk/portfile.cmake @@ -104,7 +104,7 @@ vcpkg_from_github( # ============================================================================= #Overwrite outdated modules if they have not been patched: file(COPY "${CURRENT_PORT_DIR}/FindPostgreSQL.cmake" DESTINATION "${SOURCE_PATH}/CMake") -#file(COPY "${CURRENT_PORT_DIR}/FindHDF5.cmake" DESTINATION "${SOURCE_PATH}/CMake/patches/99") +file(COPY "${CURRENT_PORT_DIR}/FindHDF5.cmake" DESTINATION "${SOURCE_PATH}/CMake/patches/99") # ============================================================================= if(VTK_WITH_ALL_MODULES) @@ -139,7 +139,6 @@ vcpkg_configure_cmake( -DVTK_USE_EXTERNAL:BOOL=ON -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=OFF # Not yet in VCPKG #-DVTK_MODULE_ENABLE_VTK_IOMotionFX:STRING=NO # currently buggy - -DHDF5_FIND_DEBUG=ON ${ADDITIONAL_OPTIONS} ) @@ -261,15 +260,15 @@ if("paraview" IN_LIST FEATURES) file(INSTALL "${SOURCE_PATH}/CMake/vtkRequireLargeFilesSupport.cxx" DESTINATION ${CURRENT_PACKAGES_DIR}/share/vtk) #ParaView requires some internal headers - file(INSTALL ${SOURCE_PATH}/Rendering/Annotation/vtkScalarBarActorInternal.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-8.90) - file(INSTALL ${SOURCE_PATH}/Filters/Statistics/vtkStatisticsAlgorithmPrivate.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-8.90) - file(INSTALL ${SOURCE_PATH}/Rendering/OpenGL2/vtkCompositePolyDataMapper2Internal.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-8.90) - file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Rendering/OpenGL2/vtkTextureObjectVS.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-8.90) + file(INSTALL ${SOURCE_PATH}/Rendering/Annotation/vtkScalarBarActorInternal.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}) + file(INSTALL ${SOURCE_PATH}/Filters/Statistics/vtkStatisticsAlgorithmPrivate.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}) + file(INSTALL ${SOURCE_PATH}/Rendering/OpenGL2/vtkCompositePolyDataMapper2Internal.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}) + file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Rendering/OpenGL2/vtkTextureObjectVS.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}) endif() if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") if(EXISTS ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/CMakeFiles/static_python) #python headers - file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/CMakeFiles/static_python DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-8.90) + file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/CMakeFiles/static_python DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}) endif() endif() From 9cd771ba9ecf323baab1fc57ffaf20c29bccb48e Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 5 May 2020 13:45:44 +0200 Subject: [PATCH 16/77] remove deprecated function to retrigger CI --- ports/vtk-dicom/portfile.cmake | 2 -- 1 file changed, 2 deletions(-) diff --git a/ports/vtk-dicom/portfile.cmake b/ports/vtk-dicom/portfile.cmake index 787917942be7a2..13b404995a091e 100644 --- a/ports/vtk-dicom/portfile.cmake +++ b/ports/vtk-dicom/portfile.cmake @@ -1,5 +1,3 @@ -include(vcpkg_common_functions) - vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO dgobbi/vtk-dicom From 3972e24e2d948e16cb441e9752b06ec9d69e8324 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 5 May 2020 15:20:33 +0200 Subject: [PATCH 17/77] [lz4] correctly lowercase the lz4 config --- ports/lz4/CMakeLists.txt | 2 +- ports/lz4/CONTROL | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/lz4/CMakeLists.txt b/ports/lz4/CMakeLists.txt index 724b6fdafb9d5b..1e272dd4563911 100644 --- a/ports/lz4/CMakeLists.txt +++ b/ports/lz4/CMakeLists.txt @@ -40,7 +40,7 @@ list(REMOVE_ITEM lz4h "${CMAKE_CURRENT_LIST_DIR}/lib/xxhash.h") INSTALL(FILES ${lz4h} DESTINATION "${INSTALL_INCLUDE_DIR}") install(EXPORT lz4Config - FILE lz4Config.cmake + FILE lz4-config.cmake NAMESPACE lz4:: DESTINATION "${INSTALL_CMAKE_DIR}" ) diff --git a/ports/lz4/CONTROL b/ports/lz4/CONTROL index 749586988e0a15..280ec3cdad2703 100644 --- a/ports/lz4/CONTROL +++ b/ports/lz4/CONTROL @@ -1,5 +1,5 @@ Source: lz4 -Version: 1.9.2-1 +Version: 1.9.2-2 Homepage: https://github.com/lz4/lz4 Description: Lossless compression algorithm, providing compression speed at 400 MB/s per core. Build-Depends: xxhash From bcd66d0e3b37afb798434c5f3387dd2597a47c6a Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 5 May 2020 19:49:26 +0200 Subject: [PATCH 18/77] [vtk] remove unnecessary code --- ports/vtk/portfile.cmake | 9 --------- 1 file changed, 9 deletions(-) diff --git a/ports/vtk/portfile.cmake b/ports/vtk/portfile.cmake index c1560e355963d3..5170ff15b9c9dc 100644 --- a/ports/vtk/portfile.cmake +++ b/ports/vtk/portfile.cmake @@ -16,15 +16,6 @@ if("qt" IN_LIST FEATURES) ) endif() -#if("qtdesignerplugin" IN_LIST FEATURES) -# list(APPEND ADDITIONAL_OPTIONS -# -DVTK_BUILD_QT_DESIGNER_PLUGIN=ON -# ) -#else() -# list(APPEND ADDITIONAL_OPTIONS -# -DVTK_BUILD_QT_DESIGNER_PLUGIN=OFF) -#endif() - if("vtkm" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKm=YES From a5cf13f304b40b16ae8801684c43040b7564e83c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 6 May 2020 14:15:41 +0200 Subject: [PATCH 19/77] [pegtl-2] add homepage --- ports/pegtl-2/CONTROL | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/pegtl-2/CONTROL b/ports/pegtl-2/CONTROL index 9013d2d16d5404..842c9080fe22d1 100644 --- a/ports/pegtl-2/CONTROL +++ b/ports/pegtl-2/CONTROL @@ -1,3 +1,4 @@ Source: pegtl-2 Version: 2.8.1-1 Description: The Parsing Expression Grammar Template Library (PEGTL) is a zero-dependency C++ header-only parser combinator library for creating parsers according to a Parsing Expression Grammar (PEG). This version maintains compatibility with C++11. +Homepage: https://github.com/taocpp/PEGTL \ No newline at end of file From cc7648cea5091fe41a24b1548d02e710a1b11da4 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 6 May 2020 14:15:56 +0200 Subject: [PATCH 20/77] [pegtl] modernize portfiles --- ports/pegtl-2/portfile.cmake | 7 +++---- ports/pegtl/portfile.cmake | 1 - 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/ports/pegtl-2/portfile.cmake b/ports/pegtl-2/portfile.cmake index 42caf1d507acd2..5eedd0c400cd29 100644 --- a/ports/pegtl-2/portfile.cmake +++ b/ports/pegtl-2/portfile.cmake @@ -1,4 +1,3 @@ -include(vcpkg_common_functions) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO taocpp/pegtl @@ -25,8 +24,8 @@ vcpkg_fixup_cmake_targets(CONFIG_PATH share/pegtl-2/cmake) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug) # Handle copyright -file(RENAME ${CURRENT_PACKAGES_DIR}/share/pegtl-2/LICENSE ${CURRENT_PACKAGES_DIR}/share/pegtl-2/copyright) +file(RENAME ${CURRENT_PACKAGES_DIR}/share/${PORT}/LICENSE ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright) # Handle collision with latest pegtl -file(RENAME ${CURRENT_PACKAGES_DIR}/share/pegtl-2/pegtl-config.cmake ${CURRENT_PACKAGES_DIR}/share/pegtl-2/pegtl-2-config.cmake) -file(RENAME ${CURRENT_PACKAGES_DIR}/share/pegtl-2/pegtl-config-version.cmake ${CURRENT_PACKAGES_DIR}/share/pegtl-2/pegtl-2-config-version.cmake) +file(RENAME ${CURRENT_PACKAGES_DIR}/share/${PORT}/pegtl-config.cmake ${CURRENT_PACKAGES_DIR}/share/${PORT}/${PORT}-config.cmake) +file(RENAME ${CURRENT_PACKAGES_DIR}/share/${PORT}/pegtl-config-version.cmake ${CURRENT_PACKAGES_DIR}/share/${PORT}/${PORT}-config-version.cmake) diff --git a/ports/pegtl/portfile.cmake b/ports/pegtl/portfile.cmake index 0ff90c4707c6fa..a9d4ff846ab475 100644 --- a/ports/pegtl/portfile.cmake +++ b/ports/pegtl/portfile.cmake @@ -1,4 +1,3 @@ -include(vcpkg_common_functions) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO taocpp/pegtl From 6bfc20ca7a0f5b3e61b5ca5806da8c2d8f3bac5c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 6 May 2020 14:16:11 +0200 Subject: [PATCH 21/77] [vtk-dicom] add homepage --- ports/vtk-dicom/CONTROL | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/vtk-dicom/CONTROL b/ports/vtk-dicom/CONTROL index 2413146f397587..f34da119c6b2ea 100644 --- a/ports/vtk-dicom/CONTROL +++ b/ports/vtk-dicom/CONTROL @@ -1,6 +1,7 @@ Source: vtk-dicom Version: 0.8.12 Description: DICOM for VTK +Homepage: https://github.com/dgobbi/vtk-dicom Build-Depends: vtk[core], zlib Feature: gdcm From ad6688c868841a74465920751b853adaab3f20cf Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 6 May 2020 14:16:31 +0200 Subject: [PATCH 22/77] [vtk-dicom] modernize portfile --- ports/vtk-dicom/portfile.cmake | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ports/vtk-dicom/portfile.cmake b/ports/vtk-dicom/portfile.cmake index 13b404995a091e..171a046a26fbb0 100644 --- a/ports/vtk-dicom/portfile.cmake +++ b/ports/vtk-dicom/portfile.cmake @@ -4,7 +4,7 @@ vcpkg_from_github( REF 5034c68450de857b70fbe4a4b9f8dddb62badef3 # v0.8.12 SHA512 bad1ed6a4a412402a2cd69e5f85b2b73f1ee7ea46a6bbcac31c5f66d07ae006679ffbd9a3c70f9baa1b05b1af0a2d4ca0efc34ec0a85a92f5116b900e81635cd HEAD_REF master - PATCHES std.patch + PATCHES std.patch # similar patch is already in master ) if ("gdcm" IN_LIST FEATURES) @@ -32,12 +32,11 @@ vcpkg_configure_cmake( ) vcpkg_install_cmake() -vcpkg_fixup_cmake_targets(CONFIG_PATH /lib/cmake) +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake) vcpkg_copy_pdbs() file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) # Handle copyright -file(COPY ${SOURCE_PATH}/Copyright.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/vtk-dicom) -file(RENAME ${CURRENT_PACKAGES_DIR}/share/vtk-dicom/Copyright.txt ${CURRENT_PACKAGES_DIR}/share/vtk-dicom/copyright) +file(INSTALL ${SOURCE_PATH}/Copyright.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) From 746d82a2dc232fc411287c6f1958edcf8c4e6220 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 6 May 2020 14:16:48 +0200 Subject: [PATCH 23/77] [vtk-m] remove empty build depends --- ports/vtk-m/CONTROL | 1 - 1 file changed, 1 deletion(-) diff --git a/ports/vtk-m/CONTROL b/ports/vtk-m/CONTROL index 2a8e19887733e0..6fe2933c298fcf 100644 --- a/ports/vtk-m/CONTROL +++ b/ports/vtk-m/CONTROL @@ -21,4 +21,3 @@ Build-Depends: mpi Feature: double Description: Use double precision in floating point calculations -Build-Depends: From ffe138ff4372ea5c062f3ce38a8b2d3ae7aa0f33 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 6 May 2020 14:19:52 +0200 Subject: [PATCH 24/77] [vtk] try fixing the permission issue --- ports/vtk/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/vtk/portfile.cmake b/ports/vtk/portfile.cmake index 5170ff15b9c9dc..c0c13acf5c5be0 100644 --- a/ports/vtk/portfile.cmake +++ b/ports/vtk/portfile.cmake @@ -183,7 +183,7 @@ endfunction() function(_vtk_move_release_tool TOOL_NAME) set(old_filename "${CURRENT_PACKAGES_DIR}/bin/${TOOL_NAME}${VCPKG_TARGET_EXECUTABLE_SUFFIX}") if(EXISTS ${old_filename}) - file(INSTALL ${old_filename} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/vtk") + file(INSTALL ${old_filename} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/vtk" USE_SOURCE_PERMISSIONS) file(REMOVE ${old_filename}) endif() From e87c705ea27b3f39cc499c489aef1531a918787d Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 6 May 2020 17:37:09 +0200 Subject: [PATCH 25/77] [vtk] minimal dependency correction --- ports/vtk/CONTROL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/vtk/CONTROL b/ports/vtk/CONTROL index 20429e7853bc20..896a7406076388 100644 --- a/ports/vtk/CONTROL +++ b/ports/vtk/CONTROL @@ -2,7 +2,7 @@ Source: vtk Version: 9.0 Description: Software system for 3D computer graphics, image processing, and visualization Homepage: https://github.com/Kitware/VTK -Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, liblzma, libtheora, eigen3, double-conversion, pugixml, libharu[notiffsymbols], sqlite3, netcdf-c, utfcpp, libogg, pegtl-2 +Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5[core], libjpeg-turbo, proj4, lz4, liblzma, libtheora, eigen3, double-conversion, pugixml, libharu[notiffsymbols], sqlite3, netcdf-c, utfcpp, libogg, pegtl-2 Feature: vtkm Description: Build with vtk-m accelerator and module. From 367e8eae923bec347ac76a1e0b79892665f544b0 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 6 May 2020 17:37:26 +0200 Subject: [PATCH 26/77] [itk] update --- ports/itk/CONTROL | 10 +++++--- ports/itk/portfile.cmake | 55 ++++++++++++++++++++++++---------------- 2 files changed, 40 insertions(+), 25 deletions(-) diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL index 282ac4b3c6a647..b0118479381f5c 100644 --- a/ports/itk/CONTROL +++ b/ports/itk/CONTROL @@ -1,9 +1,13 @@ Source: itk -Version: 5.0.1-2 +Version: 5.1.0 Description: Insight Segmentation and Registration Toolkit (ITK) is used for image processing and analysis. Homepage: https://github.com/InsightSoftwareConsortium/ITK -Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[cpp], openjpeg +Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg, fftw Feature: vtk Description: Build ITKVtkGlue module. -Build-Depends: vtk +Build-Depends: vtk[core] + +Feature: python +Description: Python functionality for VTK +Build-Depends: python3 diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index a666b57132051c..f076a788ed2951 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -1,22 +1,33 @@ -include(vcpkg_common_functions) - vcpkg_buildpath_length_warning(37) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO InsightSoftwareConsortium/ITK - REF v5.0.1 - SHA512 242ce66cf83f82d26f20d2099108295e28c8875e7679126ba023834bf0e94454460ba86452a94c8ddaea93d2314befc399f2b151d7294370d4b47f0e9798e77f + REF d3286c9cc04ba16cc8f73de9a98fbcd7c02f3c7b + SHA512 c358449870d580aeb10e32f8be0ca39e8a76d8dc06fda973788fafb5971333e546611c399190be49d40f5f3c18a1105d9699eef271a560aff25ce168a396926e HEAD_REF master PATCHES - fix_openjpeg_search.patch - fix_libminc_config_path.patch + #fix_openjpeg_search.patch + #fix_libminc_config_path.patch +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + "vtk" Module_ITKVtkGlue + "test" ITK_USE_SYSTEM_GOOGLETEST ) -if ("vtk" IN_LIST FEATURES) - set(ITKVtkGlue ON) -else() - set(ITKVtkGlue OFF) +if("python" IN_LIST FEATURES) + vcpkg_find_acquire_program(PYTHON3) + list(APPEND ADDITIONAL_OPTIONS + -DITK_WRAP_PYTHON=ON + -DITK_PYTHON_VERSION=3 + -DPython3_FIND_REGISTRY=NEVER + "-DPython3_LIBRARY_RELEASE=${CURRENT_INSTALLED_DIR}/lib/python37.lib" + "-DPython3_LIBRARY_DEBUG=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib" + "-DPython3_INCLUDE_DIR=${CURRENT_INSTALLED_DIR}/include/python3.7" + "-DPython3_EXECUTABLE=${PYTHON3}" + ) + #ITK_PYTHON_SITE_PACKAGES_SUFFIX should be set to the install dir of the site-packages endif() set(USE_64BITS_IDS OFF) @@ -32,6 +43,7 @@ vcpkg_configure_cmake( -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DDO_NOT_INSTALL_ITK_TEST_DRIVER=ON + -DITK_SKIP_PATH_LENGTH_CHECKS=ON -DITK_INSTALL_DATA_DIR=share/itk/data -DITK_INSTALL_DOC_DIR=share/itk/doc -DITK_INSTALL_PACKAGE_DIR=share/itk @@ -45,22 +57,21 @@ vcpkg_configure_cmake( -DITK_USE_SYSTEM_TIFF=ON -DITK_USE_SYSTEM_ZLIB=ON -DITK_USE_SYSTEM_EIGEN=ON + # Newly added + -DITK_USE_SYSTEM_FFTW=ON # This should be turned on some day, however for now ITK does download specific versions so it shouldn't spontaneously break -DITK_FORBID_DOWNLOADS=OFF - - -DITK_SKIP_PATH_LENGTH_CHECKS=ON - - # I haven't tried Python wrapping in vcpkg - #-DITK_WRAP_PYTHON=ON - #-DITK_PYTHON_VERSION=3 - -DITK_USE_SYSTEM_HDF5=ON # HDF5 was problematic in the past - -DModule_ITKVtkGlue=${ITKVtkGlue} # optional feature - -DModule_IOSTL=ON # example how to turn on a non-default module - -DModule_MorphologicalContourInterpolation=ON # example how to turn on a remote module - -DModule_RLEImage=ON # example how to turn on a remote module - -DGDCM_USE_SYSTEM_OPENJPEG=ON #Use port openjpeg instead of own third-party + #-DModule_IOSTL=ON # example how to turn on a non-default module + #-DModule_MorphologicalContourInterpolation=ON # example how to turn on a remote module + #-DModule_RLEImage=ON # example how to turn on a remote module + #-DGDCM_USE_SYSTEM_OPENJPEG=ON #Use port openjpeg instead of own third-party + -DITK_WRAP_double=ON + -DITK_WRAP_complex_double=ON + -DITK_WRAP_covariant_vector_double=ON + -DITK_WRAP_vector_double=ON + ${FEATURE_OPTIONS} ${ADDITIONAL_OPTIONS} ) From a370115c5c60b1725bd640e509118e68489d7245 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 6 May 2020 18:00:03 +0200 Subject: [PATCH 27/77] fix portfile errors --- ports/itk/CONTROL | 2 +- ports/itk/portfile.cmake | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL index b0118479381f5c..30cc1e36f3c0d3 100644 --- a/ports/itk/CONTROL +++ b/ports/itk/CONTROL @@ -2,7 +2,7 @@ Source: itk Version: 5.1.0 Description: Insight Segmentation and Registration Toolkit (ITK) is used for image processing and analysis. Homepage: https://github.com/InsightSoftwareConsortium/ITK -Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg, fftw +Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg, fftw3[core] Feature: vtk Description: Build ITKVtkGlue module. diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index f076a788ed2951..035ab5ea8848f6 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -13,14 +13,13 @@ vcpkg_from_github( vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS "vtk" Module_ITKVtkGlue - "test" ITK_USE_SYSTEM_GOOGLETEST + #"test" ITK_USE_SYSTEM_GOOGLETEST ) if("python" IN_LIST FEATURES) vcpkg_find_acquire_program(PYTHON3) list(APPEND ADDITIONAL_OPTIONS -DITK_WRAP_PYTHON=ON - -DITK_PYTHON_VERSION=3 -DPython3_FIND_REGISTRY=NEVER "-DPython3_LIBRARY_RELEASE=${CURRENT_INSTALLED_DIR}/lib/python37.lib" "-DPython3_LIBRARY_DEBUG=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib" @@ -84,3 +83,36 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) + +# Without VTK + +# -- The following OPTIONAL packages have been found: + + # * Git + # * Threads + # * HDF5 + # * LibLZMA + # * Python3 + # * Perl + +# -- The following REQUIRED packages have been found: + + # * double-conversion + # * EXPAT + # * SZIP + # * TIFF + # * JPEG + # * ZLIB + # * PNG + # * Eigen3 (required version >= 3.3) + # * ITK + +# -- The following OPTIONAL packages have not been found: + + # * KWStyle (required version >= 1.0.1) + # * cppcheck + # * PkgConfig + +# -- Configuring done +# -- Generating done +# -- Build files have been written to: D:/qt2/buildtrees/itk/x64-windows-dbg \ No newline at end of file From 3350c53baf5c2a95ef2ed05f4dc0440ad63289c0 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 00:06:01 +0200 Subject: [PATCH 28/77] WIP commit --- ports/itk/CONTROL | 10 +++++++- ports/itk/portfile.cmake | 30 ++++++++++++++++++------ ports/itk/wip.patch | 50 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 8 deletions(-) create mode 100644 ports/itk/wip.patch diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL index 30cc1e36f3c0d3..b06c487d19e901 100644 --- a/ports/itk/CONTROL +++ b/ports/itk/CONTROL @@ -9,5 +9,13 @@ Description: Build ITKVtkGlue module. Build-Depends: vtk[core] Feature: python -Description: Python functionality for VTK +Description: Python functionality for ITK Build-Depends: python3 + +Feature: cufftw +Description: Use CUDA FFTW +Build-Depends: cuda + +Feature: opencl +Description: Use OpenCL +Build-Depends: opencl \ No newline at end of file diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 035ab5ea8848f6..197be6468b84ea 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -9,10 +9,13 @@ vcpkg_from_github( PATCHES #fix_openjpeg_search.patch #fix_libminc_config_path.patch + wip.patch ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS - "vtk" Module_ITKVtkGlue + "vtk" Module_ITKVtkGlue + "cufftw" ITK_USE_CUFFTW + "opencl" ITK_USE_GPU #"test" ITK_USE_SYSTEM_GOOGLETEST ) @@ -21,11 +24,17 @@ if("python" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS -DITK_WRAP_PYTHON=ON -DPython3_FIND_REGISTRY=NEVER - "-DPython3_LIBRARY_RELEASE=${CURRENT_INSTALLED_DIR}/lib/python37.lib" - "-DPython3_LIBRARY_DEBUG=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib" - "-DPython3_INCLUDE_DIR=${CURRENT_INSTALLED_DIR}/include/python3.7" - "-DPython3_EXECUTABLE=${PYTHON3}" + "-DPython3_FIND_ABI=ANY\\\\\\\\\\\\\\\\\\\\\\\\;ANY\\\\\\\\\\\\\\\\\\\\\\\\;ANY" + "-DPython3_VERSION=3.7" + #"-DPython3_FOUND=ON" + "-DPython3_LIBRARY_RELEASE:PATH=${CURRENT_INSTALLED_DIR}/lib/python37.lib" + "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib" + -DPython3_LIBRARIES="debug\\\\\\\\\\\\\\\\\\\\\\\\;${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib\\\\\\\\\\\\\\\\\\\\\\\\;optimized\\\\\\\\\\\\\\\\\\\\\\\\;${CURRENT_INSTALLED_DIR}/lib/python37.lib" + "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7" + "-DPython3_EXECUTABLE:PATH=${PYTHON3}" ) + list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib") + list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/python37.lib") #ITK_PYTHON_SITE_PACKAGES_SUFFIX should be set to the install dir of the site-packages endif() @@ -41,6 +50,7 @@ vcpkg_configure_cmake( OPTIONS -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF + -DITK_DOXYGEN_HTML=OFF -DDO_NOT_INSTALL_ITK_TEST_DRIVER=ON -DITK_SKIP_PATH_LENGTH_CHECKS=ON -DITK_INSTALL_DATA_DIR=share/itk/data @@ -56,12 +66,16 @@ vcpkg_configure_cmake( -DITK_USE_SYSTEM_TIFF=ON -DITK_USE_SYSTEM_ZLIB=ON -DITK_USE_SYSTEM_EIGEN=ON - # Newly added -DITK_USE_SYSTEM_FFTW=ON + -DITK_USE_SYSTEM_HDF5=ON # HDF5 was problematic in the past # This should be turned on some day, however for now ITK does download specific versions so it shouldn't spontaneously break -DITK_FORBID_DOWNLOADS=OFF - -DITK_USE_SYSTEM_HDF5=ON # HDF5 was problematic in the past + + # TODO + #-DVXL_USE_GEOTIFF=ON + + #-DModule_IOSTL=ON # example how to turn on a non-default module #-DModule_MorphologicalContourInterpolation=ON # example how to turn on a remote module #-DModule_RLEImage=ON # example how to turn on a remote module @@ -72,6 +86,8 @@ vcpkg_configure_cmake( -DITK_WRAP_vector_double=ON ${FEATURE_OPTIONS} ${ADDITIONAL_OPTIONS} + OPTIONS_DEBUG ${OPTIONS_DEBUG} + OPTIONS_RELEASE ${OPTIONS_RELEASE} ) vcpkg_install_cmake() diff --git a/ports/itk/wip.patch b/ports/itk/wip.patch new file mode 100644 index 00000000000000..4c03bef6c9ac10 --- /dev/null +++ b/ports/itk/wip.patch @@ -0,0 +1,50 @@ +diff --git a/CMake/ITKModuleMacros.cmake b/CMake/ITKModuleMacros.cmake +index da9f3a902..d2d30f906 100644 +--- a/CMake/ITKModuleMacros.cmake ++++ b/CMake/ITKModuleMacros.cmake +@@ -162,9 +162,6 @@ macro(itk_module_impl) + foreach(dep IN LISTS ITK_MODULE_${itk-module}_DEPENDS) + list(APPEND ${itk-module}_LIBRARIES "${${dep}_LIBRARIES}") + endforeach() +- if(${itk-module}_LIBRARIES) +- list(REMOVE_DUPLICATES ${itk-module}_LIBRARIES) +- endif() + endif() + + if(EXISTS ${${itk-module}_SOURCE_DIR}/include) +diff --git a/Modules/IO/HDF5/CMakeLists.txt b/Modules/IO/HDF5/CMakeLists.txt +index ef153626e..f6c474584 100644 +--- a/Modules/IO/HDF5/CMakeLists.txt ++++ b/Modules/IO/HDF5/CMakeLists.txt +@@ -1,3 +1,3 @@ + project(ITKIOHDF5) +-set(ITKIOHDF5_LIBRARIES ITKIOHDF5) ++#set(ITKIOHDF5_LIBRARIES ITKIOHDF5) + itk_module_impl() +diff --git a/Modules/ThirdParty/HDF5/CMakeLists.txt b/Modules/ThirdParty/HDF5/CMakeLists.txt +index a700ecdfb..a66399be9 100644 +--- a/Modules/ThirdParty/HDF5/CMakeLists.txt ++++ b/Modules/ThirdParty/HDF5/CMakeLists.txt +@@ -25,11 +25,11 @@ endif() + ") + endif() + +- set(ITKHDF5_LIBRARIES ) +- if(BUILD_SHARED_LIBS) +- list(APPEND ITKHDF5_LIBRARIES ${HDF5_C_SHARED_LIBRARY} ${HDF5_CXX_SHARED_LIBRARY}) ++ set(ITKHDF5_LIBRARIES) ++ if(HDF5_BUILD_SHARED_LIBS) ++ list(APPEND ITKHDF5_LIBRARIES hdf5::hdf5_cpp-shared hdf5::hdf5-shared) + else() +- list(APPEND ITKHDF5_LIBRARIES ${HDF5_C_STATIC_LIBRARY} ${HDF5_CXX_STATIC_LIBRARY}) ++ list(APPEND ITKHDF5_LIBRARIES hdf5::hdf5_cpp-static hdf5::hdf5-static) + endif() + + set(ITKHDF5_INCLUDE_DIRS +@@ -67,3 +67,5 @@ install(FILES ${ITKHDF5_BINARY_DIR}/src/itk_hdf5.h + DESTINATION ${ITKHDF5_INSTALL_INCLUDE_DIR} + COMPONENT Development + ) ++ ++message(STATUS "ITKHDF5_LIBRARIES:${ITKHDF5_LIBRARIES}") +\ No newline at end of file From 9999925c44a0ce738987446e58127d7c0ca2fd2c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 11:42:32 +0200 Subject: [PATCH 29/77] should make ITK green in VCPKG CI but there a still issues with features --- ports/itk/CONTROL | 2 +- ports/itk/portfile.cmake | 36 +++++++++++++++++++++++++----------- ports/itk/wip.patch | 16 ++++++++++++++++ 3 files changed, 42 insertions(+), 12 deletions(-) diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL index b06c487d19e901..6b7310f13fee98 100644 --- a/ports/itk/CONTROL +++ b/ports/itk/CONTROL @@ -2,7 +2,7 @@ Source: itk Version: 5.1.0 Description: Insight Segmentation and Registration Toolkit (ITK) is used for image processing and analysis. Homepage: https://github.com/InsightSoftwareConsortium/ITK -Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg, fftw3[core] +Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg, fftw3[core], gtest Feature: vtk Description: Build ITKVtkGlue module. diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 197be6468b84ea..92ed80c2eeb2a2 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -16,23 +16,27 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS "vtk" Module_ITKVtkGlue "cufftw" ITK_USE_CUFFTW "opencl" ITK_USE_GPU - #"test" ITK_USE_SYSTEM_GOOGLETEST ) - +if("vtk" IN_LIST FEATURES) + vcpkg_find_acquire_program(PYTHON3) + list(APPEND ADDITIONAL_OPTIONS + "-DPython3_EXECUTABLE:PATH=${PYTHON3}" # Required by mvtk if vtk[python] was build + ) +endif() if("python" IN_LIST FEATURES) vcpkg_find_acquire_program(PYTHON3) list(APPEND ADDITIONAL_OPTIONS -DITK_WRAP_PYTHON=ON -DPython3_FIND_REGISTRY=NEVER - "-DPython3_FIND_ABI=ANY\\\\\\\\\\\\\\\\\\\\\\\\;ANY\\\\\\\\\\\\\\\\\\\\\\\\;ANY" - "-DPython3_VERSION=3.7" - #"-DPython3_FOUND=ON" "-DPython3_LIBRARY_RELEASE:PATH=${CURRENT_INSTALLED_DIR}/lib/python37.lib" "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib" - -DPython3_LIBRARIES="debug\\\\\\\\\\\\\\\\\\\\\\\\;${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib\\\\\\\\\\\\\\\\\\\\\\\\;optimized\\\\\\\\\\\\\\\\\\\\\\\\;${CURRENT_INSTALLED_DIR}/lib/python37.lib" "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7" - "-DPython3_EXECUTABLE:PATH=${PYTHON3}" - ) + "-DPython3_EXECUTABLE:PATH=${PYTHON3}" # Required by more than one feature + ) + #"-DPython3_FIND_ABI=ANY\\\\\\\\\\\\\\\\\\\\\\\\;ANY\\\\\\\\\\\\\\\\\\\\\\\\;ANY" + #"-DPython3_VERSION=3.7" + #-DPython3_LIBRARIES="debug\\\\\\\\\\\\\\\\\\\\\\\\;${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib\\\\\\\\\\\\\\\\\\\\\\\\;optimized\\\\\\\\\\\\\\\\\\\\\\\\;${CURRENT_INSTALLED_DIR}/lib/python37.lib" + list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib") list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/python37.lib") #ITK_PYTHON_SITE_PACKAGES_SUFFIX should be set to the install dir of the site-packages @@ -71,10 +75,13 @@ vcpkg_configure_cmake( # This should be turned on some day, however for now ITK does download specific versions so it shouldn't spontaneously break -DITK_FORBID_DOWNLOADS=OFF + -DINSTALL_GTEST=OFF + -DITK_USE_SYSTEM_GOOGLETEST=ON + -DEXECUTABLE_OUTPUT_PATH=tools/${PORT} # TODO #-DVXL_USE_GEOTIFF=ON - + -DVXL_USE_LFS=ON #-DModule_IOSTL=ON # example how to turn on a non-default module #-DModule_MorphologicalContourInterpolation=ON # example how to turn on a remote module @@ -86,6 +93,7 @@ vcpkg_configure_cmake( -DITK_WRAP_vector_double=ON ${FEATURE_OPTIONS} ${ADDITIONAL_OPTIONS} + OPTIONS_DEBUG ${OPTIONS_DEBUG} OPTIONS_RELEASE ${OPTIONS_RELEASE} ) @@ -94,9 +102,15 @@ vcpkg_install_cmake() vcpkg_copy_pdbs() vcpkg_fixup_cmake_targets() +set(_files itkLIBMINCConfig UseitkLIBMINC) +foreach(_file IN LISTS _files) + file(RENAME "${CURRENT_PACKAGES_DIR}/lib/cmake/${_file}.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/${_file}.cmake") +endforeach() -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/cmake") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib/cmake") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) diff --git a/ports/itk/wip.patch b/ports/itk/wip.patch index 4c03bef6c9ac10..02ad646d6bac55 100644 --- a/ports/itk/wip.patch +++ b/ports/itk/wip.patch @@ -1,3 +1,19 @@ +diff --git a/Modules/ThirdParty/DoubleConversion/CMakeLists.txt b/Modules/ThirdParty/DoubleConversion/CMakeLists.txt +index 16c611fd3..d254e2788 100644 +--- a/Modules/ThirdParty/DoubleConversion/CMakeLists.txt ++++ b/Modules/ThirdParty/DoubleConversion/CMakeLists.txt +@@ -9,7 +9,10 @@ mark_as_advanced(ITK_USE_SYSTEM_DOUBLECONVERSION) + if(ITK_USE_SYSTEM_DOUBLECONVERSION) + find_package(double-conversion REQUIRED) + get_target_property(ITKDoubleConversion_INCLUDE_DIRS double-conversion::double-conversion INTERFACE_INCLUDE_DIRECTORIES) +- get_target_property(ITKDoubleConversion_LIBRARIES double-conversion::double-conversion LOCATION) ++ get_target_property(ITKDoubleConversion_LIBRARY_RELEASE double-conversion::double-conversion LOCATION_RELEASE) ++ get_target_property(ITKDoubleConversion_LIBRARY_DEBUG double-conversion::double-conversion LOCATION_DEBUG) ++ include(SelectLibraryConfigurations) ++ select_library_configurations(ITKDoubleConversion) + else() + set(ITKDoubleConversion_INCLUDE_DIRS + ${ITKDoubleConversion_SOURCE_DIR}/src diff --git a/CMake/ITKModuleMacros.cmake b/CMake/ITKModuleMacros.cmake index da9f3a902..d2d30f906 100644 --- a/CMake/ITKModuleMacros.cmake From 6370969c826b451e60929894b83ceedffa2854e8 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 12:23:11 +0200 Subject: [PATCH 30/77] more dependencies and features.... --- ports/itk/CONTROL | 13 +++++++++++-- ports/itk/portfile.cmake | 7 +++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL index 6b7310f13fee98..16fe0a894af833 100644 --- a/ports/itk/CONTROL +++ b/ports/itk/CONTROL @@ -2,7 +2,7 @@ Source: itk Version: 5.1.0 Description: Insight Segmentation and Registration Toolkit (ITK) is used for image processing and analysis. Homepage: https://github.com/InsightSoftwareConsortium/ITK -Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg, fftw3[core], gtest +Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg, fftw3[core], gtest, gdcm, icu Feature: vtk Description: Build ITKVtkGlue module. @@ -18,4 +18,13 @@ Build-Depends: cuda Feature: opencl Description: Use OpenCL -Build-Depends: opencl \ No newline at end of file +Build-Depends: opencl + +Feature: tbb +Description: Build TBB Module +Build-Depends: tbb + +Feature: rtk +Description: Build RTK Module + + diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 92ed80c2eeb2a2..1cca4bee609b01 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -16,6 +16,8 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS "vtk" Module_ITKVtkGlue "cufftw" ITK_USE_CUFFTW "opencl" ITK_USE_GPU + "tbb" Module_ITKTBB + "rtk" Module_RTK ) if("vtk" IN_LIST FEATURES) vcpkg_find_acquire_program(PYTHON3) @@ -54,6 +56,7 @@ vcpkg_configure_cmake( OPTIONS -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF + -DBUILD_PKGCONFIG_FILES=OFF -DITK_DOXYGEN_HTML=OFF -DDO_NOT_INSTALL_ITK_TEST_DRIVER=ON -DITK_SKIP_PATH_LENGTH_CHECKS=ON @@ -72,6 +75,10 @@ vcpkg_configure_cmake( -DITK_USE_SYSTEM_EIGEN=ON -DITK_USE_SYSTEM_FFTW=ON -DITK_USE_SYSTEM_HDF5=ON # HDF5 was problematic in the past + -DITK_USE_SYSTEM_GDCM=ON + #-DITK_USE_SYSTEM_DCMTK=ON this option should exist but it does not! + -DDCMTK_USE_ICU=ON + -DITK_USE_SYSTEM_ICU=ON # This should be turned on some day, however for now ITK does download specific versions so it shouldn't spontaneously break -DITK_FORBID_DOWNLOADS=OFF From c938da41476ddfc7d0b7b5e80a67e4ed5056544e Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 12:25:04 +0200 Subject: [PATCH 31/77] remove itk from baseline failure so the check can get green --- scripts/ci.baseline.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index 5e17bb9e4a94b1..cfc5e69ad7b908 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -641,9 +641,6 @@ isal:x64-uwp=fail isal:x64-windows=fail isal:x64-windows-static=fail isal:x86-windows=fail -itk:x64-windows=fail -itk:x64-windows-static=fail -itk:x86-windows=fail ixwebsocket:x64-linux=ignore jack2:arm-uwp=fail jack2:x64-uwp=fail From 938e4167cf64da830a2481b35bc2f6f3d354174c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 12:44:14 +0200 Subject: [PATCH 32/77] more dependency updating. --- ports/itk/CONTROL | 2 +- ports/openjpeg/CONTROL | 16 +++++++++++++++- ports/openjpeg/portfile.cmake | 13 +++++++++---- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL index 16fe0a894af833..012fc342877b65 100644 --- a/ports/itk/CONTROL +++ b/ports/itk/CONTROL @@ -2,7 +2,7 @@ Source: itk Version: 5.1.0 Description: Insight Segmentation and Registration Toolkit (ITK) is used for image processing and analysis. Homepage: https://github.com/InsightSoftwareConsortium/ITK -Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg, fftw3[core], gtest, gdcm, icu +Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg[core,mj2], fftw3[core], gtest, gdcm, icu Feature: vtk Description: Build ITKVtkGlue module. diff --git a/ports/openjpeg/CONTROL b/ports/openjpeg/CONTROL index 0fd7d64a6a0ca2..de830778a9ac2e 100644 --- a/ports/openjpeg/CONTROL +++ b/ports/openjpeg/CONTROL @@ -1,4 +1,18 @@ Source: openjpeg -Version: 2.3.1-1 +Version: 2.3.1-2 Homepage: https://github.com/uclouvain/openjpeg Description: JPEG 2000 image library +Default-Features: jpwl, mj2, jpip, jp3d + +Feature: jpwl +Description: Build optional component jpwl + +Feature: mj2 +Description: Build optional component mj2 + +Feature: jpip +Description: Build optional component jpip + +Feature: jp3d +Description: Build optional component jp3d + diff --git a/ports/openjpeg/portfile.cmake b/ports/openjpeg/portfile.cmake index 2296734ad1c872..4ba3e0f4507a9b 100644 --- a/ports/openjpeg/portfile.cmake +++ b/ports/openjpeg/portfile.cmake @@ -1,5 +1,3 @@ -include(vcpkg_common_functions) - vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO uclouvain/openjpeg @@ -8,12 +6,20 @@ vcpkg_from_github( HEAD_REF master ) +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + "jpwl" BUILD_JPWL + "mj2" BUILD_MJ2 + "jpip" BUILD_JPIP + "jp3d" BUILD_JP3D + ) + vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA OPTIONS -DBUILD_CODEC:BOOL=OFF -DOPENJPEG_INSTALL_PACKAGE_DIR=share/openjpeg -DOPENJPEG_INSTALL_INCLUDE_DIR=include + ${FEATURE_OPTIONS} ) vcpkg_install_cmake() @@ -32,7 +38,6 @@ string(REPLACE "defined(DLL_EXPORT)" "0" OPENJPEG_H "${OPENJPEG_H}") file(WRITE ${CURRENT_PACKAGES_DIR}/include/openjpeg.h "${OPENJPEG_H}") # Handle copyright -file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openjpeg) -file(RENAME ${CURRENT_PACKAGES_DIR}/share/openjpeg/LICENSE ${CURRENT_PACKAGES_DIR}/share/openjpeg/copyright) +file(INSTALL "${CURRENT_PACKAGES_DIR}/share/${PORT}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) vcpkg_copy_pdbs() From e356e85737a5b0ef83f897fecc2c431a53b38eb0 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 12:56:03 +0200 Subject: [PATCH 33/77] minor build fixes --- ports/itk/portfile.cmake | 1 + ports/openjpeg/portfile.cmake | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 1cca4bee609b01..c653a68f62a904 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -34,6 +34,7 @@ if("python" IN_LIST FEATURES) "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib" "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7" "-DPython3_EXECUTABLE:PATH=${PYTHON3}" # Required by more than one feature + "-DCMAKE_DISABLE_FIND_PACKAGE_HDF5=ON" # need to disable HDF5 for PythonWrapping for now. ) #"-DPython3_FIND_ABI=ANY\\\\\\\\\\\\\\\\\\\\\\\\;ANY\\\\\\\\\\\\\\\\\\\\\\\\;ANY" #"-DPython3_VERSION=3.7" diff --git a/ports/openjpeg/portfile.cmake b/ports/openjpeg/portfile.cmake index 4ba3e0f4507a9b..b5d64130f5aef3 100644 --- a/ports/openjpeg/portfile.cmake +++ b/ports/openjpeg/portfile.cmake @@ -38,6 +38,6 @@ string(REPLACE "defined(DLL_EXPORT)" "0" OPENJPEG_H "${OPENJPEG_H}") file(WRITE ${CURRENT_PACKAGES_DIR}/include/openjpeg.h "${OPENJPEG_H}") # Handle copyright -file(INSTALL "${CURRENT_PACKAGES_DIR}/share/${PORT}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) +file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) vcpkg_copy_pdbs() From 12449e4d5a23f3e2fe54da6768578c510ec2b10b Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 13:44:10 +0200 Subject: [PATCH 34/77] [openjpeg] Fix dll location --- ports/openjpeg/dll.location.patch | 32 +++++++++++++++++++++++++++++++ ports/openjpeg/portfile.cmake | 15 ++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 ports/openjpeg/dll.location.patch diff --git a/ports/openjpeg/dll.location.patch b/ports/openjpeg/dll.location.patch new file mode 100644 index 00000000000000..bdc77a5427c31d --- /dev/null +++ b/ports/openjpeg/dll.location.patch @@ -0,0 +1,32 @@ +diff --git a/src/lib/openjp3d/CMakeLists.txt b/src/lib/openjp3d/CMakeLists.txt +index b0469af1f..75048ef13 100644 +--- a/src/lib/openjp3d/CMakeLists.txt ++++ b/src/lib/openjp3d/CMakeLists.txt +@@ -34,8 +34,9 @@ endif() + # Install library + install(TARGETS ${OPENJP3D_LIBRARY_NAME} + EXPORT OpenJP3DTargets +- DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} +- COMPONENT Libraries ++ RUNTIME DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications ++ LIBRARY DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries ++ ARCHIVE DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries + ) + + # Install includes files +diff --git a/src/lib/openmj2/CMakeLists.txt b/src/lib/openmj2/CMakeLists.txt +index 25294b20e..e3acfe8e7 100644 +--- a/src/lib/openmj2/CMakeLists.txt ++++ b/src/lib/openmj2/CMakeLists.txt +@@ -53,8 +53,9 @@ endif() + # Install library + install(TARGETS ${OPENMJ2_LIBRARY_NAME} + EXPORT OpenMJ2Targets +- DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} +- COMPONENT Libraries ++ RUNTIME DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications ++ LIBRARY DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries ++ ARCHIVE DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries + ) + + # Install includes files diff --git a/ports/openjpeg/portfile.cmake b/ports/openjpeg/portfile.cmake index b5d64130f5aef3..fe53a2218ff0a2 100644 --- a/ports/openjpeg/portfile.cmake +++ b/ports/openjpeg/portfile.cmake @@ -4,6 +4,7 @@ vcpkg_from_github( REF v2.3.1 SHA512 339fbc899bddf2393d214df71ed5d6070a3a76b933b1e75576c8a0ae9dfcc4adec40bdc544f599e4b8d0bc173e4e9e7352408497b5b3c9356985605830c26c03 HEAD_REF master + PATCHES dll.location.patch ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS @@ -26,7 +27,19 @@ vcpkg_install_cmake() file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) -vcpkg_fixup_cmake_targets() +if("jpwl" IN_LIST FEATURES) + list(APPEND TOOL_NAMES opj_compress opj_decompress opj_dec_server opj_dump) +endif() +if("mj2" IN_LIST FEATURES) + list(APPEND TOOL_NAMES opj_mj2_compress opj_mj2_decompress opj_mj2_extract opj_mj2_wrap) +endif() +if("jpip" IN_LIST FEATURES) + list(APPEND TOOL_NAMES opj_jpip_addxml opj_jpip_test opj_jpip_transcode) +endif() +if("jp3d" IN_LIST FEATURES) + list(APPEND TOOL_NAMES opj_jp3d_compress opj_jp3d_decompress) +endif() +vcpkg_copy_tools(TOOL_NAMES ${TOOL_NAMES} AUTO_CLEAN) file(READ ${CURRENT_PACKAGES_DIR}/include/openjpeg.h OPENJPEG_H) if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") From f91d4456ba9e18df258375639e22c65996293926 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 13:44:24 +0200 Subject: [PATCH 35/77] fix other issues --- ports/openjpeg/CONTROL | 2 +- ports/openjpeg/portfile.cmake | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ports/openjpeg/CONTROL b/ports/openjpeg/CONTROL index de830778a9ac2e..9b1f51e30fcf15 100644 --- a/ports/openjpeg/CONTROL +++ b/ports/openjpeg/CONTROL @@ -2,7 +2,7 @@ Source: openjpeg Version: 2.3.1-2 Homepage: https://github.com/uclouvain/openjpeg Description: JPEG 2000 image library -Default-Features: jpwl, mj2, jpip, jp3d +Default-Features: mj2, jp3d Feature: jpwl Description: Build optional component jpwl diff --git a/ports/openjpeg/portfile.cmake b/ports/openjpeg/portfile.cmake index fe53a2218ff0a2..f3865172daa1fc 100644 --- a/ports/openjpeg/portfile.cmake +++ b/ports/openjpeg/portfile.cmake @@ -7,6 +7,14 @@ vcpkg_from_github( PATCHES dll.location.patch ) +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + list(APPEND OPTIONS "-DBUILD_SHARED_LIBS=OFF" + "-DBUILD_STATIC_LIBS=ON") +else() + list(APPEND OPTIONS "-DBUILD_SHARED_LIBS=ON" + "-DBUILD_STATIC_LIBS=OFF") +endif() + vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS "jpwl" BUILD_JPWL "mj2" BUILD_MJ2 @@ -18,20 +26,28 @@ vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA OPTIONS -DBUILD_CODEC:BOOL=OFF + -DBUILD_DOC:BOOL=OFF -DOPENJPEG_INSTALL_PACKAGE_DIR=share/openjpeg -DOPENJPEG_INSTALL_INCLUDE_DIR=include + -DEXECUTABLE_OUTPUT_PATH=tools/${PORT} + -DBUILD_PKGCONFIG_FILES=ON ${FEATURE_OPTIONS} ) vcpkg_install_cmake() +vcpkg_fixup_cmake_targets(CONFIG_PATH share/${PORT}) +if(VCPKG_TARGET_IS_WINDOWS) + # TODO: remove m from *.pc files +endif() +vcpkg_fixup_pkgconfig(SYSTEM_LIBRARIES m) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) if("jpwl" IN_LIST FEATURES) - list(APPEND TOOL_NAMES opj_compress opj_decompress opj_dec_server opj_dump) + list(APPEND TOOL_NAMES opj_dec_server opj_jpwl_compress opj_jpwl_decompress) endif() if("mj2" IN_LIST FEATURES) - list(APPEND TOOL_NAMES opj_mj2_compress opj_mj2_decompress opj_mj2_extract opj_mj2_wrap) + list(APPEND TOOL_NAMES opj_compress opj_decompress opj_dump opj_mj2_compress opj_mj2_decompress opj_mj2_extract opj_mj2_wrap) endif() if("jpip" IN_LIST FEATURES) list(APPEND TOOL_NAMES opj_jpip_addxml opj_jpip_test opj_jpip_transcode) From 6f1ab47f501095c780a8d06e82c94c6fd1a73257 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 13:44:36 +0200 Subject: [PATCH 36/77] add rtkcuda --- ports/itk/CONTROL | 4 +++- ports/itk/portfile.cmake | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL index 012fc342877b65..47894b0f188386 100644 --- a/ports/itk/CONTROL +++ b/ports/itk/CONTROL @@ -27,4 +27,6 @@ Build-Depends: tbb Feature: rtk Description: Build RTK Module - +Feature: rtkcuda +Description: Build RTK Module with cuda +Build-Depends: itk[core, rtk, opencl] diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index c653a68f62a904..b1a022504846c3 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -18,7 +18,16 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS "opencl" ITK_USE_GPU "tbb" Module_ITKTBB "rtk" Module_RTK + "rtkcuda" Module_ITKCudaCommon + "rtkcuda" RTK_USE_CUDA + "rtkcuda" CUDA_HAVE_GPU ) +if("rtk" IN_LIST FEATURES) + list(APPEND ADDITIONAL_OPTIONS + "-DREMOTE_GIT_TAG_RTK=v2.1" # Fix RTK version + #"-DRTK_BUILD_APPLICATIONS=OFF" + ) +endif() if("vtk" IN_LIST FEATURES) vcpkg_find_acquire_program(PYTHON3) list(APPEND ADDITIONAL_OPTIONS From 61110b93e534df8b1920831d3299f50a6c0ec17f Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 13:50:16 +0200 Subject: [PATCH 37/77] [openjpeg] remove default features to make arm and uwp platforms happy --- ports/openjpeg/CONTROL | 1 - ports/openjpeg/portfile.cmake | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/ports/openjpeg/CONTROL b/ports/openjpeg/CONTROL index 9b1f51e30fcf15..03fb14be38adf1 100644 --- a/ports/openjpeg/CONTROL +++ b/ports/openjpeg/CONTROL @@ -2,7 +2,6 @@ Source: openjpeg Version: 2.3.1-2 Homepage: https://github.com/uclouvain/openjpeg Description: JPEG 2000 image library -Default-Features: mj2, jp3d Feature: jpwl Description: Build optional component jpwl diff --git a/ports/openjpeg/portfile.cmake b/ports/openjpeg/portfile.cmake index f3865172daa1fc..ed1f6cf5e93a6d 100644 --- a/ports/openjpeg/portfile.cmake +++ b/ports/openjpeg/portfile.cmake @@ -37,7 +37,7 @@ vcpkg_configure_cmake( vcpkg_install_cmake() vcpkg_fixup_cmake_targets(CONFIG_PATH share/${PORT}) if(VCPKG_TARGET_IS_WINDOWS) - # TODO: remove m from *.pc files + # TODO: remove -lm from *.pc files endif() vcpkg_fixup_pkgconfig(SYSTEM_LIBRARIES m) From 6ee5b9362e6eb8e655c10b9d35decdb317e5f689 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 21:48:44 +0200 Subject: [PATCH 38/77] [itk] more dependency fixes --- ports/itk/CONTROL | 2 +- ports/itk/portfile.cmake | 69 +++- ports/itk/wip.patch | 741 ++++++++++++++++++++++++++++++++++++--- 3 files changed, 761 insertions(+), 51 deletions(-) diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL index 47894b0f188386..6431b806084b54 100644 --- a/ports/itk/CONTROL +++ b/ports/itk/CONTROL @@ -2,7 +2,7 @@ Source: itk Version: 5.1.0 Description: Insight Segmentation and Registration Toolkit (ITK) is used for image processing and analysis. Homepage: https://github.com/InsightSoftwareConsortium/ITK -Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg[core,mj2], fftw3[core], gtest, gdcm, icu +Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg[core], fftw3[core], gtest, gdcm, icu Feature: vtk Description: Build ITKVtkGlue module. diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index b1a022504846c3..7ee4b764f99d5b 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -43,7 +43,7 @@ if("python" IN_LIST FEATURES) "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib" "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7" "-DPython3_EXECUTABLE:PATH=${PYTHON3}" # Required by more than one feature - "-DCMAKE_DISABLE_FIND_PACKAGE_HDF5=ON" # need to disable HDF5 for PythonWrapping for now. + #"-DCMAKE_DISABLE_FIND_PACKAGE_HDF5=ON" # need to disable HDF5 for PythonWrapping for now. ) #"-DPython3_FIND_ABI=ANY\\\\\\\\\\\\\\\\\\\\\\\\;ANY\\\\\\\\\\\\\\\\\\\\\\\\;ANY" #"-DPython3_VERSION=3.7" @@ -86,9 +86,18 @@ vcpkg_configure_cmake( -DITK_USE_SYSTEM_FFTW=ON -DITK_USE_SYSTEM_HDF5=ON # HDF5 was problematic in the past -DITK_USE_SYSTEM_GDCM=ON - #-DITK_USE_SYSTEM_DCMTK=ON this option should exist but it does not! + #-DModule_ITKIOJPEG2000=OFF # does not build with openjpeg installed + -DGDCM_USE_SYSTEM_OPENJPEG=ON + -DITK_USE_SYSTEM_OpenJPEG=ON + + -DITK_USE_SYSTEM_DCMTK=ON -DDCMTK_USE_ICU=ON -DITK_USE_SYSTEM_ICU=ON + + #-DITK_USE_SYSTEM_VXL=ON + #-DITK_USE_SYSTEM_CASTXML=ON + #-DITK_USE_SYSTEM_MINC=ON + #-DITK_USE_SYSTEM_SWIG=ON # This should be turned on some day, however for now ITK does download specific versions so it shouldn't spontaneously break -DITK_FORBID_DOWNLOADS=OFF @@ -103,7 +112,7 @@ vcpkg_configure_cmake( #-DModule_IOSTL=ON # example how to turn on a non-default module #-DModule_MorphologicalContourInterpolation=ON # example how to turn on a remote module #-DModule_RLEImage=ON # example how to turn on a remote module - #-DGDCM_USE_SYSTEM_OPENJPEG=ON #Use port openjpeg instead of own third-party + -DITK_WRAP_double=ON -DITK_WRAP_complex_double=ON -DITK_WRAP_covariant_vector_double=ON @@ -162,4 +171,56 @@ file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${ # -- Configuring done # -- Generating done -# -- Build files have been written to: D:/qt2/buildtrees/itk/x64-windows-dbg \ No newline at end of file +# -- Build files have been written to: D:/qt2/buildtrees/itk/x64-windows-dbg + + # D:\qt2\buildtrees\itk\src\d7c02f3c7b-959337cec2\Modules\ThirdParty\GDCM\src\CMakeLists.txt (13 hits) + # Line 29: set(GDCM_USE_SYSTEM_EXPAT ON CACHE INTERNAL "") + # Line 33: set(GDCM_USE_SYSTEM_OPENJPEG OFF CACHE INTERNAL "") + # Line 36: set(GDCM_USE_SYSTEM_ZLIB ON CACHE INTERNAL "") + # Line 47: set(GDCM_USE_SYSTEM_LJPEG OFF CACHE INTERNAL "Use system ljpeg (ijg lib)") + # Line 48: set(GDCM_USE_SYSTEM_OPENSSL OFF CACHE INTERNAL "Use system OpenSSL") + # Line 49: set(GDCM_USE_SYSTEM_PODOFO OFF CACHE INTERNAL "Use system podofo (pdf)") + # Line 50: set(GDCM_USE_SYSTEM_POPPLER OFF CACHE INTERNAL "Use system poppler (pdf)") + # Line 51: set(GDCM_USE_SYSTEM_UUID OFF CACHE INTERNAL "Use system uuid") + # Line 54: set(GDCM_USE_SYSTEM_CHARLS OFF CACHE INTERNAL "") + # Line 55: set(GDCM_USE_SYSTEM_JSON OFF CACHE INTERNAL "") + # Line 56: set(GDCM_USE_SYSTEM_LIBXML2 OFF CACHE INTERNAL "") + # Line 57: set(GDCM_USE_SYSTEM_PAPYRUS3 OFF CACHE INTERNAL "") + # Line 58: set(GDCM_USE_SYSTEM_SOCKETXX OFF CACHE INTERNAL "") + + # D:\qt2\buildtrees\itk\src\d7c02f3c7b-959337cec2\Modules\ThirdParty\GDCM\src\gdcm\CMakeLists.txt (41 hits) + # Line 313: option(GDCM_USE_SYSTEM_ZLIB "Use system zlib" OFF) + # Line 314: option(GDCM_USE_SYSTEM_OPENSSL "Use system OpenSSL" OFF) + # Line 318: option(GDCM_USE_SYSTEM_UUID "Use system uuid" OFF) + # Line 320: option(GDCM_USE_SYSTEM_EXPAT "Use system expat" OFF) + # Line 321: option(GDCM_USE_SYSTEM_JSON "Use system json" OFF) + # Line 322: option(GDCM_USE_SYSTEM_PAPYRUS3 "Use system papyrus3" OFF) + # Line 323: option(GDCM_USE_SYSTEM_SOCKETXX "Use system socket++" OFF) + # Line 324: option(GDCM_USE_SYSTEM_LJPEG "Use system ljpeg (ijg lib)" OFF) + # Line 325: option(GDCM_USE_SYSTEM_OPENJPEG "Use system openjpeg" OFF) + # Line 326: option(GDCM_USE_SYSTEM_CHARLS "Use system CharLS" OFF) + # Line 328: GDCM_USE_SYSTEM_ZLIB + # Line 329: GDCM_USE_SYSTEM_OPENSSL + # Line 330: GDCM_USE_SYSTEM_UUID + # Line 331: GDCM_USE_SYSTEM_EXPAT + # Line 332: GDCM_USE_SYSTEM_JSON + # Line 333: GDCM_USE_SYSTEM_PAPYRUS3 + # Line 334: GDCM_USE_SYSTEM_SOCKETXX + # Line 335: GDCM_USE_SYSTEM_LJPEG + # Line 336: GDCM_USE_SYSTEM_OPENJPEG + # Line 337: GDCM_USE_SYSTEM_CHARLS + # Line 339: option(GDCM_USE_SYSTEM_POPPLER "Use system poppler (pdf)" OFF) + # Line 340: if(GDCM_USE_SYSTEM_POPPLER) + # Line 343: mark_as_advanced(GDCM_USE_SYSTEM_POPPLER) + # Line 345: option(GDCM_USE_SYSTEM_LIBXML2 "Use LibXml2" OFF) + # Line 346: if(GDCM_USE_SYSTEM_LIBXML2) + # Line 349: mark_as_advanced(GDCM_USE_SYSTEM_LIBXML2) + # Line 351: if(GDCM_USE_SYSTEM_LJPEG) + # Line 358: if(GDCM_USE_SYSTEM_CHARLS) + # Line 365: if(GDCM_USE_SYSTEM_OPENJPEG) + # Line 381: option(GDCM_USE_SYSTEM_PVRG "Use system PVRG" OFF) + # Line 382: mark_as_advanced(GDCM_USE_SYSTEM_PVRG) + # Line 383: if(GDCM_USE_SYSTEM_PVRG) + # Line 394: option(GDCM_USE_SYSTEM_KAKADU "Use system KAKADU " ON) + # Line 395: mark_as_advanced(GDCM_USE_SYSTEM_KAKADU) + # Line 396: if(GDCM_USE_SYSTEM_KAKADU) \ No newline at end of file diff --git a/ports/itk/wip.patch b/ports/itk/wip.patch index 02ad646d6bac55..67035f9ed18e73 100644 --- a/ports/itk/wip.patch +++ b/ports/itk/wip.patch @@ -1,66 +1,715 @@ -diff --git a/Modules/ThirdParty/DoubleConversion/CMakeLists.txt b/Modules/ThirdParty/DoubleConversion/CMakeLists.txt -index 16c611fd3..d254e2788 100644 ---- a/Modules/ThirdParty/DoubleConversion/CMakeLists.txt -+++ b/Modules/ThirdParty/DoubleConversion/CMakeLists.txt -@@ -9,7 +9,10 @@ mark_as_advanced(ITK_USE_SYSTEM_DOUBLECONVERSION) - if(ITK_USE_SYSTEM_DOUBLECONVERSION) - find_package(double-conversion REQUIRED) - get_target_property(ITKDoubleConversion_INCLUDE_DIRS double-conversion::double-conversion INTERFACE_INCLUDE_DIRECTORIES) -- get_target_property(ITKDoubleConversion_LIBRARIES double-conversion::double-conversion LOCATION) -+ get_target_property(ITKDoubleConversion_LIBRARY_RELEASE double-conversion::double-conversion LOCATION_RELEASE) -+ get_target_property(ITKDoubleConversion_LIBRARY_DEBUG double-conversion::double-conversion LOCATION_DEBUG) -+ include(SelectLibraryConfigurations) -+ select_library_configurations(ITKDoubleConversion) - else() - set(ITKDoubleConversion_INCLUDE_DIRS - ${ITKDoubleConversion_SOURCE_DIR}/src +diff --git a/CMake/ITKModuleAPI.cmake b/CMake/ITKModuleAPI.cmake +index af64d96dc..809335e6d 100644 +--- a/CMake/ITKModuleAPI.cmake ++++ b/CMake/ITKModuleAPI.cmake +@@ -133,7 +133,7 @@ macro(itk_module_config ns) + endforeach() + unset(_${ns}_USED_MODULES) + +- foreach(v ${ns}_LIBRARIES ${ns}_INCLUDE_DIRS ${ns}_LIBRARY_DIRS ++ foreach(v ${ns}_INCLUDE_DIRS ${ns}_LIBRARY_DIRS + ${ns}_RUNTIME_LIBRARY_DIRS ${ns}_FACTORY_NAMES ${ns}_FACTORY_LIST) + if(${v}) + list(REMOVE_DUPLICATES ${v}) diff --git a/CMake/ITKModuleMacros.cmake b/CMake/ITKModuleMacros.cmake -index da9f3a902..d2d30f906 100644 +index da9f3a902..60420bb0a 100644 --- a/CMake/ITKModuleMacros.cmake +++ b/CMake/ITKModuleMacros.cmake @@ -162,9 +162,6 @@ macro(itk_module_impl) - foreach(dep IN LISTS ITK_MODULE_${itk-module}_DEPENDS) - list(APPEND ${itk-module}_LIBRARIES "${${dep}_LIBRARIES}") - endforeach() + foreach(dep IN LISTS ITK_MODULE_${itk-module}_DEPENDS) + list(APPEND ${itk-module}_LIBRARIES "${${dep}_LIBRARIES}") + endforeach() - if(${itk-module}_LIBRARIES) - list(REMOVE_DUPLICATES ${itk-module}_LIBRARIES) - endif() + endif() + + if(EXISTS ${${itk-module}_SOURCE_DIR}/include) +@@ -302,9 +299,9 @@ macro(itk_module_link_dependencies) + # link to public dependencies + foreach(dep IN LISTS ITK_MODULE_${itk-module}_PUBLIC_DEPENDS) + if(DEFINED ${dep}_LIBRARIES) +- target_link_libraries(${itk-module} LINK_PUBLIC ${${dep}_LIBRARIES}) ++ target_link_libraries(${itk-module} PUBLIC ${${dep}_LIBRARIES}) + elseif(DEFINED ${dep}) +- target_link_libraries(${itk-module} LINK_PUBLIC ${${dep}}) ++ target_link_libraries(${itk-module} PUBLIC ${${dep}}) + else() + message(FATAL_ERROR "Dependency \"${dep}\" not found: could not find [${dep}] or [${dep}_LIBRARIES]") + endif() +@@ -313,9 +310,9 @@ macro(itk_module_link_dependencies) + # link to private dependencies + foreach(dep IN LISTS ITK_MODULE_${itk-module}_PRIVATE_DEPENDS) + if(DEFINED ${dep}_LIBRARIES) +- target_link_libraries(${itk-module} LINK_PRIVATE ${${dep}_LIBRARIES}) ++ target_link_libraries(${itk-module} PRIVATE ${${dep}_LIBRARIES}) + elseif(DEFINED ${dep}) +- target_link_libraries(${itk-module} LINK_PRIVATE ${${dep}}) ++ target_link_libraries(${itk-module} PRIVATE ${${dep}}) + else() + message(FATAL_ERROR "Dependency \"${dep}\" not found: could not find [${dep}] or [${dep}_LIBRARIES]") + endif() +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 45307f42e..b00ffbf21 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -114,7 +114,7 @@ if( CMAKE_HOST_WIN32 AND NOT ITK_SKIP_PATH_LENGTH_CHECKS ) endif() - if(EXISTS ${${itk-module}_SOURCE_DIR}/include) -diff --git a/Modules/IO/HDF5/CMakeLists.txt b/Modules/IO/HDF5/CMakeLists.txt -index ef153626e..f6c474584 100644 ---- a/Modules/IO/HDF5/CMakeLists.txt -+++ b/Modules/IO/HDF5/CMakeLists.txt -@@ -1,3 +1,3 @@ - project(ITKIOHDF5) --set(ITKIOHDF5_LIBRARIES ITKIOHDF5) -+#set(ITKIOHDF5_LIBRARIES ITKIOHDF5) - itk_module_impl() + string( LENGTH "${CMAKE_CURRENT_BINARY_DIR}" n ) +- if( n GREATER 50 ) ++ if( n GREATER 60 ) + message( + FATAL_ERROR + "ITK build directory path length is too long (${n} > 50)." +@@ -577,6 +577,3 @@ add_subdirectory(Utilities/Doxygen) + # all tests have been added that reference the group, so we put it last. + include(ExternalData) + ExternalData_Add_Target(ITKData) +- +-include(FeatureSummary) +-feature_summary(INCLUDE_QUIET_PACKAGES WHAT ALL) +diff --git a/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx b/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx +index 1b1fe9526..0da4aa0c4 100644 +--- a/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx ++++ b/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx +@@ -26,9 +26,9 @@ + + extern "C" + { +-#include "openjpeg.h" +-#include "j2k.h" +-#include "jp2.h" ++#include ++//#include "j2k.h" ++//##include "jp2.h" + } + + +@@ -62,8 +62,7 @@ public: + OPJ_UINT32 m_TileStartX; + OPJ_UINT32 m_TileStartY; + +- OPJ_UINT32 m_NumberOfTilesInX; +- OPJ_UINT32 m_NumberOfTilesInY; ++ OPJ_UINT32 m_NumberOfTiles; + + opj_dparameters_t m_DecompressionParameters; /* decompression parameters */ + }; +@@ -86,8 +85,7 @@ JPEG2000ImageIO::JPEG2000ImageIO() + this->m_Internal->m_TileStartX = 0; + this->m_Internal->m_TileStartY = 0; + +- this->m_Internal->m_NumberOfTilesInX = 0; +- this->m_Internal->m_NumberOfTilesInY = 0; ++ this->m_Internal->m_NumberOfTiles = 0; + + const char * extensions[] = { ".j2k", ".jp2", ".jpt" }; + +@@ -139,22 +137,16 @@ JPEG2000ImageIO::ReadImageInformation() + { + itkDebugMacro(<< "ReadImageInformation()"); + +- FILE * l_file = fopen(this->m_FileName.c_str(), "rb"); +- +- /* decompression parameters */ ++ /* set decoding parameters to default values */ ++ opj_set_default_decoder_parameters(&(this->m_Internal->m_DecompressionParameters)); + +- if (!l_file) ++ opj_stream_t * cio = opj_stream_create_default_file_stream(this->m_FileName.c_str(), true); ++ if (!cio) + { + itkExceptionMacro("JPEG2000ImageIO failed to open file for reading: " << this->GetFileName() << std::endl + << "Reason: " + << itksys::SystemTools::GetLastSystemError()); + } +- +- /* set decoding parameters to default values */ +- opj_set_default_decoder_parameters(&(this->m_Internal->m_DecompressionParameters)); +- +- opj_stream_t * cio = opj_stream_create_default_file_stream(l_file, true); +- + this->m_Internal->m_Dinfo = nullptr; /* handle to a decompressor */ + + opj_image_t * l_image = nullptr; +@@ -187,14 +179,14 @@ JPEG2000ImageIO::ReadImageInformation() + /* JPEG-2000 codestream */ + + /* get a decoder handle */ +- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_J2K); ++ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_J2K); + if (!this->m_Internal->m_Dinfo) + { + opj_stream_destroy(cio); +- fclose(l_file); ++ // fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_decompress(CODEC_J2K) returns nullptr"); ++ << "Reason: opj_create_decompress(OPJ_CODEC_J2K) returns nullptr"); + } + break; + } +@@ -202,14 +194,14 @@ JPEG2000ImageIO::ReadImageInformation() + { + /* JPEG 2000 compressed image data */ + /* get a decoder handle */ +- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_JP2); ++ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_JP2); + if (!this->m_Internal->m_Dinfo) + { + opj_stream_destroy(cio); +- fclose(l_file); ++ // fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_decompress(CODEC_JP2) returns nullptr"); ++ << "Reason: opj_create_decompress(OPJ_CODEC_JP2) returns nullptr"); + } + break; + } +@@ -217,20 +209,19 @@ JPEG2000ImageIO::ReadImageInformation() + { + /* JPEG 2000, JPIP */ + /* get a decoder handle */ +- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_JPT); ++ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_JPT); + if (!this->m_Internal->m_Dinfo) + { + opj_stream_destroy(cio); +- fclose(l_file); ++ // fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_decompress(CODEC_JPT) returns nullptr"); ++ << "Reason: opj_create_decompress(OPJ_CODEC_JPT) returns nullptr"); + } + break; + } + default: + opj_stream_destroy(cio); +- fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl + << "Reason: " +@@ -247,27 +238,11 @@ JPEG2000ImageIO::ReadImageInformation() + << "Reason: opj_setup_decoder returns false"); + } + +- // Image parameters - first tile +- OPJ_INT32 l_tile_x0; +- OPJ_INT32 l_tile_y0; + +- // Image parameters - tile width, height and number of tiles +- OPJ_UINT32 l_tile_width; +- OPJ_UINT32 l_tile_height; +- OPJ_UINT32 l_nb_tiles_x; +- OPJ_UINT32 l_nb_tiles_y; + + itkDebugMacro(<< "Trying to read header now..."); + +- bResult = opj_read_header(this->m_Internal->m_Dinfo, +- &l_image, +- &l_tile_x0, +- &l_tile_y0, +- &l_tile_width, +- &l_tile_height, +- &l_nb_tiles_x, +- &l_nb_tiles_y, +- cio); ++ bResult = opj_read_header(cio, this->m_Internal->m_Dinfo, &l_image); + + if (!bResult) + { +@@ -283,14 +258,22 @@ JPEG2000ImageIO::ReadImageInformation() + << "Reason: Error whle reading image header"); + } + ++ // Image parameters - first tile ++ OPJ_INT32 l_tile_x0=l_image->x0; ++ OPJ_INT32 l_tile_y0=l_image->y0; ++ ++ // Image parameters - tile width, height and number of tiles ++ OPJ_UINT32 l_tile_width=l_image->x1; ++ OPJ_UINT32 l_tile_height=l_image->y1; ++ OPJ_UINT32 l_nb_tiles=l_image->numcomps; ++ + this->m_Internal->m_TileStartX = l_tile_x0; + this->m_Internal->m_TileStartY = l_tile_y0; + + this->m_Internal->m_TileWidth = l_tile_width; + this->m_Internal->m_TileHeight = l_tile_height; + +- this->m_Internal->m_NumberOfTilesInX = l_nb_tiles_x; +- this->m_Internal->m_NumberOfTilesInY = l_nb_tiles_y; ++ this->m_Internal->m_NumberOfTiles = l_nb_tiles; + + + itkDebugMacro(<< "Number of Components = " << l_image->numcomps); +@@ -319,7 +302,7 @@ JPEG2000ImageIO::ReadImageInformation() + this->SetPixelType(IOPixelEnum::SCALAR); + break; + case 3: +- if (l_image->color_space != CLRSPC_SRGB) ++ if (l_image->color_space != OPJ_CLRSPC_SRGB) + { + itkWarningMacro(<< "file does not specify color space, assuming sRGB"); + } +@@ -335,8 +318,7 @@ JPEG2000ImageIO::ReadImageInformation() + itkDebugMacro(<< "Tile Start Y = " << this->m_Internal->m_TileStartY); + itkDebugMacro(<< "Tile Width = " << this->m_Internal->m_TileWidth); + itkDebugMacro(<< "Tile Height = " << this->m_Internal->m_TileHeight); +- itkDebugMacro(<< "Number of Tiles X = " << this->m_Internal->m_NumberOfTilesInX); +- itkDebugMacro(<< "Number of Tiles Y = " << this->m_Internal->m_NumberOfTilesInY); ++ itkDebugMacro(<< "Number of Tiles = " << this->m_Internal->m_NumberOfTiles); + + itkDebugMacro(<< "image->x1 = " << l_image->x1); + itkDebugMacro(<< "image->y1 = " << l_image->y1); +@@ -349,7 +331,6 @@ JPEG2000ImageIO::ReadImageInformation() + + /* close the byte stream */ + opj_stream_destroy(cio); +- fclose(l_file); + + if (this->m_Internal->m_Dinfo) + { +@@ -368,16 +349,7 @@ JPEG2000ImageIO::Read(void * buffer) + { + itkDebugMacro(<< "JPEG2000ImageIO::Read() Begin"); + +- FILE * l_file = fopen(this->m_FileName.c_str(), "rb"); +- +- if (!l_file) +- { +- itkExceptionMacro("JPEG2000ImageIO failed to open file for reading: " << this->GetFileName() << std::endl +- << "Reason: " +- << itksys::SystemTools::GetLastSystemError()); +- } +- +- opj_stream_t * l_stream = opj_stream_create_default_file_stream(l_file, true); ++ opj_stream_t * l_stream = opj_stream_create_default_file_stream(this->m_FileName.c_str(), true); + if (!l_stream) + { + itkExceptionMacro("JPEG2000ImageIO failed to read file: " +@@ -397,12 +369,13 @@ JPEG2000ImageIO::Read(void * buffer) + { + /* JPEG-2000 codestream */ + /* get a decoder handle */ +- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_J2K); ++ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_J2K); + if (!this->m_Internal->m_Dinfo) + { ++ opj_stream_destroy(l_stream); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_decompress(CODEC_J2K) returns nullptr"); ++ << "Reason: opj_create_decompress(OPJ_CODEC_J2K) returns nullptr"); + } + break; + } +@@ -410,12 +383,13 @@ JPEG2000ImageIO::Read(void * buffer) + { + /* JPEG 2000 compressed image data */ + /* get a decoder handle */ +- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_JP2); ++ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_JP2); + if (!this->m_Internal->m_Dinfo) + { ++ opj_stream_destroy(l_stream); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_decompress(CODEC_JP2) returns nullptr"); ++ << "Reason: opj_create_decompress(OPJ_CODEC_JP2) returns nullptr"); + } + break; + } +@@ -423,17 +397,18 @@ JPEG2000ImageIO::Read(void * buffer) + { + /* JPEG 2000, JPIP */ + /* get a decoder handle */ +- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_JPT); ++ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_JPT); + if (!this->m_Internal->m_Dinfo) + { ++ opj_stream_destroy(l_stream); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_decompress(CODEC_JPT) returns nullptr"); ++ << "Reason: opj_create_decompress(OPJ_CODEC_JPT) returns nullptr"); + } + break; + } + default: +- fclose(l_file); ++ opj_stream_destroy(l_stream); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl + << "Reason: " +@@ -448,29 +423,13 @@ JPEG2000ImageIO::Read(void * buffer) + << "Reason: opj_setup_decoder returns false"); + } + +- OPJ_INT32 l_tile_x0, l_tile_y0; +- +- OPJ_UINT32 l_tile_width; +- OPJ_UINT32 l_tile_height; +- OPJ_UINT32 l_nb_tiles_x; +- OPJ_UINT32 l_nb_tiles_y; +- +- bool bResult = opj_read_header(this->m_Internal->m_Dinfo, +- &l_image, +- &l_tile_x0, +- &l_tile_y0, +- &l_tile_width, +- &l_tile_height, +- &l_nb_tiles_x, +- &l_nb_tiles_y, +- l_stream); ++ bool bResult = opj_read_header(l_stream, this->m_Internal->m_Dinfo,&l_image); + + if (!bResult) + { + opj_destroy_codec(this->m_Internal->m_Dinfo); + this->m_Internal->m_Dinfo = nullptr; + opj_stream_destroy(l_stream); +- fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl + << "Reason: opj_read_header returns false"); + } +@@ -499,7 +458,7 @@ JPEG2000ImageIO::Read(void * buffer) + itkDebugMacro(<< "p_end_x = " << p_end_x); + itkDebugMacro(<< "p_end_y = " << p_end_y); + +- bResult = opj_set_decode_area(this->m_Internal->m_Dinfo, p_start_x, p_start_y, p_end_x, p_end_y); ++ bResult = opj_set_decode_area(this->m_Internal->m_Dinfo, l_image, p_start_x, p_start_y, p_end_x, p_end_y); + + itkDebugMacro(<< "opj_set_decode_area() after"); + +@@ -508,7 +467,6 @@ JPEG2000ImageIO::Read(void * buffer) + opj_destroy_codec(this->m_Internal->m_Dinfo); + this->m_Internal->m_Dinfo = nullptr; + opj_stream_destroy(l_stream); +- fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl + << "Reason: opj_set_decode_area returns false"); + } +@@ -525,13 +483,13 @@ JPEG2000ImageIO::Read(void * buffer) + + OPJ_UINT32 l_max_data_size = 1000; + +- bool l_go_on = true; ++ int l_go_on = true; // should be OBJ_BOOL + + auto * l_data = (OPJ_BYTE *)malloc(1000); + + while (l_go_on) + { +- bool tileHeaderRead = opj_read_tile_header(this->m_Internal->m_Dinfo, ++ bool tileHeaderRead = opj_read_tile_header(this->m_Internal->m_Dinfo, l_stream, + &l_tile_index, + &l_data_size, + &l_current_tile_x0, +@@ -539,14 +497,12 @@ JPEG2000ImageIO::Read(void * buffer) + &l_current_tile_x1, + &l_current_tile_y1, + &l_nb_comps, +- &l_go_on, +- l_stream); ++ &l_go_on); + + if (!tileHeaderRead) + { + free(l_data); + opj_stream_destroy(l_stream); +- fclose(l_file); + opj_destroy_codec(this->m_Internal->m_Dinfo); + opj_image_destroy(l_image); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl +@@ -571,7 +527,6 @@ JPEG2000ImageIO::Read(void * buffer) + if (!l_data) + { + opj_stream_destroy(l_stream); +- fclose(l_file); + opj_destroy_codec(this->m_Internal->m_Dinfo); + opj_image_destroy(l_image); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl +@@ -590,7 +545,6 @@ JPEG2000ImageIO::Read(void * buffer) + { + free(l_data); + opj_stream_destroy(l_stream); +- fclose(l_file); + opj_destroy_codec(this->m_Internal->m_Dinfo); + opj_image_destroy(l_image); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl +@@ -654,7 +608,6 @@ JPEG2000ImageIO::Read(void * buffer) + { + free(l_data); + opj_stream_destroy(l_stream); +- fclose(l_file); + opj_destroy_codec(this->m_Internal->m_Dinfo); + opj_image_destroy(l_image); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl +@@ -666,14 +619,12 @@ JPEG2000ImageIO::Read(void * buffer) + opj_destroy_codec(this->m_Internal->m_Dinfo); + this->m_Internal->m_Dinfo = nullptr; + opj_stream_destroy(l_stream); +- fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl + << "Reason: error whle reading image"); + } + + /* close the byte stream */ + opj_stream_destroy(l_stream); +- fclose(l_file); + + if (this->m_Internal->m_Dinfo) + { +@@ -840,13 +791,13 @@ JPEG2000ImageIO ::Write(const void * buffer) + + parameters.numresolution = numberOfResolutions; + +- OPJ_COLOR_SPACE color_space = CLRSPC_GRAY; ++ OPJ_COLOR_SPACE color_space = OPJ_CLRSPC_GRAY; + opj_image_cmptparm_t cmptparms[3]; + + if (this->GetNumberOfComponents() == 3) + { + +- color_space = (this->GetPixelType() == IOPixelEnum::RGB) ? CLRSPC_SRGB : CLRSPC_UNSPECIFIED; ++ color_space = (this->GetPixelType() == IOPixelEnum::RGB) ? OPJ_CLRSPC_SRGB : OPJ_CLRSPC_UNSPECIFIED; + + /* initialize image components */ + memset(&cmptparms[0], 0, 3 * sizeof(opj_image_cmptparm_t)); +@@ -864,7 +815,7 @@ JPEG2000ImageIO ::Write(const void * buffer) + + if (this->GetNumberOfComponents() == 1) + { +- color_space = CLRSPC_GRAY; ++ color_space = OPJ_CLRSPC_GRAY; + + /* initialize image components */ + memset(&cmptparms[0], 0, sizeof(opj_image_cmptparm_t)); +@@ -940,32 +891,32 @@ JPEG2000ImageIO ::Write(const void * buffer) + opj_codec_t * cinfo = nullptr; + if (extension == ".j2k") + { +- cinfo = opj_create_compress(CODEC_J2K); ++ cinfo = opj_create_compress(OPJ_CODEC_J2K); + if (!cinfo) + { + itkExceptionMacro("JPEG2000ImageIO failed to write file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_compress(CODEC_J2K) returns nullptr"); ++ << "Reason: opj_create_compress(OPJ_CODEC_J2K) returns nullptr"); + } + } + else if (extension == ".jp2") + { +- cinfo = opj_create_compress(CODEC_JP2); ++ cinfo = opj_create_compress(OPJ_CODEC_JP2); + if (!cinfo) + { + itkExceptionMacro("JPEG2000ImageIO failed to write file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_compress(CODEC_JP2) returns nullptr"); ++ << "Reason: opj_create_compress(OPJ_CODEC_JP2) returns nullptr"); + } + } + else if (extension == ".jpt") + { +- cinfo = opj_create_compress(CODEC_JPT); ++ cinfo = opj_create_compress(OPJ_CODEC_JPT); + if (!cinfo) + { + itkExceptionMacro("JPEG2000ImageIO failed to write file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_compress(CODEC_JPT) returns nullptr"); ++ << "Reason: opj_create_compress(OPJ_CODEC_JPT) returns nullptr"); + } + } + else +@@ -989,17 +940,9 @@ JPEG2000ImageIO ::Write(const void * buffer) + << "Reason: opj_setup_encoder returns false"); + } + +- FILE * l_file = fopen(parameters.outfile, "wb"); +- if (!l_file) +- { +- itkExceptionMacro("JPEG2000ImageIO failed to open file for writing: " << this->GetFileName() << std::endl +- << "Reason: " +- << itksys::SystemTools::GetLastSystemError()); +- } +- + /* open a byte stream for writing */ + /* allocate memory for all tiles */ +- opj_stream_t * cio = opj_stream_create_default_file_stream(l_file, false); ++ opj_stream_t * cio = opj_stream_create_default_file_stream(parameters.outfile, false); + if (!cio) + { + itkExceptionMacro("JPEG2000ImageIO failed to write file: " +@@ -1017,8 +960,7 @@ JPEG2000ImageIO ::Write(const void * buffer) + if (!bSuccess) + { + opj_stream_destroy(cio); +- fclose(l_file); +- itkExceptionMacro("JPEG2000ImageIO failed to write file: " << this->GetFileName() << std::endl ++ itkExceptionMacro("JPEG2000ImageIO failed to write file: " << this->GetFileName() << std::endl + << "Reason: opj_start_compress returns false"); + } + +@@ -1026,7 +968,6 @@ JPEG2000ImageIO ::Write(const void * buffer) + if (!bSuccess) + { + opj_stream_destroy(cio); +- fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to write file: " << this->GetFileName() << std::endl + << "Reason: opj_encode returns false"); + } +@@ -1035,14 +976,12 @@ JPEG2000ImageIO ::Write(const void * buffer) + if (!bSuccess) + { + opj_stream_destroy(cio); +- fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to write file: " << this->GetFileName() << std::endl + << "Reason: opj_end_compress returns false"); + } + + /* close and free the byte stream */ + opj_stream_destroy(cio); +- fclose(l_file); + + /* free remaining compression structures */ + opj_destroy_codec(cinfo); +diff --git a/Modules/ThirdParty/DoubleConversion/CMakeLists.txt b/Modules/ThirdParty/DoubleConversion/CMakeLists.txt +index 16c611fd3..13978724c 100644 +--- a/Modules/ThirdParty/DoubleConversion/CMakeLists.txt ++++ b/Modules/ThirdParty/DoubleConversion/CMakeLists.txt +@@ -9,7 +9,10 @@ mark_as_advanced(ITK_USE_SYSTEM_DOUBLECONVERSION) + if(ITK_USE_SYSTEM_DOUBLECONVERSION) + find_package(double-conversion REQUIRED) + get_target_property(ITKDoubleConversion_INCLUDE_DIRS double-conversion::double-conversion INTERFACE_INCLUDE_DIRECTORIES) +- get_target_property(ITKDoubleConversion_LIBRARIES double-conversion::double-conversion LOCATION) ++ get_target_property(ITKDoubleConversion_LIBRARY_RELEASE double-conversion::double-conversion LOCATION_RELEASE) ++ get_target_property(ITKDoubleConversion_LIBRARY_DEBUG double-conversion::double-conversion LOCATION_DEBUG) ++ include(SelectLibraryConfigurations) ++ select_library_configurations(ITKDoubleConversion) + else() + set(ITKDoubleConversion_INCLUDE_DIRS + ${ITKDoubleConversion_SOURCE_DIR}/src diff --git a/Modules/ThirdParty/HDF5/CMakeLists.txt b/Modules/ThirdParty/HDF5/CMakeLists.txt -index a700ecdfb..a66399be9 100644 +index a700ecdfb..0a683a52b 100644 --- a/Modules/ThirdParty/HDF5/CMakeLists.txt +++ b/Modules/ThirdParty/HDF5/CMakeLists.txt @@ -25,11 +25,11 @@ endif() - ") - endif() - + ") + endif() + - set(ITKHDF5_LIBRARIES ) - if(BUILD_SHARED_LIBS) - list(APPEND ITKHDF5_LIBRARIES ${HDF5_C_SHARED_LIBRARY} ${HDF5_CXX_SHARED_LIBRARY}) -+ set(ITKHDF5_LIBRARIES) -+ if(HDF5_BUILD_SHARED_LIBS) -+ list(APPEND ITKHDF5_LIBRARIES hdf5::hdf5_cpp-shared hdf5::hdf5-shared) - else() ++ set(ITKHDF5_LIBRARIES) ++ if(HDF5_BUILD_SHARED_LIBS) ++ list(APPEND ITKHDF5_LIBRARIES hdf5::hdf5_cpp-shared hdf5::hdf5-shared) + else() - list(APPEND ITKHDF5_LIBRARIES ${HDF5_C_STATIC_LIBRARY} ${HDF5_CXX_STATIC_LIBRARY}) -+ list(APPEND ITKHDF5_LIBRARIES hdf5::hdf5_cpp-static hdf5::hdf5-static) - endif() - - set(ITKHDF5_INCLUDE_DIRS ++ list(APPEND ITKHDF5_LIBRARIES hdf5::hdf5_cpp-static hdf5::hdf5-static) + endif() + + set(ITKHDF5_INCLUDE_DIRS @@ -67,3 +67,5 @@ install(FILES ${ITKHDF5_BINARY_DIR}/src/itk_hdf5.h - DESTINATION ${ITKHDF5_INSTALL_INCLUDE_DIR} - COMPONENT Development - ) -+ + DESTINATION ${ITKHDF5_INSTALL_INCLUDE_DIR} + COMPONENT Development + ) ++ +message(STATUS "ITKHDF5_LIBRARIES:${ITKHDF5_LIBRARIES}") \ No newline at end of file +diff --git a/Modules/ThirdParty/OpenJPEG/CMakeLists.txt b/Modules/ThirdParty/OpenJPEG/CMakeLists.txt +index 103eaa9dd..eb8989135 100644 +--- a/Modules/ThirdParty/OpenJPEG/CMakeLists.txt ++++ b/Modules/ThirdParty/OpenJPEG/CMakeLists.txt +@@ -1,12 +1,25 @@ + project(ITKOpenJPEG) + set(ITKOpenJPEG_THIRD_PARTY 1) + +-set(ITKOpenJPEG_INCLUDE_DIRS +- ${ITKOpenJPEG_BINARY_DIR}/src/openjpeg +- ${ITKOpenJPEG_SOURCE_DIR}/src/openjpeg +- ) +-set(ITKOpenJPEG_LIBRARIES itkopenjpeg) +-set(ITK_LIBRARY_PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS FALSE) ++if(ITK_USE_SYSTEM_OpenJPEG) ++ find_package(OpenJPEG REQUIRED) ++ if(TARGET openjp2) ++ set(ITKOpenJPEG_LIBRARIES ${OPENJPEG_LIBRARIES}) ++ else() ++ message(FATAL_ERROR "OpenJPEG target openjp2 missing!") ++ endif() ++ set(ITKOpenJPEG_INCLUDE_DIRS ++ ${ITKOpenJPEG_BINARY_DIR}/src/openjpeg ++ ${ITKOpenJPEG_SOURCE_DIR}/src/openjpeg ++ ) ++else() ++ set(ITKOpenJPEG_INCLUDE_DIRS ++ ${ITKOpenJPEG_BINARY_DIR}/src/openjpeg ++ ${ITKOpenJPEG_SOURCE_DIR}/src/openjpeg ++ ) ++ set(ITKOpenJPEG_LIBRARIES itkopenjpeg) ++ set(ITK_LIBRARY_PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS FALSE) ++endif() + + itk_module_impl() + +diff --git a/Wrapping/Generators/Python/CMakeLists.txt b/Wrapping/Generators/Python/CMakeLists.txt +index cf627eb5e..135fa6074 100644 +--- a/Wrapping/Generators/Python/CMakeLists.txt ++++ b/Wrapping/Generators/Python/CMakeLists.txt +@@ -469,8 +469,8 @@ ${DO_NOT_WAIT_FOR_THREADS_DECLS} + endif() + + # Link the modules together +- target_link_libraries(${lib} LINK_PUBLIC ${WRAPPER_LIBRARY_LINK_LIBRARIES}) +- itk_target_link_libraries_with_dynamic_lookup(${lib} LINK_PUBLIC ${PYTHON_LIBRARY}) ++ target_link_libraries(${lib} PUBLIC ${WRAPPER_LIBRARY_LINK_LIBRARIES}) ++ itk_target_link_libraries_with_dynamic_lookup(${lib} PUBLIC ${PYTHON_LIBRARY}) + + if(USE_COMPILER_HIDDEN_VISIBILITY) + # Prefer to use target properties supported by newer cmake +@@ -484,7 +484,7 @@ ${DO_NOT_WAIT_FOR_THREADS_DECLS} + add_dependencies(${lib} ${WRAPPER_LIBRARY_NAME}Doxygen) + endif() + if(${module_prefix}_WRAP_EXPLICIT AND NOT ${WRAPPER_LIBRARY_NAME} STREQUAL ITKPyBase) +- target_link_libraries(${lib} LINK_PUBLIC ${WRAPPER_LIBRARY_NAME}Explicit) ++ target_link_libraries(${lib} PUBLIC ${WRAPPER_LIBRARY_NAME}Explicit) + add_dependencies(${lib} ${WRAPPER_LIBRARY_NAME}Explicit) + endif() + set(_component_module "") +diff --git a/Wrapping/TypedefMacros.cmake b/Wrapping/TypedefMacros.cmake +index e6f8d0bf3..6c000dba8 100644 +--- a/Wrapping/TypedefMacros.cmake ++++ b/Wrapping/TypedefMacros.cmake +@@ -57,13 +57,21 @@ macro(itk_wrap_module library_name) + + # WRAPPER_LIBRARY_DEPENDS. List of names of other wrapper libraries that + # define symbols used by this wrapper library. ++ message(STATUS "ITK_MODULE_${library_name}_DEPENDS:${ITK_MODULE_${library_name}_DEPENDS}") ++ message(STATUS "WRAP_ITK_MODULES:${WRAP_ITK_MODULES}") + INTERSECTION(WRAPPER_LIBRARY_DEPENDS "${ITK_MODULE_${library_name}_DEPENDS}" "${WRAP_ITK_MODULES}") + # set(WRAPPER_LIBRARY_DEPENDS ${ITK_MODULE_${library_name}_DEPENDS}) +- ++ message(STATUS "WRAPPER_LIBRARY_DEPENDS:${WRAPPER_LIBRARY_DEPENDS}") + # WRAPPER_LIBRARY_LINK_LIBRARIES. List of other libraries that should + # be linked to the wrapper library. +- set(WRAPPER_LIBRARY_LINK_LIBRARIES ${ITK_LIBRARIES} ${${itk-module}_LIBRARIES}) +- ++ set(WRAPPER_LIBRARY_LINK_LIBRARIES ${ITK_LIBRARIES} ${${library_name}_LIBRARIES}) ++ message(STATUS "ITK_LIBRARIES:${ITK_LIBRARIES}") ++ message(STATUS "${library_name}_LIBRARIES:${${library_name}_LIBRARIES}") ++ foreach(_dep IN LISTS WRAPPER_LIBRARY_DEPENDS) ++ list(APPEND WRAPPER_LIBRARY_LINK_LIBRARIES ${${_dep}_LIBRARIES}) ++ ++ endforeach() ++ message(STATUS "${library_name}_LIBRARIES:${${library_name}_LIBRARIES}") + # WRAPPER_SUBMODULE_ORDER. List of *.wrap submodules in the source dir + # that should be included/wrapped before the rest in the given order. + # Just the submodule group name is needed, not the full path or file name. From ec0c216fb5d63bc37dce629484e7f511ce35756a Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 22:30:15 +0200 Subject: [PATCH 39/77] [openjpeg] fix no tools case --- ports/openjpeg/portfile.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ports/openjpeg/portfile.cmake b/ports/openjpeg/portfile.cmake index ed1f6cf5e93a6d..03e1c1d4d67f45 100644 --- a/ports/openjpeg/portfile.cmake +++ b/ports/openjpeg/portfile.cmake @@ -43,6 +43,7 @@ vcpkg_fixup_pkgconfig(SYSTEM_LIBRARIES m) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +set(TOOL_NAMES) if("jpwl" IN_LIST FEATURES) list(APPEND TOOL_NAMES opj_dec_server opj_jpwl_compress opj_jpwl_decompress) endif() @@ -55,8 +56,9 @@ endif() if("jp3d" IN_LIST FEATURES) list(APPEND TOOL_NAMES opj_jp3d_compress opj_jp3d_decompress) endif() -vcpkg_copy_tools(TOOL_NAMES ${TOOL_NAMES} AUTO_CLEAN) - +if(TOOL_NAMES) + vcpkg_copy_tools(TOOL_NAMES ${TOOL_NAMES} AUTO_CLEAN) +endif() file(READ ${CURRENT_PACKAGES_DIR}/include/openjpeg.h OPENJPEG_H) if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") string(REPLACE "defined(OPJ_STATIC)" "1" OPENJPEG_H "${OPENJPEG_H}") From bfe78534ec2d8986a494fe63e8a573870560265d Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 May 2020 23:12:25 +0200 Subject: [PATCH 40/77] [itk] fix wip patch --- ports/itk/wip.patch | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/ports/itk/wip.patch b/ports/itk/wip.patch index 67035f9ed18e73..7a8b51cf8aadd2 100644 --- a/ports/itk/wip.patch +++ b/ports/itk/wip.patch @@ -49,26 +49,6 @@ index da9f3a902..60420bb0a 100644 else() message(FATAL_ERROR "Dependency \"${dep}\" not found: could not find [${dep}] or [${dep}_LIBRARIES]") endif() -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 45307f42e..b00ffbf21 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -114,7 +114,7 @@ if( CMAKE_HOST_WIN32 AND NOT ITK_SKIP_PATH_LENGTH_CHECKS ) - endif() - - string( LENGTH "${CMAKE_CURRENT_BINARY_DIR}" n ) -- if( n GREATER 50 ) -+ if( n GREATER 60 ) - message( - FATAL_ERROR - "ITK build directory path length is too long (${n} > 50)." -@@ -577,6 +577,3 @@ add_subdirectory(Utilities/Doxygen) - # all tests have been added that reference the group, so we put it last. - include(ExternalData) - ExternalData_Add_Target(ITKData) -- --include(FeatureSummary) --feature_summary(INCLUDE_QUIET_PACKAGES WHAT ALL) diff --git a/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx b/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx index 1b1fe9526..0da4aa0c4 100644 --- a/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx From eae6d9c46e14f13e9a896bf0e69f656f7c562978 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 10:40:05 +0200 Subject: [PATCH 41/77] [itk] split up patches & cleanup & and move rtk tools if build --- ports/itk/CONTROL | 6 +- ports/itk/double-conversion.patch | 16 + ports/itk/hdf5.patch | 20 ++ ports/itk/jpeg.patch | 547 ++++++++++++++++++++++++++++++ ports/itk/portfile.cmake | 85 +++-- ports/itk/var_libraries.patch | 27 ++ ports/itk/wrapping.patch | 29 ++ 7 files changed, 705 insertions(+), 25 deletions(-) create mode 100644 ports/itk/double-conversion.patch create mode 100644 ports/itk/hdf5.patch create mode 100644 ports/itk/jpeg.patch create mode 100644 ports/itk/var_libraries.patch create mode 100644 ports/itk/wrapping.patch diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL index 6431b806084b54..9a29226ef1e675 100644 --- a/ports/itk/CONTROL +++ b/ports/itk/CONTROL @@ -27,6 +27,10 @@ Build-Depends: tbb Feature: rtk Description: Build RTK Module +Feature: rtktools +Description: Build RTK with tools +Build-Depends: itk[core, rtk] + Feature: rtkcuda Description: Build RTK Module with cuda -Build-Depends: itk[core, rtk, opencl] +Build-Depends: itk[core, rtk, opencl], cuda diff --git a/ports/itk/double-conversion.patch b/ports/itk/double-conversion.patch new file mode 100644 index 00000000000000..636dd8c4c7d816 --- /dev/null +++ b/ports/itk/double-conversion.patch @@ -0,0 +1,16 @@ +diff --git a/Modules/ThirdParty/DoubleConversion/CMakeLists.txt b/Modules/ThirdParty/DoubleConversion/CMakeLists.txt +index 16c611fd3..13978724c 100644 +--- a/Modules/ThirdParty/DoubleConversion/CMakeLists.txt ++++ b/Modules/ThirdParty/DoubleConversion/CMakeLists.txt +@@ -9,7 +9,10 @@ mark_as_advanced(ITK_USE_SYSTEM_DOUBLECONVERSION) + if(ITK_USE_SYSTEM_DOUBLECONVERSION) + find_package(double-conversion REQUIRED) + get_target_property(ITKDoubleConversion_INCLUDE_DIRS double-conversion::double-conversion INTERFACE_INCLUDE_DIRECTORIES) +- get_target_property(ITKDoubleConversion_LIBRARIES double-conversion::double-conversion LOCATION) ++ get_target_property(ITKDoubleConversion_LIBRARY_RELEASE double-conversion::double-conversion LOCATION_RELEASE) ++ get_target_property(ITKDoubleConversion_LIBRARY_DEBUG double-conversion::double-conversion LOCATION_DEBUG) ++ include(SelectLibraryConfigurations) ++ select_library_configurations(ITKDoubleConversion) + else() + set(ITKDoubleConversion_INCLUDE_DIRS + ${ITKDoubleConversion_SOURCE_DIR}/src diff --git a/ports/itk/hdf5.patch b/ports/itk/hdf5.patch new file mode 100644 index 00000000000000..091594cda0e933 --- /dev/null +++ b/ports/itk/hdf5.patch @@ -0,0 +1,20 @@ +diff --git a/Modules/ThirdParty/HDF5/CMakeLists.txt b/Modules/ThirdParty/HDF5/CMakeLists.txt +index a700ecdfb..0a683a52b 100644 +--- a/Modules/ThirdParty/HDF5/CMakeLists.txt ++++ b/Modules/ThirdParty/HDF5/CMakeLists.txt +@@ -25,11 +25,11 @@ endif() + ") + endif() + +- set(ITKHDF5_LIBRARIES ) +- if(BUILD_SHARED_LIBS) +- list(APPEND ITKHDF5_LIBRARIES ${HDF5_C_SHARED_LIBRARY} ${HDF5_CXX_SHARED_LIBRARY}) ++ set(ITKHDF5_LIBRARIES) ++ if(HDF5_BUILD_SHARED_LIBS) ++ list(APPEND ITKHDF5_LIBRARIES hdf5::hdf5_cpp-shared hdf5::hdf5-shared) + else() +- list(APPEND ITKHDF5_LIBRARIES ${HDF5_C_STATIC_LIBRARY} ${HDF5_CXX_STATIC_LIBRARY}) ++ list(APPEND ITKHDF5_LIBRARIES hdf5::hdf5_cpp-static hdf5::hdf5-static) + endif() + + set(ITKHDF5_INCLUDE_DIRS diff --git a/ports/itk/jpeg.patch b/ports/itk/jpeg.patch new file mode 100644 index 00000000000000..841500370e3d0a --- /dev/null +++ b/ports/itk/jpeg.patch @@ -0,0 +1,547 @@ +diff --git a/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx b/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx +index 1b1fe9526..0da4aa0c4 100644 +--- a/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx ++++ b/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx +@@ -26,9 +26,9 @@ + + extern "C" + { +-#include "openjpeg.h" +-#include "j2k.h" +-#include "jp2.h" ++#include ++//#include "j2k.h" ++//##include "jp2.h" + } + + +@@ -62,8 +62,7 @@ public: + OPJ_UINT32 m_TileStartX; + OPJ_UINT32 m_TileStartY; + +- OPJ_UINT32 m_NumberOfTilesInX; +- OPJ_UINT32 m_NumberOfTilesInY; ++ OPJ_UINT32 m_NumberOfTiles; + + opj_dparameters_t m_DecompressionParameters; /* decompression parameters */ + }; +@@ -86,8 +85,7 @@ JPEG2000ImageIO::JPEG2000ImageIO() + this->m_Internal->m_TileStartX = 0; + this->m_Internal->m_TileStartY = 0; + +- this->m_Internal->m_NumberOfTilesInX = 0; +- this->m_Internal->m_NumberOfTilesInY = 0; ++ this->m_Internal->m_NumberOfTiles = 0; + + const char * extensions[] = { ".j2k", ".jp2", ".jpt" }; + +@@ -139,22 +137,16 @@ JPEG2000ImageIO::ReadImageInformation() + { + itkDebugMacro(<< "ReadImageInformation()"); + +- FILE * l_file = fopen(this->m_FileName.c_str(), "rb"); +- +- /* decompression parameters */ ++ /* set decoding parameters to default values */ ++ opj_set_default_decoder_parameters(&(this->m_Internal->m_DecompressionParameters)); + +- if (!l_file) ++ opj_stream_t * cio = opj_stream_create_default_file_stream(this->m_FileName.c_str(), true); ++ if (!cio) + { + itkExceptionMacro("JPEG2000ImageIO failed to open file for reading: " << this->GetFileName() << std::endl + << "Reason: " + << itksys::SystemTools::GetLastSystemError()); + } +- +- /* set decoding parameters to default values */ +- opj_set_default_decoder_parameters(&(this->m_Internal->m_DecompressionParameters)); +- +- opj_stream_t * cio = opj_stream_create_default_file_stream(l_file, true); +- + this->m_Internal->m_Dinfo = nullptr; /* handle to a decompressor */ + + opj_image_t * l_image = nullptr; +@@ -187,14 +179,14 @@ JPEG2000ImageIO::ReadImageInformation() + /* JPEG-2000 codestream */ + + /* get a decoder handle */ +- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_J2K); ++ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_J2K); + if (!this->m_Internal->m_Dinfo) + { + opj_stream_destroy(cio); +- fclose(l_file); ++ // fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_decompress(CODEC_J2K) returns nullptr"); ++ << "Reason: opj_create_decompress(OPJ_CODEC_J2K) returns nullptr"); + } + break; + } +@@ -202,14 +194,14 @@ JPEG2000ImageIO::ReadImageInformation() + { + /* JPEG 2000 compressed image data */ + /* get a decoder handle */ +- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_JP2); ++ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_JP2); + if (!this->m_Internal->m_Dinfo) + { + opj_stream_destroy(cio); +- fclose(l_file); ++ // fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_decompress(CODEC_JP2) returns nullptr"); ++ << "Reason: opj_create_decompress(OPJ_CODEC_JP2) returns nullptr"); + } + break; + } +@@ -217,20 +209,19 @@ JPEG2000ImageIO::ReadImageInformation() + { + /* JPEG 2000, JPIP */ + /* get a decoder handle */ +- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_JPT); ++ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_JPT); + if (!this->m_Internal->m_Dinfo) + { + opj_stream_destroy(cio); +- fclose(l_file); ++ // fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_decompress(CODEC_JPT) returns nullptr"); ++ << "Reason: opj_create_decompress(OPJ_CODEC_JPT) returns nullptr"); + } + break; + } + default: + opj_stream_destroy(cio); +- fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl + << "Reason: " +@@ -247,27 +238,11 @@ JPEG2000ImageIO::ReadImageInformation() + << "Reason: opj_setup_decoder returns false"); + } + +- // Image parameters - first tile +- OPJ_INT32 l_tile_x0; +- OPJ_INT32 l_tile_y0; + +- // Image parameters - tile width, height and number of tiles +- OPJ_UINT32 l_tile_width; +- OPJ_UINT32 l_tile_height; +- OPJ_UINT32 l_nb_tiles_x; +- OPJ_UINT32 l_nb_tiles_y; + + itkDebugMacro(<< "Trying to read header now..."); + +- bResult = opj_read_header(this->m_Internal->m_Dinfo, +- &l_image, +- &l_tile_x0, +- &l_tile_y0, +- &l_tile_width, +- &l_tile_height, +- &l_nb_tiles_x, +- &l_nb_tiles_y, +- cio); ++ bResult = opj_read_header(cio, this->m_Internal->m_Dinfo, &l_image); + + if (!bResult) + { +@@ -283,14 +258,22 @@ JPEG2000ImageIO::ReadImageInformation() + << "Reason: Error whle reading image header"); + } + ++ // Image parameters - first tile ++ OPJ_INT32 l_tile_x0=l_image->x0; ++ OPJ_INT32 l_tile_y0=l_image->y0; ++ ++ // Image parameters - tile width, height and number of tiles ++ OPJ_UINT32 l_tile_width=l_image->x1; ++ OPJ_UINT32 l_tile_height=l_image->y1; ++ OPJ_UINT32 l_nb_tiles=l_image->numcomps; ++ + this->m_Internal->m_TileStartX = l_tile_x0; + this->m_Internal->m_TileStartY = l_tile_y0; + + this->m_Internal->m_TileWidth = l_tile_width; + this->m_Internal->m_TileHeight = l_tile_height; + +- this->m_Internal->m_NumberOfTilesInX = l_nb_tiles_x; +- this->m_Internal->m_NumberOfTilesInY = l_nb_tiles_y; ++ this->m_Internal->m_NumberOfTiles = l_nb_tiles; + + + itkDebugMacro(<< "Number of Components = " << l_image->numcomps); +@@ -319,7 +302,7 @@ JPEG2000ImageIO::ReadImageInformation() + this->SetPixelType(IOPixelEnum::SCALAR); + break; + case 3: +- if (l_image->color_space != CLRSPC_SRGB) ++ if (l_image->color_space != OPJ_CLRSPC_SRGB) + { + itkWarningMacro(<< "file does not specify color space, assuming sRGB"); + } +@@ -335,8 +318,7 @@ JPEG2000ImageIO::ReadImageInformation() + itkDebugMacro(<< "Tile Start Y = " << this->m_Internal->m_TileStartY); + itkDebugMacro(<< "Tile Width = " << this->m_Internal->m_TileWidth); + itkDebugMacro(<< "Tile Height = " << this->m_Internal->m_TileHeight); +- itkDebugMacro(<< "Number of Tiles X = " << this->m_Internal->m_NumberOfTilesInX); +- itkDebugMacro(<< "Number of Tiles Y = " << this->m_Internal->m_NumberOfTilesInY); ++ itkDebugMacro(<< "Number of Tiles = " << this->m_Internal->m_NumberOfTiles); + + itkDebugMacro(<< "image->x1 = " << l_image->x1); + itkDebugMacro(<< "image->y1 = " << l_image->y1); +@@ -349,7 +331,6 @@ JPEG2000ImageIO::ReadImageInformation() + + /* close the byte stream */ + opj_stream_destroy(cio); +- fclose(l_file); + + if (this->m_Internal->m_Dinfo) + { +@@ -368,16 +349,7 @@ JPEG2000ImageIO::Read(void * buffer) + { + itkDebugMacro(<< "JPEG2000ImageIO::Read() Begin"); + +- FILE * l_file = fopen(this->m_FileName.c_str(), "rb"); +- +- if (!l_file) +- { +- itkExceptionMacro("JPEG2000ImageIO failed to open file for reading: " << this->GetFileName() << std::endl +- << "Reason: " +- << itksys::SystemTools::GetLastSystemError()); +- } +- +- opj_stream_t * l_stream = opj_stream_create_default_file_stream(l_file, true); ++ opj_stream_t * l_stream = opj_stream_create_default_file_stream(this->m_FileName.c_str(), true); + if (!l_stream) + { + itkExceptionMacro("JPEG2000ImageIO failed to read file: " +@@ -397,12 +369,13 @@ JPEG2000ImageIO::Read(void * buffer) + { + /* JPEG-2000 codestream */ + /* get a decoder handle */ +- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_J2K); ++ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_J2K); + if (!this->m_Internal->m_Dinfo) + { ++ opj_stream_destroy(l_stream); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_decompress(CODEC_J2K) returns nullptr"); ++ << "Reason: opj_create_decompress(OPJ_CODEC_J2K) returns nullptr"); + } + break; + } +@@ -410,12 +383,13 @@ JPEG2000ImageIO::Read(void * buffer) + { + /* JPEG 2000 compressed image data */ + /* get a decoder handle */ +- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_JP2); ++ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_JP2); + if (!this->m_Internal->m_Dinfo) + { ++ opj_stream_destroy(l_stream); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_decompress(CODEC_JP2) returns nullptr"); ++ << "Reason: opj_create_decompress(OPJ_CODEC_JP2) returns nullptr"); + } + break; + } +@@ -423,17 +397,18 @@ JPEG2000ImageIO::Read(void * buffer) + { + /* JPEG 2000, JPIP */ + /* get a decoder handle */ +- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_JPT); ++ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_JPT); + if (!this->m_Internal->m_Dinfo) + { ++ opj_stream_destroy(l_stream); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_decompress(CODEC_JPT) returns nullptr"); ++ << "Reason: opj_create_decompress(OPJ_CODEC_JPT) returns nullptr"); + } + break; + } + default: +- fclose(l_file); ++ opj_stream_destroy(l_stream); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " + << this->GetFileName() << std::endl + << "Reason: " +@@ -448,29 +423,13 @@ JPEG2000ImageIO::Read(void * buffer) + << "Reason: opj_setup_decoder returns false"); + } + +- OPJ_INT32 l_tile_x0, l_tile_y0; +- +- OPJ_UINT32 l_tile_width; +- OPJ_UINT32 l_tile_height; +- OPJ_UINT32 l_nb_tiles_x; +- OPJ_UINT32 l_nb_tiles_y; +- +- bool bResult = opj_read_header(this->m_Internal->m_Dinfo, +- &l_image, +- &l_tile_x0, +- &l_tile_y0, +- &l_tile_width, +- &l_tile_height, +- &l_nb_tiles_x, +- &l_nb_tiles_y, +- l_stream); ++ bool bResult = opj_read_header(l_stream, this->m_Internal->m_Dinfo,&l_image); + + if (!bResult) + { + opj_destroy_codec(this->m_Internal->m_Dinfo); + this->m_Internal->m_Dinfo = nullptr; + opj_stream_destroy(l_stream); +- fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl + << "Reason: opj_read_header returns false"); + } +@@ -499,7 +458,7 @@ JPEG2000ImageIO::Read(void * buffer) + itkDebugMacro(<< "p_end_x = " << p_end_x); + itkDebugMacro(<< "p_end_y = " << p_end_y); + +- bResult = opj_set_decode_area(this->m_Internal->m_Dinfo, p_start_x, p_start_y, p_end_x, p_end_y); ++ bResult = opj_set_decode_area(this->m_Internal->m_Dinfo, l_image, p_start_x, p_start_y, p_end_x, p_end_y); + + itkDebugMacro(<< "opj_set_decode_area() after"); + +@@ -508,7 +467,6 @@ JPEG2000ImageIO::Read(void * buffer) + opj_destroy_codec(this->m_Internal->m_Dinfo); + this->m_Internal->m_Dinfo = nullptr; + opj_stream_destroy(l_stream); +- fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl + << "Reason: opj_set_decode_area returns false"); + } +@@ -525,13 +483,13 @@ JPEG2000ImageIO::Read(void * buffer) + + OPJ_UINT32 l_max_data_size = 1000; + +- bool l_go_on = true; ++ int l_go_on = true; // should be OBJ_BOOL + + auto * l_data = (OPJ_BYTE *)malloc(1000); + + while (l_go_on) + { +- bool tileHeaderRead = opj_read_tile_header(this->m_Internal->m_Dinfo, ++ bool tileHeaderRead = opj_read_tile_header(this->m_Internal->m_Dinfo, l_stream, + &l_tile_index, + &l_data_size, + &l_current_tile_x0, +@@ -539,14 +497,12 @@ JPEG2000ImageIO::Read(void * buffer) + &l_current_tile_x1, + &l_current_tile_y1, + &l_nb_comps, +- &l_go_on, +- l_stream); ++ &l_go_on); + + if (!tileHeaderRead) + { + free(l_data); + opj_stream_destroy(l_stream); +- fclose(l_file); + opj_destroy_codec(this->m_Internal->m_Dinfo); + opj_image_destroy(l_image); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl +@@ -571,7 +527,6 @@ JPEG2000ImageIO::Read(void * buffer) + if (!l_data) + { + opj_stream_destroy(l_stream); +- fclose(l_file); + opj_destroy_codec(this->m_Internal->m_Dinfo); + opj_image_destroy(l_image); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl +@@ -590,7 +545,6 @@ JPEG2000ImageIO::Read(void * buffer) + { + free(l_data); + opj_stream_destroy(l_stream); +- fclose(l_file); + opj_destroy_codec(this->m_Internal->m_Dinfo); + opj_image_destroy(l_image); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl +@@ -654,7 +608,6 @@ JPEG2000ImageIO::Read(void * buffer) + { + free(l_data); + opj_stream_destroy(l_stream); +- fclose(l_file); + opj_destroy_codec(this->m_Internal->m_Dinfo); + opj_image_destroy(l_image); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl +@@ -666,14 +619,12 @@ JPEG2000ImageIO::Read(void * buffer) + opj_destroy_codec(this->m_Internal->m_Dinfo); + this->m_Internal->m_Dinfo = nullptr; + opj_stream_destroy(l_stream); +- fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl + << "Reason: error whle reading image"); + } + + /* close the byte stream */ + opj_stream_destroy(l_stream); +- fclose(l_file); + + if (this->m_Internal->m_Dinfo) + { +@@ -840,13 +791,13 @@ JPEG2000ImageIO ::Write(const void * buffer) + + parameters.numresolution = numberOfResolutions; + +- OPJ_COLOR_SPACE color_space = CLRSPC_GRAY; ++ OPJ_COLOR_SPACE color_space = OPJ_CLRSPC_GRAY; + opj_image_cmptparm_t cmptparms[3]; + + if (this->GetNumberOfComponents() == 3) + { + +- color_space = (this->GetPixelType() == IOPixelEnum::RGB) ? CLRSPC_SRGB : CLRSPC_UNSPECIFIED; ++ color_space = (this->GetPixelType() == IOPixelEnum::RGB) ? OPJ_CLRSPC_SRGB : OPJ_CLRSPC_UNSPECIFIED; + + /* initialize image components */ + memset(&cmptparms[0], 0, 3 * sizeof(opj_image_cmptparm_t)); +@@ -864,7 +815,7 @@ JPEG2000ImageIO ::Write(const void * buffer) + + if (this->GetNumberOfComponents() == 1) + { +- color_space = CLRSPC_GRAY; ++ color_space = OPJ_CLRSPC_GRAY; + + /* initialize image components */ + memset(&cmptparms[0], 0, sizeof(opj_image_cmptparm_t)); +@@ -940,32 +891,32 @@ JPEG2000ImageIO ::Write(const void * buffer) + opj_codec_t * cinfo = nullptr; + if (extension == ".j2k") + { +- cinfo = opj_create_compress(CODEC_J2K); ++ cinfo = opj_create_compress(OPJ_CODEC_J2K); + if (!cinfo) + { + itkExceptionMacro("JPEG2000ImageIO failed to write file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_compress(CODEC_J2K) returns nullptr"); ++ << "Reason: opj_create_compress(OPJ_CODEC_J2K) returns nullptr"); + } + } + else if (extension == ".jp2") + { +- cinfo = opj_create_compress(CODEC_JP2); ++ cinfo = opj_create_compress(OPJ_CODEC_JP2); + if (!cinfo) + { + itkExceptionMacro("JPEG2000ImageIO failed to write file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_compress(CODEC_JP2) returns nullptr"); ++ << "Reason: opj_create_compress(OPJ_CODEC_JP2) returns nullptr"); + } + } + else if (extension == ".jpt") + { +- cinfo = opj_create_compress(CODEC_JPT); ++ cinfo = opj_create_compress(OPJ_CODEC_JPT); + if (!cinfo) + { + itkExceptionMacro("JPEG2000ImageIO failed to write file: " + << this->GetFileName() << std::endl +- << "Reason: opj_create_compress(CODEC_JPT) returns nullptr"); ++ << "Reason: opj_create_compress(OPJ_CODEC_JPT) returns nullptr"); + } + } + else +@@ -989,17 +940,9 @@ JPEG2000ImageIO ::Write(const void * buffer) + << "Reason: opj_setup_encoder returns false"); + } + +- FILE * l_file = fopen(parameters.outfile, "wb"); +- if (!l_file) +- { +- itkExceptionMacro("JPEG2000ImageIO failed to open file for writing: " << this->GetFileName() << std::endl +- << "Reason: " +- << itksys::SystemTools::GetLastSystemError()); +- } +- + /* open a byte stream for writing */ + /* allocate memory for all tiles */ +- opj_stream_t * cio = opj_stream_create_default_file_stream(l_file, false); ++ opj_stream_t * cio = opj_stream_create_default_file_stream(parameters.outfile, false); + if (!cio) + { + itkExceptionMacro("JPEG2000ImageIO failed to write file: " +@@ -1017,8 +960,7 @@ JPEG2000ImageIO ::Write(const void * buffer) + if (!bSuccess) + { + opj_stream_destroy(cio); +- fclose(l_file); +- itkExceptionMacro("JPEG2000ImageIO failed to write file: " << this->GetFileName() << std::endl ++ itkExceptionMacro("JPEG2000ImageIO failed to write file: " << this->GetFileName() << std::endl + << "Reason: opj_start_compress returns false"); + } + +@@ -1026,7 +968,6 @@ JPEG2000ImageIO ::Write(const void * buffer) + if (!bSuccess) + { + opj_stream_destroy(cio); +- fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to write file: " << this->GetFileName() << std::endl + << "Reason: opj_encode returns false"); + } +@@ -1035,14 +976,12 @@ JPEG2000ImageIO ::Write(const void * buffer) + if (!bSuccess) + { + opj_stream_destroy(cio); +- fclose(l_file); + itkExceptionMacro("JPEG2000ImageIO failed to write file: " << this->GetFileName() << std::endl + << "Reason: opj_end_compress returns false"); + } + + /* close and free the byte stream */ + opj_stream_destroy(cio); +- fclose(l_file); + + /* free remaining compression structures */ + opj_destroy_codec(cinfo); +diff --git a/Modules/ThirdParty/OpenJPEG/CMakeLists.txt b/Modules/ThirdParty/OpenJPEG/CMakeLists.txt +index 103eaa9dd..eb8989135 100644 +--- a/Modules/ThirdParty/OpenJPEG/CMakeLists.txt ++++ b/Modules/ThirdParty/OpenJPEG/CMakeLists.txt +@@ -1,12 +1,25 @@ + project(ITKOpenJPEG) + set(ITKOpenJPEG_THIRD_PARTY 1) + +-set(ITKOpenJPEG_INCLUDE_DIRS +- ${ITKOpenJPEG_BINARY_DIR}/src/openjpeg +- ${ITKOpenJPEG_SOURCE_DIR}/src/openjpeg +- ) +-set(ITKOpenJPEG_LIBRARIES itkopenjpeg) +-set(ITK_LIBRARY_PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS FALSE) ++if(ITK_USE_SYSTEM_OpenJPEG) ++ find_package(OpenJPEG REQUIRED) ++ if(TARGET openjp2) ++ set(ITKOpenJPEG_LIBRARIES ${OPENJPEG_LIBRARIES}) ++ else() ++ message(FATAL_ERROR "OpenJPEG target openjp2 missing!") ++ endif() ++ set(ITKOpenJPEG_INCLUDE_DIRS ++ ${ITKOpenJPEG_BINARY_DIR}/src/openjpeg ++ ${ITKOpenJPEG_SOURCE_DIR}/src/openjpeg ++ ) ++else() ++ set(ITKOpenJPEG_INCLUDE_DIRS ++ ${ITKOpenJPEG_BINARY_DIR}/src/openjpeg ++ ${ITKOpenJPEG_SOURCE_DIR}/src/openjpeg ++ ) ++ set(ITKOpenJPEG_LIBRARIES itkopenjpeg) ++ set(ITK_LIBRARY_PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS FALSE) ++endif() + + itk_module_impl() diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 7ee4b764f99d5b..9f9dce2e4a668c 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -7,9 +7,12 @@ vcpkg_from_github( SHA512 c358449870d580aeb10e32f8be0ca39e8a76d8dc06fda973788fafb5971333e546611c399190be49d40f5f3c18a1105d9699eef271a560aff25ce168a396926e HEAD_REF master PATCHES - #fix_openjpeg_search.patch - #fix_libminc_config_path.patch - wip.patch + #wip.patch + hdf5.patch + double-conversion.patch + jpeg.patch + var_libraries.patch + wrapping.patch ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS @@ -20,14 +23,47 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS "rtk" Module_RTK "rtkcuda" Module_ITKCudaCommon "rtkcuda" RTK_USE_CUDA - "rtkcuda" CUDA_HAVE_GPU + "rtkcuda" CUDA_HAVE_GPU + "rtktools" RTK_BUILD_APPLICATIONS ) + +if("cufftw" IN_LIST FEATURES) + message(STATUS "Warning: feature cufftw does currently not compile and requires and upstream fix!") + # Alternativly set CUFFT_LIB and CUFFTW_LIB + if(WIN32) + file(TO_CMAKE_PATH "$ENV{CUDA_PATH}" CUDA_PATH) + set(CUDA_LIB_PATH "${CUDA_PATH}") + + if(VCPKG_TARGET_ARCHITECTURE STREQUAL x64) + string(APPEND CUDA_LIB_PATH "/lib/x64") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) + string(APPEND CUDA_LIB_PATH "/lib/Win32") + else() + message(FATAL_ERROR "Architecture ${VCPKG_TARGET_ARCHITECTURE} not supported !") + endif() + + list(APPEND ADDITIONAL_OPTIONS + "-DFFTW_LIB_SEARCHPATH=${CUDA_LIB_PATH}" + "-DFFTW_INCLUDE_PATH=${CUDA_PATH}/include" + ) + endif() +endif() if("rtk" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS - "-DREMOTE_GIT_TAG_RTK=v2.1" # Fix RTK version - #"-DRTK_BUILD_APPLICATIONS=OFF" + "-DModule_RTK_GIT_TAG=6c5d5c2a25a2dd15d3b5ae1d2b9e6f8360b2208d" # RTK latest versions (08.05.2020) ) endif() +if("rtktools" IN_LIST FEATURES) + list(APPEND TOOL_NAMES rtkadmmtotalvariation rtkadmmwavelets rtkamsterdamshroud rtkbackprojections rtkbioscangeometry rtkcheckimagequality rtkconjugategradient + rtkdigisensgeometry rtkdrawgeometricphantom rtkdrawshepploganphantom rtkdualenergysimplexdecomposition rtkelektasynergygeometry rtkextractphasesignal + rtkextractshroudsignal rtkfdk rtkfdktwodweights rtkfieldofview rtkforwardprojections rtkfourdconjugategradient rtkfourdfdk rtkfourdrooster rtkfourdsart + rtkgaincorrection rtki0estimation rtkimagxgeometry rtkiterativefdk rtklagcorrection rtklastdimensionl0gradientdenoising rtklut rtkmaskcollimation rtkmcrooster + rtkmotioncompensatedfourdconjugategradient rtkorageometry rtkosem rtkoverlayphaseandshroud rtkparkershortscanweighting rtkprojectgeometricphantom + rtkprojectionmatrix rtkprojections rtkprojectshepploganphantom rtkramp rtkrayboxintersection rtkrayquadricintersection rtkregularizedconjugategradient + rtksart rtkscatterglarecorrection rtksimulatedgeometry rtkspectraldenoiseprojections rtkspectralforwardmodel rtkspectralonestep rtkspectralrooster rtkspectralsimplexdecomposition + rtksubselect rtktotalnuclearvariationdenoising rtktotalvariationdenoising rtktutorialapplication rtkvarianobigeometry rtkvarianprobeamgeometry rtkvectorconjugategradient + rtkwangdisplaceddetectorweighting rtkwarpedbackprojectsequence rtkwarpedforwardprojectsequence rtkwaveletsdenoising rtkxradgeometry) +endif() if("vtk" IN_LIST FEATURES) vcpkg_find_acquire_program(PYTHON3) list(APPEND ADDITIONAL_OPTIONS @@ -35,7 +71,11 @@ if("vtk" IN_LIST FEATURES) ) endif() if("python" IN_LIST FEATURES) + message(STATUS "${PORT} builds a long time (>1h) with python wrappers enabled!") vcpkg_find_acquire_program(PYTHON3) + vcpkg_find_acquire_program(SWIG) # Swig is only required for wrapping! + get_filename_component(SWIG_DIR "${SWIG}" DIRECTORY) + vcpkg_add_to_path(${SWIG_DIR}) list(APPEND ADDITIONAL_OPTIONS -DITK_WRAP_PYTHON=ON -DPython3_FIND_REGISTRY=NEVER @@ -43,15 +83,14 @@ if("python" IN_LIST FEATURES) "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib" "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7" "-DPython3_EXECUTABLE:PATH=${PYTHON3}" # Required by more than one feature - #"-DCMAKE_DISABLE_FIND_PACKAGE_HDF5=ON" # need to disable HDF5 for PythonWrapping for now. + "-DSWIG_EXECUTABLE=${SWIG}" + "-DSWIG_DIR=${SWIG_DIR}" ) - #"-DPython3_FIND_ABI=ANY\\\\\\\\\\\\\\\\\\\\\\\\;ANY\\\\\\\\\\\\\\\\\\\\\\\\;ANY" - #"-DPython3_VERSION=3.7" - #-DPython3_LIBRARIES="debug\\\\\\\\\\\\\\\\\\\\\\\\;${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib\\\\\\\\\\\\\\\\\\\\\\\\;optimized\\\\\\\\\\\\\\\\\\\\\\\\;${CURRENT_INSTALLED_DIR}/lib/python37.lib" + # Due to ITKs internal shenanigans with the variables ...... list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib") list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/python37.lib") - #ITK_PYTHON_SITE_PACKAGES_SUFFIX should be set to the install dir of the site-packages + #ITK_PYTHON_SITE_PACKAGES_SUFFIX should be set to the install dir of the site-packages within vcpkg endif() set(USE_64BITS_IDS OFF) @@ -84,23 +123,17 @@ vcpkg_configure_cmake( -DITK_USE_SYSTEM_ZLIB=ON -DITK_USE_SYSTEM_EIGEN=ON -DITK_USE_SYSTEM_FFTW=ON - -DITK_USE_SYSTEM_HDF5=ON # HDF5 was problematic in the past + -DITK_USE_SYSTEM_HDF5=ON # HDF5 was problematic in the past and still is. ITK still has not figured out how to do it correctly! -DITK_USE_SYSTEM_GDCM=ON - #-DModule_ITKIOJPEG2000=OFF # does not build with openjpeg installed - -DGDCM_USE_SYSTEM_OPENJPEG=ON - -DITK_USE_SYSTEM_OpenJPEG=ON - + -DITK_USE_SYSTEM_OpenJPEG=ON # Added by VCPKG -DITK_USE_SYSTEM_DCMTK=ON -DDCMTK_USE_ICU=ON - -DITK_USE_SYSTEM_ICU=ON - + -DITK_USE_SYSTEM_ICU=ON #-DITK_USE_SYSTEM_VXL=ON - #-DITK_USE_SYSTEM_CASTXML=ON - #-DITK_USE_SYSTEM_MINC=ON - #-DITK_USE_SYSTEM_SWIG=ON - # This should be turned on some day, however for now ITK does download specific versions so it shouldn't spontaneously break - -DITK_FORBID_DOWNLOADS=OFF - + #-DITK_USE_SYSTEM_CASTXML=ON # needs to be added to vcpkg_find_acquire_program https://data.kitware.com/api/v1/file/hashsum/sha512/b8b6f0aff11fe89ab2fcd1949cc75f2c2378a7bc408827a004396deb5ff5a9976bffe8a597f8db1b74c886ea39eb905e610dce8f5bd7586a4d6c196d7349da8d/download + #-DITK_USE_SYSTEM_MINC=ON # port needs to be added to VCPKG + -DITK_USE_SYSTEM_SWIG=ON + -DITK_FORBID_DOWNLOADS=OFF # This should be turned on some day, however for now ITK does download specific versions so it shouldn't spontaneously break. Remote Modules would probably break with this! -DINSTALL_GTEST=OFF -DITK_USE_SYSTEM_GOOGLETEST=ON -DEXECUTABLE_OUTPUT_PATH=tools/${PORT} @@ -128,6 +161,10 @@ vcpkg_install_cmake() vcpkg_copy_pdbs() vcpkg_fixup_cmake_targets() +if(TOOL_NAMES) + vcpkg_coyp_tools(TOOL_NAMES ${TOOL_NAMES}) +endif() + set(_files itkLIBMINCConfig UseitkLIBMINC) foreach(_file IN LISTS _files) file(RENAME "${CURRENT_PACKAGES_DIR}/lib/cmake/${_file}.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/${_file}.cmake") diff --git a/ports/itk/var_libraries.patch b/ports/itk/var_libraries.patch new file mode 100644 index 00000000000000..738fa980f131ca --- /dev/null +++ b/ports/itk/var_libraries.patch @@ -0,0 +1,27 @@ +diff --git a/CMake/ITKModuleMacros.cmake b/CMake/ITKModuleMacros.cmake +index da9f3a902..60420bb0a 100644 +--- a/CMake/ITKModuleMacros.cmake ++++ b/CMake/ITKModuleMacros.cmake +@@ -162,9 +162,6 @@ macro(itk_module_impl) + foreach(dep IN LISTS ITK_MODULE_${itk-module}_DEPENDS) + list(APPEND ${itk-module}_LIBRARIES "${${dep}_LIBRARIES}") + endforeach() +- if(${itk-module}_LIBRARIES) +- list(REMOVE_DUPLICATES ${itk-module}_LIBRARIES) +- endif() + endif() + + if(EXISTS ${${itk-module}_SOURCE_DIR}/include) +diff --git a/CMake/ITKModuleAPI.cmake b/CMake/ITKModuleAPI.cmake +index af64d96dc..809335e6d 100644 +--- a/CMake/ITKModuleAPI.cmake ++++ b/CMake/ITKModuleAPI.cmake +@@ -133,7 +133,7 @@ macro(itk_module_config ns) + endforeach() + unset(_${ns}_USED_MODULES) + +- foreach(v ${ns}_LIBRARIES ${ns}_INCLUDE_DIRS ${ns}_LIBRARY_DIRS ++ foreach(v ${ns}_INCLUDE_DIRS ${ns}_LIBRARY_DIRS + ${ns}_RUNTIME_LIBRARY_DIRS ${ns}_FACTORY_NAMES ${ns}_FACTORY_LIST) + if(${v}) + list(REMOVE_DUPLICATES ${v}) diff --git a/ports/itk/wrapping.patch b/ports/itk/wrapping.patch new file mode 100644 index 00000000000000..2bc1f2966f3a39 --- /dev/null +++ b/ports/itk/wrapping.patch @@ -0,0 +1,29 @@ +diff --git a/Wrapping/TypedefMacros.cmake b/Wrapping/TypedefMacros.cmake +index e6f8d0bf3..6c000dba8 100644 +--- a/Wrapping/TypedefMacros.cmake ++++ b/Wrapping/TypedefMacros.cmake +@@ -57,13 +57,21 @@ macro(itk_wrap_module library_name) + + # WRAPPER_LIBRARY_DEPENDS. List of names of other wrapper libraries that + # define symbols used by this wrapper library. ++ #message(STATUS "ITK_MODULE_${library_name}_DEPENDS:${ITK_MODULE_${library_name}_DEPENDS}") ++ #message(STATUS "WRAP_ITK_MODULES:${WRAP_ITK_MODULES}") + INTERSECTION(WRAPPER_LIBRARY_DEPENDS "${ITK_MODULE_${library_name}_DEPENDS}" "${WRAP_ITK_MODULES}") + # set(WRAPPER_LIBRARY_DEPENDS ${ITK_MODULE_${library_name}_DEPENDS}) +- ++ #message(STATUS "WRAPPER_LIBRARY_DEPENDS:${WRAPPER_LIBRARY_DEPENDS}") + # WRAPPER_LIBRARY_LINK_LIBRARIES. List of other libraries that should + # be linked to the wrapper library. +- set(WRAPPER_LIBRARY_LINK_LIBRARIES ${ITK_LIBRARIES} ${${itk-module}_LIBRARIES}) +- ++ set(WRAPPER_LIBRARY_LINK_LIBRARIES ${ITK_LIBRARIES} ${${library_name}_LIBRARIES}) ++ #message(STATUS "ITK_LIBRARIES:${ITK_LIBRARIES}") ++ #message(STATUS "${library_name}_LIBRARIES:${${library_name}_LIBRARIES}") ++ #foreach(_dep IN LISTS WRAPPER_LIBRARY_DEPENDS) ++ # list(APPEND WRAPPER_LIBRARY_LINK_LIBRARIES ${${_dep}_LIBRARIES}) ++ # ++ #endforeach() ++ #message(STATUS "${library_name}_LIBRARIES:${${library_name}_LIBRARIES}") + # WRAPPER_SUBMODULE_ORDER. List of *.wrap submodules in the source dir + # that should be included/wrapped before the rest in the given order. + # Just the submodule group name is needed, not the full path or file name. From a44c9808c58ac5755bb99cc73d42e88d86478080 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 11:14:49 +0200 Subject: [PATCH 42/77] [itk] fix patch and remove old and wip patch --- ports/itk/fix_libminc_config_path.patch | 13 - ports/itk/fix_openjpeg_search.patch | 13 - ports/itk/jpeg.patch | 1 + ports/itk/wip.patch | 695 ------------------------ 4 files changed, 1 insertion(+), 721 deletions(-) delete mode 100644 ports/itk/fix_libminc_config_path.patch delete mode 100644 ports/itk/fix_openjpeg_search.patch delete mode 100644 ports/itk/wip.patch diff --git a/ports/itk/fix_libminc_config_path.patch b/ports/itk/fix_libminc_config_path.patch deleted file mode 100644 index 3ff305d4be9776..00000000000000 --- a/ports/itk/fix_libminc_config_path.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/Modules/ThirdParty/MINC/src/libminc/CMakeLists.txt b/Modules/ThirdParty/MINC/src/libminc/CMakeLists.txt -index 305b2c63..63f81a53 100644 ---- a/Modules/ThirdParty/MINC/src/libminc/CMakeLists.txt -+++ b/Modules/ThirdParty/MINC/src/libminc/CMakeLists.txt -@@ -550,7 +550,7 @@ IF(LIBMINC_INSTALL_LIB_DIR AND NOT LIBMINC_INSTALL_NO_DEVELOPMENT) - ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Use${LIBMINC_EXTERNAL_LIB_PREFIX}LIBMINC.cmake - ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${LIBMINC_EXTERNAL_LIB_PREFIX}LIBMINCConfig.cmake - DESTINATION -- ${LIBMINC_INSTALL_LIB_DIR}/cmake -+ share/itk - COMPONENT Development) - ENDIF(LIBMINC_INSTALL_LIB_DIR AND NOT LIBMINC_INSTALL_NO_DEVELOPMENT) - diff --git a/ports/itk/fix_openjpeg_search.patch b/ports/itk/fix_openjpeg_search.patch deleted file mode 100644 index d17a1ab8405f03..00000000000000 --- a/ports/itk/fix_openjpeg_search.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/Modules/ThirdParty/GDCM/src/gdcm/CMakeLists.txt b/Modules/ThirdParty/GDCM/src/gdcm/CMakeLists.txt -index 6ac16ab6..4638f13c 100644 ---- a/Modules/ThirdParty/GDCM/src/gdcm/CMakeLists.txt -+++ b/Modules/ThirdParty/GDCM/src/gdcm/CMakeLists.txt -@@ -373,7 +373,7 @@ else() - endif() - - if(GDCM_USE_SYSTEM_OPENJPEG) -- find_package(OpenJPEG 2.0.0 REQUIRED) -+ find_package(OpenJPEG REQUIRED) - set(GDCM_OPENJPEG_LIBRARIES ${OPENJPEG_LIBRARIES}) - else() - set(GDCM_OPENJPEG_LIBRARIES gdcmopenjp2) diff --git a/ports/itk/jpeg.patch b/ports/itk/jpeg.patch index 841500370e3d0a..0fe1f34c9c097c 100644 --- a/ports/itk/jpeg.patch +++ b/ports/itk/jpeg.patch @@ -545,3 +545,4 @@ index 103eaa9dd..eb8989135 100644 +endif() itk_module_impl() + diff --git a/ports/itk/wip.patch b/ports/itk/wip.patch deleted file mode 100644 index 7a8b51cf8aadd2..00000000000000 --- a/ports/itk/wip.patch +++ /dev/null @@ -1,695 +0,0 @@ -diff --git a/CMake/ITKModuleAPI.cmake b/CMake/ITKModuleAPI.cmake -index af64d96dc..809335e6d 100644 ---- a/CMake/ITKModuleAPI.cmake -+++ b/CMake/ITKModuleAPI.cmake -@@ -133,7 +133,7 @@ macro(itk_module_config ns) - endforeach() - unset(_${ns}_USED_MODULES) - -- foreach(v ${ns}_LIBRARIES ${ns}_INCLUDE_DIRS ${ns}_LIBRARY_DIRS -+ foreach(v ${ns}_INCLUDE_DIRS ${ns}_LIBRARY_DIRS - ${ns}_RUNTIME_LIBRARY_DIRS ${ns}_FACTORY_NAMES ${ns}_FACTORY_LIST) - if(${v}) - list(REMOVE_DUPLICATES ${v}) -diff --git a/CMake/ITKModuleMacros.cmake b/CMake/ITKModuleMacros.cmake -index da9f3a902..60420bb0a 100644 ---- a/CMake/ITKModuleMacros.cmake -+++ b/CMake/ITKModuleMacros.cmake -@@ -162,9 +162,6 @@ macro(itk_module_impl) - foreach(dep IN LISTS ITK_MODULE_${itk-module}_DEPENDS) - list(APPEND ${itk-module}_LIBRARIES "${${dep}_LIBRARIES}") - endforeach() -- if(${itk-module}_LIBRARIES) -- list(REMOVE_DUPLICATES ${itk-module}_LIBRARIES) -- endif() - endif() - - if(EXISTS ${${itk-module}_SOURCE_DIR}/include) -@@ -302,9 +299,9 @@ macro(itk_module_link_dependencies) - # link to public dependencies - foreach(dep IN LISTS ITK_MODULE_${itk-module}_PUBLIC_DEPENDS) - if(DEFINED ${dep}_LIBRARIES) -- target_link_libraries(${itk-module} LINK_PUBLIC ${${dep}_LIBRARIES}) -+ target_link_libraries(${itk-module} PUBLIC ${${dep}_LIBRARIES}) - elseif(DEFINED ${dep}) -- target_link_libraries(${itk-module} LINK_PUBLIC ${${dep}}) -+ target_link_libraries(${itk-module} PUBLIC ${${dep}}) - else() - message(FATAL_ERROR "Dependency \"${dep}\" not found: could not find [${dep}] or [${dep}_LIBRARIES]") - endif() -@@ -313,9 +310,9 @@ macro(itk_module_link_dependencies) - # link to private dependencies - foreach(dep IN LISTS ITK_MODULE_${itk-module}_PRIVATE_DEPENDS) - if(DEFINED ${dep}_LIBRARIES) -- target_link_libraries(${itk-module} LINK_PRIVATE ${${dep}_LIBRARIES}) -+ target_link_libraries(${itk-module} PRIVATE ${${dep}_LIBRARIES}) - elseif(DEFINED ${dep}) -- target_link_libraries(${itk-module} LINK_PRIVATE ${${dep}}) -+ target_link_libraries(${itk-module} PRIVATE ${${dep}}) - else() - message(FATAL_ERROR "Dependency \"${dep}\" not found: could not find [${dep}] or [${dep}_LIBRARIES]") - endif() -diff --git a/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx b/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx -index 1b1fe9526..0da4aa0c4 100644 ---- a/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx -+++ b/Modules/IO/JPEG2000/src/itkJPEG2000ImageIO.cxx -@@ -26,9 +26,9 @@ - - extern "C" - { --#include "openjpeg.h" --#include "j2k.h" --#include "jp2.h" -+#include -+//#include "j2k.h" -+//##include "jp2.h" - } - - -@@ -62,8 +62,7 @@ public: - OPJ_UINT32 m_TileStartX; - OPJ_UINT32 m_TileStartY; - -- OPJ_UINT32 m_NumberOfTilesInX; -- OPJ_UINT32 m_NumberOfTilesInY; -+ OPJ_UINT32 m_NumberOfTiles; - - opj_dparameters_t m_DecompressionParameters; /* decompression parameters */ - }; -@@ -86,8 +85,7 @@ JPEG2000ImageIO::JPEG2000ImageIO() - this->m_Internal->m_TileStartX = 0; - this->m_Internal->m_TileStartY = 0; - -- this->m_Internal->m_NumberOfTilesInX = 0; -- this->m_Internal->m_NumberOfTilesInY = 0; -+ this->m_Internal->m_NumberOfTiles = 0; - - const char * extensions[] = { ".j2k", ".jp2", ".jpt" }; - -@@ -139,22 +137,16 @@ JPEG2000ImageIO::ReadImageInformation() - { - itkDebugMacro(<< "ReadImageInformation()"); - -- FILE * l_file = fopen(this->m_FileName.c_str(), "rb"); -- -- /* decompression parameters */ -+ /* set decoding parameters to default values */ -+ opj_set_default_decoder_parameters(&(this->m_Internal->m_DecompressionParameters)); - -- if (!l_file) -+ opj_stream_t * cio = opj_stream_create_default_file_stream(this->m_FileName.c_str(), true); -+ if (!cio) - { - itkExceptionMacro("JPEG2000ImageIO failed to open file for reading: " << this->GetFileName() << std::endl - << "Reason: " - << itksys::SystemTools::GetLastSystemError()); - } -- -- /* set decoding parameters to default values */ -- opj_set_default_decoder_parameters(&(this->m_Internal->m_DecompressionParameters)); -- -- opj_stream_t * cio = opj_stream_create_default_file_stream(l_file, true); -- - this->m_Internal->m_Dinfo = nullptr; /* handle to a decompressor */ - - opj_image_t * l_image = nullptr; -@@ -187,14 +179,14 @@ JPEG2000ImageIO::ReadImageInformation() - /* JPEG-2000 codestream */ - - /* get a decoder handle */ -- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_J2K); -+ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_J2K); - if (!this->m_Internal->m_Dinfo) - { - opj_stream_destroy(cio); -- fclose(l_file); -+ // fclose(l_file); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " - << this->GetFileName() << std::endl -- << "Reason: opj_create_decompress(CODEC_J2K) returns nullptr"); -+ << "Reason: opj_create_decompress(OPJ_CODEC_J2K) returns nullptr"); - } - break; - } -@@ -202,14 +194,14 @@ JPEG2000ImageIO::ReadImageInformation() - { - /* JPEG 2000 compressed image data */ - /* get a decoder handle */ -- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_JP2); -+ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_JP2); - if (!this->m_Internal->m_Dinfo) - { - opj_stream_destroy(cio); -- fclose(l_file); -+ // fclose(l_file); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " - << this->GetFileName() << std::endl -- << "Reason: opj_create_decompress(CODEC_JP2) returns nullptr"); -+ << "Reason: opj_create_decompress(OPJ_CODEC_JP2) returns nullptr"); - } - break; - } -@@ -217,20 +209,19 @@ JPEG2000ImageIO::ReadImageInformation() - { - /* JPEG 2000, JPIP */ - /* get a decoder handle */ -- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_JPT); -+ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_JPT); - if (!this->m_Internal->m_Dinfo) - { - opj_stream_destroy(cio); -- fclose(l_file); -+ // fclose(l_file); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " - << this->GetFileName() << std::endl -- << "Reason: opj_create_decompress(CODEC_JPT) returns nullptr"); -+ << "Reason: opj_create_decompress(OPJ_CODEC_JPT) returns nullptr"); - } - break; - } - default: - opj_stream_destroy(cio); -- fclose(l_file); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " - << this->GetFileName() << std::endl - << "Reason: " -@@ -247,27 +238,11 @@ JPEG2000ImageIO::ReadImageInformation() - << "Reason: opj_setup_decoder returns false"); - } - -- // Image parameters - first tile -- OPJ_INT32 l_tile_x0; -- OPJ_INT32 l_tile_y0; - -- // Image parameters - tile width, height and number of tiles -- OPJ_UINT32 l_tile_width; -- OPJ_UINT32 l_tile_height; -- OPJ_UINT32 l_nb_tiles_x; -- OPJ_UINT32 l_nb_tiles_y; - - itkDebugMacro(<< "Trying to read header now..."); - -- bResult = opj_read_header(this->m_Internal->m_Dinfo, -- &l_image, -- &l_tile_x0, -- &l_tile_y0, -- &l_tile_width, -- &l_tile_height, -- &l_nb_tiles_x, -- &l_nb_tiles_y, -- cio); -+ bResult = opj_read_header(cio, this->m_Internal->m_Dinfo, &l_image); - - if (!bResult) - { -@@ -283,14 +258,22 @@ JPEG2000ImageIO::ReadImageInformation() - << "Reason: Error whle reading image header"); - } - -+ // Image parameters - first tile -+ OPJ_INT32 l_tile_x0=l_image->x0; -+ OPJ_INT32 l_tile_y0=l_image->y0; -+ -+ // Image parameters - tile width, height and number of tiles -+ OPJ_UINT32 l_tile_width=l_image->x1; -+ OPJ_UINT32 l_tile_height=l_image->y1; -+ OPJ_UINT32 l_nb_tiles=l_image->numcomps; -+ - this->m_Internal->m_TileStartX = l_tile_x0; - this->m_Internal->m_TileStartY = l_tile_y0; - - this->m_Internal->m_TileWidth = l_tile_width; - this->m_Internal->m_TileHeight = l_tile_height; - -- this->m_Internal->m_NumberOfTilesInX = l_nb_tiles_x; -- this->m_Internal->m_NumberOfTilesInY = l_nb_tiles_y; -+ this->m_Internal->m_NumberOfTiles = l_nb_tiles; - - - itkDebugMacro(<< "Number of Components = " << l_image->numcomps); -@@ -319,7 +302,7 @@ JPEG2000ImageIO::ReadImageInformation() - this->SetPixelType(IOPixelEnum::SCALAR); - break; - case 3: -- if (l_image->color_space != CLRSPC_SRGB) -+ if (l_image->color_space != OPJ_CLRSPC_SRGB) - { - itkWarningMacro(<< "file does not specify color space, assuming sRGB"); - } -@@ -335,8 +318,7 @@ JPEG2000ImageIO::ReadImageInformation() - itkDebugMacro(<< "Tile Start Y = " << this->m_Internal->m_TileStartY); - itkDebugMacro(<< "Tile Width = " << this->m_Internal->m_TileWidth); - itkDebugMacro(<< "Tile Height = " << this->m_Internal->m_TileHeight); -- itkDebugMacro(<< "Number of Tiles X = " << this->m_Internal->m_NumberOfTilesInX); -- itkDebugMacro(<< "Number of Tiles Y = " << this->m_Internal->m_NumberOfTilesInY); -+ itkDebugMacro(<< "Number of Tiles = " << this->m_Internal->m_NumberOfTiles); - - itkDebugMacro(<< "image->x1 = " << l_image->x1); - itkDebugMacro(<< "image->y1 = " << l_image->y1); -@@ -349,7 +331,6 @@ JPEG2000ImageIO::ReadImageInformation() - - /* close the byte stream */ - opj_stream_destroy(cio); -- fclose(l_file); - - if (this->m_Internal->m_Dinfo) - { -@@ -368,16 +349,7 @@ JPEG2000ImageIO::Read(void * buffer) - { - itkDebugMacro(<< "JPEG2000ImageIO::Read() Begin"); - -- FILE * l_file = fopen(this->m_FileName.c_str(), "rb"); -- -- if (!l_file) -- { -- itkExceptionMacro("JPEG2000ImageIO failed to open file for reading: " << this->GetFileName() << std::endl -- << "Reason: " -- << itksys::SystemTools::GetLastSystemError()); -- } -- -- opj_stream_t * l_stream = opj_stream_create_default_file_stream(l_file, true); -+ opj_stream_t * l_stream = opj_stream_create_default_file_stream(this->m_FileName.c_str(), true); - if (!l_stream) - { - itkExceptionMacro("JPEG2000ImageIO failed to read file: " -@@ -397,12 +369,13 @@ JPEG2000ImageIO::Read(void * buffer) - { - /* JPEG-2000 codestream */ - /* get a decoder handle */ -- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_J2K); -+ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_J2K); - if (!this->m_Internal->m_Dinfo) - { -+ opj_stream_destroy(l_stream); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " - << this->GetFileName() << std::endl -- << "Reason: opj_create_decompress(CODEC_J2K) returns nullptr"); -+ << "Reason: opj_create_decompress(OPJ_CODEC_J2K) returns nullptr"); - } - break; - } -@@ -410,12 +383,13 @@ JPEG2000ImageIO::Read(void * buffer) - { - /* JPEG 2000 compressed image data */ - /* get a decoder handle */ -- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_JP2); -+ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_JP2); - if (!this->m_Internal->m_Dinfo) - { -+ opj_stream_destroy(l_stream); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " - << this->GetFileName() << std::endl -- << "Reason: opj_create_decompress(CODEC_JP2) returns nullptr"); -+ << "Reason: opj_create_decompress(OPJ_CODEC_JP2) returns nullptr"); - } - break; - } -@@ -423,17 +397,18 @@ JPEG2000ImageIO::Read(void * buffer) - { - /* JPEG 2000, JPIP */ - /* get a decoder handle */ -- this->m_Internal->m_Dinfo = opj_create_decompress(CODEC_JPT); -+ this->m_Internal->m_Dinfo = opj_create_decompress(OPJ_CODEC_JPT); - if (!this->m_Internal->m_Dinfo) - { -+ opj_stream_destroy(l_stream); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " - << this->GetFileName() << std::endl -- << "Reason: opj_create_decompress(CODEC_JPT) returns nullptr"); -+ << "Reason: opj_create_decompress(OPJ_CODEC_JPT) returns nullptr"); - } - break; - } - default: -- fclose(l_file); -+ opj_stream_destroy(l_stream); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " - << this->GetFileName() << std::endl - << "Reason: " -@@ -448,29 +423,13 @@ JPEG2000ImageIO::Read(void * buffer) - << "Reason: opj_setup_decoder returns false"); - } - -- OPJ_INT32 l_tile_x0, l_tile_y0; -- -- OPJ_UINT32 l_tile_width; -- OPJ_UINT32 l_tile_height; -- OPJ_UINT32 l_nb_tiles_x; -- OPJ_UINT32 l_nb_tiles_y; -- -- bool bResult = opj_read_header(this->m_Internal->m_Dinfo, -- &l_image, -- &l_tile_x0, -- &l_tile_y0, -- &l_tile_width, -- &l_tile_height, -- &l_nb_tiles_x, -- &l_nb_tiles_y, -- l_stream); -+ bool bResult = opj_read_header(l_stream, this->m_Internal->m_Dinfo,&l_image); - - if (!bResult) - { - opj_destroy_codec(this->m_Internal->m_Dinfo); - this->m_Internal->m_Dinfo = nullptr; - opj_stream_destroy(l_stream); -- fclose(l_file); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl - << "Reason: opj_read_header returns false"); - } -@@ -499,7 +458,7 @@ JPEG2000ImageIO::Read(void * buffer) - itkDebugMacro(<< "p_end_x = " << p_end_x); - itkDebugMacro(<< "p_end_y = " << p_end_y); - -- bResult = opj_set_decode_area(this->m_Internal->m_Dinfo, p_start_x, p_start_y, p_end_x, p_end_y); -+ bResult = opj_set_decode_area(this->m_Internal->m_Dinfo, l_image, p_start_x, p_start_y, p_end_x, p_end_y); - - itkDebugMacro(<< "opj_set_decode_area() after"); - -@@ -508,7 +467,6 @@ JPEG2000ImageIO::Read(void * buffer) - opj_destroy_codec(this->m_Internal->m_Dinfo); - this->m_Internal->m_Dinfo = nullptr; - opj_stream_destroy(l_stream); -- fclose(l_file); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl - << "Reason: opj_set_decode_area returns false"); - } -@@ -525,13 +483,13 @@ JPEG2000ImageIO::Read(void * buffer) - - OPJ_UINT32 l_max_data_size = 1000; - -- bool l_go_on = true; -+ int l_go_on = true; // should be OBJ_BOOL - - auto * l_data = (OPJ_BYTE *)malloc(1000); - - while (l_go_on) - { -- bool tileHeaderRead = opj_read_tile_header(this->m_Internal->m_Dinfo, -+ bool tileHeaderRead = opj_read_tile_header(this->m_Internal->m_Dinfo, l_stream, - &l_tile_index, - &l_data_size, - &l_current_tile_x0, -@@ -539,14 +497,12 @@ JPEG2000ImageIO::Read(void * buffer) - &l_current_tile_x1, - &l_current_tile_y1, - &l_nb_comps, -- &l_go_on, -- l_stream); -+ &l_go_on); - - if (!tileHeaderRead) - { - free(l_data); - opj_stream_destroy(l_stream); -- fclose(l_file); - opj_destroy_codec(this->m_Internal->m_Dinfo); - opj_image_destroy(l_image); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl -@@ -571,7 +527,6 @@ JPEG2000ImageIO::Read(void * buffer) - if (!l_data) - { - opj_stream_destroy(l_stream); -- fclose(l_file); - opj_destroy_codec(this->m_Internal->m_Dinfo); - opj_image_destroy(l_image); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl -@@ -590,7 +545,6 @@ JPEG2000ImageIO::Read(void * buffer) - { - free(l_data); - opj_stream_destroy(l_stream); -- fclose(l_file); - opj_destroy_codec(this->m_Internal->m_Dinfo); - opj_image_destroy(l_image); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl -@@ -654,7 +608,6 @@ JPEG2000ImageIO::Read(void * buffer) - { - free(l_data); - opj_stream_destroy(l_stream); -- fclose(l_file); - opj_destroy_codec(this->m_Internal->m_Dinfo); - opj_image_destroy(l_image); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl -@@ -666,14 +619,12 @@ JPEG2000ImageIO::Read(void * buffer) - opj_destroy_codec(this->m_Internal->m_Dinfo); - this->m_Internal->m_Dinfo = nullptr; - opj_stream_destroy(l_stream); -- fclose(l_file); - itkExceptionMacro("JPEG2000ImageIO failed to read file: " << this->GetFileName() << std::endl - << "Reason: error whle reading image"); - } - - /* close the byte stream */ - opj_stream_destroy(l_stream); -- fclose(l_file); - - if (this->m_Internal->m_Dinfo) - { -@@ -840,13 +791,13 @@ JPEG2000ImageIO ::Write(const void * buffer) - - parameters.numresolution = numberOfResolutions; - -- OPJ_COLOR_SPACE color_space = CLRSPC_GRAY; -+ OPJ_COLOR_SPACE color_space = OPJ_CLRSPC_GRAY; - opj_image_cmptparm_t cmptparms[3]; - - if (this->GetNumberOfComponents() == 3) - { - -- color_space = (this->GetPixelType() == IOPixelEnum::RGB) ? CLRSPC_SRGB : CLRSPC_UNSPECIFIED; -+ color_space = (this->GetPixelType() == IOPixelEnum::RGB) ? OPJ_CLRSPC_SRGB : OPJ_CLRSPC_UNSPECIFIED; - - /* initialize image components */ - memset(&cmptparms[0], 0, 3 * sizeof(opj_image_cmptparm_t)); -@@ -864,7 +815,7 @@ JPEG2000ImageIO ::Write(const void * buffer) - - if (this->GetNumberOfComponents() == 1) - { -- color_space = CLRSPC_GRAY; -+ color_space = OPJ_CLRSPC_GRAY; - - /* initialize image components */ - memset(&cmptparms[0], 0, sizeof(opj_image_cmptparm_t)); -@@ -940,32 +891,32 @@ JPEG2000ImageIO ::Write(const void * buffer) - opj_codec_t * cinfo = nullptr; - if (extension == ".j2k") - { -- cinfo = opj_create_compress(CODEC_J2K); -+ cinfo = opj_create_compress(OPJ_CODEC_J2K); - if (!cinfo) - { - itkExceptionMacro("JPEG2000ImageIO failed to write file: " - << this->GetFileName() << std::endl -- << "Reason: opj_create_compress(CODEC_J2K) returns nullptr"); -+ << "Reason: opj_create_compress(OPJ_CODEC_J2K) returns nullptr"); - } - } - else if (extension == ".jp2") - { -- cinfo = opj_create_compress(CODEC_JP2); -+ cinfo = opj_create_compress(OPJ_CODEC_JP2); - if (!cinfo) - { - itkExceptionMacro("JPEG2000ImageIO failed to write file: " - << this->GetFileName() << std::endl -- << "Reason: opj_create_compress(CODEC_JP2) returns nullptr"); -+ << "Reason: opj_create_compress(OPJ_CODEC_JP2) returns nullptr"); - } - } - else if (extension == ".jpt") - { -- cinfo = opj_create_compress(CODEC_JPT); -+ cinfo = opj_create_compress(OPJ_CODEC_JPT); - if (!cinfo) - { - itkExceptionMacro("JPEG2000ImageIO failed to write file: " - << this->GetFileName() << std::endl -- << "Reason: opj_create_compress(CODEC_JPT) returns nullptr"); -+ << "Reason: opj_create_compress(OPJ_CODEC_JPT) returns nullptr"); - } - } - else -@@ -989,17 +940,9 @@ JPEG2000ImageIO ::Write(const void * buffer) - << "Reason: opj_setup_encoder returns false"); - } - -- FILE * l_file = fopen(parameters.outfile, "wb"); -- if (!l_file) -- { -- itkExceptionMacro("JPEG2000ImageIO failed to open file for writing: " << this->GetFileName() << std::endl -- << "Reason: " -- << itksys::SystemTools::GetLastSystemError()); -- } -- - /* open a byte stream for writing */ - /* allocate memory for all tiles */ -- opj_stream_t * cio = opj_stream_create_default_file_stream(l_file, false); -+ opj_stream_t * cio = opj_stream_create_default_file_stream(parameters.outfile, false); - if (!cio) - { - itkExceptionMacro("JPEG2000ImageIO failed to write file: " -@@ -1017,8 +960,7 @@ JPEG2000ImageIO ::Write(const void * buffer) - if (!bSuccess) - { - opj_stream_destroy(cio); -- fclose(l_file); -- itkExceptionMacro("JPEG2000ImageIO failed to write file: " << this->GetFileName() << std::endl -+ itkExceptionMacro("JPEG2000ImageIO failed to write file: " << this->GetFileName() << std::endl - << "Reason: opj_start_compress returns false"); - } - -@@ -1026,7 +968,6 @@ JPEG2000ImageIO ::Write(const void * buffer) - if (!bSuccess) - { - opj_stream_destroy(cio); -- fclose(l_file); - itkExceptionMacro("JPEG2000ImageIO failed to write file: " << this->GetFileName() << std::endl - << "Reason: opj_encode returns false"); - } -@@ -1035,14 +976,12 @@ JPEG2000ImageIO ::Write(const void * buffer) - if (!bSuccess) - { - opj_stream_destroy(cio); -- fclose(l_file); - itkExceptionMacro("JPEG2000ImageIO failed to write file: " << this->GetFileName() << std::endl - << "Reason: opj_end_compress returns false"); - } - - /* close and free the byte stream */ - opj_stream_destroy(cio); -- fclose(l_file); - - /* free remaining compression structures */ - opj_destroy_codec(cinfo); -diff --git a/Modules/ThirdParty/DoubleConversion/CMakeLists.txt b/Modules/ThirdParty/DoubleConversion/CMakeLists.txt -index 16c611fd3..13978724c 100644 ---- a/Modules/ThirdParty/DoubleConversion/CMakeLists.txt -+++ b/Modules/ThirdParty/DoubleConversion/CMakeLists.txt -@@ -9,7 +9,10 @@ mark_as_advanced(ITK_USE_SYSTEM_DOUBLECONVERSION) - if(ITK_USE_SYSTEM_DOUBLECONVERSION) - find_package(double-conversion REQUIRED) - get_target_property(ITKDoubleConversion_INCLUDE_DIRS double-conversion::double-conversion INTERFACE_INCLUDE_DIRECTORIES) -- get_target_property(ITKDoubleConversion_LIBRARIES double-conversion::double-conversion LOCATION) -+ get_target_property(ITKDoubleConversion_LIBRARY_RELEASE double-conversion::double-conversion LOCATION_RELEASE) -+ get_target_property(ITKDoubleConversion_LIBRARY_DEBUG double-conversion::double-conversion LOCATION_DEBUG) -+ include(SelectLibraryConfigurations) -+ select_library_configurations(ITKDoubleConversion) - else() - set(ITKDoubleConversion_INCLUDE_DIRS - ${ITKDoubleConversion_SOURCE_DIR}/src -diff --git a/Modules/ThirdParty/HDF5/CMakeLists.txt b/Modules/ThirdParty/HDF5/CMakeLists.txt -index a700ecdfb..0a683a52b 100644 ---- a/Modules/ThirdParty/HDF5/CMakeLists.txt -+++ b/Modules/ThirdParty/HDF5/CMakeLists.txt -@@ -25,11 +25,11 @@ endif() - ") - endif() - -- set(ITKHDF5_LIBRARIES ) -- if(BUILD_SHARED_LIBS) -- list(APPEND ITKHDF5_LIBRARIES ${HDF5_C_SHARED_LIBRARY} ${HDF5_CXX_SHARED_LIBRARY}) -+ set(ITKHDF5_LIBRARIES) -+ if(HDF5_BUILD_SHARED_LIBS) -+ list(APPEND ITKHDF5_LIBRARIES hdf5::hdf5_cpp-shared hdf5::hdf5-shared) - else() -- list(APPEND ITKHDF5_LIBRARIES ${HDF5_C_STATIC_LIBRARY} ${HDF5_CXX_STATIC_LIBRARY}) -+ list(APPEND ITKHDF5_LIBRARIES hdf5::hdf5_cpp-static hdf5::hdf5-static) - endif() - - set(ITKHDF5_INCLUDE_DIRS -@@ -67,3 +67,5 @@ install(FILES ${ITKHDF5_BINARY_DIR}/src/itk_hdf5.h - DESTINATION ${ITKHDF5_INSTALL_INCLUDE_DIR} - COMPONENT Development - ) -+ -+message(STATUS "ITKHDF5_LIBRARIES:${ITKHDF5_LIBRARIES}") -\ No newline at end of file -diff --git a/Modules/ThirdParty/OpenJPEG/CMakeLists.txt b/Modules/ThirdParty/OpenJPEG/CMakeLists.txt -index 103eaa9dd..eb8989135 100644 ---- a/Modules/ThirdParty/OpenJPEG/CMakeLists.txt -+++ b/Modules/ThirdParty/OpenJPEG/CMakeLists.txt -@@ -1,12 +1,25 @@ - project(ITKOpenJPEG) - set(ITKOpenJPEG_THIRD_PARTY 1) - --set(ITKOpenJPEG_INCLUDE_DIRS -- ${ITKOpenJPEG_BINARY_DIR}/src/openjpeg -- ${ITKOpenJPEG_SOURCE_DIR}/src/openjpeg -- ) --set(ITKOpenJPEG_LIBRARIES itkopenjpeg) --set(ITK_LIBRARY_PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS FALSE) -+if(ITK_USE_SYSTEM_OpenJPEG) -+ find_package(OpenJPEG REQUIRED) -+ if(TARGET openjp2) -+ set(ITKOpenJPEG_LIBRARIES ${OPENJPEG_LIBRARIES}) -+ else() -+ message(FATAL_ERROR "OpenJPEG target openjp2 missing!") -+ endif() -+ set(ITKOpenJPEG_INCLUDE_DIRS -+ ${ITKOpenJPEG_BINARY_DIR}/src/openjpeg -+ ${ITKOpenJPEG_SOURCE_DIR}/src/openjpeg -+ ) -+else() -+ set(ITKOpenJPEG_INCLUDE_DIRS -+ ${ITKOpenJPEG_BINARY_DIR}/src/openjpeg -+ ${ITKOpenJPEG_SOURCE_DIR}/src/openjpeg -+ ) -+ set(ITKOpenJPEG_LIBRARIES itkopenjpeg) -+ set(ITK_LIBRARY_PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS FALSE) -+endif() - - itk_module_impl() - -diff --git a/Wrapping/Generators/Python/CMakeLists.txt b/Wrapping/Generators/Python/CMakeLists.txt -index cf627eb5e..135fa6074 100644 ---- a/Wrapping/Generators/Python/CMakeLists.txt -+++ b/Wrapping/Generators/Python/CMakeLists.txt -@@ -469,8 +469,8 @@ ${DO_NOT_WAIT_FOR_THREADS_DECLS} - endif() - - # Link the modules together -- target_link_libraries(${lib} LINK_PUBLIC ${WRAPPER_LIBRARY_LINK_LIBRARIES}) -- itk_target_link_libraries_with_dynamic_lookup(${lib} LINK_PUBLIC ${PYTHON_LIBRARY}) -+ target_link_libraries(${lib} PUBLIC ${WRAPPER_LIBRARY_LINK_LIBRARIES}) -+ itk_target_link_libraries_with_dynamic_lookup(${lib} PUBLIC ${PYTHON_LIBRARY}) - - if(USE_COMPILER_HIDDEN_VISIBILITY) - # Prefer to use target properties supported by newer cmake -@@ -484,7 +484,7 @@ ${DO_NOT_WAIT_FOR_THREADS_DECLS} - add_dependencies(${lib} ${WRAPPER_LIBRARY_NAME}Doxygen) - endif() - if(${module_prefix}_WRAP_EXPLICIT AND NOT ${WRAPPER_LIBRARY_NAME} STREQUAL ITKPyBase) -- target_link_libraries(${lib} LINK_PUBLIC ${WRAPPER_LIBRARY_NAME}Explicit) -+ target_link_libraries(${lib} PUBLIC ${WRAPPER_LIBRARY_NAME}Explicit) - add_dependencies(${lib} ${WRAPPER_LIBRARY_NAME}Explicit) - endif() - set(_component_module "") -diff --git a/Wrapping/TypedefMacros.cmake b/Wrapping/TypedefMacros.cmake -index e6f8d0bf3..6c000dba8 100644 ---- a/Wrapping/TypedefMacros.cmake -+++ b/Wrapping/TypedefMacros.cmake -@@ -57,13 +57,21 @@ macro(itk_wrap_module library_name) - - # WRAPPER_LIBRARY_DEPENDS. List of names of other wrapper libraries that - # define symbols used by this wrapper library. -+ message(STATUS "ITK_MODULE_${library_name}_DEPENDS:${ITK_MODULE_${library_name}_DEPENDS}") -+ message(STATUS "WRAP_ITK_MODULES:${WRAP_ITK_MODULES}") - INTERSECTION(WRAPPER_LIBRARY_DEPENDS "${ITK_MODULE_${library_name}_DEPENDS}" "${WRAP_ITK_MODULES}") - # set(WRAPPER_LIBRARY_DEPENDS ${ITK_MODULE_${library_name}_DEPENDS}) -- -+ message(STATUS "WRAPPER_LIBRARY_DEPENDS:${WRAPPER_LIBRARY_DEPENDS}") - # WRAPPER_LIBRARY_LINK_LIBRARIES. List of other libraries that should - # be linked to the wrapper library. -- set(WRAPPER_LIBRARY_LINK_LIBRARIES ${ITK_LIBRARIES} ${${itk-module}_LIBRARIES}) -- -+ set(WRAPPER_LIBRARY_LINK_LIBRARIES ${ITK_LIBRARIES} ${${library_name}_LIBRARIES}) -+ message(STATUS "ITK_LIBRARIES:${ITK_LIBRARIES}") -+ message(STATUS "${library_name}_LIBRARIES:${${library_name}_LIBRARIES}") -+ foreach(_dep IN LISTS WRAPPER_LIBRARY_DEPENDS) -+ list(APPEND WRAPPER_LIBRARY_LINK_LIBRARIES ${${_dep}_LIBRARIES}) -+ -+ endforeach() -+ message(STATUS "${library_name}_LIBRARIES:${${library_name}_LIBRARIES}") - # WRAPPER_SUBMODULE_ORDER. List of *.wrap submodules in the source dir - # that should be included/wrapped before the rest in the given order. - # Just the submodule group name is needed, not the full path or file name. From 77bd1fd1650c00eb48952b3aa8db60f881ce1ab3 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 12:00:01 +0200 Subject: [PATCH 43/77] [nifticlib] Add new port required by minc --- ports/nifticlib/CONTROL | 4 ++++ ports/nifticlib/portfile.cmake | 31 ++++++++++++++++++++++++++++++ ports/nifticlib/zlib_include.patch | 12 ++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 ports/nifticlib/CONTROL create mode 100644 ports/nifticlib/portfile.cmake create mode 100644 ports/nifticlib/zlib_include.patch diff --git a/ports/nifticlib/CONTROL b/ports/nifticlib/CONTROL new file mode 100644 index 00000000000000..87c082e8689e91 --- /dev/null +++ b/ports/nifticlib/CONTROL @@ -0,0 +1,4 @@ +Source: nifticlib +Version: 2.0.0 +Description: Nifticlib is a C I/O library for reading and writing files in the nifti-1 data format. +Homepage: https://github.com/addisonElliott/nifticlib diff --git a/ports/nifticlib/portfile.cmake b/ports/nifticlib/portfile.cmake new file mode 100644 index 00000000000000..432dcc3a95fc63 --- /dev/null +++ b/ports/nifticlib/portfile.cmake @@ -0,0 +1,31 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO addisonElliott/nifticlib + REF 8a301274a95a3124c4e945e353884c50460e8e40 + SHA512 d6ce69fdd6926354f00e9cccbdab280dce77d69d02d9686be256cab18b81198a4682b8aeeaa82fe53a30b18142c695f9b7758a1cb4d847199b40c877466097a3 + HEAD_REF master + PATCHES zlib_include.patch +) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + DISABLE_PARALLEL_CONFIGURE + OPTIONS + "-DBUILD_TESTING=OFF" + ${FEATURE_OPTIONS} + ${ADDITIONAL_OPTIONS} + + OPTIONS_DEBUG ${OPTIONS_DEBUG} + OPTIONS_RELEASE ${OPTIONS_RELEASE} +) + +vcpkg_install_cmake() +vcpkg_copy_pdbs() + +vcpkg_copy_tools(TOOL_NAMES nifti_stats nifti_tool nifti1_test AUTO_CLEAN) + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) diff --git a/ports/nifticlib/zlib_include.patch b/ports/nifticlib/zlib_include.patch new file mode 100644 index 00000000000000..9d4ef94af34392 --- /dev/null +++ b/ports/nifticlib/zlib_include.patch @@ -0,0 +1,12 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ca50af02c..6365b4a37 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -51,6 +51,7 @@ ELSE("${ITK_VERSION_MAJOR}" GREATER 0.0) + SET(CPACK_PACKAGE_VERSION_PATCH "0") + ### USE AS STAND ALONE PACKAGE + FIND_PACKAGE(ZLIB) ++ include_directories(${ZLIB_INCLUDE_DIRS}) + # MESSAGE(STATUS "---------------------SYSTEM ZLIB ${ZLIB_LIBRARY}") + SET(PACKAGE_PREFIX "") + # Set default shared library version From 7b5b59a946c2d7da2185988c615871c2fe33fc53 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 13:16:35 +0200 Subject: [PATCH 44/77] [nifticlib] change repo and add features --- ports/nifticlib/CONTROL | 23 +++++++++++++++++-- ports/nifticlib/portfile.cmake | 36 +++++++++++++++++++++++++----- ports/nifticlib/zlib_include.patch | 18 +++++++-------- 3 files changed, 60 insertions(+), 17 deletions(-) diff --git a/ports/nifticlib/CONTROL b/ports/nifticlib/CONTROL index 87c082e8689e91..3c773281217a1b 100644 --- a/ports/nifticlib/CONTROL +++ b/ports/nifticlib/CONTROL @@ -1,4 +1,23 @@ Source: nifticlib -Version: 2.0.0 +Version: 04-30-2020 Description: Nifticlib is a C I/O library for reading and writing files in the nifti-1 data format. -Homepage: https://github.com/addisonElliott/nifticlib +Homepage: NIFTI-Imaging/nifti_clib +Default-Features: nifti2, nifticdf + +Feature: cifti +Description: Build cifti libraries and tools + +Feature: fsl +Description: Build fsl libraries and tools + +Feature: nifti2 +Description: Build nifti2 libraries and tools + +Feature: nifticdf +Description: Build nifticdf libraries and tools + +Feature: tools +Description: Build tools + +Feature: tests +Description: Build tests \ No newline at end of file diff --git a/ports/nifticlib/portfile.cmake b/ports/nifticlib/portfile.cmake index 432dcc3a95fc63..589e417b2bd32b 100644 --- a/ports/nifticlib/portfile.cmake +++ b/ports/nifticlib/portfile.cmake @@ -1,18 +1,39 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH - REPO addisonElliott/nifticlib - REF 8a301274a95a3124c4e945e353884c50460e8e40 - SHA512 d6ce69fdd6926354f00e9cccbdab280dce77d69d02d9686be256cab18b81198a4682b8aeeaa82fe53a30b18142c695f9b7758a1cb4d847199b40c877466097a3 + REPO NIFTI-Imaging/nifti_clib + REF 65f801b9c2f1f15f4de4a19d45e6595c25765632 + SHA512 be03cdc6cf17fd9ff74c5ecc1f6b2132121bb4b7973a731da334af2a8428d1f0dbbf7b94b2511d1ff7e515b8cc4cf3316d62b189566fb6ffc88c6146eebd48ff HEAD_REF master PATCHES zlib_include.patch ) +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + "cifti" USE_CIFTI_CODE + "fsl" USE_FSL_CODE + "nifti2" USE_NIFTI2_CODE + "nifticdf" USE_NIFTICDF_CODE + "tools" NIFTI_BUILD_APPLICATIONS + "tests" BUILD_TESTING +) +set(TOOL_NAMES) +if("tools" IN_LIST FEATURES) + list(APPEND TOOL_NAMES nifti_stats nifti_tool nifti1_tool) +endif() +if("tests" IN_LIST FEATURES) + list(APPEND TOOL_NAMES nifit_test) +endif() + +set(OPTIONS) +if(VCPKG_TARGET_IS_WINDOWS) + #list(APPEND OPTIONS "-DCMAKE_C_STANDARD_LIBRARIES_INIT=ws2_32") # should be patched upstream +endif() + vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA - DISABLE_PARALLEL_CONFIGURE OPTIONS - "-DBUILD_TESTING=OFF" ${FEATURE_OPTIONS} ${ADDITIONAL_OPTIONS} @@ -22,8 +43,11 @@ vcpkg_configure_cmake( vcpkg_install_cmake() vcpkg_copy_pdbs() +vcpkg_fixup_cmake_targets(CONFIG_PATH share/cmake TARGET_PATH share) -vcpkg_copy_tools(TOOL_NAMES nifti_stats nifti_tool nifti1_test AUTO_CLEAN) +if(TOOL_NAMES) + vcpkg_copy_tools(TOOL_NAMES ${TOOL_NAMES} AUTO_CLEAN) +endif() file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") diff --git a/ports/nifticlib/zlib_include.patch b/ports/nifticlib/zlib_include.patch index 9d4ef94af34392..1ef462b7f1f8de 100644 --- a/ports/nifticlib/zlib_include.patch +++ b/ports/nifticlib/zlib_include.patch @@ -1,12 +1,12 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index ca50af02c..6365b4a37 100644 +index 54150d739..c3ca8fe50 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -51,6 +51,7 @@ ELSE("${ITK_VERSION_MAJOR}" GREATER 0.0) - SET(CPACK_PACKAGE_VERSION_PATCH "0") - ### USE AS STAND ALONE PACKAGE - FIND_PACKAGE(ZLIB) -+ include_directories(${ZLIB_INCLUDE_DIRS}) - # MESSAGE(STATUS "---------------------SYSTEM ZLIB ${ZLIB_LIBRARY}") - SET(PACKAGE_PREFIX "") - # Set default shared library version +@@ -77,6 +77,7 @@ set_if_not_defined(ZNZ_COMPILE_DEF "") + if(NOT NIFTI_ZLIB_LIBRARIES) # If using a custom zlib library, skip the find package + ### USE AS STAND ALONE PACKAGE + find_package(ZLIB REQUIRED) ++ include_directories(${ZLIB_INCLUDE_DIRS}) + set(NIFTI_ZLIB_LIBRARIES ${ZLIB_LIBRARIES}) + endif() + #message(STATUS "---------------------ZLIB -${NIFTI_ZLIB_LIBRARIES}--") From d98a2a1c705bb42f1ae4510977278276bbf6b691 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 14:12:11 +0200 Subject: [PATCH 45/77] [nifticilib] add zlib dependency & cleanup --- ports/nifticlib/CONTROL | 1 + ports/nifticlib/portfile.cmake | 13 +++---------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/ports/nifticlib/CONTROL b/ports/nifticlib/CONTROL index 3c773281217a1b..f9079391951e24 100644 --- a/ports/nifticlib/CONTROL +++ b/ports/nifticlib/CONTROL @@ -2,6 +2,7 @@ Source: nifticlib Version: 04-30-2020 Description: Nifticlib is a C I/O library for reading and writing files in the nifti-1 data format. Homepage: NIFTI-Imaging/nifti_clib +Build-Depends: zlib Default-Features: nifti2, nifticdf Feature: cifti diff --git a/ports/nifticlib/portfile.cmake b/ports/nifticlib/portfile.cmake index 589e417b2bd32b..c9d74a49e5c39e 100644 --- a/ports/nifticlib/portfile.cmake +++ b/ports/nifticlib/portfile.cmake @@ -7,7 +7,9 @@ vcpkg_from_github( PATCHES zlib_include.patch ) -vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +endif() vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS "cifti" USE_CIFTI_CODE @@ -25,20 +27,11 @@ if("tests" IN_LIST FEATURES) list(APPEND TOOL_NAMES nifit_test) endif() -set(OPTIONS) -if(VCPKG_TARGET_IS_WINDOWS) - #list(APPEND OPTIONS "-DCMAKE_C_STANDARD_LIBRARIES_INIT=ws2_32") # should be patched upstream -endif() - vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA OPTIONS ${FEATURE_OPTIONS} - ${ADDITIONAL_OPTIONS} - - OPTIONS_DEBUG ${OPTIONS_DEBUG} - OPTIONS_RELEASE ${OPTIONS_RELEASE} ) vcpkg_install_cmake() From 21b915bfc2560c68883f8da288d2f4db667dad68 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 14:15:09 +0200 Subject: [PATCH 46/77] [minc] add new port --- ports/minc/CONTROL | 9 ++++++ ports/minc/build.patch | 67 +++++++++++++++++++++++++++++++++++++++ ports/minc/portfile.cmake | 46 +++++++++++++++++++++++++++ 3 files changed, 122 insertions(+) create mode 100644 ports/minc/CONTROL create mode 100644 ports/minc/build.patch create mode 100644 ports/minc/portfile.cmake diff --git a/ports/minc/CONTROL b/ports/minc/CONTROL new file mode 100644 index 00000000000000..6cd1d54997367d --- /dev/null +++ b/ports/minc/CONTROL @@ -0,0 +1,9 @@ +Source: minc +Version: 2.4.03 +Description: MINC - Medical Image NetCDF or MINC isn't netCDF +Homepage: https://github.com/BIC-MNI/libminc +Build-Depends: nifticlib, hdf5[core], zlib + +Feature: minc1 +Description: Support minc1 file format, requires NETCDF +Build-Depends: netcdf[core] \ No newline at end of file diff --git a/ports/minc/build.patch b/ports/minc/build.patch new file mode 100644 index 00000000000000..d0275c20d4c61e --- /dev/null +++ b/ports/minc/build.patch @@ -0,0 +1,67 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 52cc81ace..d7a1f63f8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -403,9 +404,11 @@ ENDIF(LIBMINC_MINC1_SUPPORT) + # Keep this variable for compatibility + SET(VOLUME_IO_LIBRARY ${LIBMINC_EXTERNAL_LIB_PREFIX}minc2) + SET(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}) + + ADD_LIBRARY(${LIBMINC_LIBRARY} ${LIBRARY_TYPE} ${minc_LIB_SRCS} ${minc_HEADERS} ${volume_io_LIB_SRCS} ${volume_io_HEADERS} ) +- ++if(WIN32) ++ target_link_libraries(${LIBMINC_LIBRARY} ws2_32) ++endif() + IF(NIFTI_FOUND AND NOT LIBMINC_USE_SYSTEM_NIFTI) + ADD_DEPENDENCIES(${LIBMINC_LIBRARY} NIFTI) + ENDIF() +@@ -453,7 +456,7 @@ IF( LIBMINC_INSTALL_LIB_DIR ) + ${LIBMINC_EXPORTED_TARGETS} + LIBRARY DESTINATION ${LIBMINC_INSTALL_LIB_DIR} COMPONENT libraries + ARCHIVE DESTINATION ${LIBMINC_INSTALL_LIB_DIR} COMPONENT libraries +- RUNTIME DESTINATION ${LIBMINC_INSTALL_LIB_DIR} COMPONENT libraries ++ RUNTIME DESTINATION ${LIBMINC_INSTALL_BIN_DIR} COMPONENT libraries + ) + ENDIF( LIBMINC_INSTALL_LIB_DIR ) + +@@ -538,7 +541,7 @@ IF(LIBMINC_INSTALL_LIB_DIR AND NOT LIBMINC_INSTALL_NO_DEVELOPMENT) + ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Use${LIBMINC_EXTERNAL_LIB_PREFIX}LIBMINC.cmake + ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${LIBMINC_EXTERNAL_LIB_PREFIX}LIBMINCConfig.cmake + DESTINATION +- ${LIBMINC_INSTALL_LIB_DIR} ++ ${LIBMINC_INSTALL_LIB_DIR}/cmake + COMPONENT Development) + + ENDIF(LIBMINC_INSTALL_LIB_DIR AND NOT LIBMINC_INSTALL_NO_DEVELOPMENT) +diff --git a/config.h.cmake b/config.h.cmake +index 9ceffa8fc..21c2f3baf 100644 +--- a/config.h.cmake ++++ b/config.h.cmake +@@ -1,4 +1,8 @@ + /* various defines */ ++#ifdef _MSC_VER ++#define strcasecmp _stricmp ++#define strncasecmp _strnicmp ++#endif + + #ifndef MINC2 + #define MINC2 @MINC2@ +diff --git a/libcommon/minc_config.c b/libcommon/minc_config.c +index 531ef108e..5472d9274 100644 +--- a/libcommon/minc_config.c ++++ b/libcommon/minc_config.c +@@ -20,14 +20,6 @@ + + #include "minc_config.h" + +-#ifdef _MSC_VER +-#define snprintf _snprintf +-#define vsnprintf _vsnprintf +-#define strcasecmp _stricmp +-#define strncasecmp _strnicmp +-#endif +- +- + static const char *_CONFIG_VAR[]= + { + "MINC_FORCE_V2", diff --git a/ports/minc/portfile.cmake b/ports/minc/portfile.cmake new file mode 100644 index 00000000000000..fd584cedfe4424 --- /dev/null +++ b/ports/minc/portfile.cmake @@ -0,0 +1,46 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO BIC-MNI/libminc + REF e75a936c12a305b596d743c26a5437196ebce2a4 + SHA512 744f879ac8f0594c310d1c1b7fe67543c5feeb3e5a0979035918dbb2bf1d0973fbd389e5357a75631e618cc614b648c21179f7467576bd68e3522e63f21451b0 + HEAD_REF master + PATCHES build.patch +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + "minc1" LIBMINC_MINC1_SUPPORT +) + +if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_check_linkage(ONLY_STATIC_LIBRARY) # Symbols are not properly exported +endif() + +set(OPTIONS) +if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + list(APPEND OPTIONS "-DLIBMINC_BUILD_SHARED_LIBS=ON") +else() + list(APPEND OPTIONS "-DLIBMINC_BUILD_SHARED_LIBS=OFF") +endif() + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + DISABLE_PARALLEL_CONFIGURE + OPTIONS + "-DBUILD_TESTING=OFF" + "-DLIBMINC_USE_SYSTEM_NIFTI=ON" + ${OPTIONS} + ${FEATURE_OPTIONS} +) + +vcpkg_install_cmake() +vcpkg_copy_pdbs() +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") +endif() +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) From 8f8010ee22484f80ec87adf419d3127c7fd45d8e Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 14:49:21 +0200 Subject: [PATCH 47/77] [vcpkg/scripts] add swig to find acquire programm --- .../cmake/vcpkg_find_acquire_program.cmake | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index e7a99cb55da094..436ad656b52315 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -32,6 +32,7 @@ ## - NINJA ## - NUGET ## - SCONS +## - SWIG https://sourceforge.net/projects/swig/files/swigwin/swigwin-4.0.1/swigwin-4.0.1.zip ## - YASM ## ## Note that msys2 has a dedicated helper function: [`vcpkg_acquire_msys`](vcpkg_acquire_msys.md). @@ -274,7 +275,23 @@ function(vcpkg_find_acquire_program VAR) set(PATHS ${DOWNLOADS}/tools/scons) set(URL "https://sourceforge.net/projects/scons/files/scons-local-3.0.1.zip/download") set(ARCHIVE "scons-local-3.0.1.zip") - set(HASH fe121b67b979a4e9580c7f62cfdbe0c243eba62a05b560d6d513ac7f35816d439b26d92fc2d7b7d7241c9ce2a49ea7949455a17587ef53c04a5f5125ac635727) + set(HASH fe121b67b979a4e9580c7f62cfdbe0c243eba62a05b560d6d513ac7f35816d439b26d92fc2d7b7d7241c9ce2a49ea7949455a17587ef53c04a5f5125ac635727) + elseif(VAR MATCHES "SWIG") + set(PROGNAME swig) + set(PATHS ${DOWNLOADS}/tools/${PROGNAME}) + if(CMAKE_HOST_WIN32) + set(URL "https://sourceforge.net/projects/swig/files/swigwin/swigwin-4.0.1/swigwin-4.0.1.zip/download") + set(ARCHIVE "swigwin-4.0.1.zip") + set(HASH 2da147231164466c0dee91beca6a4f7b10e6f727062338ea6d70f44f4e4163ad6616b72c2de767539a69977ba96d3ee920ed3c182124c45569ca946750fd4495) + set(SUBDIR "swigwin-4.0.1") + set(PATHS ${DOWNLOADS}/tools/swig/${SUBDIR}) + else() + set(URL https://sourceforge.net/projects/swig/files/swig/swig-4.0.1/swig-4.0.1.tar.gz/download) + set(ARCHIVE "swig-4.0.1.tar.gz") + set(HASH fe121b67b979a4e9580c7f62cfdbe0c243eba62a05b560d6d513ac7f35816d439b26d92fc2d7b7d7241c9ce2a49ea7949455a17587ef53c04a5f5125ac635727) + set(SUBDIR "wix311-binaries") + set(PATHS ${DOWNLOADS}/tools/dark/${SUBDIR}) + endif() elseif(VAR MATCHES "DOXYGEN") set(PROGNAME doxygen) set(DOXYGEN_VERSION 1.8.17) From b5b40525a9db2730269bb8b6cd743709bbceb950 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 14:55:19 +0200 Subject: [PATCH 48/77] [itk/minc] update for external minc --- ports/itk/CONTROL | 2 +- ports/itk/portfile.cmake | 7 +------ ports/minc/config.patch | 15 +++++++++++++++ ports/minc/portfile.cmake | 3 ++- 4 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 ports/minc/config.patch diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL index 9a29226ef1e675..82f64120141c8a 100644 --- a/ports/itk/CONTROL +++ b/ports/itk/CONTROL @@ -2,7 +2,7 @@ Source: itk Version: 5.1.0 Description: Insight Segmentation and Registration Toolkit (ITK) is used for image processing and analysis. Homepage: https://github.com/InsightSoftwareConsortium/ITK -Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg[core], fftw3[core], gtest, gdcm, icu +Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg[core], fftw3[core], gtest, gdcm, icu, minc Feature: vtk Description: Build ITKVtkGlue module. diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 9f9dce2e4a668c..c42cb8a4c84d8c 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -131,7 +131,7 @@ vcpkg_configure_cmake( -DITK_USE_SYSTEM_ICU=ON #-DITK_USE_SYSTEM_VXL=ON #-DITK_USE_SYSTEM_CASTXML=ON # needs to be added to vcpkg_find_acquire_program https://data.kitware.com/api/v1/file/hashsum/sha512/b8b6f0aff11fe89ab2fcd1949cc75f2c2378a7bc408827a004396deb5ff5a9976bffe8a597f8db1b74c886ea39eb905e610dce8f5bd7586a4d6c196d7349da8d/download - #-DITK_USE_SYSTEM_MINC=ON # port needs to be added to VCPKG + -DITK_USE_SYSTEM_MINC=ON -DITK_USE_SYSTEM_SWIG=ON -DITK_FORBID_DOWNLOADS=OFF # This should be turned on some day, however for now ITK does download specific versions so it shouldn't spontaneously break. Remote Modules would probably break with this! -DINSTALL_GTEST=OFF @@ -165,11 +165,6 @@ if(TOOL_NAMES) vcpkg_coyp_tools(TOOL_NAMES ${TOOL_NAMES}) endif() -set(_files itkLIBMINCConfig UseitkLIBMINC) -foreach(_file IN LISTS _files) - file(RENAME "${CURRENT_PACKAGES_DIR}/lib/cmake/${_file}.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/${_file}.cmake") -endforeach() - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/cmake") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib/cmake") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") diff --git a/ports/minc/config.patch b/ports/minc/config.patch new file mode 100644 index 00000000000000..a726b9a57f0392 --- /dev/null +++ b/ports/minc/config.patch @@ -0,0 +1,15 @@ +diff --git a/LIBMINCConfig.cmake.in b/LIBMINCConfig.cmake.in +index 7790597b2..c041b685a 100644 +--- a/LIBMINCConfig.cmake.in ++++ b/LIBMINCConfig.cmake.in +@@ -1,3 +1,4 @@ ++set(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../") + # LIBMINC CMake configuration file + + get_filename_component(LIBMINC_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH ) +@@ -37,3 +38,4 @@ set( LIBMINC_FOUND 1 ) + # set( LIBMINC_TARGETS_IMPORTED 1 ) + # include( "${LIBMINC_CMAKE_DIR}/@LIBMINC_EXPORTED_TARGETS@.cmake" ) + #endif() ++unset(_IMPORT_PREFIX) +\ No newline at end of file diff --git a/ports/minc/portfile.cmake b/ports/minc/portfile.cmake index fd584cedfe4424..4b9ff63b149d80 100644 --- a/ports/minc/portfile.cmake +++ b/ports/minc/portfile.cmake @@ -5,6 +5,7 @@ vcpkg_from_github( SHA512 744f879ac8f0594c310d1c1b7fe67543c5feeb3e5a0979035918dbb2bf1d0973fbd389e5357a75631e618cc614b648c21179f7467576bd68e3522e63f21451b0 HEAD_REF master PATCHES build.patch + config.patch ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS @@ -35,7 +36,7 @@ vcpkg_configure_cmake( vcpkg_install_cmake() vcpkg_copy_pdbs() -vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake) +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake TARGET_PATH share/libminc) if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") From c2cac7a66631687625453975600247c88c8ef7d7 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 15:14:54 +0200 Subject: [PATCH 49/77] add supports field for nifticlib --- ports/nifticlib/CONTROL | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/nifticlib/CONTROL b/ports/nifticlib/CONTROL index f9079391951e24..80148ea46b805a 100644 --- a/ports/nifticlib/CONTROL +++ b/ports/nifticlib/CONTROL @@ -4,6 +4,7 @@ Description: Nifticlib is a C I/O library for reading and writing files in the n Homepage: NIFTI-Imaging/nifti_clib Build-Depends: zlib Default-Features: nifti2, nifticdf +Supports: !uwp Feature: cifti Description: Build cifti libraries and tools From 8ef1084770d61499524a6d57453fc7d555469bad Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 15:19:54 +0200 Subject: [PATCH 50/77] [itk] make python a default feature for testing --- ports/itk/CONTROL | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL index 82f64120141c8a..06c13baafeac55 100644 --- a/ports/itk/CONTROL +++ b/ports/itk/CONTROL @@ -3,6 +3,7 @@ Version: 5.1.0 Description: Insight Segmentation and Registration Toolkit (ITK) is used for image processing and analysis. Homepage: https://github.com/InsightSoftwareConsortium/ITK Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg[core], fftw3[core], gtest, gdcm, icu, minc +Default-Features: python Feature: vtk Description: Build ITKVtkGlue module. From 33e6ef5fd9fa28650f2de7ad11472fef483db8f2 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 15:49:54 +0200 Subject: [PATCH 51/77] [itk] cleanup python vars a bit [vcpkg/scripts] correct swig hash --- ports/itk/portfile.cmake | 104 ++---------------- .../cmake/vcpkg_find_acquire_program.cmake | 11 +- 2 files changed, 18 insertions(+), 97 deletions(-) diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index c42cb8a4c84d8c..9ade96371b3a22 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -74,22 +74,27 @@ if("python" IN_LIST FEATURES) message(STATUS "${PORT} builds a long time (>1h) with python wrappers enabled!") vcpkg_find_acquire_program(PYTHON3) vcpkg_find_acquire_program(SWIG) # Swig is only required for wrapping! - get_filename_component(SWIG_DIR "${SWIG}" DIRECTORY) - vcpkg_add_to_path(${SWIG_DIR}) list(APPEND ADDITIONAL_OPTIONS -DITK_WRAP_PYTHON=ON -DPython3_FIND_REGISTRY=NEVER - "-DPython3_LIBRARY_RELEASE:PATH=${CURRENT_INSTALLED_DIR}/lib/python37.lib" - "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib" "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7" "-DPython3_EXECUTABLE:PATH=${PYTHON3}" # Required by more than one feature "-DSWIG_EXECUTABLE=${SWIG}" "-DSWIG_DIR=${SWIG_DIR}" ) - # Due to ITKs internal shenanigans with the variables ...... - list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib") - list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/python37.lib") + if(VCPKG_TARGET_IS_WINDOWS) + list(APPEND ADDITIONAL_OPTIONS "-DPython3_LIBRARY_RELEASE:PATH=${CURRENT_INSTALLED_DIR}/lib/python37.lib" + "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib") + list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib") + list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/python37.lib") + else() + list(APPEND ADDITIONAL_OPTIONS "-DPython3_LIBRARY_RELEASE:PATH=${CURRENT_INSTALLED_DIR}/lib/libpython37m.a" + "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/libpython37md.a") + list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/libpython37md.a") + list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/linpython37m.a") + endif() + #ITK_PYTHON_SITE_PACKAGES_SUFFIX should be set to the install dir of the site-packages within vcpkg endif() @@ -171,88 +176,3 @@ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) - -# Without VTK - -# -- The following OPTIONAL packages have been found: - - # * Git - # * Threads - # * HDF5 - # * LibLZMA - # * Python3 - # * Perl - -# -- The following REQUIRED packages have been found: - - # * double-conversion - # * EXPAT - # * SZIP - # * TIFF - # * JPEG - # * ZLIB - # * PNG - # * Eigen3 (required version >= 3.3) - # * ITK - -# -- The following OPTIONAL packages have not been found: - - # * KWStyle (required version >= 1.0.1) - # * cppcheck - # * PkgConfig - -# -- Configuring done -# -- Generating done -# -- Build files have been written to: D:/qt2/buildtrees/itk/x64-windows-dbg - - # D:\qt2\buildtrees\itk\src\d7c02f3c7b-959337cec2\Modules\ThirdParty\GDCM\src\CMakeLists.txt (13 hits) - # Line 29: set(GDCM_USE_SYSTEM_EXPAT ON CACHE INTERNAL "") - # Line 33: set(GDCM_USE_SYSTEM_OPENJPEG OFF CACHE INTERNAL "") - # Line 36: set(GDCM_USE_SYSTEM_ZLIB ON CACHE INTERNAL "") - # Line 47: set(GDCM_USE_SYSTEM_LJPEG OFF CACHE INTERNAL "Use system ljpeg (ijg lib)") - # Line 48: set(GDCM_USE_SYSTEM_OPENSSL OFF CACHE INTERNAL "Use system OpenSSL") - # Line 49: set(GDCM_USE_SYSTEM_PODOFO OFF CACHE INTERNAL "Use system podofo (pdf)") - # Line 50: set(GDCM_USE_SYSTEM_POPPLER OFF CACHE INTERNAL "Use system poppler (pdf)") - # Line 51: set(GDCM_USE_SYSTEM_UUID OFF CACHE INTERNAL "Use system uuid") - # Line 54: set(GDCM_USE_SYSTEM_CHARLS OFF CACHE INTERNAL "") - # Line 55: set(GDCM_USE_SYSTEM_JSON OFF CACHE INTERNAL "") - # Line 56: set(GDCM_USE_SYSTEM_LIBXML2 OFF CACHE INTERNAL "") - # Line 57: set(GDCM_USE_SYSTEM_PAPYRUS3 OFF CACHE INTERNAL "") - # Line 58: set(GDCM_USE_SYSTEM_SOCKETXX OFF CACHE INTERNAL "") - - # D:\qt2\buildtrees\itk\src\d7c02f3c7b-959337cec2\Modules\ThirdParty\GDCM\src\gdcm\CMakeLists.txt (41 hits) - # Line 313: option(GDCM_USE_SYSTEM_ZLIB "Use system zlib" OFF) - # Line 314: option(GDCM_USE_SYSTEM_OPENSSL "Use system OpenSSL" OFF) - # Line 318: option(GDCM_USE_SYSTEM_UUID "Use system uuid" OFF) - # Line 320: option(GDCM_USE_SYSTEM_EXPAT "Use system expat" OFF) - # Line 321: option(GDCM_USE_SYSTEM_JSON "Use system json" OFF) - # Line 322: option(GDCM_USE_SYSTEM_PAPYRUS3 "Use system papyrus3" OFF) - # Line 323: option(GDCM_USE_SYSTEM_SOCKETXX "Use system socket++" OFF) - # Line 324: option(GDCM_USE_SYSTEM_LJPEG "Use system ljpeg (ijg lib)" OFF) - # Line 325: option(GDCM_USE_SYSTEM_OPENJPEG "Use system openjpeg" OFF) - # Line 326: option(GDCM_USE_SYSTEM_CHARLS "Use system CharLS" OFF) - # Line 328: GDCM_USE_SYSTEM_ZLIB - # Line 329: GDCM_USE_SYSTEM_OPENSSL - # Line 330: GDCM_USE_SYSTEM_UUID - # Line 331: GDCM_USE_SYSTEM_EXPAT - # Line 332: GDCM_USE_SYSTEM_JSON - # Line 333: GDCM_USE_SYSTEM_PAPYRUS3 - # Line 334: GDCM_USE_SYSTEM_SOCKETXX - # Line 335: GDCM_USE_SYSTEM_LJPEG - # Line 336: GDCM_USE_SYSTEM_OPENJPEG - # Line 337: GDCM_USE_SYSTEM_CHARLS - # Line 339: option(GDCM_USE_SYSTEM_POPPLER "Use system poppler (pdf)" OFF) - # Line 340: if(GDCM_USE_SYSTEM_POPPLER) - # Line 343: mark_as_advanced(GDCM_USE_SYSTEM_POPPLER) - # Line 345: option(GDCM_USE_SYSTEM_LIBXML2 "Use LibXml2" OFF) - # Line 346: if(GDCM_USE_SYSTEM_LIBXML2) - # Line 349: mark_as_advanced(GDCM_USE_SYSTEM_LIBXML2) - # Line 351: if(GDCM_USE_SYSTEM_LJPEG) - # Line 358: if(GDCM_USE_SYSTEM_CHARLS) - # Line 365: if(GDCM_USE_SYSTEM_OPENJPEG) - # Line 381: option(GDCM_USE_SYSTEM_PVRG "Use system PVRG" OFF) - # Line 382: mark_as_advanced(GDCM_USE_SYSTEM_PVRG) - # Line 383: if(GDCM_USE_SYSTEM_PVRG) - # Line 394: option(GDCM_USE_SYSTEM_KAKADU "Use system KAKADU " ON) - # Line 395: mark_as_advanced(GDCM_USE_SYSTEM_KAKADU) - # Line 396: if(GDCM_USE_SYSTEM_KAKADU) \ No newline at end of file diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 436ad656b52315..8cfc9cca26e2bf 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -278,19 +278,20 @@ function(vcpkg_find_acquire_program VAR) set(HASH fe121b67b979a4e9580c7f62cfdbe0c243eba62a05b560d6d513ac7f35816d439b26d92fc2d7b7d7241c9ce2a49ea7949455a17587ef53c04a5f5125ac635727) elseif(VAR MATCHES "SWIG") set(PROGNAME swig) - set(PATHS ${DOWNLOADS}/tools/${PROGNAME}) if(CMAKE_HOST_WIN32) set(URL "https://sourceforge.net/projects/swig/files/swigwin/swigwin-4.0.1/swigwin-4.0.1.zip/download") set(ARCHIVE "swigwin-4.0.1.zip") set(HASH 2da147231164466c0dee91beca6a4f7b10e6f727062338ea6d70f44f4e4163ad6616b72c2de767539a69977ba96d3ee920ed3c182124c45569ca946750fd4495) set(SUBDIR "swigwin-4.0.1") - set(PATHS ${DOWNLOADS}/tools/swig/${SUBDIR}) + set(PATHS ${DOWNLOADS}/tools/swig/${SUBDIR}/${SUBDIR}) else() + #Not used + set(_vfa_SUPPORTED TRUE) set(URL https://sourceforge.net/projects/swig/files/swig/swig-4.0.1/swig-4.0.1.tar.gz/download) set(ARCHIVE "swig-4.0.1.tar.gz") - set(HASH fe121b67b979a4e9580c7f62cfdbe0c243eba62a05b560d6d513ac7f35816d439b26d92fc2d7b7d7241c9ce2a49ea7949455a17587ef53c04a5f5125ac635727) - set(SUBDIR "wix311-binaries") - set(PATHS ${DOWNLOADS}/tools/dark/${SUBDIR}) + set(HASH 595ef01cb83adfa960ceed9c325a9429192549e8d1e9aa3ab35a4301512a61d82e2e89a8c7939c2a5a0811254ea1832a443bd387e11459eb2b0bafc563ad1308) + set(SUBDIR "swig-4.0.1") + set(PATHS ${DOWNLOADS}/tools/swig/${SUBDIR}) endif() elseif(VAR MATCHES "DOXYGEN") set(PROGNAME doxygen) From 2c2e815f7b521d7df84753ba2136c06cdc9908ef Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 16:12:27 +0200 Subject: [PATCH 52/77] [vcpkg/scripts] fix swig --- ports/itk/portfile.cmake | 1 + scripts/cmake/vcpkg_find_acquire_program.cmake | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 9ade96371b3a22..97d2f9ec1c0762 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -74,6 +74,7 @@ if("python" IN_LIST FEATURES) message(STATUS "${PORT} builds a long time (>1h) with python wrappers enabled!") vcpkg_find_acquire_program(PYTHON3) vcpkg_find_acquire_program(SWIG) # Swig is only required for wrapping! + get_filename_component(SWIG_DIR "${SWIG}" DIRECTORY) list(APPEND ADDITIONAL_OPTIONS -DITK_WRAP_PYTHON=ON -DPython3_FIND_REGISTRY=NEVER diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 8cfc9cca26e2bf..47fca14f1e5b42 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -283,7 +283,7 @@ function(vcpkg_find_acquire_program VAR) set(ARCHIVE "swigwin-4.0.1.zip") set(HASH 2da147231164466c0dee91beca6a4f7b10e6f727062338ea6d70f44f4e4163ad6616b72c2de767539a69977ba96d3ee920ed3c182124c45569ca946750fd4495) set(SUBDIR "swigwin-4.0.1") - set(PATHS ${DOWNLOADS}/tools/swig/${SUBDIR}/${SUBDIR}) + set(PATHS "${DOWNLOADS}/tools/swig/${SUBDIR}/${SUBDIR}") else() #Not used set(_vfa_SUPPORTED TRUE) @@ -291,7 +291,7 @@ function(vcpkg_find_acquire_program VAR) set(ARCHIVE "swig-4.0.1.tar.gz") set(HASH 595ef01cb83adfa960ceed9c325a9429192549e8d1e9aa3ab35a4301512a61d82e2e89a8c7939c2a5a0811254ea1832a443bd387e11459eb2b0bafc563ad1308) set(SUBDIR "swig-4.0.1") - set(PATHS ${DOWNLOADS}/tools/swig/${SUBDIR}) + set(PATHS "${DOWNLOADS}/tools/swig/${SUBDIR}") endif() elseif(VAR MATCHES "DOXYGEN") set(PROGNAME doxygen) From 3ae6ac843baf740c7c22b86d357528ab768bdc5a Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 8 May 2020 16:16:12 +0200 Subject: [PATCH 53/77] [itk] fix python include path on unix system --- ports/itk/portfile.cmake | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 97d2f9ec1c0762..17d47eaae675cf 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -78,7 +78,6 @@ if("python" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS -DITK_WRAP_PYTHON=ON -DPython3_FIND_REGISTRY=NEVER - "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7" "-DPython3_EXECUTABLE:PATH=${PYTHON3}" # Required by more than one feature "-DSWIG_EXECUTABLE=${SWIG}" "-DSWIG_DIR=${SWIG_DIR}" @@ -86,12 +85,14 @@ if("python" IN_LIST FEATURES) # Due to ITKs internal shenanigans with the variables ...... if(VCPKG_TARGET_IS_WINDOWS) list(APPEND ADDITIONAL_OPTIONS "-DPython3_LIBRARY_RELEASE:PATH=${CURRENT_INSTALLED_DIR}/lib/python37.lib" - "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib") + "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib" + "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7") list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib") list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/python37.lib") else() list(APPEND ADDITIONAL_OPTIONS "-DPython3_LIBRARY_RELEASE:PATH=${CURRENT_INSTALLED_DIR}/lib/libpython37m.a" - "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/libpython37md.a") + "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/libpython37md.a" + "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7m") list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/libpython37md.a") list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/linpython37m.a") endif() From 28d37edb68a75556497b02b70b15909ce46dbdac Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 9 May 2020 23:44:03 +0200 Subject: [PATCH 54/77] [itk] remove python as a default. A bit of feature cleanup --- ports/itk/CONTROL | 16 +-- ports/itk/portfile.cmake | 61 ++++++---- ports/itk/python_gpu_wrapping.patch | 178 ++++++++++++++++++++++++++++ 3 files changed, 225 insertions(+), 30 deletions(-) create mode 100644 ports/itk/python_gpu_wrapping.patch diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL index 06c13baafeac55..d316675cb33cf0 100644 --- a/ports/itk/CONTROL +++ b/ports/itk/CONTROL @@ -3,7 +3,6 @@ Version: 5.1.0 Description: Insight Segmentation and Registration Toolkit (ITK) is used for image processing and analysis. Homepage: https://github.com/InsightSoftwareConsortium/ITK Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, eigen3, hdf5[core,cpp], openjpeg[core], fftw3[core], gtest, gdcm, icu, minc -Default-Features: python Feature: vtk Description: Build ITKVtkGlue module. @@ -13,13 +12,17 @@ Feature: python Description: Python functionality for ITK Build-Depends: python3 +Feature: opencl +Description: Use OpenCL +Build-Depends: opencl + Feature: cufftw Description: Use CUDA FFTW Build-Depends: cuda -Feature: opencl -Description: Use OpenCL -Build-Depends: opencl +Feature: cuda +Description: Build CUDA module +Build-Depends: cuda, itk[core, opencl] Feature: tbb Description: Build TBB Module @@ -28,10 +31,7 @@ Build-Depends: tbb Feature: rtk Description: Build RTK Module -Feature: rtktools +Feature: tools Description: Build RTK with tools Build-Depends: itk[core, rtk] -Feature: rtkcuda -Description: Build RTK Module with cuda -Build-Depends: itk[core, rtk, opencl], cuda diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 17d47eaae675cf..3df3ac525a2b13 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -7,24 +7,25 @@ vcpkg_from_github( SHA512 c358449870d580aeb10e32f8be0ca39e8a76d8dc06fda973788fafb5971333e546611c399190be49d40f5f3c18a1105d9699eef271a560aff25ce168a396926e HEAD_REF master PATCHES - #wip.patch hdf5.patch double-conversion.patch jpeg.patch var_libraries.patch wrapping.patch + python_gpu_wrapping.patch ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS "vtk" Module_ITKVtkGlue + "cuda" Module_ITKCudaCommon + #"cuda" CUDA_HAVE_GPU # Automatically set by FindCUDA? "cufftw" ITK_USE_CUFFTW "opencl" ITK_USE_GPU "tbb" Module_ITKTBB "rtk" Module_RTK - "rtkcuda" Module_ITKCudaCommon - "rtkcuda" RTK_USE_CUDA - "rtkcuda" CUDA_HAVE_GPU - "rtktools" RTK_BUILD_APPLICATIONS + "tools" RTK_BUILD_APPLICATIONS + # There are a lot of more (remote) modules and options in ITK + # feel free to add those as a feature ) if("cufftw" IN_LIST FEATURES) @@ -52,17 +53,29 @@ if("rtk" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS "-DModule_RTK_GIT_TAG=6c5d5c2a25a2dd15d3b5ae1d2b9e6f8360b2208d" # RTK latest versions (08.05.2020) ) + if("cuda" IN_LIST FEATURES) + list(APPEND ADDITIONAL_OPTIONS "-DRTK_USE_CUDA=ON") + endif() +endif() +if("opencl" IN_LIST FEATURES) + list(APPEND ADDITIONAL_OPTIONS # Wrapping options required by OpenCL if build with Python Wrappers + -DITK_WRAP_unsigned_long_long=ON + -DITK_WRAP_signed_long_long=ON + ) endif() -if("rtktools" IN_LIST FEATURES) - list(APPEND TOOL_NAMES rtkadmmtotalvariation rtkadmmwavelets rtkamsterdamshroud rtkbackprojections rtkbioscangeometry rtkcheckimagequality rtkconjugategradient - rtkdigisensgeometry rtkdrawgeometricphantom rtkdrawshepploganphantom rtkdualenergysimplexdecomposition rtkelektasynergygeometry rtkextractphasesignal - rtkextractshroudsignal rtkfdk rtkfdktwodweights rtkfieldofview rtkforwardprojections rtkfourdconjugategradient rtkfourdfdk rtkfourdrooster rtkfourdsart - rtkgaincorrection rtki0estimation rtkimagxgeometry rtkiterativefdk rtklagcorrection rtklastdimensionl0gradientdenoising rtklut rtkmaskcollimation rtkmcrooster - rtkmotioncompensatedfourdconjugategradient rtkorageometry rtkosem rtkoverlayphaseandshroud rtkparkershortscanweighting rtkprojectgeometricphantom - rtkprojectionmatrix rtkprojections rtkprojectshepploganphantom rtkramp rtkrayboxintersection rtkrayquadricintersection rtkregularizedconjugategradient - rtksart rtkscatterglarecorrection rtksimulatedgeometry rtkspectraldenoiseprojections rtkspectralforwardmodel rtkspectralonestep rtkspectralrooster rtkspectralsimplexdecomposition - rtksubselect rtktotalnuclearvariationdenoising rtktotalvariationdenoising rtktutorialapplication rtkvarianobigeometry rtkvarianprobeamgeometry rtkvectorconjugategradient - rtkwangdisplaceddetectorweighting rtkwarpedbackprojectsequence rtkwarpedforwardprojectsequence rtkwaveletsdenoising rtkxradgeometry) +if("tools" IN_LIST FEATURES) + + if("rtk" IN_LIST FEATURES) + list(APPEND TOOL_NAMES rtkadmmtotalvariation rtkadmmwavelets rtkamsterdamshroud rtkbackprojections rtkbioscangeometry rtkcheckimagequality rtkconjugategradient + rtkdigisensgeometry rtkdrawgeometricphantom rtkdrawshepploganphantom rtkdualenergysimplexdecomposition rtkelektasynergygeometry rtkextractphasesignal + rtkextractshroudsignal rtkfdk rtkfdktwodweights rtkfieldofview rtkforwardprojections rtkfourdconjugategradient rtkfourdfdk rtkfourdrooster rtkfourdsart + rtkgaincorrection rtki0estimation rtkimagxgeometry rtkiterativefdk rtklagcorrection rtklastdimensionl0gradientdenoising rtklut rtkmaskcollimation rtkmcrooster + rtkmotioncompensatedfourdconjugategradient rtkorageometry rtkosem rtkoverlayphaseandshroud rtkparkershortscanweighting rtkprojectgeometricphantom + rtkprojectionmatrix rtkprojections rtkprojectshepploganphantom rtkramp rtkrayboxintersection rtkrayquadricintersection rtkregularizedconjugategradient + rtksart rtkscatterglarecorrection rtksimulatedgeometry rtkspectraldenoiseprojections rtkspectralforwardmodel rtkspectralonestep rtkspectralrooster rtkspectralsimplexdecomposition + rtksubselect rtktotalnuclearvariationdenoising rtktotalvariationdenoising rtktutorialapplication rtkvarianobigeometry rtkvarianprobeamgeometry rtkvectorconjugategradient + rtkwangdisplaceddetectorweighting rtkwarpedbackprojectsequence rtkwarpedforwardprojectsequence rtkwaveletsdenoising rtkxradgeometry) + endif() endif() if("vtk" IN_LIST FEATURES) vcpkg_find_acquire_program(PYTHON3) @@ -89,14 +102,15 @@ if("python" IN_LIST FEATURES) "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7") list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib") list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/python37.lib") - else() + elseif(VCPKG_TARGET_IS_LINUX) list(APPEND ADDITIONAL_OPTIONS "-DPython3_LIBRARY_RELEASE:PATH=${CURRENT_INSTALLED_DIR}/lib/libpython37m.a" "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/libpython37md.a" "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7m") list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/libpython37md.a") list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/linpython37m.a") - endif() - + elseif(VCPKG_TARGET_IS_OSX) + #Need Python3 information on OSX within VCPKG + endif() #ITK_PYTHON_SITE_PACKAGES_SUFFIX should be set to the install dir of the site-packages within vcpkg endif() @@ -149,14 +163,17 @@ vcpkg_configure_cmake( #-DVXL_USE_GEOTIFF=ON -DVXL_USE_LFS=ON + -DITK_MINIMUM_COMPLIANCE_LEVEL:STRING=1 # To Display all remote modules within cmake-gui #-DModule_IOSTL=ON # example how to turn on a non-default module #-DModule_MorphologicalContourInterpolation=ON # example how to turn on a remote module #-DModule_RLEImage=ON # example how to turn on a remote module + + # Some additional wraping options + #-DITK_WRAP_double=ON + #-DITK_WRAP_complex_double=ON + #-DITK_WRAP_covariant_vector_double=ON + #-DITK_WRAP_vector_double=ON - -DITK_WRAP_double=ON - -DITK_WRAP_complex_double=ON - -DITK_WRAP_covariant_vector_double=ON - -DITK_WRAP_vector_double=ON ${FEATURE_OPTIONS} ${ADDITIONAL_OPTIONS} diff --git a/ports/itk/python_gpu_wrapping.patch b/ports/itk/python_gpu_wrapping.patch new file mode 100644 index 00000000000000..37367d979e0fb8 --- /dev/null +++ b/ports/itk/python_gpu_wrapping.patch @@ -0,0 +1,178 @@ +diff --git a/CMake/itkOpenCL.cmake b/CMake/itkOpenCL.cmake +index 0ccbe144d..fa381524f 100644 +--- a/CMake/itkOpenCL.cmake ++++ b/CMake/itkOpenCL.cmake +@@ -48,7 +48,7 @@ if(ITK_USE_GPU) + ) + set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE} + PROPERTIES GENERATED ON) +- set(${SRC_VAR} ${${SRC_VAR}} ${OUTPUT_FILE}) ++ set(${SRC_VAR} ${${SRC_VAR}} ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE}) + endmacro() + + macro(write_gpu_kernels GPUKernels GPU_SRC) +diff --git a/Modules/Core/Common/include/itkMacro.h b/Modules/Core/Common/include/itkMacro.h +index 1816f722a..3a6a8aee5 100644 +--- a/Modules/Core/Common/include/itkMacro.h ++++ b/Modules/Core/Common/include/itkMacro.h +@@ -1141,7 +1141,7 @@ compilers. + #define itkGetVectorMacro(name, type, count) \ + virtual type * Get##name() const { return this->m_##name; } + +-/**\def itkGPUKernelClassMacro ++/**\def class itkGPUKernelClassMacro + * Construct a non-templatized helper class that + * provides the GPU kernel source code as a const char* + */ +@@ -1150,7 +1150,7 @@ compilers. + * Workaround KWstyle bug \ \ + * \ingroup ITKCommon \ \ + */ \ +- class kernel \ ++ kernel \ + { \ + public: \ + static const char * \ +diff --git a/Modules/Core/GPUCommon/include/itkGPUImageOps.h b/Modules/Core/GPUCommon/include/itkGPUImageOps.h +index f4eb8f33b..fbdf3d757 100644 +--- a/Modules/Core/GPUCommon/include/itkGPUImageOps.h ++++ b/Modules/Core/GPUCommon/include/itkGPUImageOps.h +@@ -23,7 +23,7 @@ + namespace itk + { + /** Create a helper GPU Kernel class for GPUImageOps */ +-itkGPUKernelClassMacro(GPUImageOpsKernel); ++class itkGPUKernelClassMacro(GPUImageOpsKernel); + + /** \class GPUImageOps + * +diff --git a/Modules/Core/GPUCommon/include/itkGPUReduction.h b/Modules/Core/GPUCommon/include/itkGPUReduction.h +index 524a5cd01..1b3ce91e9 100644 +--- a/Modules/Core/GPUCommon/include/itkGPUReduction.h ++++ b/Modules/Core/GPUCommon/include/itkGPUReduction.h +@@ -26,7 +26,7 @@ + namespace itk + { + /** Create a helper GPU Kernel class for GPUReduction */ +-itkGPUKernelClassMacro(GPUReductionKernel); ++class itkGPUKernelClassMacro(GPUReductionKernel); + + /** + * \class GPUReduction +diff --git a/Modules/Core/GPUFiniteDifference/include/itkGPUDenseFiniteDifferenceImageFilter.h b/Modules/Core/GPUFiniteDifference/include/itkGPUDenseFiniteDifferenceImageFilter.h +index 853801cec..2fccf0bc5 100644 +--- a/Modules/Core/GPUFiniteDifference/include/itkGPUDenseFiniteDifferenceImageFilter.h ++++ b/Modules/Core/GPUFiniteDifference/include/itkGPUDenseFiniteDifferenceImageFilter.h +@@ -24,7 +24,7 @@ + namespace itk + { + /** Create a helper GPU Kernel class for GPUDenseFiniteDifferenceImageFilter */ +-itkGPUKernelClassMacro(GPUDenseFiniteDifferenceImageFilterKernel); ++class ITKGPUFiniteDifference_EXPORT itkGPUKernelClassMacro(GPUDenseFiniteDifferenceImageFilterKernel); + + /** + * \class GPUDenseFiniteDifferenceImageFilter +diff --git a/Modules/Filtering/GPUAnisotropicSmoothing/include/itkGPUGradientNDAnisotropicDiffusionFunction.h b/Modules/Filtering/GPUAnisotropicSmoothing/include/itkGPUGradientNDAnisotropicDiffusionFunction.h +index 4245ff914..1b21b709e 100644 +--- a/Modules/Filtering/GPUAnisotropicSmoothing/include/itkGPUGradientNDAnisotropicDiffusionFunction.h ++++ b/Modules/Filtering/GPUAnisotropicSmoothing/include/itkGPUGradientNDAnisotropicDiffusionFunction.h +@@ -54,7 +54,7 @@ namespace itk + */ + + /** Create a helper GPU Kernel class for GPUGradientNDAnisotropicDiffusionFunction */ +-itkGPUKernelClassMacro(GPUGradientNDAnisotropicDiffusionFunctionKernel); ++class itkGPUKernelClassMacro(GPUGradientNDAnisotropicDiffusionFunctionKernel); + + template + class ITK_TEMPLATE_EXPORT GPUGradientNDAnisotropicDiffusionFunction +diff --git a/Modules/Filtering/GPUAnisotropicSmoothing/include/itkGPUScalarAnisotropicDiffusionFunction.h b/Modules/Filtering/GPUAnisotropicSmoothing/include/itkGPUScalarAnisotropicDiffusionFunction.h +index 305f6490e..d0d433080 100644 +--- a/Modules/Filtering/GPUAnisotropicSmoothing/include/itkGPUScalarAnisotropicDiffusionFunction.h ++++ b/Modules/Filtering/GPUAnisotropicSmoothing/include/itkGPUScalarAnisotropicDiffusionFunction.h +@@ -32,7 +32,7 @@ namespace itk + * */ + + /** Create a helper GPU Kernel class for GPUScalarAnisotropicDiffusionFunction */ +-itkGPUKernelClassMacro(GPUScalarAnisotropicDiffusionFunctionKernel); ++class itkGPUKernelClassMacro(GPUScalarAnisotropicDiffusionFunctionKernel); + + template + class ITK_TEMPLATE_EXPORT GPUScalarAnisotropicDiffusionFunction : public GPUAnisotropicDiffusionFunction +diff --git a/Modules/Filtering/GPUImageFilterBase/include/itkGPUCastImageFilter.h b/Modules/Filtering/GPUImageFilterBase/include/itkGPUCastImageFilter.h +index 23530ac5c..e1b83f696 100644 +--- a/Modules/Filtering/GPUImageFilterBase/include/itkGPUCastImageFilter.h ++++ b/Modules/Filtering/GPUImageFilterBase/include/itkGPUCastImageFilter.h +@@ -29,7 +29,7 @@ namespace itk + { + + /** Create a helper GPU Kernel class for GPUCastImageFilter */ +-itkGPUKernelClassMacro(GPUCastImageFilterKernel); ++class itkGPUKernelClassMacro(GPUCastImageFilterKernel); + + /** \class GPUCastImageFilter + * \brief GPU version of CastImageFilter. +diff --git a/Modules/Filtering/GPUImageFilterBase/include/itkGPUNeighborhoodOperatorImageFilter.h b/Modules/Filtering/GPUImageFilterBase/include/itkGPUNeighborhoodOperatorImageFilter.h +index c4adc2967..69aeac6db 100644 +--- a/Modules/Filtering/GPUImageFilterBase/include/itkGPUNeighborhoodOperatorImageFilter.h ++++ b/Modules/Filtering/GPUImageFilterBase/include/itkGPUNeighborhoodOperatorImageFilter.h +@@ -41,7 +41,7 @@ namespace itk + */ + + /** Create a helper GPU Kernel class for GPUNeighborhoodOperatorImageFilter */ +-itkGPUKernelClassMacro(GPUNeighborhoodOperatorImageFilterKernel); ++class itkGPUKernelClassMacro(GPUNeighborhoodOperatorImageFilterKernel); + + template + class ITK_TEMPLATE_EXPORT GPUMeanImageFilter +diff --git a/Modules/Filtering/GPUThresholding/include/itkGPUBinaryThresholdImageFilter.h b/Modules/Filtering/GPUThresholding/include/itkGPUBinaryThresholdImageFilter.h +index 8d26dcfc5..613bc623f 100644 +--- a/Modules/Filtering/GPUThresholding/include/itkGPUBinaryThresholdImageFilter.h ++++ b/Modules/Filtering/GPUThresholding/include/itkGPUBinaryThresholdImageFilter.h +@@ -85,7 +85,7 @@ private: + } // end of namespace Functor + + /** Create a helper GPU Kernel class for GPUBinaryThresholdImageFilter */ +-itkGPUKernelClassMacro(GPUBinaryThresholdImageFilterKernel); ++class itkGPUKernelClassMacro(GPUBinaryThresholdImageFilterKernel); + + /** + * \class GPUBinaryThresholdImageFilter +diff --git a/Modules/Registration/GPUPDEDeformable/include/itkGPUDemonsRegistrationFunction.h b/Modules/Registration/GPUPDEDeformable/include/itkGPUDemonsRegistrationFunction.h +index 28b21d592..0b46e27b8 100644 +--- a/Modules/Registration/GPUPDEDeformable/include/itkGPUDemonsRegistrationFunction.h ++++ b/Modules/Registration/GPUPDEDeformable/include/itkGPUDemonsRegistrationFunction.h +@@ -51,7 +51,7 @@ namespace itk + * \ingroup ITKGPUPDEDeformableRegistration + */ + /** Create a helper GPU Kernel class for GPUDemonsRegistrationFunction */ +-itkGPUKernelClassMacro(GPUDemonsRegistrationFunctionKernel); ++class itkGPUKernelClassMacro(GPUDemonsRegistrationFunctionKernel); + + template + class ITK_TEMPLATE_EXPORT GPUDemonsRegistrationFunction +diff --git a/Modules/Registration/GPUPDEDeformable/include/itkGPUPDEDeformableRegistrationFilter.h b/Modules/Registration/GPUPDEDeformable/include/itkGPUPDEDeformableRegistrationFilter.h +index 93ab975ec..0afd84871 100644 +--- a/Modules/Registration/GPUPDEDeformable/include/itkGPUPDEDeformableRegistrationFilter.h ++++ b/Modules/Registration/GPUPDEDeformable/include/itkGPUPDEDeformableRegistrationFilter.h +@@ -73,7 +73,7 @@ namespace itk + */ + + /** Create a helper GPU Kernel class for GPUPDEDeformableRegistrationFilter */ +-itkGPUKernelClassMacro(GPUPDEDeformableRegistrationFilterKernel); ++class itkGPUKernelClassMacro(GPUPDEDeformableRegistrationFilterKernel); + + template Date: Tue, 12 May 2020 17:19:35 +0200 Subject: [PATCH 55/77] [itk] update remote RTK --- ports/itk/portfile.cmake | 7 +- ports/itk/rtk/already_defined.patch | 100 +++++++++++++ ports/itk/rtk/unresolved.patch | 213 ++++++++++++++++++++++++++++ 3 files changed, 318 insertions(+), 2 deletions(-) create mode 100644 ports/itk/rtk/already_defined.patch create mode 100644 ports/itk/rtk/unresolved.patch diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 3df3ac525a2b13..c3bf206190dcac 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -50,8 +50,9 @@ if("cufftw" IN_LIST FEATURES) endif() endif() if("rtk" IN_LIST FEATURES) + SET(BUILD_RTK ON) list(APPEND ADDITIONAL_OPTIONS - "-DModule_RTK_GIT_TAG=6c5d5c2a25a2dd15d3b5ae1d2b9e6f8360b2208d" # RTK latest versions (08.05.2020) + "-DModule_RTK_GIT_TAG=8099212f715231d093f7d6a1114daecf45d871ed" # RTK latest versions (11.05.2020) ) if("cuda" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS "-DRTK_USE_CUDA=ON") @@ -180,7 +181,9 @@ vcpkg_configure_cmake( OPTIONS_DEBUG ${OPTIONS_DEBUG} OPTIONS_RELEASE ${OPTIONS_RELEASE} ) - +if(BUILD_RTK) # Remote Modules are only downloaded on configure. already_defined.patch + vcpkg_apply_patches(SOURCE_PATH "${SOURCE_PATH}/Modules/Remote/RTK" QUITE PATCHES rtk/already_defined.patch rtk/unresolved.patch) +endif() vcpkg_install_cmake() vcpkg_copy_pdbs() vcpkg_fixup_cmake_targets() diff --git a/ports/itk/rtk/already_defined.patch b/ports/itk/rtk/already_defined.patch new file mode 100644 index 00000000000000..60b75e3eb96127 --- /dev/null +++ b/ports/itk/rtk/already_defined.patch @@ -0,0 +1,100 @@ +diff --git a/include/rtkProjectionGeometry.h b/include/rtkProjectionGeometry.h +index e5831611f..73ed2b74f 100644 +--- a/include/rtkProjectionGeometry.h ++++ b/include/rtkProjectionGeometry.h +@@ -23,6 +23,7 @@ + + #include + ++#include "RTKExport.h" + #include "rtkMacro.h" + + namespace rtk +@@ -67,25 +68,18 @@ public: + * with the i-th matrix provides the physical coordinate on + * the i-th projection. + */ +- const std::vector & +- GetMatrices() const +- { +- return this->m_Matrices; +- } ++ itkGetConstReferenceMacro(Matrices,std::vector) + + /** Get the i-th projection matrix. */ + MatrixType +- GetMatrix(const unsigned int i) const +- { +- return this->m_Matrices[i]; +- } ++ GetMatrix(const unsigned int i) const; + + /** Empty the geometry object. */ + virtual void + Clear(); + + protected: +- ProjectionGeometry() = default; ++ ProjectionGeometry(); + ~ProjectionGeometry() override = default; + + void +@@ -93,11 +87,7 @@ protected: + + /** Add projection matrix */ + virtual void +- AddMatrix(const MatrixType & m) +- { +- this->m_Matrices.push_back(m); +- this->Modified(); +- } ++ AddMatrix(const MatrixType & m); + + private: + /** Projection matrices */ +@@ -105,6 +95,9 @@ private: + }; + } // namespace rtk + +-#include "rtkProjectionGeometry.hxx" ++#ifndef ITK_MANUAL_INSTANTIATION ++# include "rtkProjectionGeometry.hxx" ++#endif ++ + + #endif // rtkProjectionGeometry_h +diff --git a/include/rtkProjectionGeometry.hxx b/include/rtkProjectionGeometry.hxx +index 192265812..97dfe8c3a 100644 +--- a/include/rtkProjectionGeometry.hxx ++++ b/include/rtkProjectionGeometry.hxx +@@ -23,6 +23,8 @@ + + namespace rtk + { ++template ++ProjectionGeometry::ProjectionGeometry() = default; + + template + void +@@ -43,6 +45,21 @@ ProjectionGeometry::Clear() + this->Modified(); + } + ++template ++typename ProjectionGeometry::MatrixType ++ProjectionGeometry::GetMatrix(const unsigned int i) const ++{ ++ return this->m_Matrices[i]; ++} ++ ++template ++void ++ProjectionGeometry::AddMatrix(const typename ProjectionGeometry::MatrixType & m) ++{ ++ this->m_Matrices.push_back(m); ++ this->Modified(); ++} ++ + } // namespace rtk + + #endif // rtkProjectionGeometry_hxx diff --git a/ports/itk/rtk/unresolved.patch b/ports/itk/rtk/unresolved.patch new file mode 100644 index 00000000000000..e2209ec7574070 --- /dev/null +++ b/ports/itk/rtk/unresolved.patch @@ -0,0 +1,213 @@ +diff --git a/include/rtkDCMImagXImageIO.h b/include/rtkDCMImagXImageIO.h +index 2a70ae046..69abb409e 100644 +--- a/include/rtkDCMImagXImageIO.h ++++ b/include/rtkDCMImagXImageIO.h +@@ -18,7 +18,7 @@ + + #ifndef rtkDCMImagXImageIO_h + #define rtkDCMImagXImageIO_h +- ++#include "RTKExport.h" + #include + + #include "rtkMacro.h" +@@ -32,7 +32,7 @@ namespace rtk + * + * \ingroup RTK + */ +-class DCMImagXImageIO : public itk::GDCMImageIO ++class RTK_EXPORT DCMImagXImageIO : public itk::GDCMImageIO + { + public: + ITK_DISALLOW_COPY_AND_ASSIGN(DCMImagXImageIO); +diff --git a/include/rtkEdfImageIO.h b/include/rtkEdfImageIO.h +index 66499c56b..7b16fbc5a 100644 +--- a/include/rtkEdfImageIO.h ++++ b/include/rtkEdfImageIO.h +@@ -18,7 +18,7 @@ + + #ifndef rtkEdfImageIO_h + #define rtkEdfImageIO_h +- ++#include "RTKExport.h" + #include + #include + #include +@@ -36,7 +36,7 @@ namespace rtk + * + * \ingroup RTK IOFilters + */ +-class EdfImageIO : public itk::ImageIOBase ++class RTK_EXPORT EdfImageIO : public itk::ImageIOBase + { + public: + ITK_DISALLOW_COPY_AND_ASSIGN(EdfImageIO); +diff --git a/include/rtkHisImageIO.h b/include/rtkHisImageIO.h +index 2ef2005dd..95449b8a6 100644 +--- a/include/rtkHisImageIO.h ++++ b/include/rtkHisImageIO.h +@@ -19,6 +19,8 @@ + #ifndef rtkHisImageIO_h + #define rtkHisImageIO_h + ++#include "RTKExport.h" ++ + // itk include + #include + #include "rtkMacro.h" +@@ -35,7 +37,7 @@ namespace rtk + * + * \ingroup RTK IOFilters + */ +-class HisImageIO : public itk::ImageIOBase ++class RTK_EXPORT HisImageIO : public itk::ImageIOBase + { + public: + /** Standard class type alias. */ +diff --git a/include/rtkHncImageIO.h b/include/rtkHncImageIO.h +index 7b9539bde..dc9dca759 100644 +--- a/include/rtkHncImageIO.h ++++ b/include/rtkHncImageIO.h +@@ -19,9 +19,11 @@ + #ifndef rtkHncImageIO_h + #define rtkHncImageIO_h + ++#include "RTKExport.h" ++ + // itk include + #include +-#include "itksys/SystemTools.hxx" ++//#include "itksys/SystemTools.hxx" + + #if defined(_MSC_VER) && (_MSC_VER < 1600) + // SR: taken from +@@ -43,7 +45,7 @@ namespace rtk + * + * \ingroup RTK IOFilters + */ +-class HncImageIO : public itk::ImageIOBase ++class RTK_EXPORT HncImageIO : public itk::ImageIOBase + { + public: + /** Standard class type alias. */ +diff --git a/include/rtkHncImageIOFactory.h b/include/rtkHncImageIOFactory.h +index 2bca8f77e..1d5a97938 100644 +--- a/include/rtkHncImageIOFactory.h ++++ b/include/rtkHncImageIOFactory.h +@@ -38,7 +38,7 @@ namespace rtk + * + * \ingroup RTK IOFilters + */ +-class HncImageIOFactory : public itk::ObjectFactoryBase ++class RTK_EXPORT HncImageIOFactory : public itk::ObjectFactoryBase + { + public: + /** Standard class type alias. */ +diff --git a/include/rtkHndImageIO.h b/include/rtkHndImageIO.h +index 5a07897cc..5f843362a 100644 +--- a/include/rtkHndImageIO.h ++++ b/include/rtkHndImageIO.h +@@ -19,6 +19,8 @@ + #ifndef rtkHndImageIO_h + #define rtkHndImageIO_h + ++#include "RTKExport.h" ++ + // itk include + #include + +@@ -43,7 +45,7 @@ namespace rtk + * + * \ingroup RTK IOFilters + */ +-class HndImageIO : public itk::ImageIOBase ++class RTK_EXPORT HndImageIO : public itk::ImageIOBase + { + public: + /** Standard class type alias. */ +diff --git a/include/rtkImagXImageIO.h b/include/rtkImagXImageIO.h +index d69e9a790..d6cc8388e 100644 +--- a/include/rtkImagXImageIO.h ++++ b/include/rtkImagXImageIO.h +@@ -18,7 +18,7 @@ + + #ifndef rtkImagXImageIO_h + #define rtkImagXImageIO_h +- ++#include "RTKExport.h" + #include + #include + #include +@@ -34,7 +34,7 @@ namespace rtk + * + * \ingroup RTK + */ +-class ImagXImageIO : public itk::ImageIOBase ++class RTK_EXPORT ImagXImageIO : public itk::ImageIOBase + { + public: + /** Standard class type alias. */ +diff --git a/include/rtkOraImageIO.h b/include/rtkOraImageIO.h +index ece525a42..2d5332872 100644 +--- a/include/rtkOraImageIO.h ++++ b/include/rtkOraImageIO.h +@@ -19,6 +19,8 @@ + #ifndef rtkOraImageIO_h + #define rtkOraImageIO_h + ++#include "RTKExport.h" ++ + // This is done to avoid any interference with zlib + #ifdef OF + # undef OF +@@ -41,7 +43,7 @@ namespace rtk + * + * \ingroup RTK IOFilters + */ +-class OraImageIO : public itk::MetaImageIO ++class RTK_EXPORT OraImageIO : public itk::MetaImageIO + { + public: + /** Standard class type alias. */ +diff --git a/include/rtkXRadImageIO.h b/include/rtkXRadImageIO.h +index a72c934e4..0a92afa22 100644 +--- a/include/rtkXRadImageIO.h ++++ b/include/rtkXRadImageIO.h +@@ -19,6 +19,7 @@ + #ifndef rtkXRadImageIO_h + #define rtkXRadImageIO_h + ++#include "RTKExport.h" + #include + #include + #include +@@ -37,7 +38,7 @@ namespace rtk + * + * \ingroup RTK IOFilters + */ +-class XRadImageIO : public itk::ImageIOBase ++class RTK_EXPORT XRadImageIO : public itk::ImageIOBase + { + public: + /** Standard class type alias. */ +diff --git a/include/rtkXimImageIO.h b/include/rtkXimImageIO.h +index ae789dbf9..741f05183 100644 +--- a/include/rtkXimImageIO.h ++++ b/include/rtkXimImageIO.h +@@ -19,6 +19,7 @@ + #ifndef rtkXimImageIO_h + #define rtkXimImageIO_h + ++#include "RTKExport.h" + #include "rtkMacro.h" + + // itk include +@@ -43,7 +44,7 @@ namespace rtk + * + * \ingroup RTK IOFilters + */ +-class XimImageIO : public itk::ImageIOBase ++class RTK_EXPORT XimImageIO : public itk::ImageIOBase + { + public: + /** Standard class type alias. */ From edd414e57a8ecd9248653899039e9eca944016c0 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 13 May 2020 13:45:37 +0200 Subject: [PATCH 56/77] [itk|rtk] remove RTK module before configure to allow patching --- ports/itk/portfile.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index c3bf206190dcac..4439d91cd43c20 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -57,6 +57,7 @@ if("rtk" IN_LIST FEATURES) if("cuda" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS "-DRTK_USE_CUDA=ON") endif() + file(REMOVE_RECURSE "${SOURCE_PATH}/Modules/Remote/RTK") endif() if("opencl" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS # Wrapping options required by OpenCL if build with Python Wrappers From 1f848f10652ea04c30d0c723e5d17bce508c49ef Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 13 May 2020 16:15:11 +0200 Subject: [PATCH 57/77] [opencl] update opencl wrapper --- ports/opencl/CONTROL | 2 +- ports/opencl/vcpkg-cmake-wrapper.cmake | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ports/opencl/CONTROL b/ports/opencl/CONTROL index 9ddd88dd4f666c..31ee4b833fc882 100644 --- a/ports/opencl/CONTROL +++ b/ports/opencl/CONTROL @@ -1,5 +1,5 @@ Source: opencl -Version: 2.2-2 +Version: 2.2-3 Homepage: https://github.com/KhronosGroup/OpenCL-Headers Description: C/C++ headers and ICD loader (Installable Client Driver) for OpenCL diff --git a/ports/opencl/vcpkg-cmake-wrapper.cmake b/ports/opencl/vcpkg-cmake-wrapper.cmake index 73c9da576937b5..0893710ff58a4a 100644 --- a/ports/opencl/vcpkg-cmake-wrapper.cmake +++ b/ports/opencl/vcpkg-cmake-wrapper.cmake @@ -4,6 +4,9 @@ if(NOT BUILD_SHARED_LIBS AND (NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")) set(OpenCL_Extra_Libs ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT}) if(CMAKE_SYSTEM_NAME MATCHES "Windows") list(APPEND OpenCL_Extra_Libs cfgmgr32) + if($ENV{WindowsSDKVersion} MATCHES "^10") + list(APPEND OpenCL_Extra_Libs OneCoreUAP) + endif() endif(CMAKE_SYSTEM_NAME MATCHES "Windows") if(TARGET OpenCL::OpenCL) From f11f0387190c9413490ad68863b58baf76dda2e6 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 13 May 2020 16:30:01 +0200 Subject: [PATCH 58/77] [itk] fix opencl static linkage --- ports/itk/opencl.patch | 176 +++++++++++++++++++++++++++++++++++++++ ports/itk/portfile.cmake | 3 + 2 files changed, 179 insertions(+) create mode 100644 ports/itk/opencl.patch diff --git a/ports/itk/opencl.patch b/ports/itk/opencl.patch new file mode 100644 index 00000000000000..f935d09d40dade --- /dev/null +++ b/ports/itk/opencl.patch @@ -0,0 +1,176 @@ +diff --git a/Modules/Core/GPUCommon/CMakeLists.txt b/Modules/Core/GPUCommon/CMakeLists.txt +index da2d66b63..6fb476680 100644 +--- a/Modules/Core/GPUCommon/CMakeLists.txt ++++ b/Modules/Core/GPUCommon/CMakeLists.txt +@@ -24,9 +24,13 @@ if(ITK_USE_GPU AND APPLE AND NOT ITK_COMPILER_HAS_BLOCKS) + endif() + + if(ITK_USE_GPU) ++ message(STATUS "OPENCL_LIBRARIES:${OPENCL_LIBRARIES}") ++ if(TARGET OpenCL::OpenCL) ++ message(STATUS "OPENCL_LIBRARIES:${OpenCL_LIBRARIES}") ++ endif() + set(ITKGPUCommon_LIBRARIES ITKGPUCommon) +- set(ITKGPUCommon_SYSTEM_INCLUDE_DIRS ${OPENCL_INCLUDE_DIRS}) +- set(ITKGPUCommon_SYSTEM_LIBRARY_DIRS ${OPENCL_LIBRARIES}) ++ set(ITKGPUCommon_SYSTEM_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS}) ++ set(ITKGPUCommon_SYSTEM_LIBRARY_DIRS ${OpenCL_LIBRARIES}) + endif() + + if(NOT ITK_SOURCE_DIR) +diff --git a/Modules/Core/GPUCommon/src/CMakeLists.txt b/Modules/Core/GPUCommon/src/CMakeLists.txt +index 0b39f2a9a..160f7a752 100644 +--- a/Modules/Core/GPUCommon/src/CMakeLists.txt ++++ b/Modules/Core/GPUCommon/src/CMakeLists.txt +@@ -14,5 +14,5 @@ if (ITK_USE_GPU) + write_gpu_kernels("${ITKGPUCommon_Kernels}" ITKGPUCommon_SRCS) + + itk_module_add_library(ITKGPUCommon ${ITKGPUCommon_SRCS}) +- target_link_libraries(ITKGPUCommon LINK_PUBLIC ${OPENCL_LIBRARIES}) ++ target_link_libraries(ITKGPUCommon LINK_PUBLIC ${OpenCL_LIBRARIES}) + endif() +diff --git a/Modules/Core/GPUFiniteDifference/CMakeLists.txt b/Modules/Core/GPUFiniteDifference/CMakeLists.txt +index c1bfde450..a642d9230 100644 +--- a/Modules/Core/GPUFiniteDifference/CMakeLists.txt ++++ b/Modules/Core/GPUFiniteDifference/CMakeLists.txt +@@ -9,8 +9,8 @@ if(NOT ITK_SOURCE_DIR) + endif() + + if (ITK_USE_GPU) +- set(ITKGPUFiniteDifference_SYSTEM_INCLUDE_DIRS ${OPENCL_INCLUDE_DIRS}) +- set(ITKGPUFiniteDifference_SYSTEM_LIBRARY_DIRS ${OPENCL_LIBRARIES}) ++ set(ITKGPUFiniteDifference_SYSTEM_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS}) ++ set(ITKGPUFiniteDifference_SYSTEM_LIBRARY_DIRS ${OpenCL_LIBRARIES}) + set(ITKGPUFiniteDifference_LIBRARIES ITKGPUFiniteDifference) + endif() + +diff --git a/Modules/Core/GPUFiniteDifference/src/CMakeLists.txt b/Modules/Core/GPUFiniteDifference/src/CMakeLists.txt +index 8425cc025..8335c69a0 100644 +--- a/Modules/Core/GPUFiniteDifference/src/CMakeLists.txt ++++ b/Modules/Core/GPUFiniteDifference/src/CMakeLists.txt +@@ -9,5 +9,5 @@ if (ITK_USE_GPU) + write_gpu_kernels("${ITKGPUFiniteDifference_Kernels}" ITKGPUFiniteDifference_SRCS) + + itk_module_add_library(ITKGPUFiniteDifference ${ITKGPUFiniteDifference_SRCS}) +- target_link_libraries(ITKGPUFiniteDifference LINK_PUBLIC ${OPENCL_LIBRARIES}) ++ target_link_libraries(ITKGPUFiniteDifference LINK_PUBLIC ${OpenCL_LIBRARIES}) + endif() +diff --git a/Modules/Filtering/GPUAnisotropicSmoothing/CMakeLists.txt b/Modules/Filtering/GPUAnisotropicSmoothing/CMakeLists.txt +index f36fd887d..310d983fa 100644 +--- a/Modules/Filtering/GPUAnisotropicSmoothing/CMakeLists.txt ++++ b/Modules/Filtering/GPUAnisotropicSmoothing/CMakeLists.txt +@@ -10,8 +10,8 @@ endif() + + if (ITK_USE_GPU) + set(ITKGPUAnisotropicSmoothing_LIBRARIES ITKGPUAnisotropicSmoothing) +- set(ITKGPUAnisotropicSmoothing_SYSTEM_INCLUDE_DIRS ${OPENCL_INCLUDE_DIRS}) +- set(ITKGPUAnisotropicSmoothing_SYSTEM_LIBRARY_DIRS ${OPENCL_LIBRARIES}) ++ set(ITKGPUAnisotropicSmoothing_SYSTEM_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS}) ++ set(ITKGPUAnisotropicSmoothing_SYSTEM_LIBRARY_DIRS ${OpenCL_LIBRARIES}) + endif() + + if(NOT ITK_SOURCE_DIR) +diff --git a/Modules/Filtering/GPUImageFilterBase/CMakeLists.txt b/Modules/Filtering/GPUImageFilterBase/CMakeLists.txt +index 078905521..67fd7b832 100644 +--- a/Modules/Filtering/GPUImageFilterBase/CMakeLists.txt ++++ b/Modules/Filtering/GPUImageFilterBase/CMakeLists.txt +@@ -10,8 +10,8 @@ endif() + + if (ITK_USE_GPU) + set(ITKGPUImageFilterBase_LIBRARIES ITKGPUImageFilterBase) +- set(ITKGPUImageFilterBase_SYSTEM_INCLUDE_DIRS ${OPENCL_INCLUDE_DIRS}) +- set(ITKGPUImageFilterBase_SYSTEM_LIBRARY_DIRS ${OPENCL_LIBRARIES}) ++ set(ITKGPUImageFilterBase_SYSTEM_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS}) ++ set(ITKGPUImageFilterBase_SYSTEM_LIBRARY_DIRS ${OpenCL_LIBRARIES}) + endif() + + if(NOT ITK_SOURCE_DIR) +diff --git a/Modules/Filtering/GPUImageFilterBase/src/CMakeLists.txt b/Modules/Filtering/GPUImageFilterBase/src/CMakeLists.txt +index 251493f5e..6d33fa964 100644 +--- a/Modules/Filtering/GPUImageFilterBase/src/CMakeLists.txt ++++ b/Modules/Filtering/GPUImageFilterBase/src/CMakeLists.txt +@@ -10,5 +10,5 @@ if (ITK_USE_GPU) + write_gpu_kernels("${ITKGPUImageFilterBase_Kernels}" ITKGPUImageFilterBase_SRCS) + + itk_module_add_library(ITKGPUImageFilterBase ${ITKGPUImageFilterBase_SRCS}) +- target_link_libraries(ITKGPUImageFilterBase LINK_PUBLIC ${OPENCL_LIBRARIES}) ++ target_link_libraries(ITKGPUImageFilterBase LINK_PUBLIC ${OpenCL_LIBRARIES}) + endif() +diff --git a/Modules/Filtering/GPUSmoothing/CMakeLists.txt b/Modules/Filtering/GPUSmoothing/CMakeLists.txt +index 9bac40921..2ed493d40 100644 +--- a/Modules/Filtering/GPUSmoothing/CMakeLists.txt ++++ b/Modules/Filtering/GPUSmoothing/CMakeLists.txt +@@ -10,8 +10,8 @@ endif() + + if (ITK_USE_GPU) + set(ITKGPUSmoothing_LIBRARIES ITKGPUSmoothing) +- set(ITKGPUSmoothing_SYSTEM_INCLUDE_DIRS ${OPENCL_INCLUDE_DIRS}) +- set(ITKGPUSmoothing_SYSTEM_LIBRARY_DIRS ${OPENCL_LIBRARIES}) ++ set(ITKGPUSmoothing_SYSTEM_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS}) ++ set(ITKGPUSmoothing_SYSTEM_LIBRARY_DIRS ${OpenCL_LIBRARIES}) + endif() + + if(NOT ITK_SOURCE_DIR) +diff --git a/Modules/Filtering/GPUSmoothing/src/CMakeLists.txt b/Modules/Filtering/GPUSmoothing/src/CMakeLists.txt +index d2120e842..2c6ca4a4a 100644 +--- a/Modules/Filtering/GPUSmoothing/src/CMakeLists.txt ++++ b/Modules/Filtering/GPUSmoothing/src/CMakeLists.txt +@@ -9,5 +9,5 @@ if (ITK_USE_GPU) + write_gpu_kernels("${ITKGPUSmoothing_Kernels}" ITKGPUSmoothing_SRCS) + + itk_module_add_library(ITKGPUSmoothing ${ITKGPUSmoothing_SRCS}) +- target_link_libraries(ITKGPUSmoothing LINK_PUBLIC ${OPENCL_LIBRARIES}) ++ target_link_libraries(ITKGPUSmoothing LINK_PUBLIC ${OpenCL_LIBRARIES}) + endif() +diff --git a/Modules/Filtering/GPUThresholding/CMakeLists.txt b/Modules/Filtering/GPUThresholding/CMakeLists.txt +index 4390785f5..61786b7a8 100644 +--- a/Modules/Filtering/GPUThresholding/CMakeLists.txt ++++ b/Modules/Filtering/GPUThresholding/CMakeLists.txt +@@ -2,8 +2,8 @@ project(ITKGPUThresholding) + + if (ITK_USE_GPU) + set(ITKGPUThresholding_LIBRARIES ITKGPUThresholding) +- set(ITKGPUThresholding_SYSTEM_INCLUDE_DIRS ${OPENCL_INCLUDE_DIRS}) +- set(ITKGPUThresholding_SYSTEM_LIBRARY_DIRS ${OPENCL_LIBRARIES}) ++ set(ITKGPUThresholding_SYSTEM_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS}) ++ set(ITKGPUThresholding_SYSTEM_LIBRARY_DIRS ${OpenCL_LIBRARIES}) + endif() + + itk_module_impl() +diff --git a/Modules/Filtering/GPUThresholding/src/CMakeLists.txt b/Modules/Filtering/GPUThresholding/src/CMakeLists.txt +index 326c86859..c07c80414 100644 +--- a/Modules/Filtering/GPUThresholding/src/CMakeLists.txt ++++ b/Modules/Filtering/GPUThresholding/src/CMakeLists.txt +@@ -9,5 +9,5 @@ if (ITK_USE_GPU) + write_gpu_kernels("${ITKGPUThresholding_Kernels}" ITKGPUThresholding_SRCS) + + itk_module_add_library(ITKGPUThresholding ${ITKGPUThresholding_SRCS}) +- target_link_libraries(ITKGPUThresholding LINK_PUBLIC ${OPENCL_LIBRARIES}) ++ target_link_libraries(ITKGPUThresholding LINK_PUBLIC ${OpenCL_LIBRARIES}) + endif() +diff --git a/Modules/Registration/GPUPDEDeformable/CMakeLists.txt b/Modules/Registration/GPUPDEDeformable/CMakeLists.txt +index c8d70a423..097c974c5 100644 +--- a/Modules/Registration/GPUPDEDeformable/CMakeLists.txt ++++ b/Modules/Registration/GPUPDEDeformable/CMakeLists.txt +@@ -2,8 +2,8 @@ project(ITKGPUPDEDeformableRegistration) + + if (ITK_USE_GPU) + set(ITKGPUPDEDeformableRegistration_LIBRARIES ITKGPUPDEDeformableRegistration) +- set(ITKGPUPDEDeformableRegistration_SYSTEM_INCLUDE_DIRS ${OPENCL_INCLUDE_DIRS}) +- set(ITKGPUPDEDeformableRegistration_SYSTEM_LIBRARY_DIRS ${OPENCL_LIBRARIES}) ++ set(ITKGPUPDEDeformableRegistration_SYSTEM_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS}) ++ set(ITKGPUPDEDeformableRegistration_SYSTEM_LIBRARY_DIRS ${OpenCL_LIBRARIES}) + endif() + + itk_module_impl() +diff --git a/Modules/Registration/GPUPDEDeformable/src/CMakeLists.txt b/Modules/Registration/GPUPDEDeformable/src/CMakeLists.txt +index 28b1d194c..1a049bdde 100644 +--- a/Modules/Registration/GPUPDEDeformable/src/CMakeLists.txt ++++ b/Modules/Registration/GPUPDEDeformable/src/CMakeLists.txt +@@ -10,5 +10,5 @@ if (ITK_USE_GPU) + write_gpu_kernels("${ITKGPUPDEDeformableRegistration_Kernels}" ITKGPUPDEDeformableRegistration_SRCS) + + itk_module_add_library(ITKGPUPDEDeformableRegistration ${ITKGPUPDEDeformableRegistration_SRCS}) +- target_link_libraries(ITKGPUPDEDeformableRegistration LINK_PUBLIC ${OPENCL_LIBRARIES}) ++ target_link_libraries(ITKGPUPDEDeformableRegistration LINK_PUBLIC ${OpenCL_LIBRARIES}) + endif() diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 4439d91cd43c20..96d0ed36ffcae7 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -13,6 +13,7 @@ vcpkg_from_github( var_libraries.patch wrapping.patch python_gpu_wrapping.patch + opencl.patch ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS @@ -56,6 +57,7 @@ if("rtk" IN_LIST FEATURES) ) if("cuda" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS "-DRTK_USE_CUDA=ON") + #RTK + CUDA + PYTHON + dynamic library linkage will fail and needs upstream fixes. endif() file(REMOVE_RECURSE "${SOURCE_PATH}/Modules/Remote/RTK") endif() @@ -121,6 +123,7 @@ if (VCPKG_TARGET_ARCHITECTURE STREQUAL x64 OR VCPKG_TARGET_ARCHITECTURE STREQUAL set(USE_64BITS_IDS ON) endif() +file(REMOVE_RECURSE "${SOURCE_PATH}/CMake/FindOpenCL.cmake") vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA From bdce56c5d267851f07251175388cf119e8c458ed Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 14 May 2020 17:07:28 +0200 Subject: [PATCH 59/77] [itk] add cufftw fix --- ports/itk/cufftw.patch | 58 ++++++++++++++++++++++++++++++++++++++++ ports/itk/portfile.cmake | 7 ++--- 2 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 ports/itk/cufftw.patch diff --git a/ports/itk/cufftw.patch b/ports/itk/cufftw.patch new file mode 100644 index 00000000000000..17365fb2f1f0e3 --- /dev/null +++ b/ports/itk/cufftw.patch @@ -0,0 +1,58 @@ +From 0f47aae05217884193a39690c2beef566f4ed3b1 Mon Sep 17 00:00:00 2001 +From: Stephen Aylward +Date: Sat, 25 Apr 2020 20:15:21 -0400 +Subject: [PATCH] BUG: CUFFTW paths were not being set and unnecessary FFTW + files used + +FindFFTW sets the FFTW_INCLUDES variable. The FFTW_INCLUDE_PATH var is +specific to FFTW (not used by CUFFTW). + +FFTWGlobalConfiguration file is only needed if FFTW is being used, +not if CUFFT is being used. +--- + CMake/FindFFTW.cmake | 2 +- + Modules/Filtering/FFT/CMakeLists.txt | 2 +- + Modules/Filtering/FFT/src/CMakeLists.txt | 9 +++++---- + 3 files changed, 7 insertions(+), 6 deletions(-) + +diff --git a/CMake/FindFFTW.cmake b/CMake/FindFFTW.cmake +index 785edc2b628..e1935899cab 100644 +--- a/CMake/FindFFTW.cmake ++++ b/CMake/FindFFTW.cmake +@@ -62,7 +62,7 @@ if(ITK_USE_FFTWD OR ITK_USE_FFTWF) + find_path(FFTW_INCLUDE_PATH fftw3.h ${FFTW_INC_SEARCHPATH}) + endif() + +- if(FFTW_INCLUDE_PATH) ++ if(FFTW_INCLUDE_PATH OR CUFFTW_INCLUDE_PATH) + if(ITK_USE_CUFFTW) + file(TO_CMAKE_PATH "${CUFFTW_INCLUDE_PATH}" CUFFTW_INCLUDE_PATH) + set(FFTW_INCLUDE ${CUFFTW_INCLUDE_PATH}) +diff --git a/Modules/Filtering/FFT/CMakeLists.txt b/Modules/Filtering/FFT/CMakeLists.txt +index 7d9d1900b56..713530149cb 100644 +--- a/Modules/Filtering/FFT/CMakeLists.txt ++++ b/Modules/Filtering/FFT/CMakeLists.txt +@@ -5,5 +5,5 @@ if(ITK_USE_CUFFTW) + else() + set(ITKFFT_LIBRARIES ITKFFT) + endif() +-set(ITKFFT_INCLUDE_DIRS ${FFTW_INCLUDE_PATH}) ++set(ITKFFT_INCLUDE_DIRS ${FFTW_INCLUDE}) + itk_module_impl() +diff --git a/Modules/Filtering/FFT/src/CMakeLists.txt b/Modules/Filtering/FFT/src/CMakeLists.txt +index 3f3137b8cd4..bde3ee906f8 100644 +--- a/Modules/Filtering/FFT/src/CMakeLists.txt ++++ b/Modules/Filtering/FFT/src/CMakeLists.txt +@@ -1,7 +1,8 @@ +-set(ITKFFT_SRCS +- itkFFTWGlobalConfiguration.cxx +- itkComplexToComplexFFTImageFilter.cxx +- ) ++set(ITKFFT_SRCS itkComplexToComplexFFTImageFilter.cxx) ++ ++if( ITK_USE_FFTWF OR ITK_USE_FFTWD AND NOT ITK_USE_CUFFTW) ++ list(APPEND ITKFFT_SRCS itkFFTWGlobalConfiguration.cxx ) ++endif() + + itk_module_add_library(ITKFFT ${ITKFFT_SRCS}) + diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 96d0ed36ffcae7..5cd271b0e34f0e 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -13,12 +13,13 @@ vcpkg_from_github( var_libraries.patch wrapping.patch python_gpu_wrapping.patch - opencl.patch + opencl.patch + cufftw.patch ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS "vtk" Module_ITKVtkGlue - "cuda" Module_ITKCudaCommon + "cuda" Module_ITKCudaCommon # Requires RTK? #"cuda" CUDA_HAVE_GPU # Automatically set by FindCUDA? "cufftw" ITK_USE_CUFFTW "opencl" ITK_USE_GPU @@ -30,7 +31,6 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS ) if("cufftw" IN_LIST FEATURES) - message(STATUS "Warning: feature cufftw does currently not compile and requires and upstream fix!") # Alternativly set CUFFT_LIB and CUFFTW_LIB if(WIN32) file(TO_CMAKE_PATH "$ENV{CUDA_PATH}" CUDA_PATH) @@ -47,6 +47,7 @@ if("cufftw" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS "-DFFTW_LIB_SEARCHPATH=${CUDA_LIB_PATH}" "-DFFTW_INCLUDE_PATH=${CUDA_PATH}/include" + "-DCUFFTW_INCLUDE_PATH=${CUDA_PATH}/include" ) endif() endif() From 81dfb76f95e8f25f2c0a4cc6a693ae99f8e518e7 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 1 Jul 2020 18:25:14 +0200 Subject: [PATCH 60/77] update baseline --- scripts/ci.baseline.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index ab8ea0e60b5aa4..e755c62a1530a2 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -646,9 +646,6 @@ isal:x64-uwp=fail isal:x64-windows=fail isal:x64-windows-static=fail isal:x86-windows=fail -itk:x64-windows=fail -itk:x64-windows-static=fail -itk:x86-windows=fail ixwebsocket:x64-linux=ignore jack2:arm-uwp=fail jack2:x64-uwp=fail From 8cfe4c13de9db4d9d1726b0c5b487370e14947f9 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 2 Jul 2020 15:33:44 +0200 Subject: [PATCH 61/77] [itk] fix itk[tbb] --- ports/itk/{jpeg.patch => openjpeg.patch} | 0 ports/itk/openjpeg2.patch | 58 ++++++++++++++++++++++++ ports/itk/portfile.cmake | 7 +-- 3 files changed, 62 insertions(+), 3 deletions(-) rename ports/itk/{jpeg.patch => openjpeg.patch} (100%) create mode 100644 ports/itk/openjpeg2.patch diff --git a/ports/itk/jpeg.patch b/ports/itk/openjpeg.patch similarity index 100% rename from ports/itk/jpeg.patch rename to ports/itk/openjpeg.patch diff --git a/ports/itk/openjpeg2.patch b/ports/itk/openjpeg2.patch new file mode 100644 index 00000000000000..86631f5f99b2db --- /dev/null +++ b/ports/itk/openjpeg2.patch @@ -0,0 +1,58 @@ +diff --git a/Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmopenjpeg/CMakeLists.txt b/Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmopenjpeg/CMakeLists.txt +index 565cc338b..c061f0721 100644 +--- a/Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmopenjpeg/CMakeLists.txt ++++ b/Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmopenjpeg/CMakeLists.txt +@@ -194,7 +194,7 @@ mark_as_advanced(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH) + # configure name mangling to allow multiple libraries to coexist + # peacefully + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in) +-set(MANGLE_PREFIX ${OPENJPEG_LIBRARY_NAME}) ++set(MANGLE_PREFIX) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in + ${CMAKE_CURRENT_BINARY_DIR}/openjpeg_mangle.h + @ONLY) +diff --git a/Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmopenjpeg/src/lib/openjp2/CMakeLists.txt b/Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmopenjpeg/src/lib/openjp2/CMakeLists.txt +index c4adb91a2..89b731d88 100644 +--- a/Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmopenjpeg/src/lib/openjp2/CMakeLists.txt ++++ b/Modules/ThirdParty/GDCM/src/gdcm/Utilities/gdcmopenjpeg/src/lib/openjp2/CMakeLists.txt +@@ -3,7 +3,7 @@ include_regular_expression("^.*$") + # configure name mangling to allow multiple libraries to coexist + # peacefully + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in) +-set(MANGLE_PREFIX ${OPENJPEG_LIBRARY_NAME}) ++set(MANGLE_PREFIX) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in + ${CMAKE_CURRENT_BINARY_DIR}/openjpeg_mangle.h + @ONLY) +diff --git a/Modules/ThirdParty/OpenJPEG/CMakeLists.txt b/Modules/ThirdParty/OpenJPEG/CMakeLists.txt +index 3811e52f4..a41e9264e 100644 +--- a/Modules/ThirdParty/OpenJPEG/CMakeLists.txt ++++ b/Modules/ThirdParty/OpenJPEG/CMakeLists.txt +@@ -8,10 +8,10 @@ if(ITK_USE_SYSTEM_OpenJPEG) + else() + message(FATAL_ERROR "OpenJPEG target openjp2 missing!") + endif() +- set(ITKOpenJPEG_INCLUDE_DIRS +- ${ITKOpenJPEG_BINARY_DIR}/src/openjpeg +- ${ITKOpenJPEG_SOURCE_DIR}/src/openjpeg +- ) ++ # set(ITKOpenJPEG_INCLUDE_DIRS ++ # ${ITKOpenJPEG_BINARY_DIR}/src/openjpeg ++ # ${ITKOpenJPEG_SOURCE_DIR}/src/openjpeg ++ # ) + else() + set(ITKOpenJPEG_INCLUDE_DIRS + ${ITKOpenJPEG_BINARY_DIR}/src/openjpeg +diff --git a/Modules/ThirdParty/OpenJPEG/src/openjpeg/CMakeLists.txt b/Modules/ThirdParty/OpenJPEG/src/openjpeg/CMakeLists.txt +index e62e43eda..35dc89976 100644 +--- a/Modules/ThirdParty/OpenJPEG/src/openjpeg/CMakeLists.txt ++++ b/Modules/ThirdParty/OpenJPEG/src/openjpeg/CMakeLists.txt +@@ -68,7 +68,7 @@ CONFIGURE_FILE(${ITK3P_OpenJPEG_SOURCE_DIR}/opj_configure.h.in + # configure name mangling to allow multiple libraries to coexist + # peacefully + if(EXISTS ${ITK3P_OpenJPEG_SOURCE_DIR}/openjpeg_mangle.h.in) +-set(MANGLE_PREFIX itk) ++#set(MANGLE_PREFIX itk) + configure_file(${ITK3P_OpenJPEG_SOURCE_DIR}/openjpeg_mangle.h.in + ${ITK3P_OpenJPEG_BINARY_DIR}/openjpeg_mangle.h + @ONLY) diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 5cd271b0e34f0e..d516f93961f883 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -9,7 +9,8 @@ vcpkg_from_github( PATCHES hdf5.patch double-conversion.patch - jpeg.patch + openjpeg.patch + openjpeg2.patch var_libraries.patch wrapping.patch python_gpu_wrapping.patch @@ -152,10 +153,10 @@ vcpkg_configure_cmake( -DITK_USE_SYSTEM_FFTW=ON -DITK_USE_SYSTEM_HDF5=ON # HDF5 was problematic in the past and still is. ITK still has not figured out how to do it correctly! -DITK_USE_SYSTEM_GDCM=ON - -DITK_USE_SYSTEM_OpenJPEG=ON # Added by VCPKG + -DITK_USE_SYSTEM_OpenJPEG=ON # Added by VCPKG -DITK_USE_SYSTEM_DCMTK=ON -DDCMTK_USE_ICU=ON - -DITK_USE_SYSTEM_ICU=ON + -DITK_USE_SYSTEM_ICU=ON #-DITK_USE_SYSTEM_VXL=ON #-DITK_USE_SYSTEM_CASTXML=ON # needs to be added to vcpkg_find_acquire_program https://data.kitware.com/api/v1/file/hashsum/sha512/b8b6f0aff11fe89ab2fcd1949cc75f2c2378a7bc408827a004396deb5ff5a9976bffe8a597f8db1b74c886ea39eb905e610dce8f5bd7586a4d6c196d7349da8d/download -DITK_USE_SYSTEM_MINC=ON From c3a33f7de939ad61a6edeaf5caae6a32ff02b0bd Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 3 Jul 2020 10:33:58 +0200 Subject: [PATCH 62/77] [itk] update python paths to 3.8 --- ports/itk/portfile.cmake | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index d516f93961f883..0a718432cd9b82 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -103,17 +103,17 @@ if("python" IN_LIST FEATURES) ) # Due to ITKs internal shenanigans with the variables ...... if(VCPKG_TARGET_IS_WINDOWS) - list(APPEND ADDITIONAL_OPTIONS "-DPython3_LIBRARY_RELEASE:PATH=${CURRENT_INSTALLED_DIR}/lib/python37.lib" - "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib" - "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7") - list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/python37_d.lib") - list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/python37.lib") + list(APPEND ADDITIONAL_OPTIONS "-DPython3_LIBRARY_RELEASE:PATH=${CURRENT_INSTALLED_DIR}/lib/python38.lib" + "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/python38_d.lib" + "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.8") + list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/python38_d.lib") + list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/python38.lib") elseif(VCPKG_TARGET_IS_LINUX) - list(APPEND ADDITIONAL_OPTIONS "-DPython3_LIBRARY_RELEASE:PATH=${CURRENT_INSTALLED_DIR}/lib/libpython37m.a" - "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/libpython37md.a" - "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.7m") - list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/libpython37md.a") - list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/linpython37m.a") + list(APPEND ADDITIONAL_OPTIONS "-DPython3_LIBRARY_RELEASE:PATH=${CURRENT_INSTALLED_DIR}/lib/libpython38m.a" + "-DPython3_LIBRARY_DEBUG:PATH=${CURRENT_INSTALLED_DIR}/debug/lib/libpython38md.a" + "-DPython3_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include/python3.8m") + list(APPEND OPTIONS_DEBUG "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/libpython38md.a") + list(APPEND OPTIONS_RELEASE "-DPython3_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/libpython38m.a") elseif(VCPKG_TARGET_IS_OSX) #Need Python3 information on OSX within VCPKG endif() From d7729a074cb57cc7e41b35bdfc7a5a1505ea78bd Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 3 Jul 2020 10:36:31 +0200 Subject: [PATCH 63/77] [itk] add failure messages for unsupported architectures for some features --- ports/itk/portfile.cmake | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 0a718432cd9b82..cb99b8607c90a0 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -41,6 +41,7 @@ if("cufftw" IN_LIST FEATURES) string(APPEND CUDA_LIB_PATH "/lib/x64") elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) string(APPEND CUDA_LIB_PATH "/lib/Win32") + message(FATAL_ERROR "CUFFTW is not supported on architecture ${VCPKG_TARGET_ARCHITECTURE}") else() message(FATAL_ERROR "Architecture ${VCPKG_TARGET_ARCHITECTURE} not supported !") endif() @@ -53,6 +54,9 @@ if("cufftw" IN_LIST FEATURES) endif() endif() if("rtk" IN_LIST FEATURES) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) + message(FATAL_ERROR "RTK is not supported on architecture ${VCPKG_TARGET_ARCHITECTURE}") + endif() SET(BUILD_RTK ON) list(APPEND ADDITIONAL_OPTIONS "-DModule_RTK_GIT_TAG=8099212f715231d093f7d6a1114daecf45d871ed" # RTK latest versions (11.05.2020) From c1c82d7b701b19a7febea45473bbc2757f13d7a8 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 3 Jul 2020 11:28:36 +0200 Subject: [PATCH 64/77] [vcpkg_find_acquire_program] update swig to 4.0.2 --- scripts/cmake/vcpkg_find_acquire_program.cmake | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 98451c49613b5c..56bc958cc1926a 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -310,20 +310,21 @@ function(vcpkg_find_acquire_program VAR) set(ARCHIVE "scons-local-3.0.1.zip") set(HASH fe121b67b979a4e9580c7f62cfdbe0c243eba62a05b560d6d513ac7f35816d439b26d92fc2d7b7d7241c9ce2a49ea7949455a17587ef53c04a5f5125ac635727) elseif(VAR MATCHES "SWIG") + set(VERSION 4.0.2) set(PROGNAME swig) if(CMAKE_HOST_WIN32) - set(URL "https://sourceforge.net/projects/swig/files/swigwin/swigwin-4.0.1/swigwin-4.0.1.zip/download") - set(ARCHIVE "swigwin-4.0.1.zip") - set(HASH 2da147231164466c0dee91beca6a4f7b10e6f727062338ea6d70f44f4e4163ad6616b72c2de767539a69977ba96d3ee920ed3c182124c45569ca946750fd4495) - set(SUBDIR "swigwin-4.0.1") + set(URL "https://sourceforge.net/projects/swig/files/swigwin/swigwin-${VERSION}/swigwin-${VERSION}.zip/download") + set(ARCHIVE "swigwin-${VERSION}.zip") + set(HASH b8f105f9b9db6acc1f6e3741990915b533cd1bc206eb9645fd6836457fd30789b7229d2e3219d8e35f2390605ade0fbca493ae162ec3b4bc4e428b57155db03d) + set(SUBDIR "swigwin-${VERSION}") set(PATHS "${DOWNLOADS}/tools/swig/${SUBDIR}/${SUBDIR}") else() #Not used set(_vfa_SUPPORTED TRUE) - set(URL https://sourceforge.net/projects/swig/files/swig/swig-4.0.1/swig-4.0.1.tar.gz/download) - set(ARCHIVE "swig-4.0.1.tar.gz") - set(HASH 595ef01cb83adfa960ceed9c325a9429192549e8d1e9aa3ab35a4301512a61d82e2e89a8c7939c2a5a0811254ea1832a443bd387e11459eb2b0bafc563ad1308) - set(SUBDIR "swig-4.0.1") + set(URL https://sourceforge.net/projects/swig/files/swig/swig-${VERSION}/swig-${VERSION}.tar.gz/download) + set(ARCHIVE "swig-${VERSION}.tar.gz") + set(HASH 05e7da70ce6d9a733b96c0bcfa3c1b82765bd859f48c74759bbf4bb1467acb1809caa310cba5e2b3280cd704fca249eaa0624821dffae1d2a75097c7f55d14ed) + set(SUBDIR "swig-${VERSION}") set(PATHS "${DOWNLOADS}/tools/swig/${SUBDIR}") endif() elseif(VAR MATCHES "DOXYGEN") From a52761a269dea96750befa11ca53130229ec5186 Mon Sep 17 00:00:00 2001 From: Lily <47812810+LilyWangL@users.noreply.github.com> Date: Sat, 4 Jul 2020 17:21:55 +0800 Subject: [PATCH 65/77] Update portfile.cmake --- ports/itk/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index cb99b8607c90a0..b83fcf76073aed 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -199,7 +199,7 @@ vcpkg_copy_pdbs() vcpkg_fixup_cmake_targets() if(TOOL_NAMES) - vcpkg_coyp_tools(TOOL_NAMES ${TOOL_NAMES}) + vcpkg_copy_tools(TOOL_NAMES ${TOOL_NAMES}) endif() file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/cmake") From c84dd782785ad57b9b582722bef132848f825f6c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 6 Jul 2020 14:14:35 +0200 Subject: [PATCH 66/77] [itk] move the module removal out of the if for people reusing the old source tree --- ports/itk/portfile.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index cb99b8607c90a0..67908f4b329dd7 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -53,6 +53,7 @@ if("cufftw" IN_LIST FEATURES) ) endif() endif() + if("rtk" IN_LIST FEATURES) if(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) message(FATAL_ERROR "RTK is not supported on architecture ${VCPKG_TARGET_ARCHITECTURE}") @@ -63,10 +64,11 @@ if("rtk" IN_LIST FEATURES) ) if("cuda" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS "-DRTK_USE_CUDA=ON") - #RTK + CUDA + PYTHON + dynamic library linkage will fail and needs upstream fixes. + #RTK + CUDA + PYTHON + dynamic library linkage will fail and needs upstream fixes. endif() - file(REMOVE_RECURSE "${SOURCE_PATH}/Modules/Remote/RTK") endif() +file(REMOVE_RECURSE "${SOURCE_PATH}/Modules/Remote/RTK") + if("opencl" IN_LIST FEATURES) list(APPEND ADDITIONAL_OPTIONS # Wrapping options required by OpenCL if build with Python Wrappers -DITK_WRAP_unsigned_long_long=ON From 33ce6d901790b7c50c2224af81218e8aa7a5e857 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 7 Jul 2020 10:50:31 +0200 Subject: [PATCH 67/77] [itk] add missing auto_clean to vcpkg_copy_tools --- ports/itk/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index 9adf9574bd9399..c8feba381599b7 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -201,7 +201,7 @@ vcpkg_copy_pdbs() vcpkg_fixup_cmake_targets() if(TOOL_NAMES) - vcpkg_copy_tools(TOOL_NAMES ${TOOL_NAMES}) + vcpkg_copy_tools(TOOL_NAMES ${TOOL_NAMES} AUTO_CLEAN) endif() file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/cmake") From 5366b937d17e11208f0e57fb6772636c73637182 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Tue, 14 Jul 2020 11:43:29 +0200 Subject: [PATCH 68/77] Update ports/nifticlib/CONTROL Co-authored-by: Robert Schumacher --- ports/nifticlib/CONTROL | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/nifticlib/CONTROL b/ports/nifticlib/CONTROL index 80148ea46b805a..acd8aedaa51db3 100644 --- a/ports/nifticlib/CONTROL +++ b/ports/nifticlib/CONTROL @@ -1,5 +1,5 @@ Source: nifticlib -Version: 04-30-2020 +Version: 2020-04-30 Description: Nifticlib is a C I/O library for reading and writing files in the nifti-1 data format. Homepage: NIFTI-Imaging/nifti_clib Build-Depends: zlib @@ -22,4 +22,4 @@ Feature: tools Description: Build tools Feature: tests -Description: Build tests \ No newline at end of file +Description: Build tests From e92040aeb3828cec50cb53e0558a82c32783dd2f Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Tue, 14 Jul 2020 11:43:41 +0200 Subject: [PATCH 69/77] Update ports/openjpeg/portfile.cmake Co-authored-by: Robert Schumacher --- ports/openjpeg/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/openjpeg/portfile.cmake b/ports/openjpeg/portfile.cmake index 03e1c1d4d67f45..49b3bd37420012 100644 --- a/ports/openjpeg/portfile.cmake +++ b/ports/openjpeg/portfile.cmake @@ -35,7 +35,7 @@ vcpkg_configure_cmake( ) vcpkg_install_cmake() -vcpkg_fixup_cmake_targets(CONFIG_PATH share/${PORT}) +vcpkg_fixup_cmake_targets() if(VCPKG_TARGET_IS_WINDOWS) # TODO: remove -lm from *.pc files endif() From e0700b25eaefa6d0a91083d7dd6fdf9b45bcf26f Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Tue, 14 Jul 2020 11:43:49 +0200 Subject: [PATCH 70/77] Update scripts/cmake/vcpkg_find_acquire_program.cmake Co-authored-by: Robert Schumacher --- scripts/cmake/vcpkg_find_acquire_program.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 56bc958cc1926a..e0802c0b15e220 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -33,7 +33,7 @@ ## - NINJA ## - NUGET ## - SCONS -## - SWIG https://sourceforge.net/projects/swig/files/swigwin/swigwin-4.0.1/swigwin-4.0.1.zip +## - SWIG ## - YASM ## ## Note that msys2 has a dedicated helper function: [`vcpkg_acquire_msys`](vcpkg_acquire_msys.md). From 4fee8a484bd6508bb5984d5571ce9dffa9cffe93 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 14 Jul 2020 11:48:58 +0200 Subject: [PATCH 71/77] [openjpeg] pass OPTIONS to vcpkg_configure_cmake --- ports/openjpeg/portfile.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/openjpeg/portfile.cmake b/ports/openjpeg/portfile.cmake index 49b3bd37420012..c6d854490fa0c5 100644 --- a/ports/openjpeg/portfile.cmake +++ b/ports/openjpeg/portfile.cmake @@ -32,6 +32,7 @@ vcpkg_configure_cmake( -DEXECUTABLE_OUTPUT_PATH=tools/${PORT} -DBUILD_PKGCONFIG_FILES=ON ${FEATURE_OPTIONS} + ${OPTIONS} ) vcpkg_install_cmake() From 760ce6663b661bc8abbf84f46379825883eff3d9 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 14 Jul 2020 11:53:17 +0200 Subject: [PATCH 72/77] [itk] fix typo and leave a todo. --- ports/itk/portfile.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake index c8feba381599b7..b16ba194aa83ac 100644 --- a/ports/itk/portfile.cmake +++ b/ports/itk/portfile.cmake @@ -193,8 +193,9 @@ vcpkg_configure_cmake( OPTIONS_DEBUG ${OPTIONS_DEBUG} OPTIONS_RELEASE ${OPTIONS_RELEASE} ) -if(BUILD_RTK) # Remote Modules are only downloaded on configure. already_defined.patch - vcpkg_apply_patches(SOURCE_PATH "${SOURCE_PATH}/Modules/Remote/RTK" QUITE PATCHES rtk/already_defined.patch rtk/unresolved.patch) +if(BUILD_RTK) # Remote Modules are only downloaded on configure. + # TODO: In the future try to download via vcpkg_from_github and move the files. That way patching does not need this workaround + vcpkg_apply_patches(SOURCE_PATH "${SOURCE_PATH}/Modules/Remote/RTK" QUIET PATCHES rtk/already_defined.patch rtk/unresolved.patch) endif() vcpkg_install_cmake() vcpkg_copy_pdbs() From f67e2d6bf1e79297c606bf3c6033753b03ae72b1 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 14 Jul 2020 12:05:25 +0200 Subject: [PATCH 73/77] use sourceforge args for swig --- scripts/cmake/vcpkg_find_acquire_program.cmake | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index efc1ba33b13268..5844248bafdf23 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -325,6 +325,13 @@ function(vcpkg_find_acquire_program VAR) set(SUBDIR "swig-${VERSION}") set(PATHS "${DOWNLOADS}/tools/swig/${SUBDIR}") endif() + set(SOURCEFORGE_ARGS + REPO swig + FILENAME "${ARCHIVE}" + SHA512 "${HASH}" + NO_REMOVE_ONE_LEVEL + WORKING_DIRECTORY "${DOWNLOADS}/tools/swig" + ) elseif(VAR MATCHES "DOXYGEN") set(PROGNAME doxygen) set(DOXYGEN_VERSION 1.8.17) From 69acbe2be17db47e2810e038986a2d0570f25b23 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 27 Jul 2020 21:04:33 +0200 Subject: [PATCH 74/77] Update ports/openjpeg/CONTROL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com> --- ports/openjpeg/CONTROL | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/openjpeg/CONTROL b/ports/openjpeg/CONTROL index 03fb14be38adf1..07afd75f16236e 100644 --- a/ports/openjpeg/CONTROL +++ b/ports/openjpeg/CONTROL @@ -1,5 +1,6 @@ Source: openjpeg -Version: 2.3.1-2 +Version: 2.3.1 +Port-Version: 2 Homepage: https://github.com/uclouvain/openjpeg Description: JPEG 2000 image library @@ -14,4 +15,3 @@ Description: Build optional component jpip Feature: jp3d Description: Build optional component jp3d - From fb3604dee3e664e5658e2e701cf88ad4b13556c2 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 27 Jul 2020 21:04:46 +0200 Subject: [PATCH 75/77] Update ports/opencl/CONTROL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com> --- ports/opencl/CONTROL | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ports/opencl/CONTROL b/ports/opencl/CONTROL index 31ee4b833fc882..41069be8225e56 100644 --- a/ports/opencl/CONTROL +++ b/ports/opencl/CONTROL @@ -1,5 +1,6 @@ Source: opencl -Version: 2.2-3 +Version: 2.2 +Port-Version: 3 Homepage: https://github.com/KhronosGroup/OpenCL-Headers Description: C/C++ headers and ICD loader (Installable Client Driver) for OpenCL From 2fd81c0694338f624a76c3900291c020e2679dd6 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 27 Jul 2020 21:09:15 +0200 Subject: [PATCH 76/77] [itk] remove debug msgs from patch --- ports/itk/wrapping.patch | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/ports/itk/wrapping.patch b/ports/itk/wrapping.patch index 2bc1f2966f3a39..1e2e531504eb23 100644 --- a/ports/itk/wrapping.patch +++ b/ports/itk/wrapping.patch @@ -2,28 +2,18 @@ diff --git a/Wrapping/TypedefMacros.cmake b/Wrapping/TypedefMacros.cmake index e6f8d0bf3..6c000dba8 100644 --- a/Wrapping/TypedefMacros.cmake +++ b/Wrapping/TypedefMacros.cmake -@@ -57,13 +57,21 @@ macro(itk_wrap_module library_name) +@@ -57,13 +57,12 @@ macro(itk_wrap_module library_name) # WRAPPER_LIBRARY_DEPENDS. List of names of other wrapper libraries that # define symbols used by this wrapper library. -+ #message(STATUS "ITK_MODULE_${library_name}_DEPENDS:${ITK_MODULE_${library_name}_DEPENDS}") -+ #message(STATUS "WRAP_ITK_MODULES:${WRAP_ITK_MODULES}") INTERSECTION(WRAPPER_LIBRARY_DEPENDS "${ITK_MODULE_${library_name}_DEPENDS}" "${WRAP_ITK_MODULES}") # set(WRAPPER_LIBRARY_DEPENDS ${ITK_MODULE_${library_name}_DEPENDS}) -- -+ #message(STATUS "WRAPPER_LIBRARY_DEPENDS:${WRAPPER_LIBRARY_DEPENDS}") + # WRAPPER_LIBRARY_LINK_LIBRARIES. List of other libraries that should # be linked to the wrapper library. - set(WRAPPER_LIBRARY_LINK_LIBRARIES ${ITK_LIBRARIES} ${${itk-module}_LIBRARIES}) - + set(WRAPPER_LIBRARY_LINK_LIBRARIES ${ITK_LIBRARIES} ${${library_name}_LIBRARIES}) -+ #message(STATUS "ITK_LIBRARIES:${ITK_LIBRARIES}") -+ #message(STATUS "${library_name}_LIBRARIES:${${library_name}_LIBRARIES}") -+ #foreach(_dep IN LISTS WRAPPER_LIBRARY_DEPENDS) -+ # list(APPEND WRAPPER_LIBRARY_LINK_LIBRARIES ${${_dep}_LIBRARIES}) -+ # -+ #endforeach() -+ #message(STATUS "${library_name}_LIBRARIES:${${library_name}_LIBRARIES}") # WRAPPER_SUBMODULE_ORDER. List of *.wrap submodules in the source dir # that should be included/wrapped before the rest in the given order. # Just the submodule group name is needed, not the full path or file name. From 867e836b22b180f014b8c4b593efd0ebf7f9e453 Mon Sep 17 00:00:00 2001 From: JackBoosY Date: Wed, 29 Jul 2020 23:33:40 -0700 Subject: [PATCH 77/77] pre-install yasm on OSX --- scripts/azure-pipelines/osx/azure-pipelines.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/azure-pipelines/osx/azure-pipelines.yml b/scripts/azure-pipelines/osx/azure-pipelines.yml index f90cc5c3052659..7a96943cec1ac5 100644 --- a/scripts/azure-pipelines/osx/azure-pipelines.yml +++ b/scripts/azure-pipelines/osx/azure-pipelines.yml @@ -21,6 +21,7 @@ jobs: brew list libtool || brew install libtool brew list bison || brew install bison brew list gfortran || brew cask install gfortran + brew list yasm || brew install yasm displayName: 'Install brew dependencies' - bash: | sudo mkdir /Users/vagrant/Data/downloads || 0