mirror of
https://github.com/cosmo-sims/monofonIC.git
synced 2024-09-19 17:03:45 +02:00
72 lines
No EOL
2.8 KiB
CMake
72 lines
No EOL
2.8 KiB
CMake
# initialize the class submodule if necessary
|
|
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/class/Makefile")
|
|
message(STATUS "class submodule is initialized.")
|
|
else()
|
|
message(STATUS "class submodule is NOT initialized: executing git command")
|
|
execute_process(COMMAND git submodule update --init -- external/class
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
endif()
|
|
|
|
set(CLASS_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/class/include)
|
|
|
|
# list of object files generated by class
|
|
set(CLASS_OBJECT_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/arrays.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/background.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/common.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/dei_rkck.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/evolver_ndf15.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/evolver_rkck.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/growTable.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/helium.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/history.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/hydrogen.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/hyperspherical.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/hyrectools.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/input.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/lensing.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/nonlinear.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/output.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/parser.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/perturbations.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/primordial.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/quadrature.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/sparse.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/spectra.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/thermodynamics.o
|
|
${CMAKE_CURRENT_LIST_DIR}/class/build/transfer.o
|
|
)
|
|
|
|
# python3
|
|
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
|
|
|
# command to build class using its own makefile
|
|
add_custom_command(OUTPUT ${CLASS_OBJECT_FILES}
|
|
COMMAND PYTHON=${Python3_EXECUTABLE} CC=${CMAKE_C_COMPILER} make
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/class
|
|
)
|
|
|
|
# target for class objects
|
|
add_custom_target(class_objects DEPENDS ${CLASS_OBJECT_FILES})
|
|
|
|
# library for class cpp wrappers
|
|
add_library(class_cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/class/cpp/Engine.cc
|
|
${CMAKE_CURRENT_LIST_DIR}/class/cpp/ClassEngine.cc)
|
|
target_include_directories(class_cpp
|
|
PRIVATE ${CMAKE_CURRENT_LIST_DIR}/class/include)
|
|
|
|
# macro to setup include dir and link libraries for target using class
|
|
macro(target_setup_class target_name)
|
|
target_include_directories(${target_name}
|
|
PRIVATE ${CLASS_INCLUDE_DIR})
|
|
target_link_libraries(${target_name} ${CLASS_OBJECT_FILES})
|
|
target_link_libraries(${target_name} class_cpp)
|
|
add_dependencies(${target_name} class_objects)
|
|
endmacro(target_setup_class)
|
|
|
|
|
|
# test executable
|
|
add_executable(testTk
|
|
${CMAKE_CURRENT_LIST_DIR}/class/cpp/testTk.cc)
|
|
target_setup_class(testTk) |