diff --git a/.gersemirc b/.gersemirc new file mode 100644 index 0000000..bfa2d92 --- /dev/null +++ b/.gersemirc @@ -0,0 +1 @@ +indent: 2 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2f3f360..629b4ef 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,53 +1,67 @@ cmake_minimum_required(VERSION 3.16) -set(PROJECT_NAME dolfinx-scaling-test) -project(${PROJECT_NAME}) +project(dolfinx-scaling-test) include(GNUInstallDirs) -set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) -# Use C++20 -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_CXX_FLAGS "-O3 -ffast-math ${CMAKE_CXX_FLAGS} -g -Wall") -set(CMAKE_C_FLAGS "-O3 -ffast-math ${CMAKE_C_FLAGS} -g -Wall") +find_package(Threads REQUIRED) # Compile UFL files add_custom_command( OUTPUT Poisson.c COMMAND ffcx ${CMAKE_CURRENT_SOURCE_DIR}/Poisson.py - DEPENDS Poisson.py + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Poisson.py + VERBATIM ) add_custom_command( OUTPUT Elasticity.c COMMAND ffcx ${CMAKE_CURRENT_SOURCE_DIR}/Elasticity.py - DEPENDS Elasticity.py + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Elasticity.py + VERBATIM ) -set(CMAKE_INCLUDE_CURRENT_DIR ON) - -# Executable -add_executable(${PROJECT_NAME} main.cpp mesh.cpp elasticity_problem.cpp cgpoisson_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) + 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 pthread) +add_executable( + ${PROJECT_NAME} + main.cpp + mesh.cpp + elasticity_problem.cpp + cgpoisson_problem.cpp + poisson_problem.cpp + mem.cpp + ${CMAKE_CURRENT_BINARY_DIR}/Elasticity.c + ${CMAKE_CURRENT_BINARY_DIR}/Poisson.c +) + +target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20) + +set_target_properties( + ${PROJECT_NAME} + PROPERTIES + CXX_EXTENSIONS OFF + INSTALL_RPATH_USE_LINK_PATH TRUE +) + +set(COMPILE_FLAGS -O3 -ffast-math -g -Wall) +target_compile_options(${PROJECT_NAME} PRIVATE ${COMPILE_FLAGS}) + +target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) + +target_link_libraries( + ${PROJECT_NAME} + dolfinx::dolfinx + Boost::program_options + Threads::Threads +) + +message(STATUS "Compile flags: ${COMPILE_FLAGS}") -message(STATUS ${CMAKE_CXX_FLAGS}) install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})