Skip to content
Commits on Source (3)
ANNOUNCEMENT
Version 3.6.4 of the OFFIS DCMTK (DICOM ToolKit) software is now available for
Version 3.6.5 of the OFFIS DCMTK (DICOM ToolKit) software is now available for
public release. This is a minor release that includes the following changes
over the previous version 3.6.3:
over the previous version 3.6.4:
- DCMTK 3.6.4 builds correctly on older and up-to-date versions of GNU gcc
(4.2.1 to 8.2.1) Clang (3.4.2 to 7.0.0), Microsoft Visual Studio (2005 to
2017) and SunPro CC (5.14 and 5.15).
- DCMTK 3.6.5 builds correctly on older and up-to-date versions of GNU gcc
(4.4.7 to 9.2.0), Clang (3.4.2 to 9.0.0), AppleClang (11.0.0), Microsoft
Visual Studio (2008 to 2019), SunPro CC (5.14 and 5.15) and IBM XL C/C++
(16.1.1.3).
- Tested with the following operating systems/environments:
......@@ -26,120 +27,124 @@ over the previous version 3.6.3:
- GNU Autoconf is still deprecated, running 'configure' emits a warning by
default. Support for GNU Autoconf will be removed after this release.
- Updated data dictionary, SOP Class and Transfer Syntax UIDs for the recently
approved changes to the DICOM standard (i.e. Supplements and CPs), up to DICOM
standard release DICOM 2018d plus Supplement 188 (Multi-energy CT Images),
CP-1803 and CP-1809.
- Updated data dictionary, SOP Class, Frame of Reference and Transfer Syntax
UIDs for the recently approved changes to the DICOM standard (i.e. Supplements
and CPs), up to DICOM standard release DICOM 2019c plus Supplement 175 (Second
Generation Radiotherapy - C-Arm RT Treatment Modalities).
- Added "dcmicmp", a new tool that reads two DICOM images, an original
"reference image" and a post-processed "test image" to which some kind of
processing such as a lossy image compression has been applied. dcmicmp
compares both images and computes several metrics that describe how similar
or different both images are.
- Added support for directory record "RADIOTHERAPY" that has been introduced
with Supplement 147 (Second Generation Radiotherapy - Prescription and Segment
Annotation).
- Added new command line applications: cda2dcm and stl2dcm for encapsulation
of HL7 CDA documents and STL files into DICOM file format. Revised
implementation of pdf2dcm based on new class DcmEncapsulatedDocument.
- Added support for the three new 64-bit integer VRs introduced with CP-1819:
Other 64-bit Very Long (OV), Signed 64-bit Very Long (SV) and Unsigned 64-bit
Very Long (UV).
- The lossless JPEG decoder can now handle images compressed with the
Cornell codec, which creates invalid Huffman codes for 16-bit images.
- Implemented support for the Extended BCP 195 TLS Profile, introduced with
Supplement 206, in the dcmtls module and the various TLS-enabled DCMTK tools.
- The new class OFRandom implements a cryptographically secure pseudo
random number generator (PRNG) based on the ISAAC algorithm and its public
domain reference implementation by Bob Jenkins.
- Added option to "storescu" to rename files after processing them by appending
".bad" or ".good" at the end of the filename.
- Major revision of the TLS code in DCMTK (module dcmtls and related command
line tools) implementing DICOM Supplement 204 "TLS Security Profiles".
Selection of TLS ciphersuites is now based on security profiles, and
DCMTK now implements the recommendations of BCP 195 / RFC 7525.
- DCMTK can now be compiled with LibreSSL as an alternative to OpenSSL.
- Added new options to "wlmscpfs" that allow for dumping incoming C-FIND
requests to text files using a configurable directory and filename.
- Updated automatically generated Context Group classes in "dcmsr"
(Structured Reporting) based on DICOM 2018d. Also updated the Code
(Structured Reporting) based on DICOM 2019c. Also updated the Code
definitions from the supported coding schemes such as DICOM, NCIt and UMLS.
- Further enhanced DICOM Structured Reporting (SR) module "dcmsr":
- Added support for included template TID 4019 (Algorithm Identification) to
the implementation of TID 1419 (ROI Measurements).
- Added support for the Performed Imaging Agent Administration SR IOD and the
Planned Imaging Agent Administration SR IOD introduced with Supplement 164.
- Added support for the Synchronization Module, which is required for some SR
IODs, e.g. Procedure Log SR or Performed Imaging Agent Administration SR.
- Added initial support for coding scheme "SCT" (SNOMED CT) by defining those
CODE_SCT_xxx code constants that are needed for the "cmr" submodule.
- Updated SR Template classes from DCMR for the 2019b edition of the DICOM
standard, i.e. all SRT (SNOMED RT) codes were replaced by their associated
SCT (SNOMED CT) counterparts. This change was introduced with CP-1850.
- Added new print flag PF_printEmptyCodes, which prints the text "empty code"
for empty codes instead of "invalid code". This new flag is e.g. used for
the output stream operator of the DSRCodedEntryValue class.
- Added a document tree node filter that checks for the presence or absence
of a concept name, i.e. whether it is empty or not.
- The list of elliptic curves to be negotiated as part of a TLS is now created
dynamically, i.e. it is tested at runtime which elliptic curves are supported
by the installed OpenSSL library.
- Added new and enhanced existing code examples for this module.
- Allow disabling Functional Group checks when writing Segmentations and
Parametric Map objects in order to speed up writing objects with many frames.
- Enhanced Worklist SCP code to make use of existing classes and functions
instead of using its own "spaghetti" code for everything. This also
resolves issues with the Worklist SCP rejecting some legit Worklist queries
as its own verification functions were too strict.
- Added macro that enables the wide char (wchar_t*) support of the XML parser
that is part of the DCMTK (ofstd/ofxml). This support is limited to Windows
systems and still regarded as experimental (see documentation for details).
- Added method getNumberOfValues() to all VR and other classes that are
derived from DcmObject (such as DcmItem). This new method always returns
the number of values currently stored in the corresponding object/element,
in contrast to getVM(), which sometimes returns the constant 1, or card(),
which is not available for all classes.
- The tool "findscu" now always returns with a non-zero exit code when an error
occurred, e.g. when association negotiation failed.
- The ACSE timeout, e.g. passed to the various networking command line tools
using --acse-timeout, is now also used for the first PDU to be read. This is
another step towards cleaning up the timeout handling in dcmnet module.
- CMake-related enhancements:
- Replaced all calls of strcpy() by OFStandard::strlcpy(), which should reduce
the possibility of buffer overflows. Also added OFStandard::snprintf() and
OFStandard::vsnprintf(), which should be used within the DCMTK as safe and
portable helper functions.
- DCMTK now understands and makes use of the CMake variable CMAKE_CXX_STANDARD
when a CMake version that supports it is employed (CMake 3.1.3 and newer).
- Fixed bug in dcmseg that produced broken binary Segmentation objects if the
number of pixels were not dividable by 8 for a single frame.
- Added CMake option that controls whether DCMTK gets compiled using the
multi-threaded static or DLL runtime library when using MSVC on Windows.
- Enhanced Worklist SCP code to make use of existing classes and functions
instead of using its own "spaghetti" code for everything. This also
resolves issues with the Worklist SCP rejecting some legit Worklist queries
as its own verification functions were too strict.
- Various fixes and extensions to the JPEG-LS implementation:
- Introduced a subset of std::filesystem to ofstd, currently providing the
classes OFpath, OFdirectory_entry and OFdirectory_iterator as portable
implementations for the respective C++17 STL classes.
- Added command line options controlling how odd-length bitstreams are
padded to even length (for compatibility with HP LOCO).
- The Windows implementation of class OFReadWriteLock class now uses Slim
Reader/Writer (SRW) Locks, which are available since Windows Vista, instead
of the older implementation based on a Mutex, a Semaphore and a counter,
because SRW locks are much faster.
- Added command line option that causes the decoder to store images even
though an error occurred during the decoding process, which may be helpful
for slightly truncated bitstreams.
- Changed version numbering of shared objects. On Posix operating systems,
it now follows these guidelines: https://autotools.io/libtool/version.html.
- Enable setting of individual JPEG-LS encoding parameters
T1, T2, T3 and RESET.
- Fixed various issues that occurred after the official 3.6.3 release.
- Various bugfixes in JPEG-LS encoder and decoder.
- Fixed binary Segmentation object creation when width is not dividable by 8.
- Fixed wrong DIMSE status codes A8xx (for C-STORE and C-FIND) and A800 (for
C-GET and C-MOVE), which were never defined in the official DICOM standard.
Now, the DCMTK uses the correct DIMSE status code 0122H for "SOP Class not
supported" for all DIMSE messages.
- Fixed various issues that occurred after the official 3.6.4 release.
See CHANGES file for details.
Many people have contributed to this new release of DCMTK, appearing here in
alphabetical order. Thank you very much for your support!
Klaus Eisentraut <klaus.eisentraut@siemens-healthineers.com>
Andrey Fedorov <andrey.fedorov@gmail.com>
Florian Franzen <Florian.Franzen@caesar.de>
Christian Fremgen <Christian.Fremgen@ith-icoserve.com>
Omar Ganiev <beched@deteact.com>
Victor Derks <vderks@delftdi.com>
Chinna Durai <chinnadurai410@gmail.com>
Holger Franke <franke@image-instruments.de>
Sergei Gordey <serg.gordey@gmail.com>
Daniel Grieger <Daniel.Grieger@ith-icoserve.com>
Helmut Grohne <helmut@subdivi.de>
GwanYeong Kim <gy741.kim@gmail.com>
Bengt Gustafsson <Bengt.Gustafsson@contextvision.se>
Alexander Haderer <alexander.haderer@loescap.de>
Peter Klotz <Peter.Klotz@ith-icoserve.com>
Brian Lucas <brian.lucas@heartit.com>
Mathieu Malaterre <mathieu.malaterre@gmail.com>
Savvas Metallidis <savvas.metallidis@infomedcs.com>
Isaiah Norton <inorton@bwh.harvard.edu>
Lukas Raesenhoeft <lukas@raesenhoeft.com>
Uli Schlachter <psychon@znc.in>
Max Smolens (github user msmolens)
Christian Wetzel <wetzel@phoenix-pacs.de>
Gert Wollny <gw.fossdev@gmail.com>
Sahab Zanjanizadeh <Sahab.Zanjanizadeh@ge.com>
Thomas Dement
Hans Meine <hans.meine@mevis.fraunhofer.de>
Maria Samoylova <mashanedyak@gmail.com>
Martin Wenger <Martin.Wenger@klinikum-hef.de>
Brian Wise <brian.wise@medtronic.com>
Grischa Zengel <ggz@zmt.info>
Andreas Gravgaard Andersen (GitHub user "agravgaard")
Hans Johnson (GitHub user "hjmjohnson")
Stefano Magni
Forum user "deepakt"
GitHub user "sercxjo"
Forum user "AlexanderLysenko"
GitHub user "eborisch"
GitHub user "FreddyFunk"
Members of the DCMTK Team who have worked on this release are
(in alphabetical order):
......@@ -161,4 +166,4 @@ The DCMTK software can be downloaded via:
https://dicom.offis.de/dcmtk or https://www.dcmtk.org/
OFFIS e.V., Oldenburg, Germany, 2018-11-29
OFFIS e.V., Oldenburg, Germany, 2019-10-28
......@@ -33,6 +33,10 @@ if(WIN32 AND NOT MINGW)
file(GLOB LIBICONV_DIR "${DCMTK_SOURCE_DIR}/../libiconv*")
find_path(WITH_LIBICONVINC "include/iconv.h" "${LIBICONV_DIR}" NO_DEFAULT_PATH)
# OpenJPEG support: find out whether user has library
file(GLOB OPENJPEG_DIR "${DCMTK_SOURCE_DIR}/../openjpeg*")
find_path(WITH_OPENJPEGINC "lib/openjp2_o.lib" "${OPENJPEG_DIR}" NO_DEFAULT_PATH)
# libxml support: configure compiler
if(DCMTK_WITH_XML)
if(WITH_LIBXMLINC)
......@@ -153,7 +157,31 @@ if(WIN32 AND NOT MINGW)
endif()
endif()
# OpenJPEG support: configure compiler
if(DCMTK_WITH_OPENJPEG)
if(WITH_OPENJPEGINC)
# Unfortunately, OpenJPEG uses a version number in the include path. This needs special handling.
file(GLOB OPENJPEG2_DIR "${WITH_OPENJPEGINC}/include/openjpeg*")
find_path(WITH_OPENJPEGINC1 "openjpeg.h" "${OPENJPEG2_DIR}" NO_DEFAULT_PATH)
if ("${WITH_OPENJPEGINC1}" STREQUAL "WITH_OPENJPEGINC1-NOTFOUND")
message(STATUS "Info: DCMTK OpenJPEG support will be disabled because the header files were not found.")
set(DCMTK_WITH_OPENJPEG OFF CACHE BOOL "" FORCE)
set(WITH_OPENJPEG "")
else()
set(OPENJPEG_INCDIR "${WITH_OPENJPEGINC1}")
set(OPENJPEG_LIBDIR "${WITH_OPENJPEGINC}/lib")
set(OPENJPEG_LIBS debug "${OPENJPEG_LIBDIR}/openjp2_d.lib" optimized "${OPENJPEG_LIBDIR}/openjp2_o.lib")
message(STATUS "Info: DCMTK OpenJPEG support will be enabled")
set(WITH_OPENJPEG 1)
endif()
else() # turn off library if library path not set
message(STATUS "Warning: OpenJPEG support will be disabled because openjpeg directory was not specified. Correct path and re-enable DCMTK_WITH_OPENJPEG.")
set(DCMTK_WITH_OPENJPEG OFF CACHE BOOL "" FORCE)
set(WITH_OPENJPEG "")
endif()
endif()
else(WIN32 AND NOT MINGW)
# Find TIFF
if(DCMTK_WITH_TIFF)
......@@ -164,11 +192,16 @@ else()
set(DCMTK_WITH_TIFF OFF CACHE BOOL "" FORCE)
set(WITH_LIBTIFF "")
else()
message(STATUS "Info: DCMTK TIFF support will be enabled")
set(WITH_LIBTIFF 1)
# libtiff can be compiled with libjpeg support; if available, add libjpeg to library and include path
find_package(JPEG QUIET)
if(NOT JPEG_FOUND)
message(STATUS "Info: DCMTK TIFF support will be enabled (but without JPEG)")
include_directories(${TIFF_INCLUDE_DIR})
else()
message(STATUS "Info: DCMTK TIFF support will be enabled")
include_directories(${TIFF_INCLUDE_DIR} ${JPEG_INCLUDE_DIR})
endif()
set(LIBTIFF_LIBS ${TIFF_LIBRARY} ${JPEG_LIBRARY})
endif()
endif()
......@@ -198,7 +231,10 @@ else()
else()
include(CheckLibraryExists)
include(CheckCXXSourceCompiles)
set(TEMP_INCLUDES "${CMAKE_REQUIRED_INCLUDES}")
list(APPEND CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCLUDE_DIR}")
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)
set(CMAKE_REQUIRED_INCLUDES "${TEMP_INCLUDES}")
if(OPENSSL_VERSION_CHECK)
message(STATUS "Info: DCMTK OPENSSL support will be enabled")
set(WITH_OPENSSL 1)
......@@ -306,8 +342,23 @@ else()
endif()
endif()
# Find OpenJPEG
if(DCMTK_WITH_OPENJPEG)
find_package(OpenJPEG QUIET)
if(NOT OPENJPEG_FOUND)
message(STATUS "Warning: OpenJPEG support will be disabled because the OpenJPEG library was not found.")
set(WITH_OPENJPEG "")
set(DCMTK_WITH_OPENJPEG OFF CACHE BOOL "" FORCE)
else()
message(STATUS "Info: DCMTK OpenJPEG support will be enabled")
set(WITH_OPENJPEG 1)
include_directories(${OPENJPEG_INCLUDE_DIRS})
set(OPENJPEG_LIBS ${OPENJPEG_LIBRARIES})
endif()
endif()
endif(WIN32 AND NOT MINGW)
if(NOT DEFINED DCMTK_WITH_STDLIBC_ICONV)
include(CheckCXXSourceCompiles)
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)
......
......@@ -24,6 +24,7 @@ set(DCMTK_WITH_ICONV @DCMTK_WITH_ICONV@)
set(DCMTK_WITH_STDLIBC_ICONV @DCMTK_WITH_STDLIBC_ICONV@)
set(DCMTK_WITH_ICU @DCMTK_WITH_ICU@)
set(DCMTK_WITH_WRAP @DCMTK_WITH_WRAP@)
set(DCMTK_WITH_OPENJPEG @DCMTK_WITH_OPENJPEG@)
set(DCMTK_WITH_DOXYGEN @DCMTK_WITH_DOXYGEN@)
# Dictionary-related
......
......@@ -27,6 +27,7 @@ SET(DCMTK_WITH_ICONV @DCMTK_WITH_ICONV@)
SET(DCMTK_WITH_STDLIBC_ICONV @DCMTK_WITH_STDLIBC_ICONV@)
SET(DCMTK_WITH_ICU @DCMTK_WITH_ICU@)
SET(DCMTK_WITH_WRAP @DCMTK_WITH_WRAP@)
set(DCMTK_WITH_OPENJPEG @DCMTK_WITH_OPENJPEG@)
SET(DCMTK_WITH_DOXYGEN @DCMTK_WITH_DOXYGEN@)
# Dictionary-related
......
# Find OpenJPEG library
#
# Released under BSD license
#
# OPENJPEG_INCLUDE_DIRS - where to find openjpeg.h, etc.
# OPENJPEG_LIBRARIES - Lists of libraries when using OpenJPEG
# OPENJPEG_FOUND - True if OpenJPEG found
# Use pkg_check_modules to determine the paths for OpenJPEG
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(OPENJPEG_PKGCONF libopenjp2)
endif()
# Look for the header file
find_path(OPENJPEG_INCLUDE_DIR NAMES openjpeg.h HINTS ${OPENJPEG_PKGCONF_INCLUDE_DIRS})
mark_as_advanced(OPENJPEG_INCLUDE_DIR)
# Look for the library
set(OPENJPEG_LIBS openjp2)
find_library(OPENJPEG_LIBRARY NAMES ${OPENJPEG_LIBS} HINTS ${OPENJPEG_PKGCONF_LIBRARY_DIRS})
mark_as_advanced(OPENJPEG_LIBRARY)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OPENJPEG REQUIRED_VARS OPENJPEG_LIBRARY OPENJPEG_INCLUDE_DIR)
# Copy the result to output variables
if(OPENJPEG_FOUND)
set(OPENJPEG_LIBRARIES ${OPENJPEG_LIBRARY})
set(OPENJPEG_INCLUDE_DIRS ${OPENJPEG_INCLUDE_DIR})
else()
set(OPENJPEG_LIBS)
set(OPENJPEG_LIBRARY)
set(OPENJPEG_LIBRARIES)
set(OPENJPEG_INCLUDE_DIR)
set(OPENJPEG_INCLUDE_DIRS)
endif()
......@@ -326,6 +326,7 @@ endif()
CHECK_INCLUDE_FILE_CXX("cstdarg" HAVE_CSTDARG)
CHECK_INCLUDE_FILE_CXX("signal.h" HAVE_SIGNAL_H)
CHECK_INCLUDE_FILE_CXX("fenv.h" HAVE_FENV_H)
CHECK_INCLUDE_FILE_CXX("iterator" HAVE_ITERATOR_HEADER)
if(NOT APPLE)
# poll on macOS is unreliable, it first did not exist, then was broken until
......@@ -541,6 +542,7 @@ endif()
CHECK_FUNCTION_EXISTS(connect HAVE_CONNECT)
CHECK_FUNCTION_EXISTS(accept HAVE_ACCEPT)
CHECK_FUNCTION_EXISTS(access HAVE_ACCESS)
CHECK_FUNCTION_EXISTS(atoll HAVE_ATOLL)
CHECK_FUNCTION_EXISTS(bcmp HAVE_BCMP)
CHECK_FUNCTION_EXISTS(bcopy HAVE_BCOPY)
CHECK_FUNCTION_EXISTS(bind HAVE_BIND)
......@@ -565,8 +567,10 @@ endif()
CHECK_FUNCTION_EXISTS(getlogin_r HAVE_GETLOGIN_R)
CHECK_FUNCTION_EXISTS(getpid HAVE_GETPID)
CHECK_FUNCTION_EXISTS(getpwnam HAVE_GETPWNAM)
CHECK_FUNCTION_EXISTS(getrusage HAVE_GETRUSAGE)
CHECK_FUNCTION_EXISTS(getsockname HAVE_GETSOCKNAME)
CHECK_FUNCTION_EXISTS(getsockopt HAVE_GETSOCKOPT)
CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
CHECK_FUNCTION_EXISTS(getuid HAVE_GETUID)
CHECK_FUNCTION_EXISTS(gmtime_r HAVE_GMTIME_R)
CHECK_FUNCTION_EXISTS(index HAVE_INDEX)
......@@ -684,6 +688,9 @@ endif()
CHECK_FUNCTIONWITHHEADER_EXISTS("int64_t definition" "${HEADERS}" HAVE_INT64_T)
CHECK_FUNCTIONWITHHEADER_EXISTS("uint64_t definition" "${HEADERS}" HAVE_UINT64_T)
# ICU prefers to use char16_t, but it is only supported since C++11
CHECK_FUNCTIONWITHHEADER_EXISTS("char16_t definition" "${HEADERS}" HAVE_CHAR16_T)
# File access stuff
CHECK_FUNCTIONWITHHEADER_EXISTS("fpos64_t definition" "${HEADERS}" HAVE_FPOS64_T)
CHECK_FUNCTIONWITHHEADER_EXISTS("off64_t definition" "${HEADERS}" HAVE_OFF64_T)
......@@ -1262,6 +1269,26 @@ int main()
return 0;
}")
function(DCMTK_CHECK_ITERATOR_CATEGORY CATEGORY)
if(HAVE_ITERATOR_HEADER)
string(TOUPPER "${CATEGORY}" CAT)
DCMTK_TRY_COMPILE(HAVE_${CAT}_ITERATOR_CATEGORY "the iterator category ${CATEGORY} is declared"
"#include <iterator>
int main()
{
typedef std::${CATEGORY}_iterator_tag category;
return 0;
}")
endif()
endfunction()
DCMTK_CHECK_ITERATOR_CATEGORY(input)
DCMTK_CHECK_ITERATOR_CATEGORY(output)
DCMTK_CHECK_ITERATOR_CATEGORY(forward)
DCMTK_CHECK_ITERATOR_CATEGORY(bidirectional)
DCMTK_CHECK_ITERATOR_CATEGORY(random_access)
DCMTK_CHECK_ITERATOR_CATEGORY(contiguous)
function(ANALYZE_ICONV_FLAGS)
if(DCMTK_WITH_ICONV OR DCMTK_WITH_STDLIBC_ICONV)
set(TEXT "Detecting fixed iconv conversion flags")
......@@ -1384,44 +1411,66 @@ function(INSPECT_FUNDAMENTAL_ARITHMETIC_TYPES)
endif() # file needs update
endfunction()
function(DCMTK_ADD_CXX11_FLAGS)
string(FIND "${CMAKE_CXX_FLAGS}" "${DCMTK_CXX11_FLAGS}" INDEX)
if(INDEX EQUAL -1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DCMTK_CXX11_FLAGS}" PARENT_SCOPE)
endif()
endfunction()
function(DCMTK_TEST_ENABLE_CXX11)
function(DCMTK_CHECK_CXX_STANDARD STANDARD)
set(RESULT 0)
set(TEXT_RESULT "disabled")
if(DCMTK_ENABLE_CXX11)
if(DEFINED HAVE_CXX11_TEST_RESULT)
if(HAVE_CXX11_TEST_RESULT)
DCMTK_ADD_CXX11_FLAGS()
if(DEFINED HAVE_CXX${STANDARD}_TEST_RESULT)
if(HAVE_CXX${STANDARD}_TEST_RESULT)
set(RESULT 1)
set(TEXT_RESULT "enabled")
endif()
else()
DCMTK_ADD_CXX11_FLAGS() # will automatically be removed by the function scope
set(MESSAGE "Checking whether the compiler supports C++11")
set(MESSAGE "Checking whether the compiler supports C++${STANDARD}")
message(STATUS "${MESSAGE}")
try_compile(COMPILE_RESULT "${CMAKE_BINARY_DIR}" "${DCMTK_SOURCE_DIR}/config/tests/cxx11.cc")
set(HAVE_CXX11_TEST_RESULT "${COMPILE_RESULT}" CACHE INTERNAL "Caches the configuration test result for C++11 support.")
try_compile(COMPILE_RESULT "${CMAKE_BINARY_DIR}" "${DCMTK_SOURCE_DIR}/config/tests/cxx${STANDARD}.cc")
set(HAVE_CXX${STANDARD}_TEST_RESULT "${COMPILE_RESULT}" CACHE INTERNAL "Caches the configuration test result for C++${STANDARD} support.")
if(COMPILE_RESULT)
set(RESULT 1)
set(TEXT_RESULT "enabled")
message(STATUS "${MESSAGE} -- yes")
else()
message(STATUS "${MESSAGE} -- no")
endif()
endif()
set("ENABLE_CXX${STANDARD}" "${RESULT}" PARENT_SCOPE)
endfunction()
function(DCMTK_TEST_ENABLE_CXX11)
get_property(MODERN_CXX_STANDARDS GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARDS)
foreach(STANDARD ${MODERN_CXX_STANDARDS})
set(ENABLE_CXX${STANDARD} 0)
endforeach()
get_property(DCMTK_CMAKE_HAS_CXX_STANDARD GLOBAL PROPERTY DCMTK_CMAKE_HAS_CXX_STANDARD)
if(DCMTK_CMAKE_HAS_CXX_STANDARD)
get_property(MODERN_CXX_STANDARD GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARD)
if(MODERN_CXX_STANDARD AND DCMTK_ENABLE_CXX11)
dcmtk_upper_bound(MODERN_CXX_STANDARDS "${CMAKE_CXX_STANDARD}" N)
math(EXPR N "${N}-1")
foreach(I RANGE ${N})
list(GET MODERN_CXX_STANDARDS ${I} STANDARD)
dcmtk_check_cxx_standard("${STANDARD}")
if(NOT ENABLE_CXX${STANDARD})
break()
endif()
set(HAVE_CXX11 "${RESULT}" CACHE INTERNAL "Set to 1 if the compiler supports C++11 and it should be enabled.")
message(STATUS "Info: C++11 features ${TEXT_RESULT}")
if(RESULT)
endforeach()
endif()
elseif(DCMTK_ENABLE_CXX11 AND NOT DCMTK_ENABLE_CXX11 STREQUAL "INFERRED")
# set C++11 compiler flags for the test, will automatically be removed by the function scope
string(FIND "${CMAKE_CXX_FLAGS}" "${DCMTK_CXX11_FLAGS}" INDEX)
if(INDEX EQUAL -1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DCMTK_CXX11_FLAGS}" PARENT_SCOPE)
endif()
dcmtk_check_cxx_standard(11)
if(ENABLE_CXX11)
# push C++11 CXX-flags to the parent scope
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} PARENT_SCOPE)
endif()
endif()
foreach(STANDARD ${MODERN_CXX_STANDARDS})
set(HAVE_CXX${STANDARD} "${ENABLE_CXX${STANDARD}}" CACHE INTERNAL "Set to 1 if the compiler supports C++${STANDARD} and it should be enabled.")
if(HAVE_CXX${STANDARD})
message(STATUS "Info: C++${STANDARD} features enabled")
else()
message(STATUS "Info: C++${STANDARD} features disabled")
endif()
endforeach()
endfunction()
function(DCMTK_TEST_ENABLE_STL_FEATURE NAME)
......
......@@ -172,3 +172,17 @@ else()
unset(${VAR} PARENT_SCOPE)
endmacro()
endif()
# A C++ STL style upper_bound function for CMake ';' lists
function(DCMTK_UPPER_BOUND LIST COMP VAR)
list(LENGTH "${LIST}" N)
math(EXPR LAST "${N}-1")
foreach(INDEX RANGE ${LAST})
list(GET "${LIST}" ${INDEX} E)
if(COMP LESS E)
set("${VAR}" ${INDEX} PARENT_SCOPE)
return()
endif()
endforeach()
set("${VAR}" ${N} PARENT_SCOPE)
endfunction()
......@@ -7,9 +7,9 @@ if(DEFINED DCMTK_CONFIGURATION_DONE)
endif()
set(DCMTK_CONFIGURATION_DONE true)
# Minimum CMake version required
if(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.12.3)
set(CMAKE_BACKWARDS_COMPATIBILITY 3.12.3 CACHE STRING "Latest version of CMake when this project was released." FORCE)
# Latest CMake version tested
if(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.15.3)
set(CMAKE_BACKWARDS_COMPATIBILITY 3.15.3 CACHE STRING "Latest version of CMake when this project was released." FORCE)
endif()
# CMAKE_BUILD_TYPE is set to value "Release" if none is specified by the
......@@ -38,14 +38,14 @@ endif()
# a development snapshot and an even number indicates an official release.)
set(DCMTK_MAJOR_VERSION 3)
set(DCMTK_MINOR_VERSION 6)
set(DCMTK_BUILD_VERSION 4)
set(DCMTK_BUILD_VERSION 5)
# The ABI is not guaranteed to be stable between different snapshots/releases,
# so this particular version number is increased for each snapshot or release.
set(DCMTK_ABI_VERSION 14)
set(DCMTK_ABI_VERSION 15)
# Package "release" settings (some are currently unused and, therefore, disabled)
set(DCMTK_PACKAGE_NAME "dcmtk")
set(DCMTK_PACKAGE_DATE "2018-11-29")
set(DCMTK_PACKAGE_DATE "2019-10-28")
set(DCMTK_PACKAGE_VERSION "${DCMTK_MAJOR_VERSION}.${DCMTK_MINOR_VERSION}.${DCMTK_BUILD_VERSION}")
set(DCMTK_PACKAGE_VERSION_NUMBER ${DCMTK_MAJOR_VERSION}${DCMTK_MINOR_VERSION}${DCMTK_BUILD_VERSION})
set(DCMTK_PACKAGE_VERSION_SUFFIX "")
......@@ -57,6 +57,19 @@ set(DCMTK_PACKAGE_VERSION_SUFFIX "")
# Shared library version information
SET(DCMTK_LIBRARY_PROPERTIES VERSION "${DCMTK_ABI_VERSION}.${DCMTK_PACKAGE_VERSION}" SOVERSION "${DCMTK_ABI_VERSION}")
# Gather information about the employed CMake version's behavior
set(DCMTK_CMAKE_HAS_CXX_STANDARD FALSE)
if(NOT CMAKE_MAJOR_VERSION LESS 3) # CMake versions prior to 3 don't understand VERSION_LESS etc.
if(NOT CMAKE_VERSION VERSION_LESS "3.1.3")
set(DCMTK_CMAKE_HAS_CXX_STANDARD TRUE)
endif()
endif()
define_property(GLOBAL PROPERTY DCMTK_CMAKE_HAS_CXX_STANDARD
BRIEF_DOCS "TRUE iff the CXX_STANDARD property exists."
FULL_DOCS "TRUE for CMake versions since 3.1.3 that evaluate the CXX_STANDARD property and CMAKE_CXX_STANDARD variable."
)
set_property(GLOBAL PROPERTY DCMTK_CMAKE_HAS_CXX_STANDARD ${DCMTK_CMAKE_HAS_CXX_STANDARD})
# General build options and settings
option(BUILD_APPS "Build command line applications and test programs." ON)
option(BUILD_SHARED_LIBS "Build with shared libraries." OFF)
......@@ -65,13 +78,6 @@ mark_as_advanced(BUILD_SINGLE_SHARED_LIBRARY)
set(CMAKE_DEBUG_POSTFIX "" CACHE STRING "Library postfix for debug builds. Usually left blank.")
# add our CMake modules to the module path, but prefer the ones from CMake.
list(APPEND CMAKE_MODULE_PATH "${CMAKE_ROOT}/Modules" "${CMAKE_CURRENT_SOURCE_DIR}/${DCMTK_CMAKE_INCLUDE}/CMake/")
# newer CMake versions will warn if a module exists in its and the project's module paths, which is now always
# the case since above line adds CMake's module path to the project's one. It, therefore, doesn't matter whether
# we set the policy to OLD or NEW, since in both cases CMake's own module will be preferred. We just set
# the policy to silence the warning.
if(POLICY CMP0017)
cmake_policy(SET CMP0017 NEW)
endif()
if(BUILD_SINGLE_SHARED_LIBRARY)
# When we are building a single shared lib, we are building shared libs :-)
set(BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE)
......@@ -89,6 +95,7 @@ option(DCMTK_WITH_ICU "Configure DCMTK with support for ICU." ON)
if(NOT WIN32)
option(DCMTK_WITH_WRAP "Configure DCMTK with support for WRAP." ON)
endif()
option(DCMTK_WITH_OPENJPEG "Configure DCMTK with support for OPENJPEG." ON)
option(DCMTK_ENABLE_PRIVATE_TAGS "Configure DCMTK with support for DICOM private tags coming with DCMTK." OFF)
option(DCMTK_WITH_THREADS "Configure DCMTK with support for multi-threading." ON)
option(DCMTK_WITH_DOXYGEN "Build API documentation with DOXYGEN." ON)
......@@ -96,7 +103,6 @@ option(DCMTK_GENERATE_DOXYGEN_TAGFILE "Generate a tag file with DOXYGEN." OFF)
option(DCMTK_WIDE_CHAR_FILE_IO_FUNCTIONS "Build with wide char file I/O functions." OFF)
option(DCMTK_WIDE_CHAR_MAIN_FUNCTION "Build command line tools with wide char main function." OFF)
option(DCMTK_ENABLE_STL "Enable use of native STL classes and algorithms instead of DCMTK's own implementations." OFF)
option(DCMTK_ENABLE_CXX11 "Enable use of native C++11 features (eg. move semantics)." OFF)
macro(DCMTK_INFERABLE_OPTION OPTION DESCRIPTION)
set("${OPTION}" INFERRED CACHE STRING "${DESCRIPTION}")
......@@ -116,6 +122,7 @@ DCMTK_INFERABLE_OPTION(DCMTK_ENABLE_STL_STRING "Enable use of STL string.")
DCMTK_INFERABLE_OPTION(DCMTK_ENABLE_STL_TYPE_TRAITS "Enable use of STL type traits.")
DCMTK_INFERABLE_OPTION(DCMTK_ENABLE_STL_TUPLE "Enable use of STL tuple.")
DCMTK_INFERABLE_OPTION(DCMTK_ENABLE_STL_SYSTEM_ERROR "Enable use of STL system_error.")
DCMTK_INFERABLE_OPTION(DCMTK_ENABLE_CXX11 "Enable use of native C++11 features (eg. move semantics).")
# Built-in (compiled-in) dictionary enabled on Windows per default, otherwise
# disabled. Loading of external dictionary via run-time is, per default,
......@@ -137,6 +144,8 @@ mark_as_advanced(CMAKE_DEBUG_POSTFIX)
mark_as_advanced(FORCE EXECUTABLE_OUTPUT_PATH LIBRARY_OUTPUT_PATH)
mark_as_advanced(SNDFILE_DIR DCMTK_WITH_SNDFILE) # not yet needed in public DCMTK
mark_as_advanced(DCMTK_GENERATE_DOXYGEN_TAGFILE)
mark_as_advanced(DCMTK_WITH_OPENJPEG) # only needed by DCMJP2K module
if(NOT WIN32)
# support for wide char file I/O functions is currently Windows-specific
mark_as_advanced(DCMTK_WIDE_CHAR_FILE_IO_FUNCTIONS)
......@@ -144,6 +153,15 @@ if(NOT WIN32)
mark_as_advanced(DCMTK_WIDE_CHAR_MAIN_FUNCTION)
endif()
# Enable manpages only for non-Windows systems by default
set(DCMTK_ENABLE_MANPAGES_DOCSTRING "Enable building/installing of manpages.")
if(WIN32)
option(DCMTK_ENABLE_MANPAGES "${DCMTK_ENABLE_MANPAGES_DOCSTRING}" OFF)
else()
option(DCMTK_ENABLE_MANPAGES "${DCMTK_ENABLE_MANPAGES_DOCSTRING}" ON)
endif()
mark_as_advanced(DCMTK_ENABLE_MANPAGES)
enable_testing()
#-----------------------------------------------------------------------------
......@@ -246,8 +264,13 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
if(WIN32)
option(DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS "Overwrite compiler flags with DCMTK's WIN32 package default values." ON)
option(DCMTK_COMPILE_WIN32_MULTITHREADED_DLL "Compile DCMTK using the Multithreaded DLL runtime library." OFF)
if (BUILD_SHARED_LIBS)
set(DCMTK_COMPILE_WIN32_MULTITHREADED_DLL ON)
endif()
else()
set(DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS OFF)
set(DCMTK_COMPILE_WIN32_MULTITHREADED_DLL OFF)
endif()
if(DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS AND NOT BUILD_SHARED_LIBS)
......@@ -288,6 +311,37 @@ if(DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS AND NOT BUILD_SHARED_LIBS)
endif()
if(WIN32 AND CMAKE_GENERATOR MATCHES "Visual Studio .*")
# Evaluate the DCMTK_COMPILE_WIN32_MULTITHREADED_DLL option and adjust
# the runtime library setting (/MT or /MD) accordingly
set(CompilerFlags
CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS
CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_RELWITHDEBINFO
)
if(DCMTK_COMPILE_WIN32_MULTITHREADED_DLL OR BUILD_SHARED_LIBS)
# Convert any /MT or /MTd option to /MD or /MDd
foreach(CompilerFlag ${CompilerFlags})
string(REPLACE "/MT" "/MD" ${CompilerFlag} "${${CompilerFlag}}")
set(${CompilerFlag} "${${CompilerFlag}}" CACHE STRING "msvc compiler flags" FORCE)
endforeach()
else()
# Convert any /MD or /MDd option to /MT or /MTd
foreach(CompilerFlag ${CompilerFlags})
string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
set(${CompilerFlag} "${${CompilerFlag}}" CACHE STRING "msvc compiler flags" FORCE)
endforeach()
endif()
endif()
if(BUILD_SHARED_LIBS)
set(DCMTK_SHARED ON)
if(BUILD_SINGLE_SHARED_LIBRARY)
......@@ -382,6 +436,11 @@ else() # ... for non-Windows systems
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
endif()
# When compiling with IBM xlC, add flags to suppress some noisy C++ warnings
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "XL")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -qsuppress=1500-029:1500-030")
endif()
endif()
# define libraries and object files that must be linked to most Windows applications
......@@ -402,8 +461,28 @@ endif()
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
# handle CMAKE_CXX_STANDARD and related variables
if(DCMTK_CMAKE_HAS_CXX_STANDARD)
if(NOT DEFINED CMAKE_CXX_STANDARD)
if(DCMTK_ENABLE_CXX11 AND NOT DCMTK_ENABLE_CXX11 STREQUAL "INFERRED")
set(CMAKE_CXX_STANDARD 11)
endif()
endif()
if(NOT DEFINED CMAKE_CXX_STANDARD OR CMAKE_CXX_STANDARD MATCHES "^9[0-9]?$")
set(DCMTK_MODERN_CXX_STANDARD FALSE)
else()
set(DCMTK_MODERN_CXX_STANDARD TRUE)
endif()
define_property(GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARD
BRIEF_DOCS "TRUE when compiling C++11 (or newer) code."
FULL_DOCS "TRUE when the compiler does support and is configured for C++11 or a later C++ standard."
)
set_property(GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARD ${DCMTK_MODERN_CXX_STANDARD})
if(DEFINED DCMTK_CXX11_FLAGS)
message(WARNING "Legacy variable DCMTK_CXX11_FLAGS will be ignored since CMake now sets the flags based on the CMAKE_CXX_STANDARD variable automatically.")
endif()
elseif(NOT DEFINED DCMTK_CXX11_FLAGS)
# determine which flags are required to enable C++11 features (if any)
if(NOT DEFINED DCMTK_CXX11_FLAGS)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set(DCMTK_CXX11_FLAGS "-std=c++11")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
......@@ -418,6 +497,11 @@ if(NOT DEFINED DCMTK_CXX11_FLAGS)
set(DCMTK_CXX11_FLAGS "${DCMTK_CXX11_FLAGS}" CACHE STRING "The flags to add to CMAKE_CXX_FLAGS for enabling C++11 (if any).")
mark_as_advanced(DCMTK_CXX11_FLAGS)
endif()
define_property(GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARDS
BRIEF_DOCS "Modern C++ standards DCMTK knows about."
FULL_DOCS "The list of C++ standards since C++11 that DCMTK currently has configuration tests for. "
)
set_property(GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARDS 11 14 17)
#-----------------------------------------------------------------------------
# Third party libraries
......
......@@ -225,12 +225,18 @@
/* Define to 1 if you have the `getpwnam' function. */
#cmakedefine HAVE_GETPWNAM @HAVE_GETPWNAM@
/* Define to 1 if you have the `getrusage' function. */
#cmakedefine HAVE_GETRUSAGE @HAVE_GETRUSAGE@
/* Define to 1 if you have the `getsockname' function. */
#cmakedefine HAVE_GETSOCKNAME @HAVE_GETSOCKNAME@
/* Define to 1 if you have the `getsockopt' function. */
#cmakedefine HAVE_GETSOCKOPT @HAVE_GETSOCKOPT@
/* Define to 1 if you have the `gettimeofday' function. */
#cmakedefine HAVE_GETTIMEOFDAY @HAVE_GETTIMEOFDAY@
/* Define to 1 if you have the `getuid' function. */
#cmakedefine HAVE_GETUID @HAVE_GETUID@
......@@ -306,9 +312,6 @@
/* Define to 1 if you have the `socket' library (-lsocket). */
#cmakedefine HAVE_LIBSOCKET @HAVE_LIBSOCKET@
/* Define if libtiff supports LZW compression */
#define HAVE_LIBTIFF_LZW_COMPRESSION 1
/* Define to 1 if you have the <limits.h> header file. */
#cmakedefine HAVE_LIMITS_H @HAVE_LIMITS_H@
......@@ -393,6 +396,9 @@
/* Define to 1 if you have the <sys/systeminfo.h> header file. */
#cmakedefine HAVE_SYS_SYSTEMINFO_H @HAVE_SYS_SYSTEMINFO_H@
/* Define to 1 if you have the <iterator> header file. */
#cmakedefine HAVE_ITERATOR_HEADER @HAVE_ITERATOR_HEADER@
/* Define to 1 if you have readdir_r */
#cmakedefine HAVE_READDIR_R @HAVE_READDIR_R@
......@@ -944,6 +950,9 @@
/* Define if we are compiling with libxml support */
#cmakedefine WITH_LIBXML
/* Define if we are compiling with OpenJPEG support */
#cmakedefine WITH_OPENJPEG
/* Define if we are compiling with OpenSSL support */
#cmakedefine WITH_OPENSSL
......@@ -1123,6 +1132,22 @@ typedef unsigned long ulong;
DCMTK was configured to use C++11 features, but your compiler does not or was not configured to provide them.
#endif
/* Define if we can use C++14 */
#cmakedefine HAVE_CXX14 @HAVE_CXX14@
#if defined(HAVE_CXX14) && defined(__cplusplus) && __cplusplus < 201402L
#error\
DCMTK was configured to use C++14 features, but your compiler does not or was not configured to provide them.
#endif
/* Define if we can use C++17 */
#cmakedefine HAVE_CXX17 @HAVE_CXX17@
#if defined(HAVE_CXX17) && defined(__cplusplus) && __cplusplus < 201703L
#error\
DCMTK was configured to use C++17 features, but your compiler does not or was not configured to provide them.
#endif
/* Define if the compiler supports __alignof__ */
#cmakedefine HAVE_GNU_ALIGNOF @HAVE_GNU_ALIGNOF@
......@@ -1180,4 +1205,22 @@ DCMTK was configured to use C++11 features, but your compiler does not or was no
/* Define if we are supposed to use STL's system_error */
#cmakedefine HAVE_STL_SYSTEM_ERROR @HAVE_STL_SYSTEM_ERROR@
/* Define if the input iterator category is supported */
#cmakedefine HAVE_INPUT_ITERATOR_CATEGORY @HAVE_INPUT_ITERATOR_CATEGORY@
/* Define if the input iterator category is supported */
#cmakedefine HAVE_OUTPUT_ITERATOR_CATEGORY @HAVE_OUTPUT_ITERATOR_CATEGORY@
/* Define if the input iterator category is supported */
#cmakedefine HAVE_FORWARD_ITERATOR_CATEGORY @HAVE_FORWARD_ITERATOR_CATEGORY@
/* Define if the input iterator category is supported */
#cmakedefine HAVE_BIDIRECTIONAL_ITERATOR_CATEGORY @HAVE_BIDIRECTIONAL_ITERATOR_CATEGORY@
/* Define if the input iterator category is supported */
#cmakedefine HAVE_RANDOM_ACCESS_ITERATOR_CATEGORY @HAVE_RANDOM_ACCESS_ITERATOR_CATEGORY@
/* Define if the input iterator category is supported */
#cmakedefine HAVE_CONTIGUOUS_ITERATOR_CATEGORY @HAVE_CONTIGUOUS_ITERATOR_CATEGORY@
#endif /* !OSCONFIG_H*/
# Declare project
project(DCMTK)
# Minimum CMake version required
cmake_minimum_required(VERSION 2.8.5)
# Disables a warning emitted by CMake 3.7.2. The same setting is performed
# again in CMake/dcmtkPrepare.cmake (included below), but the warning is still
# emitted if it is not set here (it only goes away if the policy is set in
# both files).
# We do not entirely understand this behavior, perhaps it is a bug in CMake?
if(POLICY CMP0017)
cmake_policy(SET CMP0017 NEW)
cmake_minimum_required(VERSION 2.8.5 FATAL_ERROR)
# As of 2018-12-26 DCMTK has been validated to build with CMake 3.13.2 policies.
set(DCMTK_MAX_CMAKE_POLICY_VERSION 3.13.2)
# Set and use the newest CMake policies that are validated to work
# (VERSION_LESS comparison is only defined for CMake 3 and newer)
if(CMAKE_MAJOR_VERSION LESS 3)
set(DCMTK_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
elseif(CMAKE_VERSION VERSION_LESS DCMTK_MAX_CMAKE_POLICY_VERSION)
set(DCMTK_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
else()
set(DCMTK_CMAKE_POLICY_VERSION "${DCMTK_MAX_CMAKE_POLICY_VERSION}")
endif()
cmake_policy(VERSION "${DCMTK_CMAKE_POLICY_VERSION}")
# Declare project
project(DCMTK)
# Check the build system
include(CMake/dcmtkPrepare.cmake NO_POLICY_SCOPE)
......
......@@ -5,7 +5,7 @@ Unless otherwise specified, the DCMTK software package has the following
copyright:
/*
* Copyright (C) 1994-2018, OFFIS e.V.
* Copyright (C) 1994-2019, OFFIS e.V.
* All rights reserved.
*
* This software and supporting documentation were developed by
......@@ -478,7 +478,7 @@ The dcmrt sub-package is covered by the following copyright:
---------------------------------------------------------------------------
Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
Copyright (C) 2013-2018, J. Riesmeier, Oldenburg, Germany
Copyright (C) 2013-2019, J. Riesmeier, Oldenburg, Germany
All rights reserved.
Redistribution and use in source and binary forms, with or without
......@@ -511,7 +511,7 @@ Parts of the dcmsr sub-package are covered by the following copyright:
---------------------------------------------------------------------------
Copyright (C) 2015-2018, J. Riesmeier, Oldenburg, Germany
Copyright (C) 2015-2019, J. Riesmeier, Oldenburg, Germany
All rights reserved.
Redistribution and use in source and binary forms, with or without
......
This diff is collapsed.
......@@ -41,7 +41,8 @@ questions please consult the FAQ:
http://forum.dcmtk.org/faq/
There is also a Wiki system where additional information can be found:
In addition to the API documentation, there is also a Wiki system where
further information (e.g. HOWTOs) can be found:
http://support.dcmtk.org/wiki/
......
# DCMTK
This DICOM ToolKit (DCMTK) package consists of source code, documentation and installation instructions for a set of software libraries and applications implementing part of the DICOM/MEDICOM Standard.
DCMTK contains the following sub-packages, each in its own sub-directory:
- **config** - configuration utilities for DCMTK
- **dcmdata** - a data encoding/decoding library and utility apps
- **dcmfg** - a library for working with functional groups
- **dcmimage** - adds support for color images to dcmimgle
- **dcmimgle** - an image processing library and utility apps
- **dcmiod** - a library for working with information objects and modules
- **dcmjpeg** - a compression/decompression library and utility apps
- **dcmjpls** - a compression/decompression library and utility apps
- **dcmnet** - a networking library and utility apps
- **dcmpmap** - a library for working with parametric map objects
- **dcmpstat** - a presentation state library and utility apps
- **dcmqrdb** - an image database server
- **dcmrt** - a radiation therapy library and utility apps
- **dcmseg** - a library for working with segmentation objects
- **dcmsign** - a digital signature library and utility apps
- **dcmsr** - a structured reporting library and utility apps
- **dcmtls** - security extensions for the network library
- **dcmtract** - a library for working with tractography results
- **dcmwlm** - a modality worklist database server
- **oflog** - a logging library based on log4cplus
- **ofstd** - a library of general purpose classes
Each sub-directory (except _config_) contains further sub-directories for application source code (_apps_), library source code (_libsrc_), library include files (_include_), configuration data (_etc_), documentation (_docs_), sample and support data (_data_) as well as test programs (_tests_).
To build and install the DCMTK package see the [INSTALL](INSTALL) file. For copyright information see the [COPYRIGHT](COPYRIGHT) file. For information about the history of this software see the [HISTORY](HISTORY) file. For answers to frequently asked questions please consult the [FAQ](http://forum.dcmtk.org/faq/).
In addition to the API documentation, which is also available [online](https://support.dcmtk.org/docs/), there is a [Wiki](http://support.dcmtk.org/wiki/) system where further information (e.g. HOWTOs) can be found.
If you find bugs or other problems with this software, we would appreciate hearing about them. Please send electronic mail to: bugs/at/dcmtk/dot/org
Please try to describe the problem in detail and if possible give a suggested fix. For general questions on how to compile, install or use the toolkit we recommend the [public discussion forum](http://forum.dcmtk.org/).
......@@ -57,7 +57,7 @@ dnl #undef HAVE_PROTOTYPE_GETHOSTID
dnl AC_CHECK_PROTOTYPE(FUNCTION, HEADER-FILE..., ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
AC_DEFUN(AC_CHECK_PROTOTYPE,
[AC_MSG_CHECKING([ifelse([$2], , [predefined prototype for $1], [prototype for $1 (in $2)])])
AH_TEMPLATE(AS_TR_CPP(HAVE_PROTOTYPE_$1), [Define if your system has a prototype for $1 in $2])
AH_TEMPLATE(AS_TR_CPP(HAVE_PROTOTYPE_$1), [Define if your system has a prototype for $1 in $2.])
ifelse([$3], , :, [$3])
ifelse([$2], , [ac_includes=""
......@@ -112,7 +112,7 @@ dnl already been found using the AC_CHECK_HEADERS(header) macro.
dnl AC_CHECK_COMPILES(FUNCTION, HEADER-FILE..., CODE, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
AC_DEFUN(AC_CHECK_COMPILES,
[AC_MSG_CHECKING([ifelse([$2], , [for $1], [for $1 (in $2)])])
AH_TEMPLATE(AS_TR_CPP(HAVE_PROTOTYPE_$1), [Define if your system has a prototype for $1 in $2])
AH_TEMPLATE(AS_TR_CPP(HAVE_PROTOTYPE_$1), [Define if your system has a prototype for $1 in $2.])
ifelse([$2], , [ac_includes=""
],
[ac_includes=""
......@@ -152,7 +152,7 @@ dnl AC_CHECK_DECLARATION(FUNCTION, C-HEADER-FILE..., C++-HEADER-FILE..., ACTION-
AC_DEFUN(AC_CHECK_DECLARATION,
[
AC_MSG_CHECKING([ifelse([$2 $3], , [predefined type $1], [ifelse([$2], , [declaration for $1 (in $3)], [ifelse([$3], , [declaration for $1 (in $2)], [declaration for $1 (in $2 $3)])])])])
AH_TEMPLATE(AS_TR_CPP(HAVE_DECLARATION_$1), [Define if your system has a declaration for $1 in $2 $3])
AH_TEMPLATE(AS_TR_CPP(HAVE_DECLARATION_$1), [Define if your system has a declaration for $1 in $2 $3.])
ifelse([$2], , [ac_includes=""
],
[ac_includes=""
......@@ -217,7 +217,7 @@ AC_DEFUN(AC_CHECK_INTP_SELECT,
[AC_MSG_CHECKING([ifelse([$1], , [if select() needs int* parameters],
[if select() needs int* parameters (in $1)])])
AH_TEMPLATE([HAVE_INTP_SELECT], [Define if your system declares argument 2-4 of select()
as int * instead of struct fd_set *])
as int * instead of struct fd_set *.])
ifelse([$1], , [ac_includes=""
],
[ac_includes=""
......@@ -322,7 +322,7 @@ dnl standard name space.
dnl AC_CHECK_STD_NAMESPACE
AC_DEFUN(AC_CHECK_STD_NAMESPACE,
[AC_MSG_CHECKING([for C++ standard namespace])
AH_TEMPLATE([HAVE_STD_NAMESPACE], [Define if ANSI standard C++ includes use std namespace])
AH_TEMPLATE([HAVE_STD_NAMESPACE], [Define if ANSI standard C++ includes use std namespace.])
AC_CACHE_VAL(ac_cv_check_std_namespace,
[AC_TRY_COMPILE_AND_LINK([
#include <iostream>
......@@ -351,7 +351,7 @@ dnl inline, no template methods and no typedefs in the class
dnl AC_CHECK_CLASS_TEMPLATE
AC_DEFUN(AC_CHECK_CLASS_TEMPLATE,
[AC_MSG_CHECKING([for C++ class template])
AH_TEMPLATE([HAVE_CLASS_TEMPLATE], [Define if your C++ compiler can work with class templates])
AH_TEMPLATE([HAVE_CLASS_TEMPLATE], [Define if your C++ compiler can work with class templates.])
AC_CACHE_VAL(ac_cv_check_class_template,
[AC_TRY_COMPILE_AND_LINK([
template <class T>
......@@ -392,7 +392,7 @@ dnl using function templates.
dnl AC_CHECK_FUNCTION_TEMPLATE
AC_DEFUN(AC_CHECK_FUNCTION_TEMPLATE,
[AC_MSG_CHECKING([for C++ function template])
AH_TEMPLATE([HAVE_FUNCTION_TEMPLATE], [Define if your C++ compiler can work with function templates])
AH_TEMPLATE([HAVE_FUNCTION_TEMPLATE], [Define if your C++ compiler can work with function templates.])
AC_CACHE_VAL(ac_cv_check_function_template,
[AC_TRY_COMPILE_AND_LINK([
template <class T>
......@@ -424,7 +424,7 @@ dnl using static methods in template classes
dnl AC_CHECK_STATIC_TEMPLATE_METHOD
AC_DEFUN(AC_CHECK_STATIC_TEMPLATE_METHOD,
[AC_MSG_CHECKING([for C++ static methods in class templates])
AH_TEMPLATE([HAVE_STATIC_TEMPLATE_METHOD], [Define if your C++ compiler can work with static methods in class templates])
AH_TEMPLATE([HAVE_STATIC_TEMPLATE_METHOD], [Define if your C++ compiler can work with static methods in class templates.])
AC_CACHE_VAL(ac_cv_check_static_template_method,
[AC_TRY_COMPILE_AND_LINK([
void additive(int & i)
......@@ -465,7 +465,7 @@ dnl template<> int classname<int>::functionname()
dnl AC_CHECK_EXPLICIT_TEMPLATE_SPECIALIZATION
AC_DEFUN(AC_CHECK_EXPLICIT_TEMPLATE_SPECIALIZATION,
[AC_MSG_CHECKING([for C++ explicit template specialization syntax])
AH_TEMPLATE([HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION], [Define if your C++ compiler supports the explicit template specialization syntax])
AH_TEMPLATE([HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION], [Define if your C++ compiler supports the explicit template specialization syntax.])
AC_CACHE_VAL(ac_cv_check_explicit_template_specialization,
[AC_TRY_COMPILE([
template<class T>
......@@ -575,7 +575,7 @@ dnl AC_CHECK_POLL_H([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
AC_DEFUN(AC_CHECK_POLL_H,
[
AC_MSG_CHECKING([for usable poll.h])
AH_TEMPLATE(AS_TR_CPP(DCMTK_HAVE_POLL), [Define if your system has a usable <poll.h>])
AH_TEMPLATE(AS_TR_CPP(DCMTK_HAVE_POLL), [Define if your system has a usable <poll.h>.])
AC_CACHE_VAL(ac_cv_header_poll_h,
[
case "${host}" in
......@@ -647,7 +647,7 @@ AC_DEFUN(AC_CHECK_INTP_ACCEPT,
[AC_MSG_CHECKING([ifelse([$1], , [if accept() needs int* parameters],
[if accept() needs int* parameters (in $1)])])
AH_TEMPLATE([HAVE_INTP_ACCEPT], [Define if your system declares argument 3 of accept()
as int * instead of size_t * or socklen_t *])
as int * instead of size_t * or socklen_t *.])
ifelse([$1], , [ac_includes=""
],
[ac_includes=""
......@@ -796,7 +796,7 @@ dnl AC_MY_C_CONST works like the standard script AC_C_CONST
dnl but defines HAVE_C_CONST instead of redefining "const" directly.
AC_DEFUN(AC_MY_C_CONST,
[AH_TEMPLATE([HAVE_C_CONST], [Define if "const" is supported by the C compiler])
[AH_TEMPLATE([HAVE_C_CONST], [Define if "const" is supported by the C compiler.])
dnl This message is consistent in form with the other checking messages,
dnl and with the result message.
AC_CACHE_CHECK([for working const], ac_cv_my_c_const,
......@@ -857,7 +857,7 @@ dnl AC_MY_C_CHAR_UNSIGNED works like the standard script AC_C_CHAR_UNSIGNED
dnl but defines C_CHAR_UNSIGNED instead of __CHAR_UNSIGNED__.
AC_DEFUN(AC_MY_C_CHAR_UNSIGNED,
[AH_TEMPLATE([C_CHAR_UNSIGNED], [Define if char is unsigned on the C compiler])
[AH_TEMPLATE([C_CHAR_UNSIGNED], [Define if char is unsigned on the C compiler.])
AC_CACHE_CHECK(whether char is unsigned, ac_cv_my_c_char_unsigned,
[if test "$GCC" = yes; then
# GCC predefines this symbol on systems where it applies.
......@@ -1019,7 +1019,7 @@ AC_DEFUN(AC_CHECK_INTP_GETSOCKOPT,
[AC_MSG_CHECKING([ifelse([$1], , [if getsockopt() needs int* parameters],
[if getsockopt() needs int* parameters (in $1)])])
AH_TEMPLATE([HAVE_INTP_GETSOCKOPT], [Define if your system declares argument 5 of getsockopt()
as int * instead of size_t * or socklen_t])
as int * instead of size_t * or socklen_t.])
ifelse([$1], , [ac_includes=""
],
[ac_includes=""
......@@ -1084,7 +1084,7 @@ dnl AC_CHECK_ELLIPSE_SIGNAL_HANDLER(HEADER-FILE..., ACTION-IF-FOUND [, ACTION-IF
AC_DEFUN(AC_CHECK_ELLIPSE_SIGNAL_HANDLER,
[AC_MSG_CHECKING([ifelse([$1], , [if signal() callback needs ellipse],
[if signal() callback needs ellipse (in $1)])])
AH_TEMPLATE([SIGNAL_HANDLER_WITH_ELLIPSE], [Define if signal handlers need ellipse (...) parameters])
AH_TEMPLATE([SIGNAL_HANDLER_WITH_ELLIPSE], [Define if signal handlers need ellipse (...) parameters.])
ifelse([$1], , [ac_includes=""
],
[ac_includes=""
......@@ -1152,7 +1152,7 @@ dnl use C++ language features in <math.h>.
dnl AC_INCLUDE_MATH_H_AS_CXX(HEADER-FILE..., ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
AC_DEFUN(AC_INCLUDE_MATH_H_AS_CXX,
[AC_MSG_CHECKING([if <math.h> fails if included extern "C"])
AH_TEMPLATE([INCLUDE_MATH_H_AS_CXX], [Define if <math.h> fails if included extern "C"])
AH_TEMPLATE([INCLUDE_MATH_H_AS_CXX], [Define if <math.h> fails if included extern "C".])
AC_CACHE_VAL(ac_cv_include_math_h_as_cxx,
[AC_TRY_COMPILE([
extern "C"
......@@ -1189,7 +1189,7 @@ dnl (which is not the case on older compilers).
dnl AC_CHECK_CXX_BOOL(ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
AC_DEFUN(AC_CHECK_CXX_BOOL,
[AC_MSG_CHECKING([if bool is built-in type])
AH_TEMPLATE([HAVE_CXX_BOOL], [Define if bool is a built-in type])
AH_TEMPLATE([HAVE_CXX_BOOL], [Define if bool is a built-in type.])
AC_CACHE_VAL(ac_cv_have_cxx_bool,
[AC_TRY_COMPILE([],[
bool b1 = true;
......@@ -1229,7 +1229,7 @@ if eval "test \"`echo $ac_cv_have_cxx_volatile`\" = yes"; then
changequote(, )dnl
ac_tr_prototype=HAVE_CXX_VOLATILE
changequote([, ])dnl
AC_DEFINE_UNQUOTED($ac_tr_prototype, ,[Define if volatile is a known keyword])
AC_DEFINE_UNQUOTED($ac_tr_prototype, ,[Define if volatile is a known keyword.])
ifelse([$1], , :, [$1])
else
AC_MSG_RESULT(no)
......@@ -1253,7 +1253,7 @@ ac_cv_cxx_typename,
AC_LANG_RESTORE
])
if test "$ac_cv_cxx_typename" = yes; then
AC_DEFINE(HAVE_TYPENAME,,[define if the compiler recognizes typename])
AC_DEFINE(HAVE_TYPENAME,,[Define if the compiler recognizes typename.])
fi
])
......@@ -1272,7 +1272,7 @@ ac_cv_cxx_const_cast,
AC_LANG_RESTORE
])
if test "$ac_cv_cxx_const_cast" = yes; then
AC_DEFINE(HAVE_CONST_CAST,,[define if the compiler supports const_cast<>])
AC_DEFINE(HAVE_CONST_CAST,,[Define if the compiler supports const_cast<>.])
fi
])
......@@ -1294,7 +1294,7 @@ Derived d; Base& b=d; return dynamic_cast<Derived*>(&b) ? 0 : 1;],
AC_LANG_RESTORE
])
if test "$ac_cv_cxx_dynamic_cast" = yes; then
AC_DEFINE(HAVE_DYNAMIC_CAST,,[define if the compiler supports dynamic_cast<>])
AC_DEFINE(HAVE_DYNAMIC_CAST,,[Define if the compiler supports dynamic_cast<>.])
fi
])
......@@ -1319,7 +1319,7 @@ Derived d;Base& b=d;Unrelated& e=reinterpret_cast<Unrelated&>(b);return g(e);],
])
if test "$ac_cv_cxx_reinterpret_cast" = yes; then
AC_DEFINE(HAVE_REINTERPRET_CAST,,
[define if the compiler supports reinterpret_cast<>])
[Define if the compiler supports reinterpret_cast<>.])
fi
])
......@@ -1343,7 +1343,7 @@ Derived d; Base& b = d; Derived& s = static_cast<Derived&> (b); return g (s);],
])
if test "$ac_cv_cxx_static_cast" = yes; then
AC_DEFINE(HAVE_STATIC_CAST,,
[define if the compiler supports static_cast<>])
[Define if the compiler supports static_cast<>.])
fi
])
......@@ -1362,7 +1362,7 @@ ac_cv_cxx_std_nothrow,
AC_LANG_RESTORE
])
if test "$ac_cv_cxx_std_nothrow" = yes; then
AC_DEFINE(HAVE_STD__NOTHROW,, [Define if the compiler supports std::nothrow])
AC_DEFINE(HAVE_STD__NOTHROW,, [Define if the compiler supports std::nothrow.])
fi
])
......@@ -1371,7 +1371,7 @@ dnl AC_CXX_NOTHROW_DELETE checks if the compiler supports non-throwing delete us
dnl std::nothrow.
AC_DEFUN([AC_CXX_NOTHROW_DELETE],
[AH_TEMPLATE([HAVE_NOTHROW_DELETE], [Define if the compiler supports operator delete (std::nothrow)])
[AH_TEMPLATE([HAVE_NOTHROW_DELETE], [Define if the compiler supports operator delete (std::nothrow.)])
AC_CACHE_CHECK(whether the compiler supports operator delete (std::nothrow),
ac_cv_cxx_nothrow_delete,
[AC_LANG_SAVE
......@@ -1381,7 +1381,7 @@ ac_cv_cxx_nothrow_delete,
AC_LANG_RESTORE
])
if test "$ac_cv_cxx_nothrow_delete" = yes; then
AC_DEFINE(HAVE_NOTHROW_DELETE,, [Define if the compiler supports operator delete (std::nothrow)])
AC_DEFINE(HAVE_NOTHROW_DELETE,, [Define if the compiler supports operator delete (std::nothrow.)])
fi
])
......@@ -1404,60 +1404,6 @@ if test "$ac_cv_cxx_static_assert" = yes; then
fi
])
dnl AC_LIBTIFF_LZW_COMPRESSION checks if libtiff supports LZW compression.
AC_DEFUN([AC_LIBTIFF_LZW_COMPRESSION],
[AH_TEMPLATE([HAVE_LIBTIFF_LZW_COMPRESSION], [Define if libtiff supports LZW compression])
AC_CACHE_CHECK(whether libtiff supports LZW compression,
ac_cv_libtiff_lzw_compression,
[AC_TRY_RUN(
changequote({{, }})dnl
{{
extern "C" {
#include <tiffio.h>
}
int main()
{
const char *data[256];
for (int j=0; j<256; ++j) data[j]= 0;
int OK = 1;
TIFF *tif = TIFFOpen("lzwtest.tif", "w");
if (tif)
{
TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, 16);
TIFFSetField(tif, TIFFTAG_IMAGELENGTH, 16);
TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_LZW);
TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
TIFFSetField(tif, TIFFTAG_FILLORDER, FILLORDER_MSB2LSB);
TIFFSetField(tif, TIFFTAG_DOCUMENTNAME, "unnamed");
TIFFSetField(tif, TIFFTAG_IMAGEDESCRIPTION, "test");
TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 1);
TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, 512);
TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
for (unsigned long i=0; (i < 16) && OK; i++)
{
if (TIFFWriteScanline(tif, data + (i << 4), i, 0) < 0) OK = 0;
}
TIFFFlushData(tif);
TIFFClose(tif);
}
if (OK) return 0; else return 10;
}
}}
changequote([, ])dnl
, ac_cv_libtiff_lzw_compression=yes, ac_cv_libtiff_lzw_compression=no, ac_cv_libtiff_lzw_compression=no)
])
if test "$ac_cv_libtiff_lzw_compression" = yes; then
AC_DEFINE(HAVE_LIBTIFF_LZW_COMPRESSION,, [Define if libtiff supports LZW compression])
fi
])
dnl AC_CXX_LIBC_H_EXTERN_C checks if <libc.h> and <math.h> cause a problem if
dnl libc.h is included extern "C" and math.h is not. This is the case on QNX
......@@ -1848,6 +1794,52 @@ AS_HELP_STRING([LONGOPTION=DIR], [location of LIBNAME includes and libraries]),
m4_popdef([LIBNAME])dnl
])
dnl
dnl This macro adds the option --with-openjpeginc to configure. If this option
dnl is specified, include/ and lib/ are added to CPPFLAGS / LDFLAGS.
dnl
dnl AC_MY_OPENJPEG_PATH()
AC_DEFUN([AC_MY_OPENJPEG_PATH],
[
AC_REQUIRE([AC_MY_LIB_PATH_RPATH])dnl
m4_pushdef([OPTION], [openjpeginc])dnl
m4_pushdef([LONGOPTION], [--with-openjpeginc])dnl
m4_pushdef([LIBNAME], [m4_default([OpenJPEG], [openjpeg])])dnl
AC_ARG_WITH([OPTION], dnl
dnl The following line is underquoted on purpose, else the help line will be
dnl discarded because it is equal to an earlier help line.
AS_HELP_STRING([LONGOPTION=DIR], [location of LIBNAME includes and libraries (MUST be specified, otherwise OpenJPEG will not be found)]),
[AS_CASE([$withval],
[yes|no], [
AC_MSG_WARN([LONGOPTION called without argument - will use default])
],
[
if test ! -d ${withval}; then
AC_MSG_ERROR([called with LONGOPTION but LIBNAME base directory ${withval} does not exist or is not a directory.])
fi
dnl try to find openjpeg subdirectory within given include path
OPENJPEGINCLUDEPATH=`(
eval echo "${withval}/include/openjpeg*"
)`
dnl if not found, use include path following standard conventions
if test ! -d "${OPENJPEGINCLUDEPATH}"; then
OPENJPEGINCLUDEPATH="${withval}/include"
fi
CPPFLAGS="-I${OPENJPEGINCLUDEPATH} $CPPFLAGS"
LDFLAGS="-L${withval}/lib $LDFLAGS"
if test "x$dcmtk_cv_rpath_works" = "xyes"; then
LDFLAGS="-Wl,-rpath,${withval}/lib $LDFLAGS"
fi
])
])dnl
m4_popdef([OPTION])dnl
m4_popdef([LONGOPTION])dnl
m4_popdef([LIBNAME])dnl
])
AC_DEFUN([AC_CHECK_SYNC_FN],
[
AC_MSG_CHECKING([for $1])
......@@ -1863,7 +1855,29 @@ AC_DEFUN([AC_CHECK_SYNC_FN],
)
if test "$dcmtk_have_sync_fn" = yes; then
AC_MSG_RESULT([yes])
AC_DEFINE($2,[1],[Define if $1 is available])
AC_DEFINE($2,[1],[Define if $1 is available.])
else
AC_MSG_RESULT([no])
fi
])
AC_DEFUN([AC_CHECK_ITERATOR_CATEGORY],
[
AC_MSG_CHECKING([whether iterator category $1 is declared])
AC_COMPILE_IFELSE(
[
AC_LANG_SOURCE(
[
#include <iterator>
int main(){typedef std::$1_iterator_tag category;return 0;}
])
],
[dcmtk_have_iter_cat=[yes]],
[dcmtk_have_iter_cat=[no]]
)
if test "$dcmtk_have_iter_cat" = yes; then
AC_MSG_RESULT([yes])
AC_DEFINE($2,[1],[Define if the $1 iterator category is supported.])
else
AC_MSG_RESULT([no])
fi
......@@ -1884,7 +1898,7 @@ AC_DEFUN([AC_CHECK_ALIGNOF],
)
if test "$dcmtk_have_alignof" = yes; then
AC_MSG_RESULT([yes])
AC_DEFINE($1,[1],[Define if __alignof__ is available])
AC_DEFINE($1,[1],[Define if __alignof__ is available.])
else
AC_MSG_RESULT([no])
fi
......@@ -1905,7 +1919,7 @@ AC_DEFUN([AC_CHECK_ATTRIBUTE_ALIGNED],
)
if test "$dcmtk_have_attribute_aligned" = yes; then
AC_MSG_RESULT([yes])
AC_DEFINE($1,[1],[Define if __attribute__((aligned)) is available])
AC_DEFINE($1,[1],[Define if __attribute__((aligned)) is available.])
else
AC_MSG_RESULT([no])
fi
......@@ -1932,7 +1946,7 @@ AC_DEFUN([AC_CHECK_ATTRIBUTE_ALIGNED_SUPPORTS_TEMPLATES],
)
if test "$dcmtk_attribute_aligned_supports_templates" = yes; then
AC_MSG_RESULT([yes])
AC_DEFINE($1,[1],[Define if __attribute__((aligned)) supports templates])
AC_DEFINE($1,[1],[Define if __attribute__((aligned)) supports templates.])
else
AC_MSG_RESULT([no])
fi
......@@ -1965,7 +1979,7 @@ AC_DEFUN([AC_CHECK_DEFAULT_CONSTRUCTOR_DETECTION_VIA_SFINAE],
)
if test "$dcmtk_default_constructor_detection_via_sfinae" = yes; then
AC_MSG_RESULT([yes])
AC_DEFINE($1,[1],[Define if the compiler supports default constructor detection via SFINAE])
AC_DEFINE($1,[1],[Define if the compiler supports default constructor detection via SFINAE.])
else
AC_MSG_RESULT([no])
fi
......
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for dcmtk 3.6.4.
# Generated by GNU Autoconf 2.69 for dcmtk 3.6.5.
#
# Report bugs to <bugs@dcmtk.org>.
#
......@@ -579,9 +579,9 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='dcmtk'
PACKAGE_TARNAME='dcmtk-3.6.4'
PACKAGE_VERSION='3.6.4'
PACKAGE_STRING='dcmtk 3.6.4'
PACKAGE_TARNAME='dcmtk-3.6.5'
PACKAGE_VERSION='3.6.5'
PACKAGE_STRING='dcmtk 3.6.5'
PACKAGE_BUGREPORT='bugs@dcmtk.org'
PACKAGE_URL='http://www.dcmtk.org/'
......@@ -625,6 +625,7 @@ ac_includes_default="\
ac_subst_vars='LTLIBOBJS
DEBUG
OPENJPEGLIBS
ICONVLIBS
SNDFILELIBS
TCPWRAPPERLIBS
......@@ -737,6 +738,7 @@ with_libxmlinc
with_libxml
with_libwrapinc
with_libwrap
with_openjpeginc
with_libsndfileinc
with_libsndfile
with_libiconvinc
......@@ -1311,7 +1313,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures dcmtk 3.6.4 to adapt to many kinds of systems.
\`configure' configures dcmtk 3.6.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
......@@ -1376,7 +1378,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of dcmtk 3.6.4:";;
short | recursive ) echo "Configuration of dcmtk 3.6.5:";;
esac
cat <<\_ACEOF
......@@ -1454,6 +1456,10 @@ Optional Packages:
--with-libwrapinc=DIR location of libwrap includes and libraries
--with-libwrap include libwrap support (default: auto)
--without-libwrap don't include libwrap support
--with-openjpeginc=DIR location of OpenJPEG includes and libraries (MUST be
specified, otherwise OpenJPEG will not be found)
--with-openjpeg include OpenJPEG support (default: auto)
--without-openjpeg don't include OpenJPEG support
--with-libsndfileinc=DIR
location of libsndfile includes and libraries
--with-libsndfile include libsndfile support (default: auto)
......@@ -1545,7 +1551,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
dcmtk configure 3.6.4
dcmtk configure 3.6.5
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
......@@ -2405,7 +2411,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by dcmtk $as_me 3.6.4, which was
It was created by dcmtk $as_me 3.6.5, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
......@@ -2827,10 +2833,9 @@ ac_config_headers="$ac_config_headers include/dcmtk/config/osconfig.h"
PACKAGE_VERSION_NUMBER=364
PACKAGE_VERSION_NUMBER=365
PACKAGE_VERSION_SUFFIX=""
PACKAGE_DATE="2018-11-29"
PACKAGE_DATE="2019-10-28"
cat >>confdefs.h <<_ACEOF
#define PACKAGE_VERSION_NUMBER ${PACKAGE_VERSION_NUMBER}
......@@ -5772,6 +5777,17 @@ _ACEOF
fi
ac_fn_c_check_type "$LINENO" "char16_t" "ac_cv_type_char16_t" "$ac_includes_default"
if test "x$ac_cv_type_char16_t" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_CHAR16_T 1
_ACEOF
fi
ac_fn_c_check_type "$LINENO" "sigjmp_buf" "ac_cv_type_sigjmp_buf" "#include <setjmp.h>
"
if test "x$ac_cv_type_sigjmp_buf" = xyes; then :
......@@ -5975,7 +5991,7 @@ _ACEOF
fi
done
for ac_func in strchr strstr strtoul itoa
for ac_func in strchr strstr strtoul itoa atoll
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
......@@ -6128,6 +6144,28 @@ _ACEOF
fi
done
for ac_func in getrusage
do :
ac_fn_c_check_func "$LINENO" "getrusage" "ac_cv_func_getrusage"
if test "x$ac_cv_func_getrusage" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_GETRUSAGE 1
_ACEOF
fi
done
for ac_func in gettimeofday
do :
ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
if test "x$ac_cv_func_gettimeofday" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_GETTIMEOFDAY 1
_ACEOF
fi
done
for ac_func in waitpid
do :
ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid"
......@@ -7133,6 +7171,7 @@ fi
fi
OPENSSLLIBS=""
OPENJPEGLIBS=""
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -ldl" >&5
$as_echo_n "checking for main in -ldl... " >&6; }
if ${ac_cv_lib_dl_main+:} false; then :
......@@ -7166,6 +7205,7 @@ $as_echo "$ac_cv_lib_dl_main" >&6; }
if test "x$ac_cv_lib_dl_main" = xyes; then :
OPENSSLLIBS="-ldl"
OPENJPEGLIBS="-ldl"
fi
......@@ -7209,6 +7249,7 @@ $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
OPENSSLLIBS="-ldl"
OPENJPEGLIBS="-ldl"
fi
......@@ -8747,6 +8788,16 @@ fi
done
ac_fn_cxx_check_header_mongrel "$LINENO" "iterator" "ac_cv_header_iterator" "$ac_includes_default"
if test "x$ac_cv_header_iterator" = xyes; then :
$as_echo "#define HAVE_ITERATOR_HEADER 1" >>confdefs.h
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for usable poll.h" >&5
$as_echo_n "checking for usable poll.h... " >&6; }
......@@ -13010,7 +13061,7 @@ if ${ac_cv_check_std_namespace+:} false; then :
else
ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
cat > conftest.$ac_ext <<EOF
#line 13013 "configure"
#line 13064 "configure"
#include "confdefs.h"
#include <iostream>
......@@ -13482,7 +13533,7 @@ if ${ac_cv_check_class_template+:} false; then :
else
ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
cat > conftest.$ac_ext <<EOF
#line 13485 "configure"
#line 13536 "configure"
#include "confdefs.h"
template <class T>
......@@ -13554,7 +13605,7 @@ if ${ac_cv_check_static_template_method+:} false; then :
else
ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
cat > conftest.$ac_ext <<EOF
#line 13557 "configure"
#line 13608 "configure"
#include "confdefs.h"
void additive(int & i)
......@@ -13626,7 +13677,7 @@ if ${ac_cv_check_function_template+:} false; then :
else
ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
cat > conftest.$ac_ext <<EOF
#line 13629 "configure"
#line 13680 "configure"
#include "confdefs.h"
template <class T>
......@@ -14440,79 +14491,6 @@ $as_echo "yes" >&6; }
$as_echo "#define WITH_LIBTIFF /**/" >>confdefs.h
TIFFLIBS="-ltiff $JPEGLIBS $ZLIBLIBS"
SAVELIBS="$LIBS"
LIBS="$LIBS -ltiff $JPEGLIBS $ZLIBLIBS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libtiff supports LZW compression" >&5
$as_echo_n "checking whether libtiff supports LZW compression... " >&6; }
if ${ac_cv_libtiff_lzw_compression+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
ac_cv_libtiff_lzw_compression=no
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
extern "C" {
#include <tiffio.h>
}
int main()
{
const char *data[256];
for (int j=0; j<256; ++j) data[j]= 0;
int OK = 1;
TIFF *tif = TIFFOpen("lzwtest.tif", "w");
if (tif)
{
TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, 16);
TIFFSetField(tif, TIFFTAG_IMAGELENGTH, 16);
TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_LZW);
TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
TIFFSetField(tif, TIFFTAG_FILLORDER, FILLORDER_MSB2LSB);
TIFFSetField(tif, TIFFTAG_DOCUMENTNAME, "unnamed");
TIFFSetField(tif, TIFFTAG_IMAGEDESCRIPTION, "test");
TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 1);
TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, 512);
TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
for (unsigned long i=0; (i < 16) && OK; i++)
{
if (TIFFWriteScanline(tif, data + (i << 4), i, 0) < 0) OK = 0;
}
TIFFFlushData(tif);
TIFFClose(tif);
}
if (OK) return 0; else return 10;
}
_ACEOF
if ac_fn_cxx_try_run "$LINENO"; then :
ac_cv_libtiff_lzw_compression=yes
else
ac_cv_libtiff_lzw_compression=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libtiff_lzw_compression" >&5
$as_echo "$ac_cv_libtiff_lzw_compression" >&6; }
if test "$ac_cv_libtiff_lzw_compression" = yes; then
$as_echo "#define HAVE_LIBTIFF_LZW_COMPRESSION /**/" >>confdefs.h
fi
LIBS="$SAVELIBS"
;;
*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
......@@ -14541,76 +14519,6 @@ $as_echo "#define WITH_LIBTIFF /**/" >>confdefs.h
TIFFLIBS="-ltiff $JPEGLIBS $ZLIBLIBS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libtiff supports LZW compression" >&5
$as_echo_n "checking whether libtiff supports LZW compression... " >&6; }
if ${ac_cv_libtiff_lzw_compression+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
ac_cv_libtiff_lzw_compression=no
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
extern "C" {
#include <tiffio.h>
}
int main()
{
const char *data[256];
for (int j=0; j<256; ++j) data[j]= 0;
int OK = 1;
TIFF *tif = TIFFOpen("lzwtest.tif", "w");
if (tif)
{
TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, 16);
TIFFSetField(tif, TIFFTAG_IMAGELENGTH, 16);
TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_LZW);
TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
TIFFSetField(tif, TIFFTAG_FILLORDER, FILLORDER_MSB2LSB);
TIFFSetField(tif, TIFFTAG_DOCUMENTNAME, "unnamed");
TIFFSetField(tif, TIFFTAG_IMAGEDESCRIPTION, "test");
TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 1);
TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, 512);
TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
for (unsigned long i=0; (i < 16) && OK; i++)
{
if (TIFFWriteScanline(tif, data + (i << 4), i, 0) < 0) OK = 0;
}
TIFFFlushData(tif);
TIFFClose(tif);
}
if (OK) return 0; else return 10;
}
_ACEOF
if ac_fn_cxx_try_run "$LINENO"; then :
ac_cv_libtiff_lzw_compression=yes
else
ac_cv_libtiff_lzw_compression=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libtiff_lzw_compression" >&5
$as_echo "$ac_cv_libtiff_lzw_compression" >&6; }
if test "$ac_cv_libtiff_lzw_compression" = yes; then
$as_echo "#define HAVE_LIBTIFF_LZW_COMPRESSION /**/" >>confdefs.h
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
......@@ -14916,6 +14824,93 @@ fi
# Check whether --with-openjpeginc was given.
if test "${with_openjpeginc+set}" = set; then :
withval=$with_openjpeginc; case $withval in #(
yes|no) :
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-openjpeginc called without argument - will use default" >&5
$as_echo "$as_me: WARNING: --with-openjpeginc called without argument - will use default" >&2;}
;; #(
*) :
if test ! -d ${withval}; then
as_fn_error $? "called with --with-openjpeginc but OpenJPEG base directory ${withval} does not exist or is not a directory." "$LINENO" 5
fi
OPENJPEGINCLUDEPATH=`(
eval echo "${withval}/include/openjpeg*"
)`
if test ! -d "${OPENJPEGINCLUDEPATH}"; then
OPENJPEGINCLUDEPATH="${withval}/include"
fi
CPPFLAGS="-I${OPENJPEGINCLUDEPATH} $CPPFLAGS"
LDFLAGS="-L${withval}/lib $LDFLAGS"
if test "x$dcmtk_cv_rpath_works" = "xyes"; then
LDFLAGS="-Wl,-rpath,${withval}/lib $LDFLAGS"
fi
;;
esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include OpenJPEG support" >&5
$as_echo_n "checking whether to include OpenJPEG support... " >&6; }
# Check whether --with-libwrap was given.
if test "${with_libwrap+set}" = set; then :
withval=$with_libwrap; case "$withval" in
yes)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define WITH_OPENJPEG /**/" >>confdefs.h
OPENJPEGLIBS="-lopenjp2 $OPENJPEGLIBS"
;;
*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
;;
esac
else
SAVELIBS="$LIBS"
LIBS="-lopenjp2 $OPENJPEGLIBS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <openjpeg.h>
int
main ()
{
(void) opj_version()
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define WITH_OPENJPEG /**/" >>confdefs.h
OPENJPEGLIBS="-lopenjp2 $OPENJPEGLIBS"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS="$SAVELIBS"
fi
# Check whether --with-libsndfileinc was given.
if test "${with_libsndfileinc+set}" = set; then :
withval=$with_libsndfileinc; case $withval in #(
......@@ -16924,6 +16919,190 @@ $as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iterator category input is declared" >&5
$as_echo_n "checking whether iterator category input is declared... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <iterator>
int main(){typedef std::input_iterator_tag category;return 0;}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
dcmtk_have_iter_cat=yes
else
dcmtk_have_iter_cat=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test "$dcmtk_have_iter_cat" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define HAVE_INPUT_ITERATOR_CATEGORY 1" >>confdefs.h
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iterator category output is declared" >&5
$as_echo_n "checking whether iterator category output is declared... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <iterator>
int main(){typedef std::output_iterator_tag category;return 0;}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
dcmtk_have_iter_cat=yes
else
dcmtk_have_iter_cat=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test "$dcmtk_have_iter_cat" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define HAVE_OUTPUT_ITERATOR_CATEGORY 1" >>confdefs.h
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iterator category forward is declared" >&5
$as_echo_n "checking whether iterator category forward is declared... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <iterator>
int main(){typedef std::forward_iterator_tag category;return 0;}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
dcmtk_have_iter_cat=yes
else
dcmtk_have_iter_cat=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test "$dcmtk_have_iter_cat" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define HAVE_FORWARD_ITERATOR_CATEGORY 1" >>confdefs.h
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iterator category bidirectional is declared" >&5
$as_echo_n "checking whether iterator category bidirectional is declared... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <iterator>
int main(){typedef std::bidirectional_iterator_tag category;return 0;}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
dcmtk_have_iter_cat=yes
else
dcmtk_have_iter_cat=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test "$dcmtk_have_iter_cat" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define HAVE_BIDIRECTIONAL_ITERATOR_CATEGORY 1" >>confdefs.h
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iterator category random_access is declared" >&5
$as_echo_n "checking whether iterator category random_access is declared... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <iterator>
int main(){typedef std::random_access_iterator_tag category;return 0;}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
dcmtk_have_iter_cat=yes
else
dcmtk_have_iter_cat=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test "$dcmtk_have_iter_cat" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define HAVE_RANDOM_ACCESS_ITERATOR_CATEGORY 1" >>confdefs.h
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iterator category contiguous is declared" >&5
$as_echo_n "checking whether iterator category contiguous is declared... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <iterator>
int main(){typedef std::contiguous_iterator_tag category;return 0;}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
dcmtk_have_iter_cat=yes
else
dcmtk_have_iter_cat=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test "$dcmtk_have_iter_cat" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define HAVE_CONTIGUOUS_ITERATOR_CATEGORY 1" >>confdefs.h
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
CFLAGS="$DEBUGCFLAGS $CFLAGS"
CXXFLAGS="$DEBUGCXXFLAGS $CXXFLAGS"
......@@ -16939,6 +17118,7 @@ CXXFLAGS="$DEBUGCXXFLAGS $CXXFLAGS"
ac_config_files="$ac_config_files Makefile.def Makefile"
cat >confcache <<\_ACEOF
......@@ -17447,7 +17627,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by dcmtk $as_me 3.6.4, which was
This file was extended by dcmtk $as_me 3.6.5, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
......@@ -17510,7 +17690,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
dcmtk config.status 3.6.4
dcmtk config.status 3.6.5
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
......
dnl Process this file with autoconf to produce a configure script.
AC_INIT(dcmtk, 3.6.4, [bugs@dcmtk.org], [dcmtk-3.6.4], [http://www.dcmtk.org/])
AC_INIT(dcmtk, 3.6.5, [bugs@dcmtk.org], [dcmtk-3.6.5], [http://www.dcmtk.org/])
AC_PREREQ(2.60)
AC_CONFIG_SRCDIR(Makefile.in)
AC_CONFIG_HEADERS(include/dcmtk/config/osconfig.h)
......@@ -10,10 +10,9 @@ dnl -------------------------------------------------------
dnl Additional Package Information
dnl -------------------------------------------------------
PACKAGE_VERSION_NUMBER=364
PACKAGE_VERSION_NUMBER=365
PACKAGE_VERSION_SUFFIX=""
PACKAGE_DATE="2018-11-29"
PACKAGE_DATE="2019-10-28"
AC_DEFINE_UNQUOTED(PACKAGE_VERSION_NUMBER,${PACKAGE_VERSION_NUMBER},[Define to the version number of this package.])
AC_DEFINE_UNQUOTED(PACKAGE_VERSION_SUFFIX,"${PACKAGE_VERSION_SUFFIX}",[Define to the version suffix of this package.])
AC_DEFINE_UNQUOTED(PACKAGE_DATE,"${PACKAGE_DATE}",[Define to the release date of this package.])
......@@ -233,6 +232,8 @@ AC_CHECK_HEADERS(cstdint)
AC_CHECK_TYPES(int64_t)
AC_CHECK_TYPES(uint64_t)
AC_CHECK_TYPES(char16_t)
AC_CHECK_TYPES([sigjmp_buf], [], [], [[#include <setjmp.h>]])
dnl -------------------------------------------------------
......@@ -244,7 +245,7 @@ AC_FUNC_VPRINTF
AC_TYPE_SIGNAL
AC_FUNC_WAIT3
AC_CHECK_FUNCS(gethostname gethostid socket sysinfo)
AC_CHECK_FUNCS(strchr strstr strtoul itoa)
AC_CHECK_FUNCS(strchr strstr strtoul itoa atoll)
AC_CHECK_FUNCS(memcpy memset memmove memcmp bcopy bcmp)
AC_CHECK_FUNCS(getpid mktemp tempnam tmpnam getenv mkstemp)
AC_CHECK_FUNCS(stat)
......@@ -257,6 +258,8 @@ AC_CHECK_FUNCS(listen connect setsockopt getsockopt select)
AC_CHECK_FUNCS(gethostbyname gethostbyname_r)
AC_CHECK_FUNCS(gethostbyaddr_r getgrnam_r getpwnam_r)
AC_CHECK_FUNCS(bind accept getsockname getaddrinfo)
AC_CHECK_FUNCS(getrusage)
AC_CHECK_FUNCS(gettimeofday)
AC_CHECK_FUNCS(waitpid)
AC_CHECK_FUNCS(getuid geteuid setuid getpwnam getgrnam)
AC_CHECK_FUNCS(sleep fork)
......@@ -432,15 +435,17 @@ fi
dnl Some newer versions of OpenSSL must be linked against libdl.
dnl We just check whether libdl exists and in this case always
dnl add -ldl to OPENSSLLIBS.
dnl
dnl add -ldl to OPENSSLLIBS. The same applies for OPENJPEG.
OPENSSLLIBS=""
OPENJPEGLIBS=""
AC_CHECK_LIB(dl, main,[
OPENSSLLIBS="-ldl"
OPENJPEGLIBS="-ldl"
])
if test $ac_cv_lib_dl_main = no ; then
AC_CHECK_LIB(dl, dlopen,[
OPENSSLLIBS="-ldl"
OPENJPEGLIBS="-ldl"
])
fi
......@@ -547,6 +552,10 @@ AC_CHECK_HEADERS(utime.h)
AC_CHECK_HEADERS(wchar.h)
AC_CHECK_HEADERS(wctype.h)
AC_CHECK_HEADERS(fenv.h)
AC_CHECK_HEADER(iterator,
[AC_DEFINE([HAVE_ITERATOR_HEADER], 1, [Define to 1 if you have the <iterator> header file.])]
)
AC_CHECK_POLL_H
if test $ac_cv_header_libc_h = yes ; then
......@@ -1082,10 +1091,6 @@ AS_HELP_STRING([--without-libtiff], [don't include libtiff support])],
AC_MSG_RESULT(yes)
AC_DEFINE(WITH_LIBTIFF, , [Define if we are compiling with libtiff support.])
TIFFLIBS="-ltiff $JPEGLIBS $ZLIBLIBS"
SAVELIBS="$LIBS"
LIBS="$LIBS -ltiff $JPEGLIBS $ZLIBLIBS"
AC_LIBTIFF_LZW_COMPRESSION
LIBS="$SAVELIBS"
;;
*)
AC_MSG_RESULT(no)
......@@ -1097,7 +1102,6 @@ AS_HELP_STRING([--without-libtiff], [don't include libtiff support])],
[ AC_MSG_RESULT(yes)
AC_DEFINE(WITH_LIBTIFF, , [Define if we are compiling with libtiff support.])
TIFFLIBS="-ltiff $JPEGLIBS $ZLIBLIBS"
AC_LIBTIFF_LZW_COMPRESSION
],
[AC_MSG_RESULT(no)])
LIBS="$SAVELIBS"] )
......@@ -1236,6 +1240,36 @@ AS_HELP_STRING([--without-libwrap], [don't include libwrap support])],
LIBS="$SAVELIBS"] )
dnl -------------------------------------------------------
dnl Check for OpenJPEG support
dnl -------------------------------------------------------
AC_MY_OPENJPEG_PATH()
AC_MSG_CHECKING(whether to include OpenJPEG support)
AC_ARG_WITH(libwrap,
[AS_HELP_STRING([--with-openjpeg], [include OpenJPEG support (default: auto)])
AS_HELP_STRING([--without-openjpeg], [don't include OpenJPEG support])],
[ case "$withval" in
yes)
AC_MSG_RESULT(yes)
AC_DEFINE(WITH_OPENJPEG, , [Define if we are compiling with OpenJPEG support.])
OPENJPEGLIBS="-lopenjp2 $OPENJPEGLIBS"
;;
*)
AC_MSG_RESULT(no)
;;
esac ],
[ SAVELIBS="$LIBS"
LIBS="-lopenjp2 $OPENJPEGLIBS $LIBS"
AC_TRY_LINK([#include <openjpeg.h>], [(void) opj_version()],
[ AC_MSG_RESULT(yes)
AC_DEFINE(WITH_OPENJPEG, , [Define if we are compiling with OpenJPEG support.])
OPENJPEGLIBS="-lopenjp2 $OPENJPEGLIBS" ],
[AC_MSG_RESULT(no)])
LIBS="$SAVELIBS"] )
dnl -------------------------------------------------------
dnl Check for libsndfile support
dnl -------------------------------------------------------
......@@ -1816,6 +1850,19 @@ AC_TRY_COMPILE([#include <sys/syscall.h>],
AC_DEFINE(HAVE_SYS_GETTID, , [Define if your system has a prototype for gettid.]) ],
[AC_MSG_RESULT(no)])
dnl -------------------------------------------------------
dnl Test for defined iterator categories
dnl -------------------------------------------------------
AC_CHECK_ITERATOR_CATEGORY([input],[HAVE_INPUT_ITERATOR_CATEGORY])
AC_CHECK_ITERATOR_CATEGORY([output],[HAVE_OUTPUT_ITERATOR_CATEGORY])
AC_CHECK_ITERATOR_CATEGORY([forward],[HAVE_FORWARD_ITERATOR_CATEGORY])
AC_CHECK_ITERATOR_CATEGORY([bidirectional],[HAVE_BIDIRECTIONAL_ITERATOR_CATEGORY])
AC_CHECK_ITERATOR_CATEGORY([random_access],[HAVE_RANDOM_ACCESS_ITERATOR_CATEGORY])
AC_CHECK_ITERATOR_CATEGORY([contiguous],[HAVE_CONTIGUOUS_ITERATOR_CATEGORY])
dnl -------------------------------------------------------
dnl Set optimizer and debug compiler flags
dnl -------------------------------------------------------
......@@ -1835,6 +1882,7 @@ AC_SUBST(XMLLIBS)
AC_SUBST(TCPWRAPPERLIBS)
AC_SUBST(SNDFILELIBS)
AC_SUBST(ICONVLIBS)
AC_SUBST(OPENJPEGLIBS)
AC_SUBST(DEBUG)
AC_OUTPUT(Makefile.def Makefile)
......
......@@ -73,6 +73,19 @@ DCMTK_GUI
either present them to the user or store them in a log file. See
comments in ofstd/include/dcmtk/ofstd/ofconsol.h.
DCMTK_LOG4CPLUS_AVOID_WIN32_FLS
Affected: oflog
Type of modification: Disables feature
Explanation: Starting with release 3.6.5, DCMTK uses fiber local storage
instead of thread local storage in the oflog module on Windows to store
thread-specific information. This has the advantage that a callback can
be (and is) registered that automatically cleans up the memory when a
thread ends. The old behaviour can be re-activated with this macro.
This may be necessary when an application wants to use multiple fibers
within a single thread. In that case, before ending a thread,
dcmtk::log4cplus::threadCleanup() should be called by the user code in
order to clean-up oflog's thread local storage.
DICOMDIR_WITHOUT_BACKUP
Affected: dcmdata
Type of modification: Disables feature
......@@ -87,13 +100,15 @@ DISABLE_COMPRESSION_EXTENSION
syntaxes) in dcmqrdb, a feature which is still experimental.
DISABLE_FF_JPEG_BITSTREAM_PADDING
Affected: dcmjpeg, dcmjpls
Affected: dcmjpeg, dcmjpls (dcmjpls only up to DCMTK 3.6.4)
Type of modification: Disables feature
Explanation: Starting with release 3.6.2, DCMTK pads JPEG and JPEG-LS
bitstreams that have odd length with an "extended" end of image (EOI)
marker, writing ff/ff/d9 instead of adding a zero byte after the
EOI marker, i.e. writing ff/d9/00. The old behaviour can be restored
by defining this macro.
In the dcmjpls module, the macro has been replaced by a codec
parameter that can be set at runtime starting with DCMTK 3.6.5.
DISABLE_NAGLE_ALGORITHM
Affected: dcmnet
......@@ -406,6 +421,17 @@ WIDE_CHAR_MAIN_FUNCTION
this macro by setting the CMake option DCMTK_WIDE_CHAR_MAIN_FUNCTION to
"on". Usually, WIDE_CHAR_FILE_IO_FUNCTIONS should also be enabled.
WIDE_CHAR_XML_PARSER
Affected: ofstd
Type of modification: Activates experimental or rarely used feature
Explanation: The XML parser that is part of the DCMTK also supports a wide
character API, at least on Windows systems. By defining this macro, the
type "wchar_t" is used for character strings instead of "char". Please
note, however, that some DCMTK tools and classes have not yet been adapted
for the wide character API of the parser, e.g. cda2dcm and the underlying
class DcmEncapsulatedDocument. This is also the reason why there is no
CMake option yet.
WRITE_VERY_LARGE_CHUNKS
Affected: dcmdata
Type of modification: Re-activated behavior of earlier DCMTK releases
......
......@@ -23,13 +23,13 @@
#define ENVIRONMENT_PATH_SEPARATOR ';'
#endif
/* Define if __attribute__((aligned)) supports templates */
/* Define if __attribute__((aligned)) supports templates. */
#undef ATTRIBUTE_ALIGNED_SUPPORTS_TEMPLATES
/* Define the canonical host system type as a string constant. */
#undef CANONICAL_HOST_TYPE
/* Define if char is unsigned on the C compiler */
/* Define if char is unsigned on the C compiler. */
#undef C_CHAR_UNSIGNED
/* Define to the inline keyword supported by the C compiler, if any, or to the
......@@ -57,7 +57,7 @@
/* Try to define the iconv behavior as conversion flags */
#undef DCMTK_FIXED_ICONV_CONVERSION_FLAGS
/* Define if your system has a usable <poll.h> */
/* Define if your system has a usable <poll.h>. */
#undef DCMTK_HAVE_POLL
/* Define the DCMTK default path. */
......@@ -106,7 +106,10 @@
/* Define to 1 if you have the <assert.h> header file. */
#undef HAVE_ASSERT_H
/* Define if __attribute__((aligned)) is available */
/* Define to 1 if you have the `atoll' function. */
#undef HAVE_ATOLL
/* Define if __attribute__((aligned)) is available. */
#undef HAVE_ATTRIBUTE_ALIGNED
/* Define to 1 if you have the `bcmp' function. */
......@@ -115,17 +118,23 @@
/* Define to 1 if you have the `bcopy' function. */
#undef HAVE_BCOPY
/* Define if the bidirectional iterator category is supported. */
#undef HAVE_BIDIRECTIONAL_ITERATOR_CATEGORY
/* Define to 1 if you have the `bind' function. */
#undef HAVE_BIND
/* Define to 1 if you have the `bzero' function. */
#undef HAVE_BZERO
/* Define to 1 if the system has the type `char16_t'. */
#undef HAVE_CHAR16_T
/* Define if your system declares the return type of strerror_r as char *
instead of int */
#undef HAVE_CHARP_STRERROR_R
/* Define if your C++ compiler can work with class templates */
/* Define if your C++ compiler can work with class templates. */
#undef HAVE_CLASS_TEMPLATE
/* Define to 1 if you have the <climits> header file. */
......@@ -137,9 +146,12 @@
/* Define to 1 if you have the `connect' function. */
#undef HAVE_CONNECT
/* define if the compiler supports const_cast<> */
/* Define if the compiler supports const_cast<>. */
#undef HAVE_CONST_CAST
/* Define if the contiguous iterator category is supported. */
#undef HAVE_CONTIGUOUS_ITERATOR_CATEGORY
/* Define to 1 if you have the <cstdarg> header file. */
#undef HAVE_CSTDARG
......@@ -161,28 +173,29 @@
/* define if the compiler supports basic C++11 syntax */
#undef HAVE_CXX11
/* Define if bool is a built-in type */
/* Define if bool is a built-in type. */
#undef HAVE_CXX_BOOL
/* Define if volatile is a known keyword */
#undef HAVE_CXX_VOLATILE
/* Define if "const" is supported by the C compiler */
/* Define if "const" is supported by the C compiler. */
#undef HAVE_C_CONST
/* Define if your system has a declaration for socklen_t in sys/types.h
sys/socket.h */
sys/socket.h . */
#undef HAVE_DECLARATION_SOCKLEN_T
/* Define if your system has a declaration for std::ios_base::openmode in
iostream.h */
iostream.h. */
#undef HAVE_DECLARATION_STD__IOS_BASE__OPENMODE
/* Define if your system has a declaration for struct utimbuf in sys/types.h
utime.h sys/utime.h */
utime.h sys/utime.h . */
#undef HAVE_DECLARATION_STRUCT_UTIMBUF
/* Define if the compiler supports default constructor detection via SFINAE */
/* Define if the compiler supports default constructor detection via SFINAE.
*/
#undef HAVE_DEFAULT_CONSTRUCTOR_DETECTION_VIA_SFINAE
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
......@@ -192,7 +205,7 @@
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
#undef HAVE_DOPRNT
/* define if the compiler supports dynamic_cast<> */
/* Define if the compiler supports dynamic_cast<>. */
#undef HAVE_DYNAMIC_CAST
/* Define if your system cannot pass command line arguments into main() (e.g. Macintosh). */
......@@ -205,7 +218,7 @@
#undef HAVE_ERRNO_H
/* Define if your C++ compiler supports the explicit template specialization
syntax */
syntax. */
#undef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
/* Define to 1 if you have the `fcntl' function. */
......@@ -232,6 +245,9 @@
/* Define to 1 if you have the `fork' function. */
#undef HAVE_FORK
/* Define if the forward iterator category is supported. */
#undef HAVE_FORWARD_ITERATOR_CATEGORY
/* Define to 1 if the system has the type `fpos64_t'. */
#undef HAVE_FPOS64_T
......@@ -247,7 +263,7 @@
/* Define to 1 if you have the `ftime' function. */
#undef HAVE_FTIME
/* Define if your C++ compiler can work with function templates */
/* Define if your C++ compiler can work with function templates. */
#undef HAVE_FUNCTION_TEMPLATE
/* Define to 1 if you have the `getaddrinfo' function. */
......@@ -295,19 +311,25 @@
/* Define to 1 if you have the `getpwnam_r' function. */
#undef HAVE_GETPWNAM_R
/* Define to 1 if you have the `getrusage' function. */
#undef HAVE_GETRUSAGE
/* Define to 1 if you have the `getsockname' function. */
#undef HAVE_GETSOCKNAME
/* Define to 1 if you have the `getsockopt' function. */
#undef HAVE_GETSOCKOPT
/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
/* Define to 1 if you have the `getuid' function. */
#undef HAVE_GETUID
/* Define to 1 if you have the `gmtime_r' function. */
#undef HAVE_GMTIME_R
/* Define if __alignof__ is available */
/* Define if __alignof__ is available. */
#undef HAVE_GNU_ALIGNOF
/* Define to 1 if you have the <grp.h> header file. */
......@@ -325,19 +347,22 @@
/* Define to 1 if you have the `index' function. */
#undef HAVE_INDEX
/* Define if the input iterator category is supported. */
#undef HAVE_INPUT_ITERATOR_CATEGORY
/* Define to 1 if the system has the type `int64_t'. */
#undef HAVE_INT64_T
/* Define if your system declares argument 3 of accept() as int * instead of
size_t * or socklen_t * */
size_t * or socklen_t *. */
#undef HAVE_INTP_ACCEPT
/* Define if your system declares argument 5 of getsockopt() as int * instead
of size_t * or socklen_t */
of size_t * or socklen_t. */
#undef HAVE_INTP_GETSOCKOPT
/* Define if your system declares argument 2-4 of select() as int * instead of
struct fd_set * */
struct fd_set *. */
#undef HAVE_INTP_SELECT
/* Define to 1 if you have the <inttypes.h> header file. */
......@@ -370,6 +395,9 @@
/* Define to 1 if you have the <iso646.h> header file. */
#undef HAVE_ISO646_H
/* Define to 1 if you have the <iterator> header file. */
#undef HAVE_ITERATOR_HEADER
/* Define to 1 if you have the `itoa' function. */
#undef HAVE_ITOA
......@@ -388,9 +416,6 @@
/* Define to 1 if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET
/* Define if libtiff supports LZW compression */
#undef HAVE_LIBTIFF_LZW_COMPRESSION
/* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
......@@ -475,7 +500,7 @@
/* Define to 1 if you have the <new.h> header file. */
#undef HAVE_NEW_H
/* Define if the compiler supports operator delete (std::nothrow) */
/* Define if the compiler supports operator delete (std::nothrow.) */
#undef HAVE_NOTHROW_DELETE
/* Define `pid_t' to `int' if <sys/types.h> does not define. */
......@@ -541,6 +566,9 @@ typedef unsigned short ushort;
arguments. */
#undef HAVE_OLD_READDIR_R
/* Define if the output iterator category is supported. */
#undef HAVE_OUTPUT_ITERATOR_CATEGORY
/* Define if passwd::pw_gecos is available. */
#undef HAVE_PASSWD_GECOS
......@@ -554,134 +582,134 @@ typedef unsigned short ushort;
#undef HAVE_POPEN
/* Define if your system has a prototype for accept in sys/types.h
sys/socket.h */
sys/socket.h. */
#undef HAVE_PROTOTYPE_ACCEPT
/* Define if your system has a prototype for bind in sys/types.h sys/socket.h
/* Define if your system has a prototype for bind in sys/types.h sys/socket.h.
*/
#undef HAVE_PROTOTYPE_BIND
/* Define if your system has a prototype for bzero in string.h strings.h
libc.h unistd.h stdlib.h */
libc.h unistd.h stdlib.h. */
#undef HAVE_PROTOTYPE_BZERO
/* Define if your system has a prototype for connect in sys/types.h
sys/socket.h */
sys/socket.h. */
#undef HAVE_PROTOTYPE_CONNECT
/* Define if your system has a prototype for feenableexcept in fenv.h */
/* Define if your system has a prototype for feenableexcept in fenv.h. */
#undef HAVE_PROTOTYPE_FEENABLEEXCEPT
/* Define if your system has a prototype for finite in math.h */
/* Define if your system has a prototype for finite in math.h. */
#undef HAVE_PROTOTYPE_FINITE
/* Define if your system has a prototype for flock in sys/file.h */
/* Define if your system has a prototype for flock in sys/file.h. */
#undef HAVE_PROTOTYPE_FLOCK
/* Define if your system has a prototype for gethostbyaddr_r in libc.h
unistd.h stdlib.h netdb.h */
unistd.h stdlib.h netdb.h. */
#undef HAVE_PROTOTYPE_GETHOSTBYADDR_R
/* Define if your system has a prototype for gethostbyname in libc.h unistd.h
stdlib.h netdb.h */
stdlib.h netdb.h. */
#undef HAVE_PROTOTYPE_GETHOSTBYNAME
/* Define if your system has a prototype for gethostbyname_r in libc.h
unistd.h stdlib.h netdb.h */
unistd.h stdlib.h netdb.h. */
#undef HAVE_PROTOTYPE_GETHOSTBYNAME_R
/* Define if your system has a prototype for gethostid in libc.h unistd.h
stdlib.h netdb.h */
stdlib.h netdb.h. */
#undef HAVE_PROTOTYPE_GETHOSTID
/* Define if your system has a prototype for gethostname in unistd.h libc.h
stdlib.h netdb.h */
stdlib.h netdb.h. */
#undef HAVE_PROTOTYPE_GETHOSTNAME
/* Define if your system has a prototype for getsockname in sys/types.h
sys/socket.h */
sys/socket.h. */
#undef HAVE_PROTOTYPE_GETSOCKNAME
/* Define if your system has a prototype for getsockopt in sys/types.h
sys/socket.h */
sys/socket.h. */
#undef HAVE_PROTOTYPE_GETSOCKOPT
/* Define if your system has a prototype for gettimeofday in sys/time.h
unistd.h */
unistd.h. */
#undef HAVE_PROTOTYPE_GETTIMEOFDAY
/* Define if your system has a prototype for isinf in math.h */
/* Define if your system has a prototype for isinf in math.h. */
#undef HAVE_PROTOTYPE_ISINF
/* Define if your system has a prototype for isnan in math.h */
/* Define if your system has a prototype for isnan in math.h. */
#undef HAVE_PROTOTYPE_ISNAN
/* Define if your system has a prototype for listen in sys/types.h
sys/socket.h */
sys/socket.h. */
#undef HAVE_PROTOTYPE_LISTEN
/* Define if your system has a prototype for mkstemp in libc.h unistd.h
stdlib.h */
stdlib.h. */
#undef HAVE_PROTOTYPE_MKSTEMP
/* Define if your system has a prototype for mktemp in libc.h unistd.h
stdlib.h */
stdlib.h. */
#undef HAVE_PROTOTYPE_MKTEMP
/* Define if your system has a prototype for select in sys/select.h
sys/types.h sys/socket.h sys/time.h */
sys/types.h sys/socket.h sys/time.h. */
#undef HAVE_PROTOTYPE_SELECT
/* Define if your system has a prototype for setsockopt in sys/types.h
sys/socket.h */
sys/socket.h. */
#undef HAVE_PROTOTYPE_SETSOCKOPT
/* Define if your system has a prototype for socket in sys/types.h
sys/socket.h */
sys/socket.h. */
#undef HAVE_PROTOTYPE_SOCKET
/* Define if your system has a prototype for std::finite in cmath */
/* Define if your system has a prototype for std::finite in cmath. */
#undef HAVE_PROTOTYPE_STD__FINITE
/* Define if your system has a prototype for std::isinf in cmath */
/* Define if your system has a prototype for std::isinf in cmath. */
#undef HAVE_PROTOTYPE_STD__ISINF
/* Define if your system has a prototype for std::isnan in cmath */
/* Define if your system has a prototype for std::isnan in cmath. */
#undef HAVE_PROTOTYPE_STD__ISNAN
/* Define if your system has a prototype for std::vfprintf in stdarg.h stdio.h
*/
/* Define if your system has a prototype for std::vfprintf in stdarg.h
stdio.h. */
#undef HAVE_PROTOTYPE_STD__VFPRINTF
/* Define if your system has a prototype for std::vsnprintf in stdarg.h
stdio.h */
stdio.h. */
#undef HAVE_PROTOTYPE_STD__VSNPRINTF
/* Define if your system has a prototype for strcasecmp in string.h */
/* Define if your system has a prototype for strcasecmp in string.h. */
#undef HAVE_PROTOTYPE_STRCASECMP
/* Define if your system has a prototype for strerror_r in string.h */
/* Define if your system has a prototype for strerror_r in string.h. */
#undef HAVE_PROTOTYPE_STRERROR_R
/* Define if your system has a prototype for strncasecmp in string.h */
/* Define if your system has a prototype for strncasecmp in string.h. */
#undef HAVE_PROTOTYPE_STRNCASECMP
/* Define if your system has a prototype for usleep in libc.h unistd.h
stdlib.h */
stdlib.h. */
#undef HAVE_PROTOTYPE_USLEEP
/* Define if your system has a prototype for vsnprintf in stdio.h stdarg.h */
/* Define if your system has a prototype for vsnprintf in stdio.h stdarg.h. */
#undef HAVE_PROTOTYPE_VSNPRINTF
/* Define if your system has a prototype for wait3 in libc.h sys/wait.h
sys/time.h sys/resource.h */
sys/time.h sys/resource.h. */
#undef HAVE_PROTOTYPE_WAIT3
/* Define if your system has a prototype for waitpid in sys/wait.h sys/time.h
sys/resource.h */
sys/resource.h. */
#undef HAVE_PROTOTYPE_WAITPID
/* Define if your system has a prototype for _stricmp in string.h */
/* Define if your system has a prototype for _stricmp in string.h. */
#undef HAVE_PROTOTYPE__STRICMP
/* Define to 1 if you have the <pthread.h> header file. */
......@@ -693,13 +721,16 @@ typedef unsigned short ushort;
/* Define to 1 if you have the <pwd.h> header file. */
#undef HAVE_PWD_H
/* Define if the random_access iterator category is supported. */
#undef HAVE_RANDOM_ACCESS_ITERATOR_CATEGORY
/* Define if OpenSSL provides the RAND_egd function. */
#undef HAVE_RAND_EGD
/* Define to 1 if you have the `readdir_r' function. */
#undef HAVE_READDIR_R
/* define if the compiler supports reinterpret_cast<> */
/* Define if the compiler supports reinterpret_cast<>. */
#undef HAVE_REINTERPRET_CAST
/* Define to 1 if you have the `rindex' function. */
......@@ -747,11 +778,11 @@ typedef unsigned short ushort;
/* Define if the compiler supports static_assert */
#undef HAVE_STATIC_ASSERT
/* define if the compiler supports static_cast<> */
/* Define if the compiler supports static_cast<>. */
#undef HAVE_STATIC_CAST
/* Define if your C++ compiler can work with static methods in class templates
*/
/* Define if your C++ compiler can work with static methods in class
templates. */
#undef HAVE_STATIC_TEMPLATE_METHOD
/* Define to 1 if you have the <stat.h> header file. */
......@@ -775,10 +806,10 @@ typedef unsigned short ushort;
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define if ANSI standard C++ includes use std namespace */
/* Define if ANSI standard C++ includes use std namespace. */
#undef HAVE_STD_NAMESPACE
/* Define if the compiler supports std::nothrow */
/* Define if the compiler supports std::nothrow. */
#undef HAVE_STD__NOTHROW
/* Define if STL's algorithm should be used. */
......@@ -856,10 +887,10 @@ typedef unsigned short ushort;
/* Define to 1 if you have the <synch.h> header file. */
#undef HAVE_SYNCH_H
/* Define if __sync_add_and_fetch is available */
/* Define if __sync_add_and_fetch is available. */
#undef HAVE_SYNC_ADD_AND_FETCH
/* Define if __sync_sub_and_fetch is available */
/* Define if __sync_sub_and_fetch is available. */
#undef HAVE_SYNC_SUB_AND_FETCH
/* Define to 1 if you have the `sysinfo' function. */
......@@ -936,7 +967,7 @@ typedef unsigned short ushort;
/* Define to 1 if you have the `tmpnam' function. */
#undef HAVE_TMPNAM
/* define if the compiler recognizes typename */
/* Define if the compiler recognizes typename. */
#undef HAVE_TYPENAME
/* Define to 1 if the system has the type `uint64_t'. */
......@@ -1003,7 +1034,7 @@ typedef unsigned short ushort;
/* Define if libc.h should be treated as a C++ header */
#undef INCLUDE_LIBC_H_AS_CXX
/* Define if <math.h> fails if included extern "C" */
/* Define if <math.h> fails if included extern "C". */
#undef INCLUDE_MATH_H_AS_CXX
/* Define if the second argument to iconv() is const. */
......@@ -1042,7 +1073,7 @@ typedef unsigned short ushort;
/* Define as the return type of signal handlers (`int' or `void'). */
#undef RETSIGTYPE
/* Define if signal handlers need ellipse (...) parameters */
/* Define if signal handlers need ellipse (...) parameters. */
#undef SIGNAL_HANDLER_WITH_ELLIPSE
/* The size of `char', as computed by sizeof. */
......@@ -1115,6 +1146,9 @@ typedef unsigned short ushort;
/* Define if we are compiling with libxml support. */
#undef WITH_LIBXML
/* Define if we are compiling with OpenJPEG support. */
#undef WITH_OPENJPEG
/* Define if we are compiling with OpenSSL support. */
#undef WITH_OPENSSL
......