1set(USE_FIND_PACKAGE_DOCS "Control whether libraries are searched via CMake's find_package() mechanism or a Windows specific fallback")
2if(WIN32)
3  # For Windows, we don't used FIND_PACKAGE because DCMTK usually is used with its
4  # own set of 3rd-party support libraries that can be downloaded from DCMTK's
5  # website (pre-built).
6  if(MINGW)
7    set(DCMTK_USE_FIND_PACKAGE TRUE CACHE BOOL "${USE_FIND_PACKAGE_DOCS}")
8  else()
9    set(DCMTK_USE_FIND_PACKAGE FALSE CACHE BOOL "${USE_FIND_PACKAGE_DOCS}")
10  endif()
11else()
12  # Only find_package is supported
13  set(DCMTK_USE_FIND_PACKAGE TRUE CACHE BOOL "${USE_FIND_PACKAGE_DOCS}")
14  if(NOT DCMTK_USE_FIND_PACKAGE)
15    message(WARNING "Only find_package is supported on this platform, overriding user setting of DCMTK_USE_FIND_PACKAGE.")
16    set(DCMTK_USE_FIND_PACKAGE TRUE FORCE)
17  endif()
18endif()
19mark_as_advanced(DCMTK_USE_FIND_PACKAGE)
20
21if(DCMTK_USE_FIND_PACKAGE)
22  # Find TIFF
23  if(DCMTK_WITH_TIFF)
24    find_package(TIFF QUIET)
25    # turn off library if it could not be found
26    if(NOT TIFF_FOUND)
27      message(STATUS "Warning: TIFF support will be disabled because libtiff was not found.")
28      set(DCMTK_WITH_TIFF OFF CACHE BOOL "" FORCE)
29      set(WITH_LIBTIFF "")
30    else()
31      set(WITH_LIBTIFF 1)
32      # libtiff can be compiled with libjpeg support; if available, add libjpeg to library and include path
33      find_package(JPEG QUIET)
34      if(NOT JPEG_FOUND)
35        message(STATUS "Info: DCMTK TIFF support will be enabled (but without JPEG)")
36        include_directories(${TIFF_INCLUDE_DIR})
37      else()
38        message(STATUS "Info: DCMTK TIFF support will be enabled")
39        include_directories(${TIFF_INCLUDE_DIR} ${JPEG_INCLUDE_DIR})
40      endif()
41      set(LIBTIFF_LIBS ${TIFF_LIBRARY} ${JPEG_LIBRARY})
42    endif()
43  endif()
44
45  # Find PNG
46  if(DCMTK_WITH_PNG)
47    find_package(PNG QUIET)
48    if(NOT PNG_FOUND)
49      set(DCMTK_WITH_PNG OFF CACHE BOOL "" FORCE)
50      message(STATUS "Warning: PNG support will be disabled because libpng was not found.")
51      set(WITH_LIBPNG "")
52    else()
53      message(STATUS "Info: DCMTK PNG support will be enabled")
54      set(WITH_LIBPNG 1)
55      include_directories(${PNG_INCLUDE_DIR})
56      set(LIBPNG_LIBS ${PNG_LIBRARY})
57    endif()
58  endif()
59
60  # Find OpenSSL
61  if(DCMTK_WITH_OPENSSL)
62    find_package(OpenSSL QUIET)
63    if(NOT OPENSSL_FOUND)
64      message(STATUS "Warning: OPENSSL support will be disabled because openssl was not found.")
65      set(WITH_OPENSSL "")
66      set(DCMTK_WITH_OPENSSL OFF CACHE BOOL "" FORCE)
67    else()
68      include(CheckLibraryExists)
69      include(CheckCXXSourceCompiles)
70      set(TEMP_INCLUDES "${CMAKE_REQUIRED_INCLUDES}")
71      list(APPEND CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCLUDE_DIR}")
72      CHECK_CXX_SOURCE_COMPILES("extern \"C\" {\n#include <openssl/ssl.h>\n}\nint main(){\n#if OPENSSL_VERSION_NUMBER < 0x10001000L\n#error OpenSSL too old\n#endif\n}\n" OPENSSL_VERSION_CHECK)
73      set(CMAKE_REQUIRED_INCLUDES "${TEMP_INCLUDES}")
74      if(OPENSSL_VERSION_CHECK)
75        message(STATUS "Info: DCMTK OPENSSL support will be enabled")
76        set(WITH_OPENSSL 1)
77        include_directories(${OPENSSL_INCLUDE_DIR})
78        set(OPENSSL_LIBS ${OPENSSL_LIBRARIES})
79        CHECK_LIBRARY_EXISTS(dl dlopen "" HAVE_LIBDL)
80        if(HAVE_LIBDL)
81          set(OPENSSL_LIBS ${OPENSSL_LIBS} dl)
82        endif()
83      else()
84        message(STATUS "Info: DCMTK OPENSSL support will be disabled: DCMTK requires OpenSSL version 1.0.1 or newer")
85        set(DCMTK_WITH_OPENSSL OFF CACHE BOOL "" FORCE)
86        set(WITH_OPENSSL "")
87      endif()
88    endif()
89  endif()
90
91  # Find libXML2
92  if(DCMTK_WITH_XML)
93    find_package(LibXml2 QUIET)
94    if(NOT LIBXML2_FOUND)
95      message(STATUS "Warning: XML support will be disabled because libxml2 was not found.")
96      set(WITH_LIBXML "")
97      set(DCMTK_WITH_XML OFF CACHE BOOL "" FORCE)
98    else()
99      message(STATUS "Info: DCMTK XML support will be enabled")
100      set(WITH_LIBXML 1)
101      include_directories(${LIBXML2_INCLUDE_DIR})
102      set(LIBXML_LIBS ${LIBXML2_LIBRARIES})
103    endif()
104  endif()
105
106  # Find zlib
107  if(DCMTK_WITH_ZLIB)
108    find_package(ZLIB QUIET)
109    if(NOT ZLIB_FOUND)
110      message(STATUS "Warning: ZLIB support will be disabled because zlib was not found.")
111      set(WITH_ZLIB "")
112      set(DCMTK_WITH_ZLIB OFF CACHE BOOL "" FORCE)
113    else()
114      message(STATUS "Info: DCMTK ZLIB support will be enabled")
115      set(WITH_ZLIB 1)
116      include_directories(${ZLIB_INCLUDE_DIRS})
117      set(ZLIB_LIBS ${ZLIB_LIBRARIES})
118    endif()
119  endif()
120
121  # Find libsndfile
122  if(DCMTK_WITH_SNDFILE)
123    find_package(Sndfile QUIET)
124    if(NOT SNDFILE_LIBS)
125      message(STATUS "Warning: SNDFILE support will be disabled because libsndfile was not found.")
126      set(WITH_SNDFILE "")
127      set(DCMTK_WITH_SNDFILE OFF CACHE BOOL "" FORCE)
128    else()
129      message(STATUS "Info: DCMTK SNDFILE support will be enabled")
130      set(WITH_SNDFILE 1)
131      include_directories(${SNDFILE_INCLUDE_DIRS})
132      set(SNDFILE_LIBS ${SNDFILE_LIBRARIES})
133    endif()
134  endif()
135
136  # Find libiconv
137  if(DCMTK_WITH_ICONV)
138    find_package(Iconv QUIET)
139    find_package(Charset QUIET)
140    if(ICONV_FOUND)
141        if(NOT Iconv_IS_BUILT_IN)
142            set(LIBICONV_FOUND ${ICONV_FOUND})
143        else()
144            message(STATUS "Info: found builtin ICONV support inside the C standard library.")
145            set(DCMTK_WITH_STDLIBC_ICONV ON CACHE BOOL "" FORCE)
146        endif()
147        if(DEFINED ICONV_SECOND_ARGUMENT_IS_CONST)
148            get_property(HELPSTRING CACHE ICONV_SECOND_ARGUMENT_IS_CONST PROPERTY HELPSTRING)
149            set(LIBICONV_SECOND_ARGUMENT_CONST ${ICONV_SECOND_ARGUMENT_IS_CONST} CACHE INTERNAL "${HELPSTRING}")
150        endif()
151    endif()
152    if(NOT LIBICONV_FOUND OR NOT LIBCHARSET_FOUND)
153      message(STATUS "Warning: ICONV support will be disabled because libiconv was not found. Correct LIBICONV_LIBDIR and LIBICONV_INCLUDE_DIR and re-enable DCMTK_WITH_ICONV.")
154      set(DCMTK_WITH_ICONV OFF CACHE BOOL "" FORCE)
155      set(WITH_LIBICONV "")
156    else()
157      message(STATUS "Info: DCMTK ICONV support will be enabled")
158      set(WITH_LIBICONV 1)
159      set(LIBICONV_INCDIR ${LIBICONV_INCLUDE_DIRS} ${Iconv_INCLUDE_DIRS} ${ICONV_INCLUDE_DIR} ${LIBCHARSET_INCLUDE_DIRS})
160      set(LIBICONV_LIBDIR ${LIBICONV_LIBDIR})
161      set(LIBICONV_LIBS ${LIBICONV_LIBRARIES} ${Iconv_LIBRARIES} ${ICONV_LIBRARIES} ${LIBCHARSET_LIBRARY})
162      include_directories(${LIBICONV_INCDIR})
163    endif()
164  endif()
165
166  # Find libwrap
167  if(DCMTK_WITH_WRAP)
168    find_package(Wrap QUIET)
169    if(NOT WRAP_FOUND)
170      message(STATUS "Warning: WRAP support will be disabled because libwrap was not found.")
171      set(WITH_TCPWRAPPER "")
172      set(DCMTK_WITH_WRAP OFF CACHE BOOL "" FORCE)
173    else()
174      message(STATUS "Info: DCMTK WRAP support will be enabled")
175      set(WITH_TCPWRAPPER 1)
176      include_directories(${WRAP_INCLUDE_DIRS})
177      set(WRAP_LIBS ${WRAP_LIBRARIES})
178    endif()
179  endif()
180
181  # Find OpenJPEG
182  if(DCMTK_WITH_OPENJPEG)
183    find_package(OpenJPEG QUIET)
184    if(NOT OPENJPEG_FOUND)
185      message(STATUS "Warning: OpenJPEG support will be disabled because the OpenJPEG library was not found.")
186      set(WITH_OPENJPEG "")
187      set(DCMTK_WITH_OPENJPEG OFF CACHE BOOL "" FORCE)
188    else()
189      message(STATUS "Info: DCMTK OpenJPEG support will be enabled")
190      set(WITH_OPENJPEG 1)
191      include_directories(${OPENJPEG_INCLUDE_DIRS})
192      set(OPENJPEG_LIBS ${OPENJPEG_LIBRARIES})
193    endif()
194  endif()
195else()
196  if(NOT DEFINED DCMTK_SUPPORT_LIBRARIES_DIR)
197    get_filename_component(DCMTK_SUPPORT_LIBRARIES_DIR "${DCMTK_SOURCE_DIR}" PATH)
198    set(DCMTK_SUPPORT_LIBRARIES_DIR "${DCMTK_SUPPORT_LIBRARIES_DIR}" CACHE PATH "The directory to search for precompiled DCMTK support libraries.")
199  endif()
200
201  # libxml support: find out whether user has library
202  file(GLOB LIBXML_DIR "${DCMTK_SUPPORT_LIBRARIES_DIR}/libxml2*")
203  find_path(WITH_LIBXMLINC "${DCMTK_SUPPORT_LIBRARIES_DIR}/include/libxml/parser.h" "${LIBXML_DIR}" NO_DEFAULT_PATH)
204
205  # libpng support: find out whether user has library
206  file(GLOB LIBPNG_DIR "${DCMTK_SUPPORT_LIBRARIES_DIR}/libpng*")
207  find_path(WITH_LIBPNGINC "include/png.h" "${LIBPNG_DIR}" NO_DEFAULT_PATH)
208
209  # libtiff support: find out whether user has library
210  file(GLOB LIBTIFF_DIR "${DCMTK_SUPPORT_LIBRARIES_DIR}/libtiff*")
211  find_path(WITH_LIBTIFFINC "include/tiff.h" "${LIBTIFF_DIR}" NO_DEFAULT_PATH)
212
213  # OpenSSL support: find out whether user has library
214  file(GLOB OPENSSL_DIR "${DCMTK_SUPPORT_LIBRARIES_DIR}/openssl*")
215  find_path(WITH_OPENSSLINC "include/openssl/ssl.h" "${OPENSSL_DIR}" NO_DEFAULT_PATH)
216
217  # zlib support: find out whether user has library
218  file(GLOB ZLIB_DIR "${DCMTK_SUPPORT_LIBRARIES_DIR}/zlib*")
219  find_path(WITH_ZLIBINC "include/zlib.h" "${ZLIB_DIR}" NO_DEFAULT_PATH)
220
221  # sndfile support: find out whether user has library. Needed for module dcmwave (not in public DCMTK yet, marked as advanced)
222  file(GLOB SNDFILE_DIR "${DCMTK_SUPPORT_LIBRARIES_DIR}/libsndfile*")
223  find_path(WITH_SNDFILEINC "sndfile.h" "${SNDFILE_DIR}" NO_DEFAULT_PATH)
224  mark_as_advanced(SNDFILE_DIR WITH_SNDFILEINC)
225
226  # libiconv support: find out whether user has library
227  file(GLOB LIBICONV_DIR "${DCMTK_SUPPORT_LIBRARIES_DIR}/libiconv*")
228  find_path(WITH_LIBICONVINC "include/iconv.h" "${LIBICONV_DIR}" NO_DEFAULT_PATH)
229
230  # OpenJPEG support: find out whether user has library
231  file(GLOB OPENJPEG_DIR "${DCMTK_SUPPORT_LIBRARIES_DIR}/openjpeg*")
232  find_path(WITH_OPENJPEGINC "lib/openjp2_o.lib" "${OPENJPEG_DIR}" NO_DEFAULT_PATH)
233
234  # libxml support: configure compiler
235  if(DCMTK_WITH_XML)
236    if(WITH_LIBXMLINC)
237      set(LIBXML_INCDIR "${WITH_LIBXMLINC}/include")
238      set(LIBXML_LIBDIR "${WITH_LIBXMLINC}/lib")
239      set(LIBXML_LIBS debug "${LIBXML_LIBDIR}/libxml2_d.lib" optimized "${LIBXML_LIBDIR}/libxml2_o.lib" debug "${LIBXML_LIBDIR}/iconv_d.lib" optimized "${LIBXML_LIBDIR}/iconv_o.lib")
240      message(STATUS "Info: DCMTK XML support will be enabled")
241      set(WITH_LIBXML 1)
242      # this hides some warnings that are emitted when linking against libxmlXXX.lib instead of linking the DLL directly
243      add_definitions("-DLIBXML_STATIC")
244    else() # turn off library if library path not set
245      message(STATUS "Warning: XML support will be disabled because libxml2 directory is not specified. Correct path and re-enable DCMTK_WITH_XML.")
246      set(DCMTK_WITH_XML OFF CACHE BOOL "" FORCE)
247      set(WITH_LIBXML "")
248    endif()
249  endif()
250
251  # libpng support: configure compiler
252  if(DCMTK_WITH_PNG)
253    if(WITH_LIBPNGINC)
254      set(LIBPNG_INCDIR "${WITH_LIBPNGINC}/include")
255      set(LIBPNG_LIBDIR "${WITH_LIBPNGINC}/lib")
256      set(LIBPNG_LIBS debug "${LIBPNG_LIBDIR}/libpng_d.lib" optimized "${LIBPNG_LIBDIR}/libpng_o.lib")
257      message(STATUS "Info: DCMTK PNG support will be enabled")
258      set(WITH_LIBPNG 1)
259    else() # turn off library if library path not set
260      message(STATUS "Warning: PNG support will be disabled because libpng directory was not specified. Correct path and re-enable DCMTK_WITH_PNG.")
261      set(DCMTK_WITH_PNG OFF CACHE BOOL "" FORCE)
262      set(WITH_LIBPNG "")
263    endif()
264  endif()
265
266  # libtiff support: configure compiler
267  if(DCMTK_WITH_TIFF)
268    if(WITH_LIBTIFFINC)
269      set(LIBTIFF_INCDIR "${WITH_LIBTIFFINC}/include")
270      set(LIBTIFF_LIBDIR "${WITH_LIBTIFFINC}/lib")
271      set(LIBTIFF_LIBS debug "${LIBTIFF_LIBDIR}/libtiff_d.lib" optimized "${LIBTIFF_LIBDIR}/libtiff_o.lib")
272      message(STATUS "Info: DCMTK TIFF support will be enabled")
273      set(WITH_LIBTIFF 1)
274    else() # turn off library if library path not set
275      message(STATUS "Warning: TIFF support will be disabled because libtiff directory was not specified. Correct path and re-enable DCMTK_WITH_TIFF.")
276      set(DCMTK_WITH_TIFF OFF CACHE BOOL "" FORCE)
277      set(WITH_LIBTIFF "")
278    endif()
279  endif()
280
281  # OpenSSL support: configure compiler
282  if(DCMTK_WITH_OPENSSL)
283    if(WITH_OPENSSLINC)
284      include(CheckCXXSourceCompiles)
285      set(OPENSSL_BINDIR "${WITH_OPENSSLINC}/bin")
286      set(OPENSSL_INCDIR "${WITH_OPENSSLINC}/include")
287      set(OPENSSL_LIBDIR "${WITH_OPENSSLINC}/lib")
288      # starting with OpenSSL 1.1.0, the Windows crypt32 library is needed for a static link of OpenSSL.
289      set(OPENSSL_LIBS "crypt32" debug "${OPENSSL_LIBDIR}/dcmtkssl_d.lib" optimized "${OPENSSL_LIBDIR}/dcmtkssl_o.lib" debug "${OPENSSL_LIBDIR}/dcmtkcrypto_d.lib" optimized "${OPENSSL_LIBDIR}/dcmtkcrypto_o.lib")
290      set(TEMP_INCLUDES "${CMAKE_REQUIRED_INCLUDES}")
291      list(APPEND CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCDIR}")
292      CHECK_CXX_SOURCE_COMPILES("extern \"C\" {\n#include <openssl/ssl.h>\n}\nint main(){\n#if OPENSSL_VERSION_NUMBER < 0x10001000L\n#error OpenSSL too old\n#endif\n}\n" OPENSSL_VERSION_CHECK)
293      set(CMAKE_REQUIRED_INCLUDES "${TEMP_INCLUDES}")
294      if(OPENSSL_VERSION_CHECK)
295        message(STATUS "Info: DCMTK OPENSSL support will be enabled")
296        set(WITH_OPENSSL 1)
297      else()
298        message(STATUS "Info: DCMTK OPENSSL support will be disabled: DCMTK requires OpenSSL version 1.0.1 or newer")
299        set(DCMTK_WITH_OPENSSL OFF CACHE BOOL "" FORCE)
300        set(WITH_OPENSSL "")
301      endif()
302    else() # turn off library if library path not set
303      message(STATUS "Warning: OPENSSL support will be disabled because openssl directory was not specified. Correct path and re-enable DCMTK_WITH_OPENSSL.")
304      set(DCMTK_WITH_OPENSSL OFF CACHE BOOL "" FORCE)
305      set(WITH_OPENSSL "")
306    endif()
307  endif()
308
309  # zlib support: configure compiler
310  if(DCMTK_WITH_ZLIB)
311    if(WITH_ZLIBINC)
312      set(ZLIB_INCDIR "${WITH_ZLIBINC}/include")
313      set(ZLIB_LIBDIR "${WITH_ZLIBINC}/lib")
314      set(ZLIB_LIBS debug "${ZLIB_LIBDIR}/zlib_d.lib" optimized "${ZLIB_LIBDIR}/zlib_o.lib")
315      message(STATUS "Info: DCMTK ZLIB support will be enabled")
316      set(WITH_ZLIB 1)
317    else() # turn off library if library path not set
318      message(STATUS "Warning: ZLIB support will be disabled because zlib directory was not specified. Correct path and re-enable DCMTK_WITH_ZLIB.")
319      set(DCMTK_WITH_ZLIB OFF CACHE BOOL "" FORCE)
320      set(WITH_ZLIB "")
321    endif()
322  endif()
323
324  # sndfile support: configure compiler
325  if(DCMTK_WITH_SNDFILE)
326    if(WITH_SNDFILEINC)
327      set(SNDFILE_INCDIR "${WITH_SNDFILEINC}/include")
328      set(SNDFILE_LIBDIR "${WITH_SNDFILEINC}/lib")
329      set(SNDFILE_LIBS debug "${SNDFILE_LIBDIR}/libsndfile_d.lib" optimized "${SNDFILE_LIBDIR}/libsndfile_o.lib")
330      message(STATUS "Info: DCMTK SNDFILE support will be enabled")
331      set(WITH_SNDFILE 1)
332    else() # turn off library if library path not set
333      message(STATUS "Warning: SNDFILE support will be disabled because libsndfile directory was not specified. Correct path and re-enable DCMTK_WITH_SNDFILE.")
334      set(DCMTK_WITH_SNDFILE OFF CACHE BOOL "" FORCE)
335      set(WITH_SNDFILE "")
336    endif()
337  endif()
338
339  # libiconv support: configure compiler
340  if(DCMTK_WITH_ICONV)
341    if(WITH_LIBICONVINC)
342      set(LIBICONV_INCDIR "${WITH_LIBICONVINC}/include")
343      set(LIBICONV_LIBDIR "${WITH_LIBICONVINC}/lib")
344      set(LIBICONV_LIBS debug "${LIBICONV_LIBDIR}/libiconv_d.lib" optimized "${LIBICONV_LIBDIR}/libiconv_o.lib")
345      message(STATUS "Info: DCMTK ICONV support will be enabled")
346      set(WITH_LIBICONV 1)
347    else() # turn off library if library path not set
348      message(STATUS "Warning: ICONV support will be disabled because libiconv directory was not specified. Correct path and re-enable DCMTK_WITH_ICONV.")
349      set(DCMTK_WITH_ICONV OFF CACHE BOOL "" FORCE)
350      set(WITH_LIBICONV "")
351    endif()
352  endif()
353
354  # OpenJPEG support: configure compiler
355  if(DCMTK_WITH_OPENJPEG)
356    if(WITH_OPENJPEGINC)
357      # Unfortunately, OpenJPEG uses a version number in the include path. This needs special handling.
358      file(GLOB OPENJPEG2_DIR "${WITH_OPENJPEGINC}/include/openjpeg*")
359      find_path(WITH_OPENJPEGINC1 "openjpeg.h" "${OPENJPEG2_DIR}" NO_DEFAULT_PATH)
360      if ("${WITH_OPENJPEGINC1}" STREQUAL "WITH_OPENJPEGINC1-NOTFOUND")
361          message(STATUS "Info: DCMTK OpenJPEG support will be disabled because the header files were not found.")
362          set(DCMTK_WITH_OPENJPEG OFF CACHE BOOL "" FORCE)
363          set(WITH_OPENJPEG "")
364      else()
365          set(OPENJPEG_INCDIR "${WITH_OPENJPEGINC1}")
366          set(OPENJPEG_LIBDIR "${WITH_OPENJPEGINC}/lib")
367          set(OPENJPEG_LIBS debug "${OPENJPEG_LIBDIR}/openjp2_d.lib" optimized "${OPENJPEG_LIBDIR}/openjp2_o.lib")
368          message(STATUS "Info: DCMTK OpenJPEG support will be enabled")
369          set(WITH_OPENJPEG 1)
370      endif()
371    else() # turn off library if library path not set
372      message(STATUS "Warning: OpenJPEG support will be disabled because openjpeg directory was not specified. Correct path and re-enable DCMTK_WITH_OPENJPEG.")
373      set(DCMTK_WITH_OPENJPEG OFF CACHE BOOL "" FORCE)
374      set(WITH_OPENJPEG "")
375    endif()
376  endif()
377endif()
378
379if(NOT DEFINED DCMTK_WITH_STDLIBC_ICONV)
380  include(CheckCXXSourceCompiles)
381  CHECK_CXX_SOURCE_COMPILES("#include <iconv.h>\nint main(){iconv_t cd = iconv_open(\"\",\"\");iconv(cd,0,0,0,0);iconv_close(cd);return 0;}" WITH_STDLIBC_ICONV)
382  if(WITH_STDLIBC_ICONV)
383    message(STATUS "Info: found builtin ICONV support inside the C standard library.")
384    set(DCMTK_WITH_STDLIBC_ICONV ON CACHE BOOL "" FORCE)
385  else()
386    set(DCMTK_WITH_STDLIBC_ICONV OFF CACHE BOOL "" FORCE)
387  endif()
388endif()
389
390if(DCMTK_WITH_ICU)
391  find_package(ICU COMPONENTS uc data QUIET)
392  if(NOT ICU_FOUND)
393    message(STATUS "Warning: ICU support will be disabled because the ICU were not found.")
394    set(DCMTK_WITH_ICU OFF CACHE BOOL "" FORCE)
395    set(WITH_ICU "")
396  else()
397    message(STATUS "Info: DCMTK ICU support will be enabled")
398    set(WITH_ICU 1)
399    set(ICU_INCDIR ${ICU_INCLUDE_DIR})
400    set(ICU_LIBS ${ICU_LIBRARIES})
401    include_directories(${ICU_INCLUDE_DIR})
402  endif()
403endif()
404
405# Find doxygen
406if(DCMTK_WITH_DOXYGEN)
407  find_package(Doxygen QUIET) # will set variable DOXYGEN_EXECUTABLE
408  if(NOT DOXYGEN_FOUND)
409    message(STATUS "Warning: DOXYGEN support will be disabled because doxygen was not found.")
410    set(DCMTK_WITH_DOXYGEN OFF CACHE BOOL "" FORCE)
411  endif()
412endif()
413
414if(DCMTK_WITH_ICONV OR DCMTK_WITH_STDLIBC_ICONV)
415  include(CheckCXXSourceCompiles)
416  set(CMAKE_REQUIRED_INCLUDES ${LIBICONV_INCDIR})
417  set(CMAKE_REQUIRED_LIBRARIES ${LIBICONV_LIBS})
418  CHECK_CXX_SOURCE_COMPILES("
419  #include <iconv.h>
420  int main() {
421    iconv_t cd = 0;
422    const char *in = 0;
423    iconv(cd, &in, 0, 0, 0);
424    return 0;
425  }" LIBICONV_SECOND_ARGUMENT_CONST)
426  set(CMAKE_REQUIRED_INCLUDES)
427  set(CMAKE_REQUIRED_LIBRARIES)
428endif()
429