# HG changeset patch # User Sebastien Jodogne # Date 1459860355 -7200 # Node ID 01de36d949c3d39f058e9386c3a87dd988af483c # Parent 533ff46e944b26eacf9f4a731ac3d1ab3c71eaa1 Possibility to use forthcoming DCMTK 3.6.1 in static builds (instead of 3.6.0) diff -r 533ff46e944b -r 01de36d949c3 CMakeLists.txt --- a/CMakeLists.txt Tue Apr 05 11:07:02 2016 +0200 +++ b/CMakeLists.txt Tue Apr 05 14:45:55 2016 +0200 @@ -32,6 +32,7 @@ SET(ENABLE_PLUGINS ON CACHE BOOL "Enable plugins") SET(BUILD_SERVE_FOLDERS ON CACHE BOOL "Build the ServeFolders plugin") SET(BUILD_MODALITY_WORKLISTS ON CACHE BOOL "Build the sample plugin to serve modality worklists") +SET(USE_DCMTK_361 OFF CACHE BOOL "Use forthcoming DCMTK version 3.6.1 in static builds (instead of 3.6.0)") # Advanced parameters to fine-tune linking against system libraries SET(USE_SYSTEM_JSONCPP ON CACHE BOOL "Use the system version of JsonCpp") @@ -249,6 +250,27 @@ endif() +set(ORTHANC_ALL_SOURCES + ${ORTHANC_CORE_SOURCES} + ${ORTHANC_SERVER_SOURCES} + ${ORTHANC_UNIT_TESTS_SOURCES} + Plugins/Samples/ServeFolders/Plugin.cpp + Plugins/Samples/ModalityWorklists/Plugin.cpp + OrthancServer/main.cpp + ) + + +if (CMAKE_COMPILER_IS_GNUCXX + AND NOT CMAKE_CROSSCOMPILING + AND NOT USE_DCMTK_361) + # Add the "-pedantic" flag only on the Orthanc sources, and only if + # using DCMTK 3.6.0 + set_source_files_properties(${ORTHANC_ALL_SOURCES} + PROPERTIES COMPILE_FLAGS -pedantic + ) +endif() + + set(ORTHANC_EMBEDDED_FILES PREPARE_DATABASE ${CMAKE_CURRENT_SOURCE_DIR}/OrthancServer/PrepareDatabase.sql UPGRADE_DATABASE_3_TO_4 ${CMAKE_CURRENT_SOURCE_DIR}/OrthancServer/Upgrade3To4.sql diff -r 533ff46e944b -r 01de36d949c3 NEWS --- a/NEWS Tue Apr 05 11:07:02 2016 +0200 +++ b/NEWS Tue Apr 05 14:45:55 2016 +0200 @@ -13,6 +13,7 @@ * Upgrade to Boost 1.60.0 for static builds * Support of signed 16bpp images in ParsedDicomFile * Fix of Debian bug #818512 ("FTBFS: Please install libdcmtk*-dev") +* Possibility to use forthcoming DCMTK 3.6.1 in static builds (instead of 3.6.0) Version 1.0.0 (2015/12/15) diff -r 533ff46e944b -r 01de36d949c3 OrthancServer/Internals/DicomFrameIndex.cpp --- a/OrthancServer/Internals/DicomFrameIndex.cpp Tue Apr 05 11:07:02 2016 +0200 +++ b/OrthancServer/Internals/DicomFrameIndex.cpp Tue Apr 05 14:45:55 2016 +0200 @@ -329,8 +329,8 @@ #if DCMTK_VERSION_NUMBER > 360 // New transfer syntaxes introduced in the DICOM standard after DCMTK 3.6.0 - if (dataset.getOriginalXfer() == EXS_MPEG4HighProfileLevel4 || - dataset.getOriginalXfer() == EXS_MPEG4BDcompatibleHighProfileLevel4 || + if (dataset.getOriginalXfer() == EXS_MPEG4HighProfileLevel4_1 || + dataset.getOriginalXfer() == EXS_MPEG4BDcompatibleHighProfileLevel4_1 || dataset.getOriginalXfer() == EXS_MPEG4HighProfileLevel4_2_For2DVideo || dataset.getOriginalXfer() == EXS_MPEG4HighProfileLevel4_2_For3DVideo || dataset.getOriginalXfer() == EXS_MPEG4StereoHighProfileLevel4_2) diff -r 533ff46e944b -r 01de36d949c3 Resources/CMake/Compiler.cmake --- a/Resources/CMake/Compiler.cmake Tue Apr 05 11:07:02 2016 +0200 +++ b/Resources/CMake/Compiler.cmake Tue Apr 05 14:45:55 2016 +0200 @@ -10,7 +10,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-long-long -Wno-implicit-function-declaration") # --std=c99 makes libcurl not to compile # -pedantic gives a lot of warnings on OpenSSL - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wno-long-long -Wno-variadic-macros") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -Wno-variadic-macros") if (CMAKE_CROSSCOMPILING) # http://stackoverflow.com/a/3543845/881731 @@ -97,6 +97,11 @@ link_libraries(rpcrt4 ws2_32) if (CMAKE_COMPILER_IS_GNUCXX) + # Some additional C/C++ compiler flags for MinGW + SET(MINGW_NO_WARNINGS "-Wno-unused-but-set-variable -Wno-int-to-pointer-cast -Wno-unused-function -Wno-unused-variable") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MINGW_NO_WARNINGS} -Wno-pointer-to-int-cast") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MINGW_NO_WARNINGS}") + # This is a patch for MinGW64 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++") SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++") diff -r 533ff46e944b -r 01de36d949c3 Resources/CMake/DcmtkConfiguration.cmake --- a/Resources/CMake/DcmtkConfiguration.cmake Tue Apr 05 11:07:02 2016 +0200 +++ b/Resources/CMake/DcmtkConfiguration.cmake Tue Apr 05 14:45:55 2016 +0200 @@ -3,11 +3,29 @@ endif() if (STATIC_BUILD OR NOT USE_SYSTEM_DCMTK) - SET(DCMTK_VERSION_NUMBER 360) - SET(DCMTK_PACKAGE_VERSION "3.6.0") - SET(DCMTK_SOURCES_DIR ${CMAKE_BINARY_DIR}/dcmtk-3.6.0) - SET(DCMTK_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/dcmtk-3.6.0.zip") - SET(DCMTK_MD5 "219ad631b82031806147e4abbfba4fa4") + if (USE_DCMTK_361) + SET(DCMTK_VERSION_NUMBER 361) + SET(DCMTK_PACKAGE_VERSION "3.6.1") + SET(DCMTK_SOURCES_DIR ${CMAKE_BINARY_DIR}/dcmtk-3.6.1_20160216) + SET(DCMTK_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/dcmtk-3.6.1_20160216.tar.gz") + SET(DCMTK_MD5 "273c8a544b9fe09b8a4fb4eb51df8e52") + SET(DCMTK_PATCH_SPEED "${ORTHANC_ROOT}/Resources/Patches/dcmtk-3.6.1-speed.patch") + + macro(DCMTK_UNSET) + endmacro() + + set(DCMTK_BINARY_DIR ${DCMTK_SOURCES_DIR}/) + set(DCMTK_CMAKE_INCLUDE ${DCMTK_SOURCES_DIR}/) + add_definitions(-DDCMTK_INSIDE_LOG4CPLUS=1) + else() + SET(DCMTK_VERSION_NUMBER 360) + SET(DCMTK_PACKAGE_VERSION "3.6.0") + SET(DCMTK_SOURCES_DIR ${CMAKE_BINARY_DIR}/dcmtk-3.6.0) + SET(DCMTK_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/dcmtk-3.6.0.zip") + SET(DCMTK_MD5 "219ad631b82031806147e4abbfba4fa4") + SET(DCMTK_PATCH_SPEED "${ORTHANC_ROOT}/Resources/Patches/dcmtk-3.6.0-speed.patch") + SET(DCMTK_PATCH_MINGW64 "${ORTHANC_ROOT}/Resources/Patches/dcmtk-3.6.0-mingw64.patch") + endif() if (IS_DIRECTORY "${DCMTK_SOURCES_DIR}") set(FirstRun OFF) @@ -44,6 +62,11 @@ ${DCMTK_SOURCES_DIR}/CMake/osconfig.h.in ${DCMTK_SOURCES_DIR}/config/include/dcmtk/config/osconfig.h) + if (USE_DCMTK_361) + # This step must be after the generation of "osconfig.h" + INSPECT_FUNDAMENTAL_ARITHMETIC_TYPES() + endif() + AUX_SOURCE_DIRECTORY(${DCMTK_SOURCES_DIR}/dcmdata/libsrc DCMTK_SOURCES) AUX_SOURCE_DIRECTORY(${DCMTK_SOURCES_DIR}/ofstd/libsrc DCMTK_SOURCES) @@ -109,12 +132,13 @@ ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD") list(REMOVE_ITEM DCMTK_SOURCES + ${DCMTK_SOURCES_DIR}/oflog/libsrc/clfsap.cc ${DCMTK_SOURCES_DIR}/oflog/libsrc/windebap.cc ${DCMTK_SOURCES_DIR}/oflog/libsrc/winsock.cc ) execute_process( - COMMAND ${PATCH_EXECUTABLE} -p0 -N -i ${ORTHANC_ROOT}/Resources/Patches/dcmtk-linux-speed.patch + COMMAND ${PATCH_EXECUTABLE} -p0 -N -i ${DCMTK_PATCH_SPEED} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} RESULT_VARIABLE Failure ) @@ -128,10 +152,10 @@ ${DCMTK_SOURCES_DIR}/oflog/libsrc/unixsock.cc ) - if (CMAKE_COMPILER_IS_GNUCXX) + if (CMAKE_COMPILER_IS_GNUCXX AND DCMTK_PATCH_MINGW64) # This is a patch for MinGW64 execute_process( - COMMAND ${PATCH_EXECUTABLE} -p0 -N -i ${ORTHANC_ROOT}/Resources/Patches/dcmtk-mingw64.patch + COMMAND ${PATCH_EXECUTABLE} -p0 -N -i ${DCMTK_PATCH_MINGW64} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} RESULT_VARIABLE Failure ) @@ -144,7 +168,7 @@ # This patch improves speed, even for Windows execute_process( COMMAND ${PATCH_EXECUTABLE} -p0 -N - INPUT_FILE ${ORTHANC_ROOT}/Resources/Patches/dcmtk-linux-speed.patch + INPUT_FILE ${DCMTK_PATCH_SPEED} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} RESULT_VARIABLE Failure ) @@ -157,7 +181,7 @@ list(REMOVE_ITEM DCMTK_SOURCES ${DCMTK_SOURCES_DIR}/dcmdata/libsrc/mkdictbi.cc ${DCMTK_SOURCES_DIR}/dcmdata/libsrc/mkdeftag.cc - ${DCMTK_SOURCES_DIR}/dcmdata/libsrc/dcdictbi.cc + #${DCMTK_SOURCES_DIR}/dcmdata/libsrc/dcdictbi.cc ) #set_source_files_properties(${DCMTK_SOURCES} diff -r 533ff46e944b -r 01de36d949c3 Resources/Patches/dcmtk-3.6.0-mingw64.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Patches/dcmtk-3.6.0-mingw64.patch Tue Apr 05 14:45:55 2016 +0200 @@ -0,0 +1,22 @@ +diff -urEb dcmtk-3.6.0.orig/ofstd/include/dcmtk/ofstd/offile.h dcmtk-3.6.0/ofstd/include/dcmtk/ofstd/offile.h +--- dcmtk-3.6.0.orig/ofstd/include/dcmtk/ofstd/offile.h 2010-12-17 11:50:30.000000000 +0100 ++++ dcmtk-3.6.0/ofstd/include/dcmtk/ofstd/offile.h 2013-07-19 15:56:25.688996134 +0200 +@@ -196,7 +196,7 @@ + OFBool popen(const char *command, const char *modes) + { + if (file_) fclose(); +-#ifdef _WIN32 ++#if 0 + file_ = _popen(command, modes); + #else + file_ = :: popen(command, modes); +@@ -258,7 +258,7 @@ + { + if (popened_) + { +-#ifdef _WIN32 ++#if 0 + result = _pclose(file_); + #else + result = :: pclose(file_); +Only in dcmtk-3.6.0/ofstd/include/dcmtk/ofstd: offile.h~ diff -r 533ff46e944b -r 01de36d949c3 Resources/Patches/dcmtk-3.6.0-speed.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Patches/dcmtk-3.6.0-speed.patch Tue Apr 05 14:45:55 2016 +0200 @@ -0,0 +1,44 @@ +diff -urEb dcmtk-3.6.0.orig/dcmnet/libsrc/dul.cc dcmtk-3.6.0/dcmnet/libsrc/dul.cc +--- dcmtk-3.6.0.orig/dcmnet/libsrc/dul.cc 2016-04-05 14:30:18.254459281 +0200 ++++ dcmtk-3.6.0/dcmnet/libsrc/dul.cc 2016-04-05 14:32:07.246463713 +0200 +@@ -1770,7 +1770,7 @@ + // send number of socket handle in child process over anonymous pipe + DWORD bytesWritten; + char buf[20]; +- sprintf(buf, "%i", OFreinterpret_cast(int, childSocketHandle)); ++ sprintf(buf, "%i", OFstatic_cast(int, OFreinterpret_cast(size_t, childSocketHandle))); + if (!WriteFile(hChildStdInWriteDup, buf, strlen(buf) + 1, &bytesWritten, NULL)) + { + CloseHandle(hChildStdInWriteDup); +@@ -1780,7 +1780,7 @@ + // return OF_ok status code DULC_FORKEDCHILD with descriptive text + OFOStringStream stream; + stream << "New child process started with pid " << OFstatic_cast(int, pi.dwProcessId) +- << ", socketHandle " << OFreinterpret_cast(int, childSocketHandle) << OFStringStream_ends; ++ << ", socketHandle " << OFstatic_cast(int, OFreinterpret_cast(size_t, childSocketHandle)) << OFStringStream_ends; + OFSTRINGSTREAM_GETOFSTRING(stream, msg) + return makeDcmnetCondition(DULC_FORKEDCHILD, OF_ok, msg.c_str()); + } +@@ -1840,7 +1840,7 @@ + } + #endif + #endif +- setTCPBufferLength(sock); ++ //setTCPBufferLength(sock); + + #ifndef DONT_DISABLE_NAGLE_ALGORITHM + /* +Only in dcmtk-3.6.0/dcmnet/libsrc: dul.cc~ +diff -urEb dcmtk-3.6.0.orig/dcmnet/libsrc/dulfsm.cc dcmtk-3.6.0/dcmnet/libsrc/dulfsm.cc +--- dcmtk-3.6.0.orig/dcmnet/libsrc/dulfsm.cc 2016-04-05 14:30:18.250459281 +0200 ++++ dcmtk-3.6.0/dcmnet/libsrc/dulfsm.cc 2016-04-05 14:32:20.566464254 +0200 +@@ -2417,7 +2417,7 @@ + return makeDcmnetCondition(DULC_TCPINITERROR, OF_error, msg.c_str()); + } + #endif +- setTCPBufferLength(s); ++ //setTCPBufferLength(s); + + #ifndef DONT_DISABLE_NAGLE_ALGORITHM + /* +Only in dcmtk-3.6.0/dcmnet/libsrc: dulfsm.cc~ diff -r 533ff46e944b -r 01de36d949c3 Resources/Patches/dcmtk-3.6.1-speed.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Patches/dcmtk-3.6.1-speed.patch Tue Apr 05 14:45:55 2016 +0200 @@ -0,0 +1,26 @@ +diff -urEb dcmtk-3.6.1_20160216.orig/dcmnet/libsrc/dul.cc dcmtk-3.6.1_20160216/dcmnet/libsrc/dul.cc +--- dcmtk-3.6.1_20160216.orig/dcmnet/libsrc/dul.cc 2016-04-05 12:56:28.962230391 +0200 ++++ dcmtk-3.6.1_20160216/dcmnet/libsrc/dul.cc 2016-04-05 12:57:15.814232296 +0200 +@@ -1841,7 +1841,7 @@ + return makeDcmnetCondition(DULC_TCPINITERROR, OF_error, msg.c_str()); + } + #endif +- setTCPBufferLength(sock); ++ //setTCPBufferLength(sock); + + #ifndef DONT_DISABLE_NAGLE_ALGORITHM + /* +Only in dcmtk-3.6.1_20160216/dcmnet/libsrc: dul.cc~ +diff -urEb dcmtk-3.6.1_20160216.orig/dcmnet/libsrc/dulfsm.cc dcmtk-3.6.1_20160216/dcmnet/libsrc/dulfsm.cc +--- dcmtk-3.6.1_20160216.orig/dcmnet/libsrc/dulfsm.cc 2016-04-05 12:56:28.962230391 +0200 ++++ dcmtk-3.6.1_20160216/dcmnet/libsrc/dulfsm.cc 2016-04-05 12:57:31.946232952 +0200 +@@ -2431,7 +2431,7 @@ + return makeDcmnetCondition(DULC_TCPINITERROR, OF_error, msg.c_str()); + } + #endif +- setTCPBufferLength(s); ++ //setTCPBufferLength(s); + + #ifndef DONT_DISABLE_NAGLE_ALGORITHM + /* +Only in dcmtk-3.6.1_20160216/dcmnet/libsrc: dulfsm.cc~ diff -r 533ff46e944b -r 01de36d949c3 Resources/Patches/dcmtk-linux-speed.patch --- a/Resources/Patches/dcmtk-linux-speed.patch Tue Apr 05 11:07:02 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -diff -urEb dcmtk-3.6.0.orig/dcmnet/libsrc/dul.cc dcmtk-3.6.0/dcmnet/libsrc/dul.cc ---- dcmtk-3.6.0.orig/dcmnet/libsrc/dul.cc 2010-12-01 09:26:36.000000000 +0100 -+++ dcmtk-3.6.0/dcmnet/libsrc/dul.cc 2015-05-15 17:03:50.762451757 +0200 -@@ -1840,7 +1840,7 @@ - } - #endif - #endif -- setTCPBufferLength(sock); -+ //setTCPBufferLength(sock); - - #ifndef DONT_DISABLE_NAGLE_ALGORITHM - /* -diff -urEb dcmtk-3.6.0.orig/dcmnet/libsrc/dulfsm.cc dcmtk-3.6.0/dcmnet/libsrc/dulfsm.cc ---- dcmtk-3.6.0.orig/dcmnet/libsrc/dulfsm.cc 2010-12-01 09:26:36.000000000 +0100 -+++ dcmtk-3.6.0/dcmnet/libsrc/dulfsm.cc 2015-05-15 17:03:55.570451952 +0200 -@@ -2417,7 +2417,7 @@ - return makeDcmnetCondition(DULC_TCPINITERROR, OF_error, msg.c_str()); - } - #endif -- setTCPBufferLength(s); -+ //setTCPBufferLength(s); - - #ifndef DONT_DISABLE_NAGLE_ALGORITHM - /* diff -r 533ff46e944b -r 01de36d949c3 Resources/Patches/dcmtk-mingw64.patch --- a/Resources/Patches/dcmtk-mingw64.patch Tue Apr 05 11:07:02 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -diff -urEb dcmtk-3.6.0.orig/ofstd/include/dcmtk/ofstd/offile.h dcmtk-3.6.0/ofstd/include/dcmtk/ofstd/offile.h ---- dcmtk-3.6.0.orig/ofstd/include/dcmtk/ofstd/offile.h 2010-12-17 11:50:30.000000000 +0100 -+++ dcmtk-3.6.0/ofstd/include/dcmtk/ofstd/offile.h 2013-07-19 15:56:25.688996134 +0200 -@@ -196,7 +196,7 @@ - OFBool popen(const char *command, const char *modes) - { - if (file_) fclose(); --#ifdef _WIN32 -+#if 0 - file_ = _popen(command, modes); - #else - file_ = :: popen(command, modes); -@@ -258,7 +258,7 @@ - { - if (popened_) - { --#ifdef _WIN32 -+#if 0 - result = _pclose(file_); - #else - result = :: pclose(file_); -Only in dcmtk-3.6.0/ofstd/include/dcmtk/ofstd: offile.h~ diff -r 533ff46e944b -r 01de36d949c3 Resources/Patches/dcmtk-mingw64.txt --- a/Resources/Patches/dcmtk-mingw64.txt Tue Apr 05 11:07:02 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -diff -urEb dcmtk-3.6.0.orig/ dcmtk-3.6.0 > ../Resources/Patches/dcmtk-mingw64.patch diff -r 533ff46e944b -r 01de36d949c3 Resources/Patches/dcmtk.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Patches/dcmtk.txt Tue Apr 05 14:45:55 2016 +0200 @@ -0,0 +1,1 @@ +diff -urEb dcmtk-3.6.0.orig/ dcmtk-3.6.0