diff --git a/CMakeExternals/PatchSOFA-b13c6367.cmake b/CMakeExternals/PatchSOFA-386a3a7.cmake similarity index 94% rename from CMakeExternals/PatchSOFA-b13c6367.cmake rename to CMakeExternals/PatchSOFA-386a3a7.cmake index 858e417112..5b5a246580 100644 --- a/CMakeExternals/PatchSOFA-b13c6367.cmake +++ b/CMakeExternals/PatchSOFA-386a3a7.cmake @@ -1,170 +1,188 @@ # Changes of cmake/dependencies.cmake are commented separately below set(path "cmake/dependencies.cmake") file(STRINGS ${path} CONTENTS NEWLINE_CONSUME) # Comment out add_subdirectory() commands that reference the SOFA applications # directory string(REPLACE "add_subdirectory(\"\${SOFA_A" "#add_subdirectory(\"\${SOFA_A" CONTENTS ${CONTENTS}) # Rename tinyxml to SofaTinyXml since MITK has its own version of tinyxml and # the same name lead to linker or runtime errors in the past string(REPLACE "\"tinyxml\"" "\"SofaTinyXml\"" CONTENTS ${CONTENTS}) configure_file(${TEMPLATE_FILE} ${path} @ONLY) # Adjust tinyxml references (see above) set(path "framework/sofa/helper/CMakeLists.txt") file(STRINGS ${path} CONTENTS NEWLINE_CONSUME) string(REPLACE "tinyxml" "SofaTinyXml" CONTENTS ${CONTENTS}) configure_file(${TEMPLATE_FILE} ${path} @ONLY) set(path "modules/sofa/component/SofaBaseVisual/CMakeLists.txt") file(STRINGS ${path} CONTENTS NEWLINE_CONSUME) string(REPLACE "tinyxml" "SofaTinyXml" CONTENTS ${CONTENTS}) configure_file(${TEMPLATE_FILE} ${path} @ONLY) set(path "modules/sofa/component/SofaLoader/CMakeLists.txt") file(STRINGS ${path} CONTENTS NEWLINE_CONSUME) string(REPLACE "tinyxml" "SofaTinyXml" CONTENTS ${CONTENTS}) configure_file(${TEMPLATE_FILE} ${path} @ONLY) set(path "modules/sofa/simulation/common/CMakeLists.txt") file(STRINGS ${path} CONTENTS NEWLINE_CONSUME) string(REPLACE "tinyxml" "SofaTinyXml" CONTENTS ${CONTENTS}) configure_file(${TEMPLATE_FILE} ${path} @ONLY) # Changes of cmake/environment.cmake are commented separately below set(path "cmake/environment.cmake") file(STRINGS ${path} CONTENTS NEWLINE_CONSUME) # Allow setting SOFA_APPLICATIONS_PLUGINS_DIR from outside string(REPLACE "S_DIR}/plugins\" CACHE INTERNAL" "S_DIR}/plugins\" CACHE PATH" CONTENTS ${CONTENTS}) # Place binaries and libraries in different subfolders according to the build # configuration string(REPLACE "DEBUG \"\${directory}" "DEBUG \"\${directory}/Debug" CONTENTS ${CONTENTS}) string(REPLACE "RELEASE \"\${directory}" "RELEASE \"\${directory}/Release" CONTENTS ${CONTENTS}) string(REPLACE "RELWITHDEBINFO \"\${directory}" "RELWITHDEBINFO \"\${directory}/RelWithDebInfo" CONTENTS ${CONTENTS}) string(REPLACE "MINSIZEREL \"\${directory}" "MINSIZEREL \"\${directory}/MinSizeRel" CONTENTS ${CONTENTS}) configure_file(${TEMPLATE_FILE} ${path} @ONLY) # Binary directories in add_subdirectory() regarding external plugins have to be explicitly specified set(path "cmake/functions.cmake") file(STRINGS ${path} CONTENTS NEWLINE_CONSUME) string(REPLACE "add_subdirectory(\"\${GLOBAL_PROJECT_PATH_\${projectName}}\")" "if(\${GLOBAL_PROJECT_PATH_\${projectName}} MATCHES ^\${CMAKE_SOURCE_DIR}.*) add_subdirectory(\"\${GLOBAL_PROJECT_PATH_\${projectName}}\") else() string(LENGTH \"\${SOFA_APPLICATIONS_PLUGINS_DIR}\" begin) string(SUBSTRING \"\${GLOBAL_PROJECT_PATH_\${projectName}}\" \${begin} -1 subdir) add_subdirectory(\"\${GLOBAL_PROJECT_PATH_\${projectName}}\" \"\${CMAKE_BINARY_DIR}/applications/plugins\${subdir}\") endif()" CONTENTS ${CONTENTS}) configure_file(${TEMPLATE_FILE} ${path} @ONLY) # Remove SOFA's FindGLEW.cmake since we need the official FindGLEW.cmake to # inject the MITK superbuild version of GLEW into SOFA file(REMOVE "cmake/Modules/FindGLEW.cmake") # Changes of cmake/externals.cmake are commented separately below set(path "cmake/externals.cmake") file(STRINGS ${path} CONTENTS NEWLINE_CONSUME) # Enhance GLUT and GLEW finding routine to regard externally injected GLUT and # GLEW libraries string(REPLACE "set(GLUT_LIBRARIES \"freeglut\")" "find_package(GLUT REQUIRED)" CONTENTS ${CONTENTS}) string(REPLACE "set(GLEW_LIBRARIES \"glew32\")" "find_package(GLEW REQUIRED)" CONTENTS ${CONTENTS}) string(REPLACE "else()\n set(O" " list(APPEND GLOBAL_INCLUDE_DIRECTORIES \"\${GLUT_INCLUDE_DIRS}\" \"\${GLEW_INCLUDE_DIRS}\")\nelse()\n set(O" CONTENTS ${CONTENTS}) string(REPLACE "GLUT REQUIRED" "GLUT REQUIRED CONFIG" CONTENTS ${CONTENTS}) string(REPLACE "GLEW REQUIRED" "GLEW REQUIRED CONFIG" CONTENTS ${CONTENTS}) # Remove Boost binary graph dependency because it is not straight forward to # compile on all plattforms and its header-only part is enough string(REPLACE "graph " "" CONTENTS ${CONTENTS}) configure_file(${TEMPLATE_FILE} ${path} @ONLY) +# Changes of CMakeLists.txt are commented separately below + +set(path "CMakeLists.txt") +file(STRINGS ${path} CONTENTS NEWLINE_CONSUME) + +# Set CMake policies to prevent configure warnings + +string(REPLACE "set(SOLUTION_NAME" "cmake_policy(SET CMP0039 OLD) +cmake_policy(SET CMP0043 OLD) +cmake_policy(SET CMP0054 OLD) + +set(SOLUTION_NAME" +CONTENTS ${CONTENTS}) + +# Use configure file (see below) + +string(REPLACE "\nendif()" "\nendif()\n\nconfigure_file(SOFAConfig.cmake.in SOFAConfig.cmake @ONLY)" CONTENTS ${CONTENTS}) + +configure_file(${TEMPLATE_FILE} ${path} @ONLY) + # Create SOFAConfig.cmake.in file to make SOFA findable through the config mode # of find_package() -file(APPEND "CMakeLists.txt" "\nconfigure_file(SOFAConfig.cmake.in SOFAConfig.cmake @ONLY)\n") - file(WRITE "SOFAConfig.cmake.in" "add_definitions(-DSOFA_XML_PARSER_TINYXML;-DTIXML_USE_STL;-DMINI_FLOWVR;-DSOFA_HAVE_BOOST;-DSOFA_HAVE_CSPARSE;-DSOFA_HAVE_DAG;-DSOFA_HAVE_EIGEN2;-DSOFA_HAVE_FREEGLUT;-DSOFA_HAVE_GLEW;-DSOFA_HAVE_METIS) set(SOFA_INCLUDE_DIRS \"@SOFA_EXTLIBS_DIR@/csparse;@SOFA_EXTLIBS_DIR@/eigen-3.2.1;@SOFA_EXTLIBS_DIR@/metis-5.1.0/include;@SOFA_EXTLIBS_DIR@/miniFlowVR/include;@SOFA_EXTLIBS_DIR@/newmat;@SOFA_EXTLIBS_DIR@/tinyxml;@SOFA_SRC_DIR@/framework;@SOFA_SRC_DIR@/modules\") if(WIN32) set(SOFA_LIBRARY_DIRS \"@SOFA_LIB_DIR@\") set(version \"_1_0\") else() set(SOFA_LIBRARY_DIRS \"@SOFA_LIB_DIR@/@CMAKE_BUILD_TYPE@\") set(version \"\") endif() set(SOFA_LIBRARIES debug SofaBaseAnimationLoop\${version}d optimized SofaBaseAnimationLoop\${version} debug SofaBaseCollision\${version}d optimized SofaBaseCollision\${version} debug SofaBaseLinearSolver\${version}d optimized SofaBaseLinearSolver\${version} debug SofaBaseMechanics\${version}d optimized SofaBaseMechanics\${version} debug SofaBaseTopology\${version}d optimized SofaBaseTopology\${version} debug SofaBaseVisual\${version}d optimized SofaBaseVisual\${version} debug SofaBoundaryCondition\${version}d optimized SofaBoundaryCondition\${version} debug SofaComponentAdvanced\${version}d optimized SofaComponentAdvanced\${version} debug SofaComponentBase\${version}d optimized SofaComponentBase\${version} debug SofaComponentCommon\${version}d optimized SofaComponentCommon\${version} debug SofaComponentGeneral\${version}d optimized SofaComponentGeneral\${version} debug SofaComponentMain\${version}d optimized SofaComponentMain\${version} debug SofaComponentMisc\${version}d optimized SofaComponentMisc\${version} debug SofaConstraint\${version}d optimized SofaConstraint\${version} debug SofaCore\${version}d optimized SofaCore\${version} debug SofaDefaultType\${version}d optimized SofaDefaultType\${version} debug SofaDeformable\${version}d optimized SofaDeformable\${version} debug SofaDenseSolver\${version}d optimized SofaDenseSolver\${version} debug SofaEigen2Solver\${version}d optimized SofaEigen2Solver\${version} debug SofaEngine\${version}d optimized SofaEngine\${version} debug SofaEulerianFluid\${version}d optimized SofaEulerianFluid\${version} debug SofaExplicitOdeSolver\${version}d optimized SofaExplicitOdeSolver\${version} debug SofaExporter\${version}d optimized SofaExporter\${version} debug SofaGraphComponent\${version}d optimized SofaGraphComponent\${version} debug SofaHaptics\${version}d optimized SofaHaptics\${version} debug SofaHelper\${version}d optimized SofaHelper\${version} debug SofaImplicitOdeSolver\${version}d optimized SofaImplicitOdeSolver\${version} debug SofaLoader\${version}d optimized SofaLoader\${version} debug SofaMeshCollision\${version}d optimized SofaMeshCollision\${version} debug SofaMisc\${version}d optimized SofaMisc\${version} debug SofaMiscCollision\${version}d optimized SofaMiscCollision\${version} debug SofaMiscEngine\${version}d optimized SofaMiscEngine\${version} debug SofaMiscFem\${version}d optimized SofaMiscFem\${version} debug SofaMiscForceField\${version}d optimized SofaMiscForceField\${version} debug SofaMiscMapping\${version}d optimized SofaMiscMapping\${version} debug SofaMiscSolver\${version}d optimized SofaMiscSolver\${version} debug SofaMiscTopology\${version}d optimized SofaMiscTopology\${version} debug SofaNonUniformFem\${version}d optimized SofaNonUniformFem\${version} debug SofaObjectInteraction\${version}d optimized SofaObjectInteraction\${version} debug SofaOpenglVisual\${version}d optimized SofaOpenglVisual\${version} debug SofaPreconditioner\${version}d optimized SofaPreconditioner\${version} debug SofaRigid\${version}d optimized SofaRigid\${version} debug SofaSimpleFem\${version}d optimized SofaSimpleFem\${version} debug SofaSimulationCommon\${version}d optimized SofaSimulationCommon\${version} debug SofaSimulationGraph\${version}d optimized SofaSimulationGraph\${version} debug SofaSimulationTree\${version}d optimized SofaSimulationTree\${version} debug SofaSparseSolver\${version}d optimized SofaSparseSolver\${version} debug SofaSphFluid\${version}d optimized SofaSphFluid\${version} debug SofaTopologyMapping\${version}d optimized SofaTopologyMapping\${version} debug SofaUserInteraction\${version}d optimized SofaUserInteraction\${version} debug SofaValidation\${version}d optimized SofaValidation\${version} debug SofaVolumetricData\${version}d optimized SofaVolumetricData\${version} debug SofaTinyXml\${version}d optimized SofaTinyXml\${version} )") diff --git a/CMakeExternals/SOFA.cmake b/CMakeExternals/SOFA.cmake index b76660375d..f34f4e4b14 100644 --- a/CMakeExternals/SOFA.cmake +++ b/CMakeExternals/SOFA.cmake @@ -1,101 +1,99 @@ #----------------------------------------------------------------------------- # SOFA #----------------------------------------------------------------------------- if(MITK_USE_SOFA) # Sanity checks if(DEFINED SOFA_DIR AND NOT EXISTS ${SOFA_DIR}) message(FATAL_ERROR "SOFA_DIR variable is defined but corresponds to non-existing directory") endif() set(proj SOFA) set(proj_DEPENDENCIES Boost GLEW) set(SOFA_DEPENDS ${proj}) set(preconfigure_cmake_args -DGLEW_DIR:PATH=${GLEW_DIR} + -DSOFA-APPLICATION_GENERATERIGID:BOOL=OFF -DSOFA-APPLICATION_MODELER:BOOL=OFF -DSOFA-APPLICATION_RUNSOFA:BOOL=OFF - -DSOFA-APPLICATION_SOFABATCH:BOOL=OFF -DSOFA-EXTERNAL_BOOST:BOOL=ON -DSOFA-EXTERNAL_BOOST_PATH:PATH=${CMAKE_BINARY_DIR}/Boost-install/lib -DSOFA-EXTERNAL_CSPARSE:BOOL=ON -DSOFA-EXTERNAL_GLEW:BOOL=ON -DSOFA-EXTERNAL_PNG:BOOL=OFF -DSOFA-EXTERNAL_ZLIB:BOOL=OFF -DSOFA-LIB_COMPONENT_SPARSE_SOLVER:BOOL=ON -DSOFA-LIB_GUI_GLUT:BOOL=OFF -DSOFA-LIB_GUI_QT:BOOL=OFF -DSOFA-LIB_GUI_QTVIEWER:BOOL=OFF - -DSOFA-TUTORIAL_CHAIN_HYBRID:BOOL=OFF -DSOFA-TUTORIAL_COMPOSITE_OBJECT:BOOL=OFF -DSOFA-TUTORIAL_MIXED_PENDULUM:BOOL=OFF -DSOFA-TUTORIAL_ONE_PARTICLE:BOOL=OFF -DSOFA-TUTORIAL_ONE_TETRAHEDRON:BOOL=OFF ) if(NOT APPLE) list(APPEND proj_DEPENDENCIES GLUT) list(APPEND preconfigure_cmake_args -DSOFA-EXTERNAL_FREEGLUT:BOOL=ON -DGLUT_DIR:PATH=${GLUT_DIR} ) endif() if(NOT MITK_USE_SYSTEM_Boost) list(APPEND preconfigure_cmake_args -DBoost_NO_SYSTEM_PATHS:BOOL=ON -DBOOST_INCLUDEDIR:PATH=${CMAKE_BINARY_DIR}/Boost-install/include -DBOOST_LIBRARYDIR:PATH=${CMAKE_BINARY_DIR}/Boost-install/lib -DBoost_ADDITIONAL_VERSIONS:STRING=1.56 ) endif() if(MITK_USE_SOFA_PLUGINS_DIR) list(APPEND preconfigure_cmake_args -DSOFA_APPLICATIONS_PLUGINS_DIR:PATH=${MITK_USE_SOFA_PLUGINS_DIR} ) foreach(plugin ${MITK_USE_SOFA_PLUGINS}) string(TOUPPER ${plugin} plugin) list(APPEND preconfigure_cmake_args -DSOFA-PLUGIN_${plugin}:BOOL=ON ) endforeach() endif() - set(rev "b13c6367") + set(rev "386a3a7") set(SOFA_PATCH_COMMAND ${CMAKE_COMMAND} -DTEMPLATE_FILE:FILEPATH=${MITK_SOURCE_DIR}/CMakeExternals/EmptyFileForPatching.dummy -P ${MITK_SOURCE_DIR}/CMakeExternals/PatchSOFA-${rev}.cmake) set(SOFA_PRECONFIGURE_COMMAND ${CMAKE_COMMAND} -G${gen} ${ep_common_args} ${preconfigure_cmake_args} ${boost_cmake_args} ${CMAKE_BINARY_DIR}/${proj}-src) if(NOT DEFINED SOFA_DIR) ExternalProject_Add(${proj} SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src BINARY_DIR ${proj}-build PREFIX ${proj}-cmake - URL http://dl.dropboxusercontent.com/u/5822501/SOFA-${rev}.tar.gz - # URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/SOFA-${rev}.tar.gz - URL_MD5 89c3484bece704a5404bed7e88ba77f1 + URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/SOFA-${rev}.tar.gz + URL_MD5 31ca701e985331e96bd52d9e58842a86 PATCH_COMMAND ${SOFA_PATCH_COMMAND} INSTALL_COMMAND "" CMAKE_GENERATOR ${gen} CMAKE_ARGS ${ep_common_args} DEPENDS ${proj_DEPENDENCIES} ) ExternalProject_Add_Step(${proj} preconfigure COMMAND ${SOFA_PRECONFIGURE_COMMAND} WORKING_DIRECTORY ${proj}-build DEPENDEES patch DEPENDERS configure LOG 1 ) set(SOFA_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-build) else() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") endif() endif()