Skip to content
Snippets Groups Projects
Commit e61138ac authored by Lars Bilke's avatar Lars Bilke
Browse files

[CMake] Remove ExternalProjectXXX.cmake files.

Local installation of libraries can be done with Conan.
parent 864ec0b4
No related branches found
No related tags found
No related merge requests found
......@@ -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 )
......
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()
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()
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()
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()
......@@ -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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment