Commit 6b7ee1c2 authored by Gregory C. Sharp's avatar Gregory C. Sharp
Browse files

Initial commit; copied from plastimatch hash b3dcfe25dddea02b5b3d9adf97f054f4882b056b

parents
##-----------------------------------------------------------------------------
## Welcome to the Plastimatch CMakeLists.txt file
##-----------------------------------------------------------------------------
## See COPYRIGHT.TXT and LICENSE.TXT for copyright and license information
##-----------------------------------------------------------------------------
project (plastimatch)
## The version here should be equal to the "next release"
set (PLM_VERSION_MAJOR "1")
set (PLM_VERSION_MINOR "6")
set (PLM_VERSION_PATCH "6")
#set (PLM_RELEASE_VERSION FALSE)
set (PLM_RELEASE_VERSION TRUE)
##-----------------------------------------------------------------------------
## Set up CMake defaults
##-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 2.8.12)
# CMP0003: Libraries linked via full path no longer produce linker search
# paths.
if (POLICY CMP0003)
cmake_policy (SET CMP0003 NEW)
endif ()
# CMP0012: if() recognizes numbers and boolean constants.
# GCS 2012-03-04: This is added to suppress ITK warning
if (POLICY CMP0012)
cmake_policy (SET CMP0012 NEW)
endif ()
# Note: it is ok to use CMake FindZLIB for 2.8.4. Therefore setting
# policy CMP0017 to NEW is safe. But we do want the OLD policy for
# older CMake versions.
cmake_policy (SET CMP0017 NEW)
# CMP0054: Quoted variables no longer dereferenced
# GCS 2017-11-02: This is added to suppress Qt warnings
if (POLICY CMP0054)
cmake_policy (SET CMP0054 NEW)
endif ()
##-----------------------------------------------------------------------------
## CMake include files
##-----------------------------------------------------------------------------
set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
##-----------------------------------------------------------------------------
## Prevent in-source build
##-----------------------------------------------------------------------------
include (PreventInSourceBuilds)
##-----------------------------------------------------------------------------
## Macros and functions used in this script
##-----------------------------------------------------------------------------
include (PlmMacros)
include (SuperbuildOptions)
##-----------------------------------------------------------------------------
## Define default build type as Release
##-----------------------------------------------------------------------------
if (NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE "Release" CACHE STRING
"Choose the type of build, options are: Debug Release
RelWithDebInfo MinSizeRel." FORCE)
endif ()
sb_variable (CMAKE_BUILD_TYPE)
##-----------------------------------------------------------------------------
## Define plastimatch configuration variables
##-----------------------------------------------------------------------------
option (PLM_CONFIG_DISABLE_REG23 "Disable building REG-2-3" OFF)
# Compile and link options
sb_option (BUILD_SHARED_LIBS "Build plastimatch as shared library" OFF)
# Choose whether to build against included and/or superbuild libraries
# instead of system libraries
sb_option_enum (PLM_SYSTEM_DCMTK "Prefer DCMTK provided by operating system"
PREFERRED
NO PREFERRED YES)
sb_option (PLM_PREFER_SYSTEM_DLIB
"Prefer the system dlib over the included dlib" ON)
sb_option_enum (PLM_SYSTEM_ITK "Prefer ITK provided by operating system"
PREFERRED
NO PREFERRED YES)
# Installer Options
option (PLM_INSTALL_RPATH "Add full RPATH to install" OFF)
sb_option (PLM_CONFIG_INSTALL_LIBRARIES "Include libraries in install" ON)
# Packaging
option (PLM_PACKAGE_32BIT
"Set this when building 32-bit packages on a 64-bit machine" OFF)
option (PLM_PACKAGE_NSIS "Set to ON when packaging binaries with NSIS" OFF)
option (PLM_PACKAGE_WIX "Set to ON when packaging binaries with WIX" OFF)
sb_option (PLM_PACKAGE_LEGACY_CMAKE_CONFIG
"Use the old code for creating PlastimatchConfig.cmake and friends" OFF)
# Use legacy packaging if cmake version is < 3.0
if (CMAKE_VERSION VERSION_LESS "3.0")
set (PLM_PACKAGE_LEGACY_CMAKE_CONFIG ON CACHE BOOL "Use legacy packaging routines")
endif ()
# Override some options if library build is selected
if (PLM_CONFIG_LIBRARY_BUILD)
set (PLM_CONFIG_DISABLE_ISE ON)
set (PLM_CONFIG_DISABLE_FATM ON)
set (PLM_CONFIG_DISABLE_MONDOSHOT ON)
set (PLM_CONFIG_DISABLE_REG23 ON)
endif ()
##-----------------------------------------------------------------------------
## Setup important locations
##-----------------------------------------------------------------------------
sb_set (PLM_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
sb_set (PLM_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
# Offer the user the choice of overriding the installation directories
set (PLM_INSTALL_LIB_DIR lib CACHE PATH
"Installation directory for libraries")
set (PLM_INSTALL_BIN_DIR bin CACHE PATH
"Installation directory for executables")
set (PLM_INSTALL_INCLUDE_DIR include/plastimatch CACHE PATH
"Installation directory for header files")
if (WIN32 AND NOT CYGWIN)
set (DEF_INSTALL_CMAKE_DIR CMake)
else()
set (DEF_INSTALL_CMAKE_DIR lib/cmake/plastimatch)
endif()
set (PLM_INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH
"Installation directory for CMake files")
mark_as_advanced (
PLM_INSTALL_LIB_DIR
PLM_INSTALL_BIN_DIR
PLM_INSTALL_INCLUDE_DIR
PLM_INSTALL_CMAKE_DIR)
# GCS 2015-07-08. The below workflow is described here:
# http://www.cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file
# However, it creates install targets with absolute paths, which is
# not allowed for NSIS targets.
# It is possible this is resolved by newer documentation, which is referred
# by the above link:
# http://www.cmake.org/cmake/help/git-master/manual/cmake-packages.7.html#creating-packages
# Needs further investigation
# Make relative install paths absolute (needed later on)
if (PLM_PACKAGE_LEGACY_CMAKE_CONFIG)
foreach (p LIB BIN INCLUDE CMAKE)
set (var PLM_INSTALL_${p}_DIR)
if (NOT IS_ABSOLUTE "${${var}}")
set (${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
endif ()
endforeach ()
endif ()
##-----------------------------------------------------------------------------
## CMake include files
##-----------------------------------------------------------------------------
include (CTest)
include (CheckFunctionExists)
# http://www.cmake.org/pipermail/cmake/2008-December/025886.html
# http://www.cmake.org/Bug/view.php?id=15117
set (CMAKE_INSTALL_OPENMP_LIBRARIES ON)
if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_LESS 3.1)
include (InstallRequiredSystemLibrariesPatched)
else ()
include (InstallRequiredSystemLibraries)
endif ()
# Superbuild
include (ExternalProject)
##-----------------------------------------------------------------------------
## Disable spurious warnings on MSVC (version 8 & higher)
##-----------------------------------------------------------------------------
if (WIN32 AND NOT CYGWIN AND NOT MINGW)
add_definitions(
-D_CRT_FAR_MAPPINGS_NO_DEPRECATE
-D_CRT_IS_WCTYPE_NO_DEPRECATE
-D_CRT_MANAGED_FP_NO_DEPRECATE
-D_CRT_NONSTDC_NO_DEPRECATE
-D_CRT_SECURE_NO_DEPRECATE
-D_CRT_SECURE_NO_DEPRECATE_GLOBALS
-D_CRT_SETERRORMODE_BEEP_SLEEP_NO_DEPRECATE
-D_CRT_TIME_FUNCTIONS_NO_DEPRECATE
-D_CRT_VCCLRIT_NO_DEPRECATE
-D_SCL_SECURE_NO_DEPRECATE
# _SCL_SECURE_NO_DEPRECATE became _SCL_SECURE_NO_WARNINGS in VC9
-D_SCL_SECURE_NO_WARNINGS
)
endif ()
##-----------------------------------------------------------------------------
## Compile with -fPIC is needed for amd64 and other platforms
##-----------------------------------------------------------------------------
plm_set_pic_flags ()
##-----------------------------------------------------------------------------
## Extra paths
##-----------------------------------------------------------------------------
set (PLM_TESTING_SOURCE_DIR "${CMAKE_SOURCE_DIR}/Testing")
set (PLM_TESTING_DATA_DIR "${CMAKE_SOURCE_DIR}/Testing/Data")
set (PLM_TESTING_DOWNLOAD_DATA_DIR "${CMAKE_BINARY_DIR}/TestData")
set (PLM_BUILD_TESTING_DIR "${CMAKE_BINARY_DIR}/Testing")
##-----------------------------------------------------------------------------
## Set the math library
##-----------------------------------------------------------------------------
if (UNIX)
set (MATH_LIB -lm)
else ()
set (MATH_LIB)
endif ()
##-----------------------------------------------------------------------------
## Libdl
##-----------------------------------------------------------------------------
# Some systems such as pcBSD don't have libdl
find_library (LIBDL_FOUND dl)
##-----------------------------------------------------------------------------
## DCMTK
##-----------------------------------------------------------------------------
## If it is a modern version of DCMTK, such as found in Slicer build,
## it will have a working version of DCMTKConfig.cmake.
## Otherwise we use the old hacked version of FindDCMTK.cmake.
if (DCMTK_DIR)
if (EXISTS "${DCMTK_DIR}/DCMTKConfig.cmake")
find_package (DCMTK NO_MODULE)
endif ()
endif ()
if (NOT DCMTK_FOUND)
if (PLM_SYSTEM_DCMTK STREQUAL "YES")
#find_package (DCMTK NO_MODULE REQUIRED)
find_package (DCMTK_legacy REQUIRED)
elseif (PLM_SYSTEM_DCMTK STREQUAL "PREFERRED")
#find_package (DCMTK NO_MODULE QUIET)
find_package (DCMTK_legacy QUIET)
endif ()
endif ()
if (NOT DCMTK_FOUND AND NOT PLM_SYSTEM_DCMTK STREQUAL "YES")
include (SuperBuild/External_DCMTK.cmake)
endif ()
if (DCMTK_FOUND)
message (STATUS "DCMTK version ${DCMTK_VERSION} found.")
else ()
message (STATUS "DCMTK not found.")
endif ()
# Workaround for CMake bug in FindDCMTK. This was fixed some time between
# 3.4.3 and 3.7.2
# if (CMAKE_VERSION VERSION_LESS "3.7.2" AND DCMTK_ofstd_INCLUDE_DIR)
# get_filename_component(_tmp ${DCMTK_ofstd_INCLUDE_DIR} PATH)
# get_filename_component(_tmp ${_tmp} PATH)
# list (APPEND DCMTK_INCLUDE_DIRS ${_tmp})
# endif ()
##-----------------------------------------------------------------------------
## Search for libraries
##-----------------------------------------------------------------------------
find_package (Etags)
#find_package (Fann)
find_package (FFTW)
find_package (Git)
find_package (Kaze)
find_package (Liblbfgs)
find_package (NLopt)
if (PLM_CONFIG_ENABLE_MATLAB)
find_package (Matlab)
else ()
set (MATLAB_FOUND false)
endif ()
find_package (Octave)
if (NOT PLM_CONFIG_DISABLE_OPENCL)
find_package (OpenCL)
endif ()
if (NOT PLM_CONFIG_DISABLE_OPENMP)
find_package (OpenMP)
endif ()
if (PLM_CONFIG_DEBIAN_BUILD)
set (SQLITE_FOUND false)
else ()
find_package (SQLite)
endif ()
if (NOT PLM_CONFIG_DISABLE_SSE2)
find_package (SSE) # SSE Extensions for CPU
else ()
set (SSE2_FOUND false)
endif ()
find_package (TR1)
find_package (wxWidgets)
##-----------------------------------------------------------------------------
## Special CUDA processing
##-----------------------------------------------------------------------------
if (PLM_CONFIG_DISABLE_CUDA)
set (CUDA_FOUND false)
else ()
find_package (CUDA_wrap)
set (CUDA_FOUND ${CUDA_FOUND} CACHE BOOL "Did we find cuda?")
if (CUDA_FOUND)
cuda_include_directories (${CMAKE_CURRENT_SOURCE_DIR})
endif ()
endif ()
##-----------------------------------------------------------------------------
## ITK
##-----------------------------------------------------------------------------
if (PLM_SYSTEM_ITK STREQUAL "YES")
find_package (ITK REQUIRED)
elseif (PLM_SYSTEM_ITK STREQUAL "PREFERRED")
find_package (ITK QUIET)
endif ()
if (NOT ITK_FOUND AND NOT PLM_SYSTEM_ITK STREQUAL "YES")
include (SuperBuild/External_ITK.cmake)
if (NOT PLM_CONFIG_ENABLE_SUPERBUILD)
find_package (ITK REQUIRED)
endif ()
endif ()
message (STATUS "ITK_FOUND = ${ITK_FOUND}")
if (ITK_FOUND)
# GCS 2016-10-20
# The GDCM USE file spews out copious extraneous warnings on Debian.
# If we are not using GDCM, this might be avoided by setting
# ITK_USE_SYSTEM_GDCM to FALSE. However, this has the undesirable
# effect of removing gdcm includes from include list and gdcm libraries
# from library list.
#if (DCMTK_FOUND)
# set (ITK_USE_SYSTEM_GDCM FALSE)
#endif ()
include (${ITK_USE_FILE})
if (NOT ITK_VERSION)
set (ITK_VERSION
"${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")
endif ()
if (${ITK_VERSION} VERSION_LESS "3.16.0")
message (FATAL_ERROR
"Fatal Error. ITK must be version 3.16.0 or higher")
endif ()
if (${ITK_VERSION_MAJOR} VERSION_EQUAL "3")
if (NOT ITK_USE_REVIEW)
message (FATAL_ERROR
"Fatal Error. ITK must be compiled with ITK_USE_REVIEW set to ON")
endif ()
set (ITK_LIBRARIES ${ITK_LIBRARIES} ITKIOReview)
elseif (${ITK_VERSION_MAJOR} VERSION_EQUAL "4")
if (${ITK_VERSION} VERSION_LESS "4.1")
message (FATAL_ERROR
"Fatal Error. ITK 4 must be 4.1 or greater")
endif ()
else ()
message (FATAL_ERROR
"Fatal Error. ITK version should be either 3.X or 4.X")
endif ()
message (STATUS "ITK_VERSION = ${ITK_VERSION} found")
else ()
message (STATUS "ITK_VERSION unknown")
endif ()
##-----------------------------------------------------------------------------
## GDCM
##-----------------------------------------------------------------------------
if (NOT DCMTK_FOUND AND ITK_FOUND)
# The default case is that ITK_USE_SYSTEM_GDCM was used,
# the gdcm use file was already loaded from UseITK.cmake, and therefore
# GDCM_VERSION is already known. If this is not the case, we look
# in the ITK build dir for the header file which contains the version.
if (NOT GDCM_VERSION)
unset (GDCM_CONFIGURE_H CACHE)
find_file (GDCM_CONFIGURE_H gdcmConfigure.h PATHS ${ITK_INCLUDE_DIRS})
if (GDCM_CONFIGURE_H)
file (STRINGS "${GDCM_CONFIGURE_H}"
GDCM_VERSION
REGEX "^#define GDCM_VERSION *\"([^\"]*)\"")
string (REGEX REPLACE "[^\"]*\"([^\"]*)\".*" "\\1"
GDCM_VERSION "${GDCM_VERSION}")
endif ()
# When GDCM config file does not configure correctly, the value of
# the version might be "@GDCM_VERSION@".
if ("${GDCM_VERSION}" STREQUAL "\@GDCM_VERSION@")
set (GDCM_VERSION "2.0")
endif ()
set (GDCM_FOUND 1)
endif ()
if (GDCM_VERSION)
message (STATUS "GDCM version ${GDCM_VERSION} found")
else ()
message (FATAL_ERROR "Found ITK, but didn't find GDCM")
endif ()
if (GDCM_VERSION VERSION_LESS "2.0")
set (GDCM_VERSION_1 1)
else ()
set (GDCM_VERSION_2 1)
endif ()
else ()
# No itk? Use dcmtk instead
endif ()
##-----------------------------------------------------------------------------
## VTK
##-----------------------------------------------------------------------------
if (NOT PLM_CONFIG_DISABLE_REG23)
find_package (VTK)
if (VTK_FOUND)
message (STATUS "VTK version ${VTK_VERSION}")
else ()
message (STATUS "VTK not found")
endif ()
# GCS 2012-05-14: Including VTK_USE_FILE causes VTK to pollute the
# include directory list, which causes cuda to fail to compile
#if (VTK_FOUND)
# include (${VTK_USE_FILE})
#endif ()
endif ()
##-----------------------------------------------------------------------------
## QT
##-----------------------------------------------------------------------------
if (PLM_CONFIG_DISABLE_QT)
set (QT4_FOUND false)
set (QT5_FOUND false)
else ()
# In VS2013 with win7, QtWebkit was not able to be compiled.(.lib file
# is not generated.) QtWebkit is only used by Reg23.
if (PLM_CONFIG_DISABLE_REG23)
find_package (Qt4 4.6.3 QUIET COMPONENTS QtCore QtGui QtDesigner)
else ()
message (STATUS "In VS2013 w/ Qt4.8.6, QtWebkit couldn't be compiled. Check PLM_CONFIG_DISABLE_REG23 if you don't want REG23 and there is compiling error.")
find_package (Qt4 4.6.3 QUIET COMPONENTS QtCore QtGui QtWebKit QtDesigner)
endif ()
find_package (Qt5 QUIET COMPONENTS Core Gui Designer Network Widgets)
endif ()
if (QT4_FOUND)
# Test Qt install to make sure it can build and run a test program
include (CheckQt)
check_qt (QT_TEST_COMPILE_SUCCEEDED)
if (NOT QT_TEST_COMPILE_SUCCEEDED)
message (STATUS "Qt failed to compile a test program")
set (QT4_FOUND false)
endif ()
endif ()
if (QT4_FOUND)
# Debian qtchooser is broken, so we disable.
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=730423
execute_process (
COMMAND
rcc
RESULT_VARIABLE rcc_result
OUTPUT_VARIABLE rcc_output
ERROR_VARIABLE rcc_error)
if (${rcc_error} MATCHES "could not find a Qt installation")
message (STATUS "Sorry, your Qt build environment is broken")
set (QT4_FOUND FALSE)
else ()
message (STATUS "Looking for Qt4 - found")
#include (${QT_USE_FILE})
endif ()
else ()
message (STATUS "Looking for Qt4 - not found")
endif ()
if (Qt5_FOUND)
message (STATUS "Looking for Qt5 - found")
else ()
message (STATUS "Looking for Qt5 - not found")
endif ()
##-----------------------------------------------------------------------------
## Configure include files
##-----------------------------------------------------------------------------
set (PLM_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
##-----------------------------------------------------------------------------
## Subdirectories
##-----------------------------------------------------------------------------
add_subdirectory (src)
##-----------------------------------------------------------------------------
## Additional install files
##-----------------------------------------------------------------------------
if (ITK_FOUND)
file (GLOB DLLFILES "${ITK_DIR}/bin/release/*.dll")
if (DLLFILES)
install (FILES ${DLLFILES} DESTINATION bin)
endif ()
endif ()
#Add QT dlls to Install
if (QT4_FOUND)
if (UNIX)
# YKP: should be implemented soon
else ()
set (QT4_CORE_DLL_WIN "${QT_LIBRARY_DIR}/QtCore4.dll")
set (QT4_GUI_DLL_WIN "${QT_LIBRARY_DIR}/QtGui4.dll")
if (EXISTS "${QT4_CORE_DLL_WIN}")
install (FILES "${QT4_CORE_DLL_WIN}" DESTINATION bin)
endif ()
if (EXISTS "${QT4_GUI_DLL_WIN}")
install (FILES "${QT4_GUI_DLL_WIN}" DESTINATION bin)
endif ()
endif ()
endif ()
#Add FFT dlls to Install
if (FFTW_FOUND)
if (EXISTS "${FFTW_DIR}/libfftw3-3.dll")
install (FILES "${FFTW_DIR}/libfftw3-3.dll" DESTINATION bin)
endif ()
#YKP 05/27/2016: no need of libfftw3f-3.dll and libfftw3l-3.dll?
endif ()
# Add sample directory/files to Install Only for windows users
if (WIN32 OR WIN64)
set (PLM_WINDOWS_INSTALL_DIR "${CMAKE_SOURCE_DIR}/extra/windows-install")
install (DIRECTORY "${PLM_WINDOWS_INSTALL_DIR}/sample" DESTINATION bin)
install (FILES "${PLM_WINDOWS_INSTALL_DIR}/launch_cmd_prompt.bat" DESTINATION bin)
endif ()
# JAS 2011.01.24
# I have moved the documentation DESTINATION from
# /usr/doc to /usr/share/doc/plastimatch/ for Linux/UNIX
if (UNIX)
# FHS compliant path for Linux/UNIX
set (DOC_DESTINATION "share/doc/plastimatch")
else ()
# Just throw TXTs into a doc folder for Windows
set (DOC_DESTINATION "doc")
endif ()
install (FILES
README.TXT
src/plastimatch/COPYRIGHT.TXT
DESTINATION ${DOC_DESTINATION}
)
# Debian doesn't like INSTALL, LICENSE included in documentation
if (NOT PLM_CONFIG_DEBIAN_BUILD)
install (FILES
INSTALL.TXT
src/plastimatch/LICENSE.TXT
DESTINATION ${DOC_DESTINATION}
)
endif ()
##-----------------------------------------------------------------------------
## MAKE UNINSTALL
##-----------------------------------------------------------------------------
if (UNIX)
configure_file (
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target (uninstall COMMAND
${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif ()
##---------------------------------------------------------------------------
## See COPYRIGHT.TXT and LICENSE.TXT for copyright and license information
##---------------------------------------------------------------------------
macro (check_char_sign _out_var)
try_run (RUN_RESULT_VAR COMPILE_RESULT_VAR
${PLM_BINARY_DIR}
${PLM_SOURCE_DIR}/cmake/char_is_signed.cxx
RUN_OUTPUT_VARIABLE ${_out_var})
endmacro ()
##---------------------------------------------------------------------------
## See COPYRIGHT.TXT and LICENSE.TXT for copyright and license information
##---------------------------------------------------------------------------
macro (check_epsilon _out_var)
try_run (RUN_RESULT_VAR COMPILE_RESULT_VAR
${PLM_BINARY_DIR}
${PLM_SOURCE_DIR}/cmake/test_eps.cxx
RUN_OUTPUT_VARIABLE ${_out_var})
endmacro ()
##---------------------------------------------------------------------------
## See COPYRIGHT.TXT and LICENSE.TXT for copyright and license information
##---------------------------------------------------------------------------
include (CheckCXXSourceCompiles)
macro (CHECK_QT QT_TEST_COMPILE_SUCCEEDED)
# It took forever to get the quoting correct on this.
# Thanks to sakra @ http://stackoverflow.com/questions/25726853
try_compile (COMPILE_RESULT_VAR
${CMAKE_BINARY_DIR}/helpme
${CMAKE_SOURCE_DIR}/cmake/test_qt.cxx
CMAKE_FLAGS
"-DINCLUDE_DIRECTORIES:STRING=${QT_INCLUDES}"
"-DLINK_LIBRARIES:STRING=${QT_QTCORE_LIBRARIES}"
OUTPUT_VARIABLE OUT_VAR
)
set (${QT_TEST_COMPILE_SUCCEEDED} ${COMPILE_RESULT_VAR})
endmacro ()
##-----------------------------------------------------------------------------
## Patch stock ITK 3.20.0 to make it work on gcc 4.6
##-----------------------------------------------------------------------------
execute_process (