comparison Resources/CMake/DcmtkConfiguration.cmake @ 2515:7c8a246e8652

fix WebAssembly build
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 29 Mar 2018 10:08:06 +0200
parents 97a74f0eac7a
children ce2dfba9417c
comparison
equal deleted inserted replaced
2514:38d666a40860 2515:7c8a246e8652
98 endif() 98 endif()
99 else() 99 else()
100 message("The patches for DCMTK have already been applied") 100 message("The patches for DCMTK have already been applied")
101 endif() 101 endif()
102 102
103
103 IF (CMAKE_CROSSCOMPILING) 104 IF (CMAKE_CROSSCOMPILING)
104 if (CMAKE_COMPILER_IS_GNUCXX AND 105 if (CMAKE_COMPILER_IS_GNUCXX AND
105 CMAKE_SYSTEM_NAME STREQUAL "Windows") # MinGW 106 CMAKE_SYSTEM_NAME STREQUAL "Windows") # MinGW
106 SET(C_CHAR_UNSIGNED 1 CACHE INTERNAL "Whether char is unsigned.") 107 SET(C_CHAR_UNSIGNED 1 CACHE INTERNAL "Whether char is unsigned.")
107 108
108 elseif(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") # WebAssembly or asm.js 109 elseif(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") # WebAssembly or asm.js
109 # Check out "../WebAssembly/arith.h" 110
110 UNSET(SIZEOF_VOID_P CACHE) 111 # Check out "../WebAssembly/ArithmeticTests/" to regenerate the
111 UNSET(SIZEOF_CHAR CACHE) 112 # "arith.h" file
112 UNSET(SIZEOF_DOUBLE CACHE)
113 UNSET(SIZEOF_FLOAT CACHE)
114 UNSET(SIZEOF_INT CACHE)
115 UNSET(SIZEOF_LONG CACHE)
116 UNSET(SIZEOF_SHORT CACHE)
117 UNSET(SIZEOF_VOID_P CACHE)
118 UNSET(C_CHAR_UNSIGNED CACHE)
119
120 SET(SIZEOF_VOID_P 4 CACHE INTERNAL "")
121 SET(SIZEOF_CHAR 1 CACHE INTERNAL "")
122 SET(SIZEOF_DOUBLE 8 CACHE INTERNAL "")
123 SET(SIZEOF_FLOAT 4 CACHE INTERNAL "")
124 SET(SIZEOF_INT 4 CACHE INTERNAL "")
125 SET(SIZEOF_LONG 4 CACHE INTERNAL "")
126 SET(SIZEOF_SHORT 2 CACHE INTERNAL "")
127 SET(SIZEOF_VOID_P 4 CACHE INTERNAL "")
128 SET(C_CHAR_UNSIGNED 0 CACHE INTERNAL "")
129
130 configure_file( 113 configure_file(
131 ${ORTHANC_ROOT}/Resources/WebAssembly/arith.h 114 ${ORTHANC_ROOT}/Resources/WebAssembly/arith.h
132 ${DCMTK_SOURCES_DIR}/config/include/dcmtk/config/arith.h 115 ${DCMTK_SOURCES_DIR}/config/include/dcmtk/config/arith.h
133 COPYONLY) 116 COPYONLY)
134 117
155 endif() 138 endif()
156 139
157 SET(DCMTK_SOURCE_DIR ${DCMTK_SOURCES_DIR}) 140 SET(DCMTK_SOURCE_DIR ${DCMTK_SOURCES_DIR})
158 include(${DCMTK_SOURCES_DIR}/CMake/CheckFunctionWithHeaderExists.cmake) 141 include(${DCMTK_SOURCES_DIR}/CMake/CheckFunctionWithHeaderExists.cmake)
159 include(${DCMTK_SOURCES_DIR}/CMake/GenerateDCMTKConfigure.cmake) 142 include(${DCMTK_SOURCES_DIR}/CMake/GenerateDCMTKConfigure.cmake)
143
144
145 if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten") # WebAssembly or
146 # asm.js The macros below are not properly discovered by DCMTK
147 # when using WebAssembly. Check out "../WebAssembly/arith.h" for
148 # how we produced these values. This step MUST be after
149 # "GenerateDCMTKConfigure" and before the generation of
150 # "osconfig.h".
151 UNSET(SIZEOF_VOID_P CACHE)
152 UNSET(SIZEOF_CHAR CACHE)
153 UNSET(SIZEOF_DOUBLE CACHE)
154 UNSET(SIZEOF_FLOAT CACHE)
155 UNSET(SIZEOF_INT CACHE)
156 UNSET(SIZEOF_LONG CACHE)
157 UNSET(SIZEOF_SHORT CACHE)
158 UNSET(SIZEOF_VOID_P CACHE)
159 UNSET(C_CHAR_UNSIGNED CACHE)
160
161 SET(SIZEOF_VOID_P 4 CACHE INTERNAL "")
162 SET(SIZEOF_CHAR 1 CACHE INTERNAL "")
163 SET(SIZEOF_DOUBLE 8 CACHE INTERNAL "")
164 SET(SIZEOF_FLOAT 4 CACHE INTERNAL "")
165 SET(SIZEOF_INT 4 CACHE INTERNAL "")
166 SET(SIZEOF_LONG 4 CACHE INTERNAL "")
167 SET(SIZEOF_SHORT 2 CACHE INTERNAL "")
168 SET(SIZEOF_VOID_P 4 CACHE INTERNAL "")
169 SET(C_CHAR_UNSIGNED 0 CACHE INTERNAL "")
170 endif()
171
160 172
161 set(DCMTK_PACKAGE_VERSION_SUFFIX "") 173 set(DCMTK_PACKAGE_VERSION_SUFFIX "")
162 set(DCMTK_PACKAGE_VERSION_NUMBER ${DCMTK_VERSION_NUMBER}) 174 set(DCMTK_PACKAGE_VERSION_NUMBER ${DCMTK_VERSION_NUMBER})
163 175
164 CONFIGURE_FILE( 176 CONFIGURE_FILE(
405 /usr/share/libdcmtk12 417 /usr/share/libdcmtk12
406 /usr/share/libdcmtk13 418 /usr/share/libdcmtk13
407 /usr/share/libdcmtk14 419 /usr/share/libdcmtk14
408 /usr/share/libdcmtk15 420 /usr/share/libdcmtk15
409 /usr/share/libdcmtk16 421 /usr/share/libdcmtk16
422 /usr/share/libdcmtk17
423 /usr/share/libdcmtk18
424 /usr/share/libdcmtk19
425 /usr/share/libdcmtk20
410 /usr/local/share/dcmtk 426 /usr/local/share/dcmtk
411 ) 427 )
412 428
413 if (${DCMTK_DICTIONARY_DIR_AUTO} MATCHES "DCMTK_DICTIONARY_DIR_AUTO-NOTFOUND") 429 if (${DCMTK_DICTIONARY_DIR_AUTO} MATCHES "DCMTK_DICTIONARY_DIR_AUTO-NOTFOUND")
414 message(FATAL_ERROR "Cannot locate the DICOM dictionary on this system") 430 message(FATAL_ERROR "Cannot locate the DICOM dictionary on this system")