]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/itk/portfile.cmake
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / tools / vcpkg / ports / itk / portfile.cmake
1 vcpkg_buildpath_length_warning(37)
2
3 vcpkg_from_github(
4 OUT_SOURCE_PATH SOURCE_PATH
5 REPO InsightSoftwareConsortium/ITK
6 REF d3286c9cc04ba16cc8f73de9a98fbcd7c02f3c7b
7 SHA512 c358449870d580aeb10e32f8be0ca39e8a76d8dc06fda973788fafb5971333e546611c399190be49d40f5f3c18a1105d9699eef271a560aff25ce168a396926e
8 HEAD_REF master
9 PATCHES
10 hdf5.patch
11 double-conversion.patch
12 openjpeg.patch
13 openjpeg2.patch
14 var_libraries.patch
15 wrapping.patch
16 python_gpu_wrapping.patch
17 opencl.patch
18 cufftw.patch
19 use-the-lrintf-intrinsic.patch
20 )
21
22 vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
23 "vtk" Module_ITKVtkGlue
24 "cuda" Module_ITKCudaCommon # Requires RTK?
25 #"cuda" CUDA_HAVE_GPU # Automatically set by FindCUDA?
26 "cufftw" ITK_USE_CUFFTW
27 "opencl" ITK_USE_GPU
28 "tbb" Module_ITKTBB
29 "rtk" Module_RTK
30 "tools" RTK_BUILD_APPLICATIONS
31 # There are a lot of more (remote) modules and options in ITK
32 # feel free to add those as a feature
33 )
34
35 if("cufftw" IN_LIST FEATURES)
36 # Alternativly set CUFFT_LIB and CUFFTW_LIB
37 if(WIN32)
38 file(TO_CMAKE_PATH "$ENV{CUDA_PATH}" CUDA_PATH)
39 set(CUDA_LIB_PATH "${CUDA_PATH}")
40
41 if(VCPKG_TARGET_ARCHITECTURE STREQUAL x64)
42 string(APPEND CUDA_LIB_PATH "/lib/x64")
43 elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x86)
44 string(APPEND CUDA_LIB_PATH "/lib/Win32")
45 message(FATAL_ERROR "CUFFTW is not supported on architecture ${VCPKG_TARGET_ARCHITECTURE}")
46 else()
47 message(FATAL_ERROR "Architecture ${VCPKG_TARGET_ARCHITECTURE} not supported !")
48 endif()
49
50 list(APPEND ADDITIONAL_OPTIONS
51 "-DFFTW_LIB_SEARCHPATH=${CUDA_LIB_PATH}"
52 "-DFFTW_INCLUDE_PATH=${CUDA_PATH}/include"
53 "-DCUFFTW_INCLUDE_PATH=${CUDA_PATH}/include"
54 )
55 endif()
56 endif()
57
58 if("rtk" IN_LIST FEATURES)
59 if(VCPKG_TARGET_ARCHITECTURE STREQUAL x86)
60 message(FATAL_ERROR "RTK is not supported on architecture ${VCPKG_TARGET_ARCHITECTURE}")
61 endif()
62 SET(BUILD_RTK ON)
63 list(APPEND ADDITIONAL_OPTIONS
64 "-DModule_RTK_GIT_TAG=8099212f715231d093f7d6a1114daecf45d871ed" # RTK latest versions (11.05.2020)
65 )
66 if("cuda" IN_LIST FEATURES)
67 list(APPEND ADDITIONAL_OPTIONS "-DRTK_USE_CUDA=ON")
68 #RTK + CUDA + PYTHON + dynamic library linkage will fail and needs upstream fixes.
69 endif()
70 endif()
71 file(REMOVE_RECURSE "${SOURCE_PATH}/Modules/Remote/RTK")
72
73 if("opencl" IN_LIST FEATURES)
74 list(APPEND ADDITIONAL_OPTIONS # Wrapping options required by OpenCL if build with Python Wrappers
75 -DITK_WRAP_unsigned_long_long=ON
76 -DITK_WRAP_signed_long_long=ON
77 )
78 endif()
79 if("tools" IN_LIST FEATURES)
80
81 if("rtk" IN_LIST FEATURES)
82 list(APPEND TOOL_NAMES rtkadmmtotalvariation rtkadmmwavelets rtkamsterdamshroud rtkbackprojections rtkbioscangeometry rtkcheckimagequality rtkconjugategradient
83 rtkdigisensgeometry rtkdrawgeometricphantom rtkdrawshepploganphantom rtkdualenergysimplexdecomposition rtkelektasynergygeometry rtkextractphasesignal
84 rtkextractshroudsignal rtkfdk rtkfdktwodweights rtkfieldofview rtkforwardprojections rtkfourdconjugategradient rtkfourdfdk rtkfourdrooster rtkfourdsart
85 rtkgaincorrection rtki0estimation rtkimagxgeometry rtkiterativefdk rtklagcorrection rtklastdimensionl0gradientdenoising rtklut rtkmaskcollimation rtkmcrooster
86 rtkmotioncompensatedfourdconjugategradient rtkorageometry rtkosem rtkoverlayphaseandshroud rtkparkershortscanweighting rtkprojectgeometricphantom
87 rtkprojectionmatrix rtkprojections rtkprojectshepploganphantom rtkramp rtkrayboxintersection rtkrayquadricintersection rtkregularizedconjugategradient
88 rtksart rtkscatterglarecorrection rtksimulatedgeometry rtkspectraldenoiseprojections rtkspectralforwardmodel rtkspectralonestep rtkspectralrooster rtkspectralsimplexdecomposition
89 rtksubselect rtktotalnuclearvariationdenoising rtktotalvariationdenoising rtktutorialapplication rtkvarianobigeometry rtkvarianprobeamgeometry rtkvectorconjugategradient
90 rtkwangdisplaceddetectorweighting rtkwarpedbackprojectsequence rtkwarpedforwardprojectsequence rtkwaveletsdenoising rtkxradgeometry)
91 endif()
92 endif()
93 if("vtk" IN_LIST FEATURES)
94 vcpkg_find_acquire_program(PYTHON3)
95 list(APPEND ADDITIONAL_OPTIONS
96 "-DPython3_EXECUTABLE:PATH=${PYTHON3}" # Required by mvtk if vtk[python] was build
97 )
98 endif()
99 if("python" IN_LIST FEATURES)
100 message(STATUS "${PORT} builds a long time (>1h) with python wrappers enabled!")
101 vcpkg_find_acquire_program(PYTHON3)
102 vcpkg_find_acquire_program(SWIG) # Swig is only required for wrapping!
103 get_filename_component(SWIG_DIR "${SWIG}" DIRECTORY)
104 list(APPEND ADDITIONAL_OPTIONS
105 -DITK_WRAP_PYTHON=ON
106 -DPython3_FIND_REGISTRY=NEVER
107 "-DPython3_EXECUTABLE:PATH=${PYTHON3}" # Required by more than one feature
108 "-DSWIG_EXECUTABLE=${SWIG}"
109 "-DSWIG_DIR=${SWIG_DIR}"
110 )
111 #ITK_PYTHON_SITE_PACKAGES_SUFFIX should be set to the install dir of the site-packages within vcpkg
112 endif()
113
114 set(USE_64BITS_IDS OFF)
115 if (VCPKG_TARGET_ARCHITECTURE STREQUAL x64 OR VCPKG_TARGET_ARCHITECTURE STREQUAL arm64)
116 set(USE_64BITS_IDS ON)
117 endif()
118
119 file(REMOVE_RECURSE "${SOURCE_PATH}/CMake/FindOpenCL.cmake")
120 vcpkg_configure_cmake(
121 SOURCE_PATH ${SOURCE_PATH}
122 PREFER_NINJA
123 DISABLE_PARALLEL_CONFIGURE
124 OPTIONS
125 -DBUILD_TESTING=OFF
126 -DBUILD_EXAMPLES=OFF
127 -DBUILD_PKGCONFIG_FILES=OFF
128 -DITK_DOXYGEN_HTML=OFF
129 -DDO_NOT_INSTALL_ITK_TEST_DRIVER=ON
130 -DITK_SKIP_PATH_LENGTH_CHECKS=ON
131 -DITK_INSTALL_DATA_DIR=share/itk/data
132 -DITK_INSTALL_DOC_DIR=share/itk/doc
133 -DITK_INSTALL_PACKAGE_DIR=share/itk
134 -DITK_USE_64BITS_IDS=${USE_64BITS_IDS}
135 -DITK_USE_CONCEPT_CHECKING=ON
136 #-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
137 -DITK_USE_SYSTEM_DOUBLECONVERSION=ON
138 -DITK_USE_SYSTEM_EXPAT=ON
139 -DITK_USE_SYSTEM_JPEG=ON
140 -DITK_USE_SYSTEM_PNG=ON
141 -DITK_USE_SYSTEM_TIFF=ON
142 -DITK_USE_SYSTEM_ZLIB=ON
143 -DITK_USE_SYSTEM_EIGEN=ON
144 -DITK_USE_SYSTEM_FFTW=ON
145 -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!
146 -DITK_USE_SYSTEM_GDCM=ON
147 -DITK_USE_SYSTEM_OpenJPEG=ON # Added by VCPKG
148 -DITK_USE_SYSTEM_DCMTK=ON
149 -DDCMTK_USE_ICU=ON
150 -DITK_USE_SYSTEM_ICU=ON
151 #-DITK_USE_SYSTEM_VXL=ON
152 #-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
153 -DITK_USE_SYSTEM_MINC=ON
154 -DITK_USE_SYSTEM_SWIG=ON
155 -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!
156 -DINSTALL_GTEST=OFF
157 -DITK_USE_SYSTEM_GOOGLETEST=ON
158 -DEXECUTABLE_OUTPUT_PATH=tools/${PORT}
159
160 # TODO
161 #-DVXL_USE_GEOTIFF=ON
162 -DVXL_USE_LFS=ON
163
164 -DITK_MINIMUM_COMPLIANCE_LEVEL:STRING=1 # To Display all remote modules within cmake-gui
165 #-DModule_IOSTL=ON # example how to turn on a non-default module
166 #-DModule_MorphologicalContourInterpolation=ON # example how to turn on a remote module
167 #-DModule_RLEImage=ON # example how to turn on a remote module
168
169 # Some additional wraping options
170 #-DITK_WRAP_double=ON
171 #-DITK_WRAP_complex_double=ON
172 #-DITK_WRAP_covariant_vector_double=ON
173 #-DITK_WRAP_vector_double=ON
174
175 ${FEATURE_OPTIONS}
176 ${ADDITIONAL_OPTIONS}
177
178 OPTIONS_DEBUG ${OPTIONS_DEBUG}
179 OPTIONS_RELEASE ${OPTIONS_RELEASE}
180 )
181 if(BUILD_RTK) # Remote Modules are only downloaded on configure.
182 # TODO: In the future try to download via vcpkg_from_github and move the files. That way patching does not need this workaround
183 vcpkg_apply_patches(SOURCE_PATH "${SOURCE_PATH}/Modules/Remote/RTK" QUIET PATCHES rtk/already_defined.patch rtk/unresolved.patch)
184 endif()
185 vcpkg_install_cmake()
186 vcpkg_copy_pdbs()
187 vcpkg_fixup_cmake_targets()
188
189 if(TOOL_NAMES)
190 vcpkg_copy_tools(TOOL_NAMES ${TOOL_NAMES} AUTO_CLEAN)
191 endif()
192
193 file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/cmake")
194 file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib/cmake")
195 file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
196 file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
197
198 file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)