diff --git a/CMakeExternals/ITK-4.7.1-gcc-5.patch b/CMakeExternals/ITK-4.7.1-gcc-5.patch new file mode 100644 index 0000000000..3a1a4d6886 --- /dev/null +++ b/CMakeExternals/ITK-4.7.1-gcc-5.patch @@ -0,0 +1,45 @@ +diff -rupN original/Modules/ThirdParty/VNL/src/vxl/vcl/tests/test_preprocessor.cxx patch/Modules/ThirdParty/VNL/src/vxl/vcl/tests/test_preprocessor.cxx +--- original/Modules/ThirdParty/VNL/src/vxl/vcl/tests/test_preprocessor.cxx 2015-05-01 02:28:32.000000000 +0200 ++++ patch/Modules/ThirdParty/VNL/src/vxl/vcl/tests/test_preprocessor.cxx 2015-05-04 09:39:09.865493336 +0200 +@@ -101,6 +101,15 @@ int test_preprocessor_main(int /*argc*/, + ++minor_count; + #endif + ++#ifdef VCL_GCC_5 ++ ++major_count; ++#endif ++#ifdef VCL_GCC_50 ++ ++minor_count; ++#endif ++#ifdef VCL_GCC_51 ++ ++minor_count; ++#endif + + #ifdef VCL_VC + ++compiler_count; +diff -rupN original/Modules/ThirdParty/VNL/src/vxl/vcl/vcl_compiler.h patch/Modules/ThirdParty/VNL/src/vxl/vcl/vcl_compiler.h +--- original/Modules/ThirdParty/VNL/src/vxl/vcl/vcl_compiler.h 2015-05-01 02:28:32.000000000 +0200 ++++ patch/Modules/ThirdParty/VNL/src/vxl/vcl/vcl_compiler.h 2015-05-04 09:42:18.201517519 +0200 +@@ -126,6 +126,13 @@ + # else + # define VCL_GCC_40 + # endif ++# elif (__GNUC__==5) ++# define VCL_GCC_5 ++# if (__GNUC_MINOR__ > 0 ) ++# define VCL_GCC_51 ++# else ++# define VCL_GCC_50 ++# endif + # else + # error "Dunno about this gcc" + # endif +@@ -245,7 +252,7 @@ + + // This *needs* to come after vcl_config_headers.h + #if defined(__GNUC__) && !defined(__INTEL_COMPILER) +-# if defined(VCL_GCC_3) || defined(VCL_GCC_4) ++# if defined(VCL_GCC_3) || defined(VCL_GCC_4) || defined(VCL_GCC_5) + # define GNU_LIBSTDCXX_V3 1 + # elif !defined(GNU_LIBSTDCXX_V3) && defined(VCL_GCC_295) && VCL_CXX_HAS_HEADER_ISTREAM + // One difference between v2 and v3 is that the former has diff --git a/CMakeExternals/ITK.cmake b/CMakeExternals/ITK.cmake index f0b5cde7ba..5fd15cac6b 100644 --- a/CMakeExternals/ITK.cmake +++ b/CMakeExternals/ITK.cmake @@ -1,92 +1,101 @@ #----------------------------------------------------------------------------- # ITK #----------------------------------------------------------------------------- # Sanity checks if(DEFINED ITK_DIR AND NOT EXISTS ${ITK_DIR}) message(FATAL_ERROR "ITK_DIR variable is defined but corresponds to non-existing directory") endif() set(proj ITK) set(proj_DEPENDENCIES GDCM) if(MITK_USE_OpenCV) list(APPEND proj_DEPENDENCIES OpenCV) endif() if(MITK_USE_HDF5) list(APPEND proj_DEPENDENCIES HDF5) endif() set(ITK_DEPENDS ${proj}) if(NOT DEFINED ITK_DIR) set(additional_cmake_args ) if(MINGW) set(additional_cmake_args -DCMAKE_USE_WIN32_THREADS:BOOL=ON -DCMAKE_USE_PTHREADS:BOOL=OFF) endif() list(APPEND additional_cmake_args -DUSE_WRAP_ITK:BOOL=OFF ) if(MITK_USE_OpenCV) list(APPEND additional_cmake_args -DModule_ITKVideoBridgeOpenCV:BOOL=ON -DOpenCV_DIR:PATH=${OpenCV_DIR} ) endif() # Keep the behaviour of ITK 4.3 which by default turned on ITK Review # see MITK bug #17338 list(APPEND additional_cmake_args -DModule_ITKReview:BOOL=ON # for 4.7, the OpenJPEG is needed by review but the variable must be set -DModule_ITKOpenJPEG:BOOL=ON ) if(CTEST_USE_LAUNCHERS) list(APPEND additional_cmake_args "-DCMAKE_PROJECT_${proj}_INCLUDE:FILEPATH=${CMAKE_ROOT}/Modules/CTestUseLaunchers.cmake" ) endif() set(vcl_constexpr_patch) if(GCC_VERSION VERSION_LESS 4.8 AND GCC_VERSION VERSION_GREATER 4) set(vcl_constexpr_patch COMMAND ${PATCH_COMMAND} -N -p1 -i ${CMAKE_CURRENT_LIST_DIR}/ITK-4.7.1-gcc-4.6.patch ) endif() + # this will be in ITK 4.8, see https://issues.itk.org/jira/browse/ITK-3361 + set(vcl_gcc5_patch) + if(GCC_VERSION VERSION_GREATER 4) + set(vcl_gcc5_patch + COMMAND ${PATCH_COMMAND} -N -p1 -i ${CMAKE_CURRENT_LIST_DIR}/ITK-4.7.1-gcc-5.patch + ) + endif() + ExternalProject_Add(${proj} LIST_SEPARATOR ${sep} URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/InsightToolkit-4.7.1-20c0592.tar.gz URL_MD5 f778a5f0e297c06dc629c33ec45733dc # work with external GDCM PATCH_COMMAND ${PATCH_COMMAND} -N -p1 -i ${CMAKE_CURRENT_LIST_DIR}/ITK-4.7.1.patch ${vcl_constexpr_patch} + ${vcl_gcc5_patch} CMAKE_GENERATOR ${gen} CMAKE_ARGS ${ep_common_args} ${additional_cmake_args} -DBUILD_EXAMPLES:BOOL=OFF -DITK_USE_SYSTEM_GDCM:BOOL=ON -DGDCM_DIR:PATH=${GDCM_DIR} CMAKE_CACHE_ARGS ${ep_common_cache_args} CMAKE_CACHE_DEFAULT_ARGS ${ep_common_cache_default_args} DEPENDS ${proj_DEPENDENCIES} ) set(ITK_DIR ${ep_prefix}) mitkFunctionInstallExternalCMakeProject(${proj}) else() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") endif()