1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
cmake_minimum_required(VERSION 3.16)
set(PROJECT_NAME dolfinx-scaling-test)
project(${PROJECT_NAME})
include(GNUInstallDirs)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# Use C++17
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Get DOLFIN configuration data (DOLFINConfig.cmake must be in
# DOLFIN_CMAKE_CONFIG_PATH)
find_package(DOLFINX REQUIRED)
set(CMAKE_BUILD_TYPE "Release")
if(PETSC_SCALAR_COMPLEX)
set(FFCX_SCALAR_TYPE --scalar_type "double complex")
endif()
# Compile UFL files
add_custom_command(
OUTPUT Poisson.c
COMMAND ffcx ${FFCX_SCALAR_TYPE} ${CMAKE_CURRENT_SOURCE_DIR}/Poisson.py
DEPENDS Poisson.py
)
add_custom_command(
OUTPUT Elasticity.c
COMMAND ffcx ${FFCX_SCALAR_TYPE} ${CMAKE_CURRENT_SOURCE_DIR}/Elasticity.py
DEPENDS Elasticity.py
)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Executable
add_executable(${PROJECT_NAME} main.cpp mesh.cpp elasticity_problem.cpp poisson_problem.cpp mem.cpp
${CMAKE_CURRENT_BINARY_DIR}/Elasticity.c
${CMAKE_CURRENT_BINARY_DIR}/Poisson.c)
# Find Boost program_options
if(DEFINED ENV{BOOST_ROOT} OR DEFINED BOOST_ROOT)
set(Boost_NO_SYSTEM_PATHS on)
endif()
set(Boost_USE_MULTITHREADED $ENV{BOOST_USE_MULTITHREADED})
set(Boost_VERBOSE TRUE)
find_package(Boost 1.70 REQUIRED program_options)
# Target libraries
target_link_libraries(${PROJECT_NAME} dolfinx Boost::program_options)
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|