-
Notifications
You must be signed in to change notification settings - Fork 54
/
Copy pathCMakeLists.txt
92 lines (81 loc) · 2.96 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
find_package(ITK REQUIRED
COMPONENTS ITKCommon
ITKGDCM
ITKIOGDCM
ITKIOImageBase
WebAssemblyInterface
)
include(${ITK_USE_FILE})
add_executable(read-image-dicom-file-series read-image-dicom-file-series.cxx)
target_link_libraries(read-image-dicom-file-series PUBLIC ${ITK_LIBRARIES})
add_executable(image-sets-normalization image-sets-normalization.cxx)
target_link_libraries(image-sets-normalization PUBLIC ${ITK_LIBRARIES})
if (WASI)
return()
endif()
# include iconv for reading dicom tags
include(ExternalProject)
set(Iconv iconv)
set(Iconv_LIBRARY libiconv)
set(Iconv_DIR ${CMAKE_BINARY_DIR}/libiconv)
set(Iconv_INCLUDE_DIRS ${Iconv_DIR}/include)
file(MAKE_DIRECTORY ${Iconv_DIR} ${Iconv_INCLUDE_DIRS})
# DICOM tag reading needs Iconv, and the docker image (currently)
# used for building does not have iconv installed
if (EMSCRIPTEN)
set(Iconv_CONFIGURE_COMMAND
emconfigure
${Iconv_DIR}/src/libiconv/configure
--srcdir=${Iconv_DIR}/src/libiconv
--prefix=${Iconv_DIR}
--host=wasm32
--enable-static)
set(Iconv_BUILD_COMMAND emmake make)
else()
set(Iconv_CONFIGURE_COMMAND
${Iconv_DIR}/src/libiconv/configure
--srcdir=${Iconv_DIR}/src/libiconv
--prefix=${Iconv_DIR}
--host=wasm32
--enable-static)
set(Iconv_BUILD_COMMAND make)
endif()
if(${CMAKE_VERSION} VERSION_LESS 3.24)
set(download_extract_timestamp_flag)
else()
set(download_extract_timestamp_flag
DOWNLOAD_EXTRACT_TIMESTAMP TRUE)
endif()
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.23.0")
cmake_policy(SET CMP0135 NEW)
endif()
ExternalProject_Add(${Iconv_LIBRARY}
PREFIX ${Iconv_DIR}
URL "https://bafybeid2yl6aeunciy5rynjmaoxkhhau3jgjpv7x25pylby7hq6n23c57i.ipfs.dweb.link/libiconv-1.16.tar.gz"
"https://itk.mypinata.cloud/ipfs/bafybeid2yl6aeunciy5rynjmaoxkhhau3jgjpv7x25pylby7hq6n23c57i/libiconv-1.16.tar.gz"
URL_HASH SHA256=e6a1b1b589654277ee790cce3734f07876ac4ccfaecbee8afa0b649cf529cc04
CONFIGURE_COMMAND ${Iconv_CONFIGURE_COMMAND}
BUILD_COMMAND ${Iconv_BUILD_COMMAND}
# needed for ninja generator
BUILD_BYPRODUCTS ${Iconv_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}iconv${CMAKE_STATIC_LIBRARY_SUFFIX}
${download_extract_timestamp_flag}
)
add_library(${Iconv} STATIC IMPORTED)
set_target_properties(${Iconv} PROPERTIES
IMPORTED_LOCATION ${Iconv_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}iconv${CMAKE_STATIC_LIBRARY_SUFFIX}
INTERFACE_INCLUDE_DIRECTORIES ${Iconv_INCLUDE_DIRS})
add_dependencies(${Iconv} ${Iconv_LIBRARY})
add_executable(read-dicom-tags read-dicom-tags.cxx)
target_link_libraries(read-dicom-tags PUBLIC ${ITK_LIBRARIES} ${Iconv_LIBRARIES} ${Iconv})
if (EMSCRIPTEN)
foreach(dicom_io_module
read-image-dicom-file-series
read-dicom-tags
)
set(target_esm "${dicom_io_module}")
set(dicom_common_link_flags " ${common_link_flags} -s SUPPORT_LONGJMP=1 -s DISABLE_EXCEPTION_CATCHING=0")
set_property(TARGET ${target} APPEND_STRING
PROPERTY LINK_FLAGS " ${dicom_common_link_flags}"
)
endforeach()
endif()