File: CMakeLists.txt

package info (click to toggle)
fenicsx-performance-tests 0.5.0~git20220731.821823b-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 232 kB
  • sloc: cpp: 907; sh: 66; python: 38; makefile: 7
file content (56 lines) | stat: -rw-r--r-- 1,476 bytes parent folder | download
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})