diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ad7bcfe60ba851ba023cf7e41d26d10aae3f86e..14363fdefbf561e64bc1398d782424ceddf9e5da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -719,6 +719,12 @@ if(Slicer_USE_QtTesting) find_package(QtTesting REQUIRED) endif() +#----------------------------------------------------------------------------- +# ZLIB +#----------------------------------------------------------------------------- +find_package(ZLIB REQUIRED) +include_directories(BEFORE ${ZLIB_INCLUDE_DIRS} ) + #----------------------------------------------------------------------------- # qMidasAPI #----------------------------------------------------------------------------- diff --git a/Libs/FreeSurfer/CMakeLists.txt b/Libs/FreeSurfer/CMakeLists.txt index e0f2f2ca7fd003d2603eb1bb6ea6913935fde3db..36dc65063ffe0fa2b00f00220b53ac982f540591 100644 --- a/Libs/FreeSurfer/CMakeLists.txt +++ b/Libs/FreeSurfer/CMakeLists.txt @@ -80,7 +80,7 @@ set(VTK_LIBRARIES vtkCommon vtkFiltering vtkIO) set(libs ${VTK_LIBRARIES} - vtkzlib + ${ZLIB_LIBRARIES} ) target_link_libraries(${lib_name} ${libs}) diff --git a/SuperBuild/External_DCMTK.cmake b/SuperBuild/External_DCMTK.cmake index 3b6e2734acc4f6ca43f62d58fe08909fcb948db3..4db743f8deffad42a9437c52a190eba4c99c5af2 100644 --- a/SuperBuild/External_DCMTK.cmake +++ b/SuperBuild/External_DCMTK.cmake @@ -7,7 +7,7 @@ endif() set(${CMAKE_CURRENT_LIST_FILENAME}_FILE_INCLUDED 1) # Set dependency list -set(DCMTK_DEPENDENCIES "") +set(DCMTK_DEPENDENCIES "zlib") # Include dependent projects if any SlicerMacroCheckExternalProjectDependency(DCMTK) diff --git a/SuperBuild/External_ITKv4.cmake b/SuperBuild/External_ITKv4.cmake index 3bbefa442864c90d00ff3009554b44caf809667d..993455b4cf256bd7781b9db0b2a883d2b040a955 100644 --- a/SuperBuild/External_ITKv4.cmake +++ b/SuperBuild/External_ITKv4.cmake @@ -12,7 +12,7 @@ if(DEFINED ITK_DIR AND NOT EXISTS ${ITK_DIR}) endif() # Set dependency list -set(ITKv4_DEPENDENCIES "") +set(ITKv4_DEPENDENCIES "zlib") if(Slicer_BUILD_DICOM_SUPPORT) list(APPEND ITKv4_DEPENDENCIES DCMTK) endif() @@ -107,6 +107,10 @@ if(NOT DEFINED ITK_DIR) -DITK_USE_SYSTEM_DCMTK:BOOL=${Slicer_BUILD_DICOM_SUPPORT} ${ITKv4_DCMTK_ARGS} ${ITKv4_WRAP_ARGS} + -DITK_USE_SYSTEM_ZLIB:BOOL=ON + -DZLIB_ROOT:PATH=${SLICER_ZLIB_ROOT} + -DZLIB_INCLUDE_DIR:PATH=${SLICER_ZLIB_INCLUDE_DIR} + -DZLIB_LIBRARY:FILEPATH=${SLICER_ZLIB_LIBRARY} INSTALL_COMMAND "" DEPENDS ${ITKv4_DEPENDENCIES} diff --git a/SuperBuild/External_LibArchive.cmake b/SuperBuild/External_LibArchive.cmake index d3f000d922d24f1b6fb1ac4159d38e78a58f2714..5f3c3496d46f150ddee8a37766757482e383ae00 100644 --- a/SuperBuild/External_LibArchive.cmake +++ b/SuperBuild/External_LibArchive.cmake @@ -12,7 +12,7 @@ if(DEFINED LibArchive_DIR AND NOT EXISTS ${LibArchive_DIR}) endif() # Set dependency list -set(LibArchive_DEPENDENCIES "") +set(LibArchive_DEPENDENCIES "zlib") if(WIN32) list(APPEND LibArchive_DEPENDENCIES zlib) endif() @@ -29,14 +29,6 @@ if(NOT DEFINED LibArchive_DIR) # of LibArchive, see the repository for earlier revisions of this file. # set(ADDITIONAL_CMAKE_ARGS) - if(WIN32) - # CMake arguments specific to LibArchive >= 2.8.4 - list(APPEND ADDITIONAL_CMAKE_ARGS - -DZLIB_INCLUDE_DIR:PATH=${zlib_DIR}/include - -DZLIB_LIBRARY:FILEPATH=${zlib_DIR}/lib/zlib.lib - -DZLIB_ROOT:PATH=${zlib_DIR} - ) - endif() # CMake arguments specific to LibArchive >= 2.8.4 list(APPEND ADDITIONAL_CMAKE_ARGS -DBUILD_TESTING:BOOL=OFF @@ -77,6 +69,9 @@ if(NOT DEFINED LibArchive_DIR) -DENABLE_TAR:BOOL=OFF -DENABLE_TEST:BOOL=OFF -DENABLE_XATTR:BOOL=OFF + -DZLIB_ROOT:PATH=${SLICER_ZLIB_ROOT} + -DZLIB_INCLUDE_DIR:PATH=${SLICER_ZLIB_INCLUDE_DIR} + -DZLIB_LIBRARY:FILEPATH=${SLICER_ZLIB_LIBRARY} ${ADDITIONAL_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= DEPENDS diff --git a/SuperBuild/External_VTK.cmake b/SuperBuild/External_VTK.cmake index 5e1053d9ad0c0198a1c658b09bae2c1d81c394a2..5ee0630927ede4652d60658af9c9a4ba266d0f18 100644 --- a/SuperBuild/External_VTK.cmake +++ b/SuperBuild/External_VTK.cmake @@ -16,7 +16,7 @@ if(DEFINED VTK_SOURCE_DIR AND NOT EXISTS ${VTK_SOURCE_DIR}) endif() # Set dependency list -set(VTK_DEPENDENCIES "") +set(VTK_DEPENDENCIES "zlib") if (Slicer_USE_PYTHONQT) list(APPEND VTK_DEPENDENCIES python) endif() @@ -164,6 +164,10 @@ if(NOT DEFINED VTK_DIR OR NOT DEFINED VTK_SOURCE_DIR) ${VTK_PYTHON_ARGS} ${VTK_QT_ARGS} ${VTK_MAC_ARGS} + -DVTK_USE_SYSTEM_ZLIB:BOOL=ON + -DZLIB_ROOT:PATH=${SLICER_ZLIB_ROOT} + -DZLIB_INCLUDE_DIR:PATH=${SLICER_ZLIB_INCLUDE_DIR} + -DZLIB_LIBRARY:FILEPATH=${SLICER_ZLIB_LIBRARY} INSTALL_COMMAND "" DEPENDS ${VTK_DEPENDENCIES} diff --git a/SuperBuild/External_python.cmake b/SuperBuild/External_python.cmake index 7b97d10022d0f116f0f279b694ca047bc38171ed..5d25e965cd851b098a490ec27275ca21e8971051 100644 --- a/SuperBuild/External_python.cmake +++ b/SuperBuild/External_python.cmake @@ -7,7 +7,7 @@ endif() set(${CMAKE_CURRENT_LIST_FILENAME}_FILE_INCLUDED 1) # Set dependency list -set(python_DEPENDENCIES CTKAPPLAUNCHER) +set(python_DEPENDENCIES zlib CTKAPPLAUNCHER) if(Slicer_USE_PYTHONQT_WITH_TCL) if(WIN32) list(APPEND python_DEPENDENCIES tcl) @@ -91,8 +91,8 @@ if(NOT DEFINED python_DIR) set(CMAKE_CFG_INTDIR "Release") ExternalProject_Add(${proj} - GIT_REPOSITORY "${git_protocol}://github.com/davidsansome/python-cmake-buildsystem.git" - GIT_TAG "60ee8280184b5c2ace915777193f457df57f605a" + GIT_REPOSITORY "${git_protocol}://github.com/hjmjohnson/python-cmake-buildsystem.git" + GIT_TAG "ac696dc5ee868c8ce5f75dd5ee4fda687104b422" "${${PROJECT_NAME}_EP_UPDATE_IF_GREATER_288}" SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj} BINARY_DIR ${proj}-build @@ -108,7 +108,19 @@ if(NOT DEFINED python_DIR) #-DBUILD_TESTING:BOOL=OFF -DBUILD_SHARED:BOOL=ON -DBUILD_STATIC:BOOL=OFF - -DUSE_SYSTEM_LIBRARIES:BOOL=OFF + -DUSE_SYSTEM_LIBRARIES:BOOL=ON + -DUSE_SYSTEM_Curses:BOOL=OFF + -DUSE_SYSTEM_DB:BOOL=OFF + -DUSE_SYSTEM_EXPAT:BOOL=OFF + -DUSE_SYSTEM_GDBM:BOOL=OFF + -DUSE_SYSTEM_OpenSSL:BOOL=OFF + -DUSE_SYSTEM_READLINE:BOOL=OFF + -DUSE_SYSTEM_SQLITE3:BOOL=OFF + -DUSE_SYSTEM_TCL:BOOL=OFF + -DUSE_SYSTEM_ZLIB:BOOL=ON + -DZLIB_ROOT:PATH=${SLICER_ZLIB_ROOT} + -DZLIB_INCLUDE_DIR:PATH=${SLICER_ZLIB_INCLUDE_DIR} + -DZLIB_LIBRARY:FILEPATH=${SLICER_ZLIB_LIBRARY} ${python_TCL_EXTERNAL_PROJECT_ARGS} DEPENDS python-source ${python_DEPENDENCIES} diff --git a/SuperBuild/External_teem.cmake b/SuperBuild/External_teem.cmake index 0c78822d8ae96c18c751471b635f7b94984e98b8..0fcbd022078afb20f3248349fdf43f1543ccb92f 100644 --- a/SuperBuild/External_teem.cmake +++ b/SuperBuild/External_teem.cmake @@ -7,7 +7,7 @@ endif() set(${CMAKE_CURRENT_LIST_FILENAME}_FILE_INCLUDED 1) # Set dependency list -set(teem_DEPENDENCIES VTK) +set(teem_DEPENDENCIES zlib VTK) # Include dependent projects if any SlicerMacroCheckExternalProjectDependency(teem) @@ -31,13 +31,13 @@ endif() #message(STATUS "${__indent}Adding project ${proj}") if(WIN32) - set(teem_ZLIB_LIBRARY ${VTK_DIR}/bin/${CMAKE_CFG_INTDIR}/vtkzlib.lib) +#set(teem_ZLIB_LIBRARY ${VTK_DIR}/bin/${CMAKE_CFG_INTDIR}/vtkzlib.lib) set(teem_PNG_LIBRARY ${VTK_DIR}/bin/${CMAKE_CFG_INTDIR}/vtkpng.lib) elseif(APPLE) - set(teem_ZLIB_LIBRARY ${VTK_DIR}/bin/libvtkzlib.dylib) +#set(teem_ZLIB_LIBRARY ${VTK_DIR}/bin/libvtkzlib.dylib) set(teem_PNG_LIBRARY ${VTK_DIR}/bin/libvtkpng.dylib) else() - set(teem_ZLIB_LIBRARY ${VTK_DIR}/bin/libvtkzlib.so) +#set(teem_ZLIB_LIBRARY ${VTK_DIR}/bin/libvtkzlib.so) set(teem_PNG_LIBRARY ${VTK_DIR}/bin/libvtkpng.so) endif() @@ -67,14 +67,15 @@ ExternalProject_Add(${proj} -DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF -DTeem_PTHREAD:BOOL=OFF -DTeem_BZIP2:BOOL=OFF - -DTeem_ZLIB:BOOL=ON -DTeem_PNG:BOOL=ON - -DTeem_VTK_MANGLE:BOOL=ON -DTeem_VTK_TOOLKITS_IPATH:FILEPATH=${VTK_DIR} - -DZLIB_INCLUDE_DIR:PATH=${VTK_SOURCE_DIR}/Utilities - -DTeem_VTK_ZLIB_MANGLE_IPATH:PATH=${VTK_SOURCE_DIR}/Utilities/vtkzlib - -DTeem_ZLIB_DLLCONF_IPATH:PATH=${VTK_DIR}/Utilities - -DZLIB_LIBRARY:FILEPATH=${teem_ZLIB_LIBRARY} + -DTeem_ZLIB:BOOL=ON + -DZLIB_ROOT:PATH=${SLICER_ZLIB_ROOT} + -DZLIB_INCLUDE_DIR:PATH=${SLICER_ZLIB_INCLUDE_DIR} + -DZLIB_LIBRARY:FILEPATH=${SLICER_ZLIB_LIBRARY} + -DTeem_VTK_MANGLE:BOOL=OFF ## NOT NEEDED FOR EXTERNAL ZLIB outside of vtk + #-DTeem_VTK_ZLIB_MANGLE_IPATH:PATH=${VTK_SOURCE_DIR}/Utilities/vtkzlib + #-DTeem_ZLIB_DLLCONF_IPATH:PATH=${VTK_DIR}/Utilities -DPNG_PNG_INCLUDE_DIR:PATH=${VTK_SOURCE_DIR}/Utilities/vtkpng -DTeem_PNG_DLLCONF_IPATH:PATH=${VTK_DIR}/Utilities -DPNG_LIBRARY:FILEPATH=${teem_PNG_LIBRARY} diff --git a/SuperBuild/External_zlib.cmake b/SuperBuild/External_zlib.cmake index e8f350cdfec4940471e81f860aeaf2be5553b76c..add7880191612d544b3f718dd8f9e0bfea445f69 100644 --- a/SuperBuild/External_zlib.cmake +++ b/SuperBuild/External_zlib.cmake @@ -6,6 +6,11 @@ if(${CMAKE_CURRENT_LIST_FILENAME}_FILE_INCLUDED) endif() set(${CMAKE_CURRENT_LIST_FILENAME}_FILE_INCLUDED 1) +# Sanity checks +if(DEFINED zlib_DIR AND NOT EXISTS ${zlib_DIR}) + message(FATAL_ERROR "zlib_DIR variable is defined but corresponds to non-existing directory") +endif() + # Set dependency list set(zlib_DEPENDENCIES "") @@ -13,7 +18,7 @@ set(zlib_DEPENDENCIES "") SlicerMacroCheckExternalProjectDependency(zlib) set(proj zlib) -if(NOT DEFINED zlib_DIR) +if(NOT DEFINED ${proj}_DIR) #message(STATUS "${__indent}Adding project ${proj}") set(ADDITIONAL_CMAKE_ARGS) @@ -39,25 +44,33 @@ if(NOT DEFINED zlib_DIR) GIT_REPOSITORY "${git_protocol}://github.com/commontk/zlib.git" GIT_TAG "66a753054b356da85e1838a081aa94287226823e" "${${PROJECT_NAME}_EP_UPDATE_IF_GREATER_288}" - SOURCE_DIR zlib - BINARY_DIR zlib-build - INSTALL_DIR zlib-install + SOURCE_DIR ${proj} + BINARY_DIR ${proj}-build + INSTALL_DIR ${proj}-install CMAKE_GENERATOR ${gen} CMAKE_ARGS + ## CXX should not be needed, but it a cmake default test + -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS:STRING=${zlib_c_flags} ${CMAKE_OSX_EXTERNAL_PROJECT_ARGS} -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - # -DCMAKE_CXX_FLAGS:STRING=${ep_common_cxx_flags} # Not used - -DCMAKE_C_FLAGS:STRING=${zlib_c_flags} - -DZLIB_MANGLE_PREFIX:STRING=la_zlib_ + -DZLIB_MANGLE_PREFIX:STRING=slicer_zlib_ ${ADDITIONAL_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= DEPENDS ${zlib_DEPENDENCIES} ) set(zlib_DIR ${CMAKE_BINARY_DIR}/zlib-install) + set(SLICER_ZLIB_ROOT ${zlib_DIR}) + set(SLICER_ZLIB_INCLUDE_DIR ${zlib_DIR}/include ) + if(WIN32) + set(SLICER_ZLIB_LIBRARY ${zlib_DIR}/lib/zlib.lib ) + else() + set(SLICER_ZLIB_LIBRARY ${zlib_DIR}/lib/libzlib.a ) + endif() else() # The project is provided using zlib_DIR, nevertheless since other project may depend on zlib, # let's add an 'empty' one SlicerMacroEmptyExternalProject(${proj} "${zlib_DEPENDENCIES}") endif() -