diff --git a/CMakeLists.txt b/CMakeLists.txt index 3fda3147084be7a2e4ca441c2c8536fc19a8a819..659d84522d194a860d1f9fca6c56a312010f51e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -246,19 +246,11 @@ add_definitions(-DLOGOG_LEVEL=${OGS_LOG_LEVEL}) ###################### # External projects -include(scripts/cmake/ExternalProjectBoost.cmake) -include(VtkModules) if(OGS_INSITU) - include(ExternalProjectCatalyst) include("${PARAVIEW_USE_FILE}") add_definitions(-DUSE_INSITU) -else() - include(ExternalProjectVtk) endif() -include_directories( SYSTEM ${Boost_INCLUDE_DIRS} ) -include(scripts/cmake/ExternalProjectEigen.cmake) -include_directories(SYSTEM ${EIGEN3_INCLUDE_DIR}) # Add subdirectories with the projects add_subdirectory( ThirdParty ) diff --git a/scripts/cmake/ExternalProjectBoost.cmake b/scripts/cmake/ExternalProjectBoost.cmake deleted file mode 100644 index ab16c24eb199f2ca238277f51a0e805c2e591163..0000000000000000000000000000000000000000 --- a/scripts/cmake/ExternalProjectBoost.cmake +++ /dev/null @@ -1,59 +0,0 @@ -if(USE_CONAN) - SET(BOOST_HEADER_ONLY TRUE) - find_package(Boost REQUIRED) - include_directories(SYSTEM ${CONAN_INCLUDE_DIRS_BOOST}) - link_directories(${Boost_LIBRARY_DIR}) - return() -endif() -include(ThirdPartyLibVersions) -include(ExternalProject) - -if(Boost_FOUND) - return() -endif() - -if(NOT DEFINED BOOST_ROOT AND DEFINED ENV{BOOST_ROOT}) - set(BOOST_ROOT $ENV{BOOST_ROOT} CACHE PATH "") -endif() - -# First check for system boost -if(NOT Boost_INCLUDE_DIRS) - if(APPLE) - set(BOOST_ROOT $ENV{HOMEBREW_ROOT}) - endif() - if(WIN32 AND COMPILER_IS_GCC) - set(BOOST_INCLUDEDIR "$ENV{CMAKE_LIBRARY_SEARCH_PATH}/include/boost*") - endif() - if(OGS_LIB_BOOST STREQUAL "System") - find_package(Boost ${OGS_BOOST_VERSION} REQUIRED) - if(NOT Boost_FOUND) - message(FATAL_ERROR "Aborting CMake because system Boost was not found!") - endif() - elseif(OGS_LIB_BOOST STREQUAL "Default") - find_package(Boost ${OGS_BOOST_VERSION}) - endif() - if(Boost_FOUND) - set(Boost_FOUND TRUE CACHE BOOL "Was Boost found?" FORCE) - set(Boost_INCLUDE_DIRS "${Boost_INCLUDE_DIRS}" CACHE STRING "Boost include dirs" FORCE) - return() - else() - set(Boost_INCLUDE_DIRS "") - endif() -endif() - -ExternalProject_Add(Boost - PREFIX ${PROJECT_BINARY_DIR}/External/boost - URL ${OGS_BOOST_URL} - URL_MD5 ${OGS_BOOST_MD5} - UPDATE_COMMAND "" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - BUILD_IN_SOURCE 1 - INSTALL_COMMAND "" -) -ExternalProject_Get_Property( Boost source_dir ) - -if(NOT Boost_INCLUDE_DIRS) - set( Boost_INCLUDE_DIRS ${source_dir} CACHE INTERNAL "Boost include directories") - message(STATUS "Downloading Boost ${OGS_BOOST_VERSION} automatically.") -endif() diff --git a/scripts/cmake/ExternalProjectCatalyst.cmake b/scripts/cmake/ExternalProjectCatalyst.cmake deleted file mode 100644 index 9d3752dec88fc39739420d37ad056ddb51045fde..0000000000000000000000000000000000000000 --- a/scripts/cmake/ExternalProjectCatalyst.cmake +++ /dev/null @@ -1,71 +0,0 @@ -include(ThirdPartyLibVersions) -include(ExternalProject) - -set(CATALYST_GIT_URL https://github.com/ufz/catalyst-io.git) - -if(NOT DEFINED ParaView_DIR AND DEFINED ENV{ParaView_DIR}) - set(ParaView_DIR $ENV{ParaView_DIR}) -endif() - -set(VTK_LIBRARIES ${VTK_MODULES} CACHE STRING "" FORCE) -if(OGS_BUILD_GUI) - # Replace vtknetcdf with vtkNetCDF vtkNetCDF_cxx - list(REMOVE_ITEM VTK_LIBRARIES vtknetcdf) - list(APPEND VTK_LIBRARIES vtkNetCDF vtkNetCDF_cxx) -endif() - -find_package(ParaView 4.2 REQUIRED COMPONENTS ${VTK_MODULES}) - -if(ParaView_FOUND) - foreach(DIR ${PARAVIEW_INCLUDE_DIRS}) - if("${DIR}" MATCHES ".*vtknetcdf.*") - include_directories(SYSTEM ${DIR}/../cxx ${DIR}/include) - endif() - endforeach() - message(STATUS "Using ParaView in ${ParaView_DIR}") - return() -elseif() - # If nothing was found build ParaView as an external project - set(ParaView_DIR ${PROJECT_BINARY_DIR}/External/catalyst/src/Catalyst-build CACHE PATH "" FORCE) - endif() -endif() - -set(CATALYST_CMAKE_GENERATOR ${CMAKE_GENERATOR}) -if(WIN32) - # Ninja temporary disabled because it builds only the Release mode. - # find_program(NINJA_TOOL_PATH ninja DOC "Ninja build tool") - if(NINJA_TOOL_PATH) - set(CATALYST_CMAKE_GENERATOR Ninja) - set(CATALYST_MAKE_COMMAND ninja ${VTK_LIBRARIES}) - else() - set(CATALYST_MAKE_COMMAND - msbuild /p:Configuration=Release /m:${NUM_PROCESSORS} ParaView.sln && - msbuild /p:Configuration=Debug /m:${NUM_PROCESSORS} /m ParaView.sln) - endif() - set(CATALYST_CONFIGURE_COMMAND cmake.bat) -else() - if($ENV{CI}) - set(CATALYST_MAKE_COMMAND make ${VTK_LIBRARIES}) - else() - set(CATALYST_MAKE_COMMAND make -j ${NUM_PROCESSORS} ${VTK_LIBRARIES}) - endif() - set(CATALYST_CONFIGURE_COMMAND cmake.sh) -endif() - -message(STATUS "Building ParaView as an external project in the build directory") - -ExternalProject_Add(Catalyst - PREFIX ${PROJECT_BINARY_DIR}/External/catalyst - GIT_REPOSITORY ${CATALYST_GIT_URL} - CONFIGURE_COMMAND ../Catalyst/${CATALYST_CONFIGURE_COMMAND} -G ${CATALYST_CMAKE_GENERATOR} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} ../Catalyst - BUILD_COMMAND ${CATALYST_MAKE_COMMAND} - INSTALL_COMMAND "" -) - -if(NOT ParaView_FOUND) - # Rerun cmake in initial build - add_custom_target(VtkRescan ${CMAKE_COMMAND} ${PROJECT_SOURCE_DIR} DEPENDS Catalyst) -else() - add_custom_target(VtkRescan) # dummy target for caching -endif() diff --git a/scripts/cmake/ExternalProjectEigen.cmake b/scripts/cmake/ExternalProjectEigen.cmake deleted file mode 100644 index 036d235ff38613b890b5cc9af4c3c7544edd3dae..0000000000000000000000000000000000000000 --- a/scripts/cmake/ExternalProjectEigen.cmake +++ /dev/null @@ -1,49 +0,0 @@ -if(USE_CONAN) - find_package(Eigen3 REQUIRED) - include_directories(SYSTEM ${CONAN_INCLUDE_DIRS_EIGEN3}) - return() -endif() - -if(OGS_LIB_EIGEN STREQUAL "System") - find_package(Eigen3 3.2.9 REQUIRED) - if(NOT EIGEN3_FOUND) - message(FATAL_ERROR "Aborting CMake because system Eigen was not found!") - endif() -elseif(OGS_LIB_EIGEN STREQUAL "Default") - find_package(Eigen3 3.2.9) -endif() - -# First check for system Eigen -if(NOT EIGEN3_INCLUDE_DIR) - if(EIGEN3_FOUND) - set(EIGEN3_FOUND TRUE CACHE BOOL "Was Eigen found?" FORCE) - set(EIGEN3_INCLUDE_DIR "${EIGEN3_INCLUDE_DIR}" CACHE STRING "Eigen include dir" FORCE) - return() - else() - set(EIGEN3_INCLUDE_DIR "") - endif() -endif() - -if(EIGEN3_FOUND) - return() -endif() - -include(ThirdPartyLibVersions) -include(ExternalProject) -ExternalProject_Add(Eigen - PREFIX ${PROJECT_BINARY_DIR}/External/eigen - URL ${OGS_EIGEN_URL} - URL_MD5 ${OGS_EIGEN_MD5} - UPDATE_COMMAND "" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - BUILD_IN_SOURCE 1 - INSTALL_COMMAND "" -) - -ExternalProject_Get_Property( Eigen source_dir ) - -if(NOT EIGEN3_INCLUDE_DIR) - set( EIGEN3_INCLUDE_DIR ${source_dir} CACHE INTERNAL "Eigen include dir" FORCE) - message(STATUS "Downloading Eigen automatically.") -endif() diff --git a/scripts/cmake/ExternalProjectVtk.cmake b/scripts/cmake/ExternalProjectVtk.cmake deleted file mode 100644 index a6ed46a8e598d8dccffcd7ce28d3b8bd4194a083..0000000000000000000000000000000000000000 --- a/scripts/cmake/ExternalProjectVtk.cmake +++ /dev/null @@ -1,81 +0,0 @@ -if(USE_CONAN) - find_package(VTK REQUIRED) - include(${VTK_USE_FILE}) - include_directories(SYSTEM ${CONAN_INCLUDE_DIRS_VTK}) - return() -endif() -include(ThirdPartyLibVersions) -include(ExternalProject) - -if(NOT DEFINED VTK_DIR AND DEFINED ENV{VTK_DIR}) - set(VTK_DIR $ENV{VTK_DIR}) -endif() - -set(VTK_LIBRARIES ${VTK_MODULES} CACHE STRING "" FORCE) -if(OGS_BUILD_GUI) - # Replace vtknetcdf with vtkNetCDF vtkNetCDF_cxx - list(REMOVE_ITEM VTK_LIBRARIES vtknetcdf) - list(APPEND VTK_LIBRARIES vtkNetCDF vtkNetCDF_cxx) -endif() - -if(OGS_LIB_VTK STREQUAL "System") - find_package(VTK COMPONENTS ${VTK_MODULES} NO_MODULE REQUIRED) - if(NOT VTK_FOUND) - message(FATAL_ERROR "Aborting CMake because system VTK was not found!") - endif() -elseif(OGS_LIB_VTK STREQUAL "Default" OR DEFINED VTK_DIR) - find_package(VTK COMPONENTS ${VTK_MODULES} NO_MODULE QUIET) -endif() - -if(VTK_FOUND) - if(VTK_VERSION VERSION_LESS ${OGS_VTK_VERSION}) - message(FATAL_ERROR "Aborting CMake because VTK ${VTK_VERSION} is too old! (required: ${OGS_VTK_VERSION})") - endif() - message(STATUS "Using VTK ${VTK_VERSION} in ${VTK_DIR}") - foreach(DIR ${VTK_INCLUDE_DIRS}) - if("${DIR}" MATCHES ".*vtknetcdf.*") - include_directories(SYSTEM ${DIR}/../cxx ${DIR}/include) - elseif("${DIR}" MATCHES ".*vtk.*") - include_directories(SYSTEM ${DIR}/vtknetcdf/include) - endif() - endforeach() - include_directories(SYSTEM ${VTK_DIR}/../ThirdParty/netcdf/vtknetcdf/cxx) - return() -endif() -set(VTK_DIR ${PROJECT_BINARY_DIR}/External/vtk/src/vtk-build CACHE PATH "" FORCE) - -message(STATUS "Building VTK as an external project in the build directory") - -if(WIN32) - set(VTK_MAKE_COMMAND - msbuild /p:Configuration=Release /m:${NUM_PROCESSORS} VTK.sln && - msbuild /p:Configuration=Debug /m:${NUM_PROCESSORS} /m VTK.sln) -else() - if($ENV{CI}) - set(VTK_MAKE_COMMAND make) - else() - set(VTK_MAKE_COMMAND make -j ${NUM_PROCESSORS}) - endif() -endif() - -# Enable just the modules we selected -set(VTK_CMAKE_ARGS -DVTK_Group_StandAlone:bool=off -DVTK_Group_Rendering:bool=off) -foreach(arg ${VTK_MODULES}) - list(APPEND VTK_CMAKE_ARGS -DModule_${arg}:bool=on) -endforeach() - -ExternalProject_Add(vtk - PREFIX ${PROJECT_BINARY_DIR}/External/vtk - URL ${OGS_VTK_URL} - CMAKE_ARGS -Wno-dev - CMAKE_CACHE_ARGS ${VTK_CMAKE_ARGS} - BUILD_COMMAND ${VTK_MAKE_COMMAND} - INSTALL_COMMAND "" -) - -if(NOT VTK_FOUND) - # Rerun cmake in initial build - add_custom_target(VtkRescan ${CMAKE_COMMAND} ${PROJECT_SOURCE_DIR} DEPENDS vtk) -else() - add_custom_target(VtkRescan) # dummy target for caching -endif() diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake index 66e5e468ee129aa52786c2fd88384d88f7751f54..308ec9320e21c9e92432086b794db35b595929bd 100644 --- a/scripts/cmake/Find.cmake +++ b/scripts/cmake/Find.cmake @@ -60,6 +60,15 @@ find_program(MODULE_CMD modulecmd ###################### ### Find libraries ### ###################### +find_package(Boost REQUIRED) +include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) + +include(VtkModules) +find_package(VTK COMPONENTS ${VTK_MODULES} REQUIRED) +include(${VTK_USE_FILE}) + +find_package(Eigen3 REQUIRED) +include_directories(SYSTEM ${Eigen3_INCLUDE_DIRS}) ## pthread, is a requirement of logog ## if(CMAKE_CROSSCOMPILING)