mirror of
https://github.com/cosmo-sims/monofonIC.git
synced 2024-09-19 17:03:45 +02:00
85 lines
2.3 KiB
Text
85 lines
2.3 KiB
Text
cmake_minimum_required(VERSION 3.11)
|
|
project(class)
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
# Options
|
|
option(ENABLE_TESTS "compile test executables" OFF)
|
|
|
|
# OpenMP
|
|
find_package(OpenMP)
|
|
|
|
# Sources
|
|
file( GLOB TOOLS_SRC
|
|
${PROJECT_SOURCE_DIR}/tools/*.c
|
|
)
|
|
file( GLOB SOURCE_SRC
|
|
${PROJECT_SOURCE_DIR}/source/*.c
|
|
)
|
|
|
|
set(CPP_SRC
|
|
${PROJECT_SOURCE_DIR}/tools/arrays.c
|
|
${PROJECT_SOURCE_DIR}/tools/hyperspherical.c
|
|
${PROJECT_SOURCE_DIR}/source/perturbations.c
|
|
${PROJECT_SOURCE_DIR}/source/primordial.c
|
|
${PROJECT_SOURCE_DIR}/source/transfer.c
|
|
${PROJECT_SOURCE_DIR}/source/harmonic.c
|
|
${PROJECT_SOURCE_DIR}/source/lensing.c
|
|
)
|
|
|
|
set(TESTS
|
|
test_loops
|
|
test_loops_omp
|
|
test_spectra
|
|
test_transfer
|
|
test_nonlinear
|
|
test_perturbations
|
|
test_thermodynamics
|
|
test_background
|
|
test_hyperspherical
|
|
)
|
|
|
|
file( GLOB EXTERNAL_SRC
|
|
${PROJECT_SOURCE_DIR}/external/RecfastCLASS/*.c
|
|
${PROJECT_SOURCE_DIR}/external/HyRec2020/*.c
|
|
${PROJECT_SOURCE_DIR}/external/heating/*.c
|
|
)
|
|
set(EXTERNAL_INCLUDE
|
|
${PROJECT_SOURCE_DIR}/external/RecfastCLASS/
|
|
${PROJECT_SOURCE_DIR}/external/HyRec2020/
|
|
${PROJECT_SOURCE_DIR}/external/heating/
|
|
)
|
|
|
|
SET_SOURCE_FILES_PROPERTIES(${CPP_SRC} PROPERTIES LANGUAGE CXX )
|
|
|
|
## Main library
|
|
|
|
find_package(Threads REQUIRED)
|
|
if(THREADS_HAVE_PTHREAD_ARG)
|
|
target_compile_options(libclass PUBLIC "-pthread")
|
|
endif()
|
|
|
|
if(CMAKE_THREAD_LIBS_INIT)
|
|
target_link_libraries(libclass "${CMAKE_THREAD_LIBS_INIT}")
|
|
endif()
|
|
|
|
add_library(libclass STATIC ${TOOLS_SRC} ${SOURCE_SRC} ${EXTERNAL_SRC} )
|
|
add_library(class::libclass ALIAS libclass)
|
|
|
|
target_compile_options(libclass PRIVATE -Wno-write-strings -fpermissive -O3 -g)
|
|
set_property(TARGET libclass PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
|
|
target_compile_definitions(libclass PUBLIC "__CLASSDIR__=\"${CMAKE_CURRENT_SOURCE_DIR}\"")
|
|
target_include_directories(libclass PUBLIC include ${EXTERNAL_INCLUDE})
|
|
target_link_libraries(libclass PRIVATE m)
|
|
if(OpenMP_FOUND)
|
|
target_link_libraries(libclass PRIVATE OpenMP::OpenMP_C)
|
|
endif()
|
|
|
|
if(ENABLE_HYREC)
|
|
target_compile_definitions(libclass PUBLIC "HYREC")
|
|
target_include_directories(libclass PUBLIC ${CMAKE_CURRENT_LIST_DIR}/external/HyRec2020)
|
|
target_include_directories(libclass PUBLIC ${CMAKE_CURRENT_LIST_DIR}/external/RecFastCLASS)
|
|
target_include_directories(libclass PUBLIC ${CMAKE_CURRENT_LIST_DIR}/external/heating)
|
|
endif()
|
|
|
|
|