cmake_minimum_required (VERSION 3.4) # CMake utils list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") # Forbids in-source builds include(CheckNotInSources) #------------------------------------------------------ #----------------- Main configuration ----------------- #------------------------------------------------------ project (Pastis VERSION 0.0.4) set(PASTIS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") set(PASTIS_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}") #------------------------------------------------------ # Kokkos set(KOKKOS_ENABLE_OPENMP ON CACHE BOOL "") if (CMAKE_BUILD_TYPE MATCHES "Release") set (KOKKOS_ENABLE_DEBUG OFF) else() set (KOKKOS_ENABLE_DEBUG ON) endif() set(CMAKE_CXX_STANDARD "17") add_subdirectory(${PASTIS_SOURCE_DIR}/packages/kokkos) include_directories(${Kokkos_INCLUDE_DIRS_RET}) # Default build type is RelWIthDebInfo if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE) endif(NOT CMAKE_BUILD_TYPE) # Pastis default compiler flags set(PASTIS_CXX_FLAGS "-Wall") # Kokkso compiler flags include(GetKokkosCompilerFlags) # Compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PASTIS_CXX_FLAGS}") # Add debug mode for Standard C++ library set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_LIBCPP_DEBUG=1 ${PASTIS_CXX_FLAGS}") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -D_GLIBCXX_DEBUG -D_LIBCPP_DEBUG=1 ${PASTIS_CXX_FLAGS}") #------------------------------------------------------ # Rang (colors? Useless thus necessary!) include_directories(${PASTIS_SOURCE_DIR}/packages/rang/include) # CLI11 include_directories(${PASTIS_SOURCE_DIR}/packages/CLI11/include) # Pastis src add_subdirectory(src) include_directories(src) include_directories(src/algebra) include_directories(src/mesh) include_directories(src/utils) include_directories(src/scheme) include_directories(src/experimental) # ----------------------------------------------------- link_libraries("-rdynamic") # ------------------- Source files -------------------- # Pastis binary add_executable( pastis src/main.cpp) # Libraries target_link_libraries( pastis kokkos PastisUtils PastisMesh PastisExperimental)