changeset 1537:fbf763bb1fa3

error detection in patches
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 13 Aug 2015 15:25:38 +0200
parents 1b03676d68c2
children 61caa39d7426
files NEWS Resources/CMake/BoostConfiguration.cmake Resources/CMake/DcmtkConfiguration.cmake Resources/CMake/DownloadPackage.cmake Resources/CMake/GoogleLogConfiguration.cmake Resources/CMake/GoogleTestConfiguration.cmake Resources/CMake/JsonCppConfiguration.cmake Resources/CMake/LibCurlConfiguration.cmake Resources/CMake/LibIconvConfiguration.cmake Resources/CMake/LibPngConfiguration.cmake Resources/CMake/LuaConfiguration.cmake Resources/CMake/MongooseConfiguration.cmake Resources/CMake/OpenSslConfiguration.cmake Resources/CMake/PugixmlConfiguration.cmake Resources/CMake/SQLiteConfiguration.cmake Resources/CMake/ZlibConfiguration.cmake Resources/ThirdParty/patch/NOTES.txt Resources/ThirdParty/patch/patch.exe
diffstat 18 files changed, 160 insertions(+), 68 deletions(-) [+]
line wrap: on
line diff
--- a/NEWS	Thu Aug 13 14:16:11 2015 +0200
+++ b/NEWS	Thu Aug 13 15:25:38 2015 +0200
@@ -3,13 +3,14 @@
 
 * "limit" and "since" arguments while retrieving DICOM resources in the REST API
 * Support of "deflate" and "gzip" content-types in HTTP requests
+* Options to validate peers against CA certificates in HTTPS requests
 
 Maintenance
 -----------
 
-* Options to validate peers against CA certificates in HTTPS requests
 * Upgrade to curl 7.44.0 for static and Windows builds
 * Upgrade to libcurl 1.0.2d for static and Windows builds
+* Many code refactorings
 
 
 Version 0.9.3 (2015/08/07)
--- a/Resources/CMake/BoostConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/BoostConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -43,14 +43,11 @@
   set(BOOST_NAME boost_1_58_0)
   set(BOOST_BCP_SUFFIX bcpdigest-0.9.2)
   set(BOOST_MD5 "704b110917cbda903e07cb53934b47ac")
-  set(BOOST_FILESYSTEM_SOURCES_DIR "${BOOST_NAME}/libs/filesystem/src")
-  
+  set(BOOST_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/${BOOST_NAME}_${BOOST_BCP_SUFFIX}.tar.gz")
+  set(BOOST_FILESYSTEM_SOURCES_DIR "${BOOST_NAME}/libs/filesystem/src") 
   set(BOOST_SOURCES_DIR ${CMAKE_BINARY_DIR}/${BOOST_NAME})
-  DownloadPackage(
-    "${BOOST_MD5}"
-    "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/${BOOST_NAME}_${BOOST_BCP_SUFFIX}.tar.gz"
-    "${BOOST_SOURCES_DIR}"
-    )
+
+  DownloadPackage(${BOOST_MD5} ${BOOST_URL} "${BOOST_SOURCES_DIR}")
 
   set(BOOST_SOURCES)
 
--- a/Resources/CMake/DcmtkConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/DcmtkConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -16,10 +16,16 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_DCMTK)
   SET(DCMTK_VERSION_NUMBER 360)
   SET(DCMTK_SOURCES_DIR ${CMAKE_BINARY_DIR}/dcmtk-3.6.0)
-  DownloadPackage(
-    "219ad631b82031806147e4abbfba4fa4"
-    "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/dcmtk-3.6.0.zip" 
-    "${DCMTK_SOURCES_DIR}")
+  SET(DCMTK_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/dcmtk-3.6.0.zip")
+  SET(DCMTK_MD5 "219ad631b82031806147e4abbfba4fa4")
+
+  if (IS_DIRECTORY "${DCMTK_SOURCES_DIR}")
+    set(FirstRun OFF)
+  else()
+    set(FirstRun ON)
+  endif()
+
+  DownloadPackage(${DCMTK_MD5} ${DCMTK_URL} "${DCMTK_SOURCES_DIR}")
 
   IF (CMAKE_CROSSCOMPILING)
     SET(C_CHAR_UNSIGNED 1 CACHE INTERNAL "Whether char is unsigned.")
@@ -101,10 +107,15 @@
       )
     
     execute_process(
-      COMMAND patch -p0 -N -i ${ORTHANC_ROOT}/Resources/Patches/dcmtk-linux-speed.patch
+      COMMAND ${PATCH_EXECUTABLE} -p0 -N -i ${ORTHANC_ROOT}/Resources/Patches/dcmtk-linux-speed.patch
       WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+      RESULT_VARIABLE Failure
       )
 
