mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-28 03:10:57 +08:00
280 lines
12 KiB
CMake
280 lines
12 KiB
CMake
vcpkg_buildpath_length_warning(37)
|
|
|
|
vcpkg_download_distfile(PYTHON_GPU_WRAPPING_PATCH
|
|
URLS https://github.com/InsightSoftwareConsortium/ITK/commit/e9b3d24f782a42f5586169e048b8d289f869d78a.diff?full_index=1
|
|
FILENAME InsightSoftwareConsortium-ITK-python-gpu-wrapping.patch
|
|
SHA512 71526320547b0eb5d0c0e0088e92ff60ba06462b82c531c79784d766361805970d9cad550660c7c85b953ec546b32c181aeab5d9f6d4142764d6f765106982a0
|
|
)
|
|
|
|
vcpkg_from_github(
|
|
OUT_SOURCE_PATH SOURCE_PATH
|
|
REPO InsightSoftwareConsortium/ITK
|
|
REF "v${VERSION}"
|
|
#[[
|
|
When updating the ITK version and SHA512, remember to update the remote module versions below.
|
|
#]]
|
|
SHA512 3a98ececf258aac545f094dd3e97918c93cc82bc623ddf793c4bf0162ab06c83fbfd4d08130bdec6e617bda85dd17225488bc1394bc91b17f1232126a5d990db
|
|
HEAD_REF master
|
|
PATCHES
|
|
dependencies.diff
|
|
fftw.diff
|
|
openjpeg.patch
|
|
var_libraries.patch
|
|
wrapping.patch
|
|
use-the-lrintf-intrinsic.patch
|
|
dont-build-gtest.patch
|
|
"${PYTHON_GPU_WRAPPING_PATCH}"
|
|
)
|
|
file(REMOVE_RECURSE
|
|
"${SOURCE_PATH}/CMake/FindOpenCL.cmake"
|
|
"${SOURCE_PATH}/Modules/ThirdParty/GDCM/src"
|
|
"${SOURCE_PATH}/Modules/ThirdParty/OpenJPEG/src/openjpeg"
|
|
"${SOURCE_PATH}/Modules/ThirdParty/VNL/src"
|
|
)
|
|
|
|
if("cuda" IN_LIST FEATURES)
|
|
vcpkg_from_github(
|
|
OUT_SOURCE_PATH RTK_SOURCE_PATH
|
|
REPO RTKConsortium/ITKCudaCommon
|
|
# Cf. Modules/Remote/CudaCommon.remote.cmake
|
|
REF 0c20c4ef10d81910c8b2ac4e8446a1544fce3b60
|
|
SHA512 0eb1a6fe85e695345a49887cdd65103bedab72e01ae85ed03e16a8a296c6cb69a8d889a57b22dde7fcc69df4f604c274b04234c8ece306d08361fac5db029069
|
|
HEAD_REF master
|
|
)
|
|
file(REMOVE_RECURSE "${SOURCE_PATH}/Modules/Remote/CudaCommon")
|
|
file(RENAME "${RTK_SOURCE_PATH}" "${SOURCE_PATH}/Modules/Remote/CudaCommon")
|
|
file(COPY_FILE "${SOURCE_PATH}/Modules/Remote/CudaCommon/LICENSE" "${SOURCE_PATH}/CudaCommon LICENSE")
|
|
endif()
|
|
|
|
if("rtk" IN_LIST FEATURES)
|
|
# (old hint, not verified) RTK + CUDA + PYTHON + dynamic library linkage will fail and needs upstream fixes.
|
|
# RTK's ITK module must be built with ITK.
|
|
vcpkg_from_github(
|
|
OUT_SOURCE_PATH RTK_SOURCE_PATH
|
|
REPO RTKConsortium/RTK
|
|
# Cf. Modules/Remote/RTK.remote.cmake
|
|
REF bfdca5b6b666b4f08f2f7d8039af11a15cc3f831
|
|
SHA512 10a21fb4b82aa820e507e81a6b6a3c1aaee2ea1edf39364dc1c8d54e6b11b91f22d9993c0b56c0e8e20b6d549fcd6104de4e1c5e664f9ff59f5f93935fb5225a
|
|
HEAD_REF master
|
|
PATCHES
|
|
rtk/cmp0153.diff
|
|
rtk/getopt-win32.diff
|
|
)
|
|
file(REMOVE_RECURSE "${SOURCE_PATH}/Modules/Remote/RTK")
|
|
file(RENAME "${RTK_SOURCE_PATH}" "${SOURCE_PATH}/Modules/Remote/RTK")
|
|
file(COPY_FILE "${SOURCE_PATH}/Modules/Remote/RTK/COPYRIGHT.TXT" "${SOURCE_PATH}/RTK COPYRIGHT.TXT")
|
|
endif()
|
|
|
|
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
|
|
FEATURES
|
|
"vtk" Module_ITKVtkGlue
|
|
"cuda" Module_CudaCommon # Requires RTK?
|
|
"cuda" RTK_USE_CUDA
|
|
#"cuda" CUDA_HAVE_GPU # Automatically set by FindCUDA?
|
|
"cufftw" ITK_USE_CUFFTW
|
|
"opencl" ITK_USE_GPU
|
|
"tbb" Module_ITKTBB
|
|
"rtk" Module_RTK
|
|
"tools" RTK_BUILD_APPLICATIONS
|
|
"opencv" Module_ITKVideoBridgeOpenCV
|
|
# 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)
|
|
vcpkg_find_cuda(OUT_CUDA_TOOLKIT_ROOT cuda_toolkit_root)
|
|
list(APPEND ADDITIONAL_OPTIONS
|
|
"-DCUDAToolkit_ROOT=${cuda_toolkit_root}"
|
|
)
|
|
endif()
|
|
|
|
if("fftw" IN_LIST FEATURES)
|
|
# Never set these options to OFF: dual use with feature 'cufftw'
|
|
list(APPEND ADDITIONAL_OPTIONS
|
|
-DITK_USE_FFTWD=ON
|
|
-DITK_USE_FFTWF=ON
|
|
)
|
|
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("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 AND EXISTS "${CURRENT_INSTALLED_DIR}/share/vtk/VTKPython-targets.cmake")
|
|
# 'vtk[python]' is built using the installed 'python3'.
|
|
# For 'find_package(vtk)', itk needs to provide the same version of python.
|
|
# Here, it is a purely *transitive* dependency via 'vtk[python]'.
|
|
include("${CURRENT_INSTALLED_DIR}/share/python3/vcpkg-port-config.cmake")
|
|
vcpkg_get_vcpkg_installed_python(PYTHON3)
|
|
list(APPEND ADDITIONAL_OPTIONS
|
|
"-DPython3_EXECUTABLE:PATH=${PYTHON3}"
|
|
)
|
|
endif()
|
|
|
|
if("python" IN_LIST FEATURES)
|
|
message(STATUS "${PORT} builds a long time (>1h) with python wrappers enabled!")
|
|
vcpkg_get_vcpkg_installed_python(PYTHON3)
|
|
list(APPEND ADDITIONAL_OPTIONS
|
|
-DITK_WRAP_PYTHON=ON
|
|
-DITK_USE_SYSTEM_CASTXML=ON
|
|
"-DCASTXML_EXECUTABLE=${CURRENT_HOST_INSTALLED_DIR}/tools/castxml/bin/castxml${VCPKG_HOST_EXECUTABLE_SUFFIX}"
|
|
-DPython3_FIND_REGISTRY=NEVER
|
|
"-DPython3_EXECUTABLE:PATH=${PYTHON3}" # Required by more than one feature
|
|
)
|
|
#ITK_PYTHON_SITE_PACKAGES_SUFFIX should be set to the install dir of the site-packages within vcpkg
|
|
|
|
vcpkg_find_acquire_program(SWIG) # Swig is only required for wrapping!
|
|
vcpkg_execute_required_process(
|
|
COMMAND "${SWIG}" -version
|
|
OUTPUT_VARIABLE swig_version
|
|
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
|
|
LOGNAME "swig-version-${TARGET_TRIPLET}"
|
|
)
|
|
string(REGEX REPLACE ".*Version ([0-9.]*).*" "\\1" swig_version "${swig_version}")
|
|
set(swig_expected "4.2.0")
|
|
if(swig_version VERSION_GREATER_EQUAL swig_expected)
|
|
vcpkg_execute_required_process(
|
|
COMMAND "${SWIG}" -swiglib
|
|
OUTPUT_VARIABLE swiglib
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
|
|
LOGNAME "swiglib-${TARGET_TRIPLET}"
|
|
)
|
|
list(APPEND ADDITIONAL_OPTIONS
|
|
-DITK_USE_SYSTEM_SWIG=ON
|
|
"-DSWIG_EXECUTABLE=${SWIG}"
|
|
"-DSWIG_DIR=${swiglib}"
|
|
)
|
|
else()
|
|
message(WARNING "Found swig ${swig_version}, but TK needs ${swig_expected}. A binary will be downloaded.")
|
|
endif()
|
|
endif()
|
|
|
|
if("opencv" IN_LIST FEATURES)
|
|
message(STATUS "${PORT} includes the ITKVideoBridgeOpenCV")
|
|
list(APPEND ADDITIONAL_OPTIONS
|
|
-DModule_ITKVideoBridgeOpenCV:BOOL=ON
|
|
)
|
|
endif()
|
|
|
|
if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_CRT_LINKAGE STREQUAL "static")
|
|
list(APPEND ADDITIONAL_OPTIONS
|
|
-DITK_MSVC_STATIC_RUNTIME_LIBRARY=ON
|
|
-DITK_MSVC_STATIC_CRT=ON
|
|
)
|
|
endif()
|
|
|
|
set(USE_64BITS_IDS OFF)
|
|
if (VCPKG_TARGET_ARCHITECTURE STREQUAL x64 OR VCPKG_TARGET_ARCHITECTURE STREQUAL arm64)
|
|
set(USE_64BITS_IDS ON)
|
|
endif()
|
|
|
|
vcpkg_cmake_configure(
|
|
SOURCE_PATH "${SOURCE_PATH}"
|
|
DISABLE_PARALLEL_CONFIGURE
|
|
OPTIONS
|
|
-DBUILD_TESTING=OFF
|
|
-DBUILD_EXAMPLES=OFF
|
|
-DCMAKE_DISABLE_FIND_PACKAGE_Git=ON
|
|
-DCMAKE_DISABLE_FIND_PACKAGE_Perl=ON
|
|
-DITK_DOXYGEN_HTML=OFF
|
|
-DITK_FORBID_DOWNLOADS=ON
|
|
-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
|
|
-DITK_USE_64BITS_IDS=${USE_64BITS_IDS}
|
|
-DITK_USE_CONCEPT_CHECKING=ON
|
|
#-DITK_USE_SYSTEM_LIBRARIES=ON # enables USE_SYSTEM for all third party libraries, some of which do not have vcpkg ports such as CastXML, SWIG, MINC etc
|
|
-DITK_USE_SYSTEM_DOUBLECONVERSION=ON
|
|
-DITK_USE_SYSTEM_EXPAT=ON
|
|
-DITK_USE_SYSTEM_JPEG=ON
|
|
-DITK_USE_SYSTEM_PNG=ON
|
|
-DITK_USE_SYSTEM_TIFF=ON
|
|
-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 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_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
|
|
-DITK_USE_SYSTEM_GOOGLETEST=ON
|
|
-DEXECUTABLE_OUTPUT_PATH=tools/${PORT}
|
|
|
|
-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
|
|
|
|
${FEATURE_OPTIONS}
|
|
${ADDITIONAL_OPTIONS}
|
|
|
|
OPTIONS_DEBUG
|
|
-DRTK_BUILD_APPLICATIONS=OFF
|
|
|
|
MAYBE_UNUSED_VARIABLES
|
|
EXECUTABLE_OUTPUT_PATH
|
|
ITK_USE_SYSTEM_FFTW
|
|
ITK_USE_SYSTEM_GOOGLETEST
|
|
RTK_BUILD_APPLICATIONS
|
|
RTK_USE_CUDA
|
|
)
|
|
vcpkg_cmake_install()
|
|
vcpkg_copy_pdbs()
|
|
vcpkg_cmake_config_fixup()
|
|
|
|
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")
|
|
file(REMOVE "${CURRENT_PACKAGES_DIR}/include/ITK-5.4/vcl_where_root_dir.h")
|
|
|
|
if("rtk" IN_LIST FEATURES)
|
|
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/ITK-5.4/rtkConfiguration.h" "#define RTK_BINARY_DIR \"${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Modules/Remote/RTK\"" "")
|
|
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/ITK-5.4/rtkConfiguration.h" "#define RTK_DATA_ROOT \"${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/ExternalData/Modules/Remote/RTK/test\"" "")
|
|
endif()
|
|
|
|
vcpkg_list(SET file_list
|
|
"${SOURCE_PATH}/NOTICE"
|
|
"${SOURCE_PATH}/LICENSE"
|
|
)
|
|
if("cuda" IN_LIST FEATURES)
|
|
vcpkg_list(APPEND file_list
|
|
"${SOURCE_PATH}/CudaCommon LICENSE"
|
|
)
|
|
endif()
|
|
if("rtk" IN_LIST FEATURES)
|
|
vcpkg_list(APPEND file_list
|
|
"${SOURCE_PATH}/RTK COPYRIGHT.TXT"
|
|
)
|
|
endif()
|
|
vcpkg_install_copyright(FILE_LIST ${file_list})
|