Skip to content
Snippets Groups Projects
Unverified Commit 9797403e authored by boeschf's avatar boeschf Committed by GitHub
Browse files

simplify make catalogue (#2042)

- unit tests and some examples build their own mechanism catalogue
- repeated logic for detecting GPUs, passing compile time flags
- leverage the cmake variables and targets which are already there since these catalogues are internal to arbor
- build a static library with mechanisms, which links to arbor-private-deps
parent b63cca1c
No related branches found
No related tags found
No related merge requests found
include(${PROJECT_SOURCE_DIR}/mechanisms/BuildModules.cmake) include(${PROJECT_SOURCE_DIR}/mechanisms/BuildModules.cmake)
make_catalogue( make_catalogue_lib(
NAME ornstein_uhlenbeck NAME ornstein_uhlenbeck
MOD ornstein_uhlenbeck MOD ornstein_uhlenbeck
VERBOSE ${ARB_CAT_VERBOSE} VERBOSE ${ARB_CAT_VERBOSE})
ADD_DEPS OFF)
add_executable(ou EXCLUDE_FROM_ALL ou.cpp ${catalogue-ornstein_uhlenbeck-mechanisms}) add_executable(ou EXCLUDE_FROM_ALL ou.cpp)
add_dependencies(ou catalogue-ornstein_uhlenbeck-target) target_link_libraries(ou PRIVATE catalogue-ornstein_uhlenbeck)
if(ARB_WITH_CUDA_CLANG OR ARB_WITH_HIP_CLANG)
set_source_files_properties(${catalogue-ornstein_uhlenbeck-meachanisms} PROPERTIES LANGUAGE CXX)
endif()
target_include_directories(ou PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/generated/ornstein_uhlenbeck")
target_link_libraries(ou PRIVATE arbor-private-deps) # compiler flags, GPU options etc
target_link_libraries(ou PRIVATE arbor arborio) target_link_libraries(ou PRIVATE arbor arborio)
if (ARB_USE_BUNDLED_FMT) if (ARB_USE_BUNDLED_FMT)
target_include_directories(ou PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../ext/fmt/include") target_include_directories(ou PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../ext/fmt/include")
......
...@@ -114,3 +114,19 @@ function("make_catalogue_standalone") ...@@ -114,3 +114,19 @@ function("make_catalogue_standalone")
target_link_libraries(${MK_CAT_NAME}-catalogue PRIVATE arbor::arbor) target_link_libraries(${MK_CAT_NAME}-catalogue PRIVATE arbor::arbor)
endif() endif()
endfunction() endfunction()
function("make_catalogue_lib")
cmake_parse_arguments(MK_CAT "" "NAME;VERBOSE" "MOD;CXX" ${ARGN})
set(MK_CAT_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated/${MK_CAT_NAME}")
make_catalogue(
NAME ${MK_CAT_NAME}
MOD ${MK_CAT_MOD}
VERBOSE ${MK_CAT_VERBOSE}
ADD_DEPS OFF)
if(ARB_WITH_CUDA_CLANG OR ARB_WITH_HIP_CLANG)
set_source_files_properties(${catalogue-${MK_CAT_NAME}-mechanisms} PROPERTIES LANGUAGE CXX)
endif()
add_library(catalogue-${MK_CAT_NAME} STATIC EXCLUDE_FROM_ALL ${catalogue-${MK_CAT_NAME}-mechanisms})
target_link_libraries(catalogue-${MK_CAT_NAME} PRIVATE arbor arbor-private-deps)
target_include_directories(catalogue-${MK_CAT_NAME} INTERFACE ${MK_CAT_OUT_DIR})
endfunction()
...@@ -48,11 +48,10 @@ set(test_mechanisms ...@@ -48,11 +48,10 @@ set(test_mechanisms
include(${PROJECT_SOURCE_DIR}/mechanisms/BuildModules.cmake) include(${PROJECT_SOURCE_DIR}/mechanisms/BuildModules.cmake)
make_catalogue( make_catalogue_lib(
NAME testing NAME testing
MOD ${test_mechanisms} MOD ${test_mechanisms}
VERBOSE ${ARB_CAT_VERBOSE} VERBOSE ${ARB_CAT_VERBOSE})
ADD_DEPS OFF)
# Unit test sources # Unit test sources
...@@ -177,14 +176,12 @@ endif() ...@@ -177,14 +176,12 @@ endif()
if(ARB_WITH_CUDA_CLANG OR ARB_WITH_HIP_CLANG) if(ARB_WITH_CUDA_CLANG OR ARB_WITH_HIP_CLANG)
set_source_files_properties(${unit_sources} PROPERTIES LANGUAGE CXX) set_source_files_properties(${unit_sources} PROPERTIES LANGUAGE CXX)
set_source_files_properties(${test_mech_sources} PROPERTIES LANGUAGE CXX)
endif() endif()
add_executable(unit EXCLUDE_FROM_ALL ${unit_sources} ${catalogue-testing-mechanisms}) add_executable(unit EXCLUDE_FROM_ALL ${unit_sources})
add_dependencies(unit catalogue-testing-target) target_link_libraries(unit PRIVATE catalogue-testing)
add_dependencies(tests unit) add_dependencies(tests unit)
make_catalogue_standalone( make_catalogue_standalone(
NAME dummy NAME dummy
SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/dummy" SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/dummy"
...@@ -193,40 +190,10 @@ make_catalogue_standalone( ...@@ -193,40 +190,10 @@ make_catalogue_standalone(
CXX_FLAGS_TARGET ${ARB_CXX_FLAGS_TARGET_FULL} CXX_FLAGS_TARGET ${ARB_CXX_FLAGS_TARGET_FULL}
VERBOSE ON) VERBOSE ON)
if(ARB_WITH_NVCC) target_link_libraries(dummy-catalogue PRIVATE arbor-private-deps)
target_compile_options(dummy-catalogue PRIVATE -DARB_CUDA)
endif()
if(ARB_WITH_CUDA_CLANG)
set(clang_options_ -DARB_CUDA -xcuda --cuda-gpu-arch=sm_60 --cuda-path=${CUDA_TOOLKIT_ROOT_DIR})
target_compile_options(unit PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${clang_options_}>)
endif()
if(ARB_WITH_HIP_CLANG)
set(clang_options_ -DARB_HIP -xhip --amdgpu-target=gfx906 --amdgpu-target=gfx900)
target_compile_options(unit PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${clang_options_}>)
endif()
add_dependencies(unit dummy-catalogue) add_dependencies(unit dummy-catalogue)
if(ARB_WITH_GPU) target_link_libraries(unit PRIVATE arbor-private-deps)
target_compile_definitions(unit PRIVATE ARB_GPU_ENABLED)
endif()
if(ARB_WITH_NVCC)
target_compile_options(unit PRIVATE -DARB_CUDA)
endif()
if(ARB_WITH_CUDA_CLANG)
set(clang_options_ -DARB_CUDA -xcuda --cuda-gpu-arch=sm_60 --cuda-path=${CUDA_TOOLKIT_ROOT_DIR})
target_compile_options(unit PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${clang_options_}>)
endif()
if(ARB_WITH_HIP_CLANG)
set(clang_options_ -DARB_HIP -xhip --amdgpu-target=gfx906 --amdgpu-target=gfx900)
target_compile_options(unit PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${clang_options_}>)
endif()
target_compile_options(unit PRIVATE ${ARB_CXX_FLAGS_TARGET_FULL})
target_compile_definitions(unit PRIVATE "-DDATADIR=\"${CMAKE_CURRENT_SOURCE_DIR}/../swc\"") target_compile_definitions(unit PRIVATE "-DDATADIR=\"${CMAKE_CURRENT_SOURCE_DIR}/../swc\"")
target_compile_definitions(unit PRIVATE "-DLIBDIR=\"${PROJECT_BINARY_DIR}/lib\"") target_compile_definitions(unit PRIVATE "-DLIBDIR=\"${PROJECT_BINARY_DIR}/lib\"")
target_include_directories(unit PRIVATE "${CMAKE_CURRENT_BINARY_DIR}") target_include_directories(unit PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment