# This file was generated by running # # python cmake/scripts/generate-cmakefiles from dolfinx/cpp # cmake_minimum_required(VERSION 3.19) set(PROJECT_NAME demo_poisson) project(${PROJECT_NAME} LANGUAGES C CXX) # Set C++20 standard set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) if(NOT TARGET dolfinx) find_package(DOLFINX REQUIRED) endif() include(CheckSymbolExists) set(CMAKE_REQUIRED_INCLUDES ${PETSC_INCLUDE_DIRS}) check_symbol_exists(PETSC_USE_COMPLEX petscsystypes.h PETSC_SCALAR_COMPLEX) check_symbol_exists(PETSC_USE_REAL_DOUBLE petscsystypes.h PETSC_REAL_DOUBLE) # Add target to compile UFL files if(PETSC_SCALAR_COMPLEX EQUAL 1) if(PETSC_REAL_DOUBLE EQUAL 1) set(SCALAR_TYPE "--scalar_type=complex128") else() set(SCALAR_TYPE "--scalar_type=complex64") endif() else() if(PETSC_REAL_DOUBLE EQUAL 1) set(SCALAR_TYPE "--scalar_type=float64") else() set(SCALAR_TYPE "--scalar_type=float32") endif() endif() add_custom_command( OUTPUT poisson.c COMMAND ffcx ${CMAKE_CURRENT_SOURCE_DIR}/poisson.py ${SCALAR_TYPE} VERBATIM DEPENDS poisson.py COMMENT "Compile poisson.py using FFCx" ) set(CMAKE_INCLUDE_CURRENT_DIR ON) add_executable(${PROJECT_NAME} main.cpp ${CMAKE_CURRENT_BINARY_DIR}/poisson.c) target_link_libraries(${PROJECT_NAME} dolfinx) # Do not throw error for 'multi-line comments' (these are typical in rst which # includes LaTeX) include(CheckCXXCompilerFlag) check_cxx_compiler_flag("-Wno-comment" HAVE_NO_MULTLINE) set_source_files_properties( main.cpp PROPERTIES COMPILE_FLAGS "$<$:-Wno-comment -Wall -Wextra -pedantic -Werror>" ) # Test targets (used by DOLFINx testing system) set(TEST_PARAMETERS2 -np 2 ${MPIEXEC_PARAMS} "./${PROJECT_NAME}") set(TEST_PARAMETERS3 -np 3 ${MPIEXEC_PARAMS} "./${PROJECT_NAME}") add_test(NAME ${PROJECT_NAME}_mpi_2 COMMAND "mpirun" ${TEST_PARAMETERS2}) add_test(NAME ${PROJECT_NAME}_mpi_3 COMMAND "mpirun" ${TEST_PARAMETERS3}) add_test(NAME ${PROJECT_NAME}_serial COMMAND ${PROJECT_NAME})