+    if (Failure AND FirstRun)
+      message(FATAL_ERROR "Error while patching a file")
+    endif()
+
   elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
     list(REMOVE_ITEM DCMTK_SOURCES 
       ${DCMTK_SOURCES_DIR}/oflog/libsrc/unixsock.cc
@@ -113,17 +124,26 @@
     if (CMAKE_COMPILER_IS_GNUCXX)
       # This is a patch for MinGW64
       execute_process(
-        COMMAND patch -p0 -N -i ${ORTHANC_ROOT}/Resources/Patches/dcmtk-mingw64.patch
+        COMMAND ${PATCH_EXECUTABLE} -p0 -N -i ${ORTHANC_ROOT}/Resources/Patches/dcmtk-mingw64.patch
         WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+        RESULT_VARIABLE Failure
         )
+
+      if (Failure AND FirstRun)
+        message(FATAL_ERROR "Error while patching a file")
+      endif()
     endif()
 
     # This patch improves speed, even for Windows
     execute_process(
-      COMMAND patch -p0 -N -i ${ORTHANC_ROOT}/Resources/Patches/dcmtk-linux-speed.patch
+      COMMAND ${PATCH_EXECUTABLE} -p0 -N -i ${ORTHANC_ROOT}/Resources/Patches/dcmtk-linux-speed.patch
       WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+      RESULT_VARIABLE Failure
       )
 
+    if (Failure AND FirstRun)
+      message(FATAL_ERROR "Error while patching a file")
+    endif()
   endif()
 
   list(REMOVE_ITEM DCMTK_SOURCES 
--- a/Resources/CMake/DownloadPackage.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/DownloadPackage.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -10,6 +10,22 @@
 endmacro()
 
 
+
+##
+## Setup the patch command-line tool
+##
+
+if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
+  set(PATCH_EXECUTABLE ${CMAKE_SOURCE_DIR}/Resources/patch/patch.exe)
+else ()
+  find_program(PATCH_EXECUTABLE patch)
+  if (${PATCH_EXECUTABLE} MATCHES "PATCH_EXECUTABLE-NOTFOUND")
+    message(FATAL_ERROR "Please install the 'patch' standard command-line tool")
+  endif()
+endif()
+
+
+
 ##
 ## Check the existence of the required decompression tools
 ##
--- a/Resources/CMake/GoogleLogConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/GoogleLogConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -1,10 +1,15 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_GOOGLE_LOG)
   SET(GOOGLE_LOG_SOURCES_DIR ${CMAKE_BINARY_DIR}/glog-0.3.2)
-  DownloadPackage(
-    "897fbff90d91ea2b6d6e78c8cea641cc"
-    "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/glog-0.3.2.tar.gz"
-    "${GOOGLE_LOG_SOURCES_DIR}")
+  SET(GOOGLE_LOG_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/glog-0.3.2.tar.gz")
+  SET(GOOGLE_LOG_MD5 "897fbff90d91ea2b6d6e78c8cea641cc")
 
+  if (IS_DIRECTORY "${GOOGLE_LOG_SOURCES_DIR}")
+    set(FirstRun OFF)
+  else()
+    set(FirstRun ON)
+  endif()
+
+  DownloadPackage(${GOOGLE_LOG_MD5} ${GOOGLE_LOG_URL} "${GOOGLE_LOG_SOURCES_DIR}")
 
   # Glog 0.3.3 fails to build with old versions of MinGW, such as the
   # one installed on our Continuous Integration Server that runs
@@ -66,27 +71,44 @@
   if (CMAKE_COMPILER_IS_GNUCXX)
     if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase")
       execute_process(
-        COMMAND patch -N utilities.cc ${ORTHANC_ROOT}/Resources/Patches/glog-utilities-lsb.diff
+        COMMAND ${PATCH_EXECUTABLE} -N utilities.cc ${ORTHANC_ROOT}/Resources/Patches/glog-utilities-lsb.diff
         WORKING_DIRECTORY ${GOOGLE_LOG_SOURCES_DIR}/src
+        RESULT_VARIABLE Failure
         )
     else()
       execute_process(
-        COMMAND patch -N utilities.cc ${ORTHANC_ROOT}/Resources/Patches/glog-utilities.diff
+        COMMAND ${PATCH_EXECUTABLE} -N utilities.cc ${ORTHANC_ROOT}/Resources/Patches/glog-utilities.diff
         WORKING_DIRECTORY ${GOOGLE_LOG_SOURCES_DIR}/src
+        RESULT_VARIABLE Failure
         )
     endif()
 
+    if (Failure AND FirstRun)
+      message(FATAL_ERROR "Error while patching a file")
+    endif()
+
     # Patches for MinGW
     execute_process(
-      #COMMAND patch -N port.h ${ORTHANC_ROOT}/Resources/Patches/glog-port-h.diff 
-      COMMAND patch -N port.h ${ORTHANC_ROOT}/Resources/Patches/glog-port-h-v2.diff 
+      #COMMAND ${PATCH_EXECUTABLE} -N port.h ${ORTHANC_ROOT}/Resources/Patches/glog-port-h.diff 
+      COMMAND ${PATCH_EXECUTABLE} -N port.h ${ORTHANC_ROOT}/Resources/Patches/glog-port-h-v2.diff 
       WORKING_DIRECTORY ${GOOGLE_LOG_SOURCES_DIR}/src/windows
+      RESULT_VARIABLE Failure
       )
+
+    if (Failure AND FirstRun)
+      message(FATAL_ERROR "Error while patching a file")
+    endif()
+
     execute_process(
-      COMMAND patch -N port.cc ${ORTHANC_ROOT}/Resources/Patches/glog-port-cc.diff 
+      COMMAND ${PATCH_EXECUTABLE} -N port.cc ${ORTHANC_ROOT}/Resources/Patches/glog-port-cc.diff 
       WORKING_DIRECTORY ${GOOGLE_LOG_SOURCES_DIR}/src/windows
+      RESULT_VARIABLE Failure
       )
 
+    if (Failure AND FirstRun)
+      message(FATAL_ERROR "Error while patching a file")
+    endif()
+
   elseif (MSVC)
     # https://code.google.com/p/google-glog/issues/detail?id=117
     configure_file(
--- a/Resources/CMake/GoogleTestConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/GoogleTestConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -9,10 +9,10 @@
 
 elseif (STATIC_BUILD OR NOT USE_SYSTEM_GOOGLE_TEST)
   set(GTEST_SOURCES_DIR ${CMAKE_BINARY_DIR}/gtest-1.7.0)
-  DownloadPackage(
-    "2d6ec8ccdf5c46b05ba54a9fd1d130d7"
-    "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/gtest-1.7.0.zip"
-    "${GTEST_SOURCES_DIR}")
+  set(GTEST_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/gtest-1.7.0.zip")
+  set(GTEST_MD5 "2d6ec8ccdf5c46b05ba54a9fd1d130d7")
+
+  DownloadPackage(${GTEST_MD5} ${GTEST_URL} "${GTEST_SOURCES_DIR}")
 
   include_directories(
     ${GTEST_SOURCES_DIR}/include
--- a/Resources/CMake/JsonCppConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/JsonCppConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -1,9 +1,9 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_JSONCPP)
   set(JSONCPP_SOURCES_DIR ${CMAKE_BINARY_DIR}/jsoncpp-0.10.5)
-  DownloadPackage(
-    "db146bac5a126ded9bd728ab7b61ed6b"
-    "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/jsoncpp-0.10.5.tar.gz"
-    "${JSONCPP_SOURCES_DIR}")
+  set(JSONCPP_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/jsoncpp-0.10.5.tar.gz")
+  set(JSONCPP_MD5 "db146bac5a126ded9bd728ab7b61ed6b")
+
+  DownloadPackage(${JSONCPP_MD5} ${JSONCPP_URL} "${JSONCPP_SOURCES_DIR}")
 
   set(JSONCPP_SOURCES
     ${JSONCPP_SOURCES_DIR}/src/lib_json/json_reader.cpp
--- a/Resources/CMake/LibCurlConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/LibCurlConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -1,9 +1,9 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_CURL)
   SET(CURL_SOURCES_DIR ${CMAKE_BINARY_DIR}/curl-7.44.0)
-  DownloadPackage(
-    "cf46112b5151e2f1a3fd38439bdade23"
-    "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/curl-7.44.0.tar.gz"
-    "${CURL_SOURCES_DIR}")
+  SET(CURL_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/curl-7.44.0.tar.gz")
+  SET(CURL_MD5 "cf46112b5151e2f1a3fd38439bdade23")
+
+  DownloadPackage(${CURL_MD5} ${CURL_URL} "${CURL_SOURCES_DIR}")
 
   include_directories(
     ${CURL_SOURCES_DIR}/include
--- a/Resources/CMake/LibIconvConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/LibIconvConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -1,8 +1,8 @@
 set(LIBICONV_SOURCES_DIR ${CMAKE_BINARY_DIR}/libiconv-1.14)
-DownloadPackage(
-  "e34509b1623cec449dfeb73d7ce9c6c6"
-  "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/libiconv-1.14.tar.gz"
-  "${LIBICONV_SOURCES_DIR}")
+set(LIBICONV_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/libiconv-1.14.tar.gz")
+set(LIBICONV_MD5 "e34509b1623cec449dfeb73d7ce9c6c6")
+
+DownloadPackage(${LIBICONV_MD5} ${LIBICONV_URL} "${LIBICONV_SOURCES_DIR}")
 
 # https://groups.google.com/d/msg/android-ndk/AS1nkxnk6m4/EQm09hD1tigJ
 add_definitions(
--- a/Resources/CMake/LibPngConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/LibPngConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -1,9 +1,9 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_LIBPNG)
   SET(LIBPNG_SOURCES_DIR ${CMAKE_BINARY_DIR}/libpng-1.5.12)
-  DownloadPackage(
-    "8ea7f60347a306c5faf70b977fa80e28"
-    "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/libpng-1.5.12.tar.gz"
-    "${LIBPNG_SOURCES_DIR}")
+  SET(LIBPNG_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/libpng-1.5.12.tar.gz")
+  SET(LIBPNG_MD5 "8ea7f60347a306c5faf70b977fa80e28")
+
+  DownloadPackage(${LIBPNG_MD5} ${LIBPNG_URL} "${LIBPNG_SOURCES_DIR}")
 
   include_directories(
     ${LIBPNG_SOURCES_DIR}
--- a/Resources/CMake/LuaConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/LuaConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -1,9 +1,9 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_LUA)
   SET(LUA_SOURCES_DIR ${CMAKE_BINARY_DIR}/lua-5.1.5)
-  DownloadPackage(
-    "2e115fe26e435e33b0d5c022e4490567"
-    "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/lua-5.1.5.tar.gz"
-    "${LUA_SOURCES_DIR}")
+  SET(LUA_MD5 "2e115fe26e435e33b0d5c022e4490567")
+  SET(LUA_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/lua-5.1.5.tar.gz")
+
+  DownloadPackage(${LUA_MD5} ${LUA_URL} "${LUA_SOURCES_DIR}")
 
   add_definitions(
     #-DLUA_LIB=1
--- a/Resources/CMake/MongooseConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/MongooseConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -1,6 +1,12 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_MONGOOSE)
   SET(MONGOOSE_SOURCES_DIR ${CMAKE_BINARY_DIR}/mongoose)
 
+  if (IS_DIRECTORY "${MONGOOSE_SOURCES_DIR}")
+    set(FirstRun OFF)
+  else()
+    set(FirstRun ON)
+  endif()
+
   if (0)
     # Use Mongoose 3.1
     DownloadPackage(
@@ -24,10 +30,15 @@
 
   # Patch mongoose
   execute_process(
-    COMMAND patch -N mongoose.c ${MONGOOSE_PATCH}
+    COMMAND ${PATCH_EXECUTABLE} -N mongoose.c ${MONGOOSE_PATCH}
     WORKING_DIRECTORY ${MONGOOSE_SOURCES_DIR}
+    RESULT_VARIABLE Failure
     )
 
+  if (Failure AND FirstRun)
+    message(FATAL_ERROR "Error while patching a file")
+  endif()
+
   include_directories(
     ${MONGOOSE_SOURCES_DIR}
     )
@@ -81,5 +92,3 @@
 
   link_libraries(mongoose)
 endif()
-
-
--- a/Resources/CMake/OpenSslConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/OpenSslConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -1,9 +1,15 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_OPENSSL)
   SET(OPENSSL_SOURCES_DIR ${CMAKE_BINARY_DIR}/openssl-1.0.2d)
-  DownloadPackage(
-    "38dd619b2e77cbac69b99f52a053d25a"
-    "www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/openssl-1.0.2d.tar.gz"
-    "${OPENSSL_SOURCES_DIR}")
+  SET(OPENSSL_URL "www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/openssl-1.0.2d.tar.gz")
+  SET(OPENSSL_MD5 "38dd619b2e77cbac69b99f52a053d25a")
+
+  if (IS_DIRECTORY "${OPENSSL_SOURCES_DIR}")
+    set(FirstRun OFF)
+  else()
+    set(FirstRun ON)
+  endif()
+
+  DownloadPackage(${OPENSSL_MD5} ${OPENSSL_URL} "${OPENSSL_SOURCES_DIR}")
 
   if (NOT EXISTS "${OPENSSL_SOURCES_DIR}/include/PATCHED")
     if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
@@ -188,10 +194,14 @@
 
   elseif ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase")
     execute_process(
-      COMMAND patch -N ui_openssl.c ${ORTHANC_ROOT}/Resources/Patches/openssl-lsb.diff
+      COMMAND ${PATCH_EXECUTABLE} -N ui_openssl.c ${ORTHANC_ROOT}/Resources/Patches/openssl-lsb.diff
       WORKING_DIRECTORY ${OPENSSL_SOURCES_DIR}/crypto/ui
+      RESULT_VARIABLE Failure
       )
 
+    if (Failure AND FirstRun)
+      message(FATAL_ERROR "Error while patching a file")
+    endif()
   endif()
 
   #add_library(OpenSSL STATIC ${OPENSSL_SOURCES})
--- a/Resources/CMake/PugixmlConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/PugixmlConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -3,11 +3,10 @@
 
   if (STATIC_BUILD OR NOT USE_SYSTEM_PUGIXML)
     set(PUGIXML_SOURCES_DIR ${CMAKE_BINARY_DIR}/pugixml-1.4)
+    set(PUGIXML_MD5 "7c56c91cfe3ecdee248a8e4892ef5781")
+    set(PUGIXML_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/pugixml-1.4.tar.gz")
 
-    DownloadPackage(
-      "7c56c91cfe3ecdee248a8e4892ef5781"
-      "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/pugixml-1.4.tar.gz"
-      "${PUGIXML_SOURCES_DIR}")
+    DownloadPackage(${PUGIXML_MD5} ${PUGIXML_URL} "${PUGIXML_SOURCES_DIR}")
 
     include_directories(
       ${PUGIXML_SOURCES_DIR}/src
--- a/Resources/CMake/SQLiteConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/SQLiteConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -16,10 +16,10 @@
 
 if (SQLITE_STATIC)
   SET(SQLITE_SOURCES_DIR ${CMAKE_BINARY_DIR}/sqlite-amalgamation-3071300)
-  DownloadPackage(
-    "5fbeff9645ab035a1f580e90b279a16d"
-    "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/sqlite-amalgamation-3071300.zip"
-    "${SQLITE_SOURCES_DIR}")
+  SET(SQLITE_MD5 "5fbeff9645ab035a1f580e90b279a16d")
+  SET(SQLITE_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/sqlite-amalgamation-3071300.zip")
+
+  DownloadPackage(${SQLITE_MD5} ${SQLITE_URL} "${SQLITE_SOURCES_DIR}")
 
   set(SQLITE_SOURCES
     ${SQLITE_SOURCES_DIR}/sqlite3.c
--- a/Resources/CMake/ZlibConfiguration.cmake	Thu Aug 13 14:16:11 2015 +0200
+++ b/Resources/CMake/ZlibConfiguration.cmake	Thu Aug 13 15:25:38 2015 +0200
@@ -1,9 +1,9 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_ZLIB)
   SET(ZLIB_SOURCES_DIR ${CMAKE_BINARY_DIR}/zlib-1.2.7)
-  DownloadPackage(
-    "60df6a37c56e7c1366cca812414f7b85"
-    "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/zlib-1.2.7.tar.gz"
-    "${ZLIB_SOURCES_DIR}")
+  SET(ZLIB_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/zlib-1.2.7.tar.gz")
+  SET(ZLIB_MD5 "60df6a37c56e7c1366cca812414f7b85")
+
+  DownloadPackage(${ZLIB_MD5} ${ZLIB_URL} "${ZLIB_SOURCES_DIR}")
 
   include_directories(
     ${ZLIB_SOURCES_DIR}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Resources/ThirdParty/patch/NOTES.txt	Thu Aug 13 15:25:38 2015 +0200
@@ -0,0 +1,18 @@
+This is a precompiled version of the "patch" standard tool for Windows
+(version 2.5.9). It was cross-compiled as follows under Linux thanks
+to MinGW32:
+
+# wget ftp://ftp.gnu.org/gnu/patch/patch-2.5.9.tar.gz
+# tar xvfz patch-2.5.9.tar.gz
+# cd patch-2.5.9
+# ./configure --host=i586-mingw32msvc
+# make
+# cd ..
+# cp patch-2.5.9/patch.exe .
+# i586-mingw32msvc-strip ./patch.exe 
+
+
+URL to the project:
+http://savannah.gnu.org/projects/patch/
+
+License: GPLv3+ (GNU General Public License v3 or later)
Binary file Resources/ThirdParty/patch/patch.exe has changed