diff --git a/CMakeExternals/GenerateDefaultCMakeBuildSystem.cmake b/CMakeExternals/GenerateDefaultCMakeBuildSystem.cmake index 4d7822e027..fb7dbac393 100644 --- a/CMakeExternals/GenerateDefaultCMakeBuildSystem.cmake +++ b/CMakeExternals/GenerateDefaultCMakeBuildSystem.cmake @@ -1,53 +1,53 @@ set(ProjConfig.cmake.in " -set(${proj}_INCLUDE_DIRS @${proj}_INCLUDE_DIRS@) +set(${proj}_INCLUDE_DIRS \"@${proj}_INCLUDE_DIRS@\") set(${proj}_LIBRARIES @${proj}_LIBRARIES@) if(NOT TARGET ${proj_target}) - include(@${proj}_BINARY_DIR@/${proj}Exports.cmake) + include(\"@${proj}_BINARY_DIR@/${proj}Exports.cmake\") endif() ") set(ProjConfigVersion.cmake.in " # The created file sets PACKAGE_VERSION_EXACT if the current version string and # the requested version string are exactly the same and it sets # PACKAGE_VERSION_COMPATIBLE if the current version major number == requested version major number # and the current version minor number >= requested version minor number set(PACKAGE_VERSION_MAJOR @${proj}_MAJOR_VERSION@) set(PACKAGE_VERSION_MINOR @${proj}_MINOR_VERSION@) set(PACKAGE_VERSION_PATCH @${proj}_PATCH_VERSION@) set(PACKAGE_VERSION \"@${proj}_VERSION@\") if(PACKAGE_VERSION VERSION_EQUAL PACKAGE_FIND_VERSION) set(PACKAGE_VERSION_EXACT TRUE) else() set(PACKAGE_VERSION_EXACT FALSE) if(NOT PACKAGE_VERSION_MAJOR EQUAL PACKAGE_FIND_VERSION_MAJOR) set(PACKAGE_VERSION_COMPATIBLE FALSE) elseif(PACKAGE_VERSION_MINOR LESS PACKAGE_FIND_VERSION_MINOR) set(PACKAGE_VERSION_COMPATIBLE FALSE) else() set(PACKAGE_VERSION_CcOMPATIBLE TRUE) endif() endif() # if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: if(\"\${CMAKE_SIZEOF_VOID_P}\" STREQUAL \"\" OR \"@CMAKE_SIZEOF_VOID_P@\" STREQUAL \"\") return() endif() # check that the installed version has the same 32/64bit-ness as the one which is currently searching: if(NOT \"\${CMAKE_SIZEOF_VOID_P}\" STREQUAL \"@CMAKE_SIZEOF_VOID_P@\") math(EXPR installedBits \"@CMAKE_SIZEOF_VOID_P@ * 8\") set(PACKAGE_VERSION \"\${PACKAGE_VERSION} (\${installedBits}bit)\") set(PACKAGE_VERSION_UNSUITABLE TRUE) endif() ") message("${CMAKE_CURRENT_LIST_DIR}/${proj}CMakeLists.txt ${CMAKE_CURRENT_BINARY_DIR}/CMakeLists.txt") configure_file(${CMAKE_CURRENT_LIST_DIR}/${proj}CMakeLists.txt "${CMAKE_CURRENT_BINARY_DIR}/CMakeLists.txt" COPYONLY) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${proj}Config.cmake.in "${ProjConfig.cmake.in}") file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${proj}ConfigVersion.cmake.in "${ProjConfigVersion.cmake.in}") diff --git a/CMakeExternals/OpenCV.cmake b/CMakeExternals/OpenCV.cmake index a5360a49b3..c6bfb16666 100644 --- a/CMakeExternals/OpenCV.cmake +++ b/CMakeExternals/OpenCV.cmake @@ -1,83 +1,90 @@ #----------------------------------------------------------------------------- # OpenCV #----------------------------------------------------------------------------- if(MITK_USE_OpenCV) # Sanity checks if(DEFINED OpenCV_DIR AND NOT EXISTS ${OpenCV_DIR}) message(FATAL_ERROR "OpenCV_DIR variable is defined but corresponds to non-existing directory") endif() set(proj OpenCV) set(proj_DEPENDENCIES) set(OpenCV_DEPENDS ${proj}) if(NOT DEFINED OpenCV_DIR) - set(additional_cmake_args ) + set(additional_cmake_args + -DBUILD_opencv_java:BOOL=OFF + ) + if(MITK_USE_Python) #message(STATUS "PYTHON_EXECUTABLE: ${PYTHON_EXECUTABLE}") #message(STATUS "PYTHON_DEBUG_LIBRARY: ${PYTHON_DEBUG_LIBRARY}") #message(STATUS "PYTHON_INCLUDE_DIR: ${PYTHON_INCLUDE_DIR}") #message(STATUS "PYTHON_LIBRARY: ${PYTHON_LIBRARY}") list(APPEND additional_cmake_args -DBUILD_opencv_python:BOOL=ON -DBUILD_NEW_PYTHON_SUPPORT:BOOL=ON -DPYTHON_DEBUG_LIBRARY:FILEPATH=${PYTHON_DEBUG_LIBRARY} -DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE} -DPYTHON_INCLUDE_DIR:PATH=${PYTHON_INCLUDE_DIR} -DPYTHON_INCLUDE_DIR2:PATH=${PYTHON_INCLUDE_DIR2} -DPYTHON_LIBRARY:FILEPATH=${PYTHON_LIBRARY} #-DPYTHON_LIBRARIES=${PYTHON_LIBRARY} #-DPYTHON_DEBUG_LIBRARIES=${PYTHON_DEBUG_LIBRARIES} ) else() list(APPEND additional_cmake_args -DBUILD_opencv_python:BOOL=OFF -DBUILD_NEW_PYTHON_SUPPORT:BOOL=OFF ) endif() # 12-05-02, muellerm, added QT usage by OpenCV if QT is used in MITK # 12-09-11, muellerm, removed automatic usage again, since this will struggle with the MITK Qt application object if(MITK_USE_QT) list(APPEND additional_cmake_args -DWITH_QT:BOOL=OFF -DWITH_QT_OPENGL:BOOL=OFF -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE} ) endif() + set(OpenCV_PATCH_COMMAND ${CMAKE_COMMAND} -DTEMPLATE_FILE:FILEPATH=${MITK_SOURCE_DIR}/CMakeExternals/EmptyFileForPatching.dummy -P ${MITK_SOURCE_DIR}/CMakeExternals/PatchOpenCV-2.4.6.1.cmake) + + set(opencv_url ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/opencv-2.4.6.1.tar.gz) set(opencv_url_md5 d756bfa460891697571d5c90050e1cfe) ExternalProject_Add(${proj} SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src BINARY_DIR ${proj}-build PREFIX ${proj}-cmake URL ${opencv_url} URL_MD5 ${opencv_url_md5} INSTALL_COMMAND "" + PATCH_COMMAND ${OpenCV_PATCH_COMMAND} CMAKE_GENERATOR ${gen} CMAKE_ARGS ${ep_common_args} -DBUILD_DOCS:BOOL=OFF -DBUILD_TESTS:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF -DBUILD_DOXYGEN_DOCS:BOOL=OFF -DWITH_CUDA:BOOL=ON ${additional_cmake_args} DEPENDS ${proj_DEPENDENCIES} ) set(OpenCV_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-build) else() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") endif() endif() diff --git a/CMakeExternals/PatchGDCM-20130814.cmake b/CMakeExternals/PatchGDCM-20130814.cmake index 437e1c6663..f911e5af2f 100644 --- a/CMakeExternals/PatchGDCM-20130814.cmake +++ b/CMakeExternals/PatchGDCM-20130814.cmake @@ -1,12 +1,22 @@ # Called by GDCM.cmake (ExternalProject_Add) as a patch for GDCM. # Related bug: http://bugs.mitk.org/show_bug.cgi?id=15800 # read whole file file(STRINGS Source/MediaStorageAndFileFormat/gdcmSorter.cxx sourceCode NEWLINE_CONSUME) # Changing the way gdcmSorter.cxx behaves when encountering an unreadable file string(REPLACE "f = NULL;" "std::cerr << \"Err: File could not be read: \" << it->c_str() << std::endl; \n return false;" sourceCode ${sourceCode}) # set variable CONTENTS, which is substituted in TEMPLATE_FILE set(CONTENTS ${sourceCode}) configure_file(${TEMPLATE_FILE} Source/MediaStorageAndFileFormat/gdcmSorter.cxx @ONLY) + + +# fix issues with whitespace in source directories +file(STRINGS CMake/ExportConfiguration/GDCMConfig.cmake.in sourceCode NEWLINE_CONSUME) +string(REPLACE "SET( GDCM_INCLUDE_DIRS @GDCM_INCLUDE_PATH@)" "SET( GDCM_INCLUDE_DIRS \"@GDCM_INCLUDE_PATH@\")" sourceCode ${sourceCode}) +string(REPLACE "SET(GDCM_LIBRARY_DIRS @GDCM_LIBRARY_DIR@)" "SET(GDCM_LIBRARY_DIRS \"@GDCM_LIBRARY_DIR@\")" sourceCode ${sourceCode}) +SET(GDCM_LIBRARY_DIRS @GDCM_LIBRARY_DIR@) +# set variable CONTENTS, which is substituted in TEMPLATE_FILE +set(CONTENTS ${sourceCode}) +configure_file(${TEMPLATE_FILE} CMake/ExportConfiguration/GDCMConfig.cmake.in @ONLY) diff --git a/CMakeExternals/PatchOpenCV-2.4.6.1.cmake b/CMakeExternals/PatchOpenCV-2.4.6.1.cmake new file mode 100755 index 0000000000..9468e420a4 --- /dev/null +++ b/CMakeExternals/PatchOpenCV-2.4.6.1.cmake @@ -0,0 +1,10 @@ +# Called by OpenCV.cmake (ExternalProject_Add) as a patch for OpenCV. +# Related bug: http://bugs.mitk.org/show_bug.cgi?id=5912 + + +# fix issues with whitespace in source directories +file(STRINGS cmake/templates/OpenCVConfig.cmake.in sourceCode NEWLINE_CONSUME) +string(REPLACE "SET(OpenCV2_INCLUDE_DIRS @OpenCV2_INCLUDE_DIRS_CONFIGCMAKE@)" "SET(OpenCV2_INCLUDE_DIRS \"@OpenCV2_INCLUDE_DIRS_CONFIGCMAKE@\")" sourceCode ${sourceCode}) +# set variable CONTENTS, which is substituted in TEMPLATE_FILE +set(CONTENTS ${sourceCode}) +configure_file(${TEMPLATE_FILE} cmake/templates/OpenCVConfig.cmake.in @ONLY)