1
0
Fork 0
mirror of https://github.com/cosmo-sims/monofonIC.git synced 2024-09-19 17:03:45 +02:00
monofonIC/external/CLASS_CMakeLists.txt

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()