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

Added CLASS as a submodule.

This commit is contained in:
mmichaux 2019-05-15 15:17:27 +02:00
parent 55b109da47
commit 54c5dc6f0e
5 changed files with 72 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
build
.vscode

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "external/class"]
path = external/class
url = https://github.com/lesgourg/class_public.git

View file

@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.9)
set(PRGNAME fastLPT)
project(fastLPT)
# include class submodule
include(${CMAKE_CURRENT_SOURCE_DIR}/external/class.cmake)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -march=native -Wall -fno-omit-frame-pointer -g -fsanitize=address")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -march=native -Wall")

1
external/class vendored Submodule

@ -0,0 +1 @@
Subproject commit 63f3cf18fad0061688b8bf95055765b4793f25c7

64
external/class.cmake vendored Normal file
View file

@ -0,0 +1,64 @@
# 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()
# 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)
# test executable
add_executable(testKlass
${CMAKE_CURRENT_LIST_DIR}/class/cpp/testKlass.cc)
target_include_directories(testKlass
PRIVATE ${CMAKE_CURRENT_LIST_DIR}/class/include)
target_link_libraries(testKlass ${CLASS_OBJECT_FILES})
target_link_libraries(testKlass class_cpp)
add_dependencies(testKlass class_objects)