diff --git a/src/bcl/cmake/FindGASNET_EX.cmake b/src/bcl/cmake/FindGASNET_EX.cmake new file mode 100644 index 0000000..80196d4 --- /dev/null +++ b/src/bcl/cmake/FindGASNET_EX.cmake @@ -0,0 +1,26 @@ +## SPDX-FileCopyrightText: 2021 Benjamin Brock +## +## SPDX-License-Identifier: BSD-3-Clause + +if (TARGET GASNET_EX::GASNET_EX OR GASNET_EX_FOUND) + return() +endif() + +find_path(GASNET_EX_INCLUDE_DIRS NAMES gasnetex.h) + +#find_library(GASNET_EX_LIBRARIES NAMES gasnetex) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GASNET_EX + DEFAULT_MSG + GASNET_EX_INCLUDE_DIRS + #GASNET_EX_LIBRARIES +) + +mark_as_advanced(GASNET_EX_INCLUDE_DIRS GASNET_EX_LIBRARIES) + +add_library(GASNET_EX::GASNET_EX UNKNOWN IMPORTED) +set_target_properties(GASNET_EX::GASNET_EX PROPERTIES + #IMPORTED_LOCATION "${GASNET_EX_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${GASNET_EX_INCLUDE_DIRS}" +) diff --git a/src/bcl/cmake/FindSHMEM.cmake b/src/bcl/cmake/FindSHMEM.cmake new file mode 100644 index 0000000..42ac4c7 --- /dev/null +++ b/src/bcl/cmake/FindSHMEM.cmake @@ -0,0 +1,27 @@ +## SPDX-FileCopyrightText: 2021 Benjamin Brock +## +## SPDX-License-Identifier: BSD-3-Clause + +if (TARGET SHMEM::SHMEM OR SHMEM_FOUND) + return() +endif() + +find_path(SHMEM_INCLUDE_DIRS NAMES shmem.h PATHS mpp) + +#find_library(SHMEM_LIBRARIES NAMES gasnetex) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(SHMEM + DEFAULT_MSG + GASNETEX_INCLUDE_DIRS + #GASNETEX_LIBRARIES +) + +mark_as_advanced(SHMEM_INCLUDE_DIRS SHMEM_LIBRARIES) + +add_library(SHMEM::SHMEM UNKNOWN IMPORTED) +set_target_properties(SHMEM::SHMEM PROPERTIES + #IMPORTED_LOCATION "${SHMEM_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${SHMEM_INCLUDE_DIRS}/.." +) + diff --git a/src/bcl/cmake/FindUPCXX.cmake b/src/bcl/cmake/FindUPCXX.cmake new file mode 100644 index 0000000..ac3037f --- /dev/null +++ b/src/bcl/cmake/FindUPCXX.cmake @@ -0,0 +1,26 @@ +## SPDX-FileCopyrightText: 2021 Benjamin Brock +## +## SPDX-License-Identifier: BSD-3-Clause + +if (TARGET UPCXX::UPCXX OR UPCXX_FOUND) + return() +endif() + +find_path(UPCXX_INCLUDE_DIRS NAMES upcxx.h) + +#find_library(UPCXX_LIBRARIES NAMES gasnetex) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(UPCXX + DEFAULT_MSG + UPCXX_INCLUDE_DIRS + #UPCXX_LIBRARIES +) + +mark_as_advanced(UPCXX_INCLUDE_DIRS UPCXX_LIBRARIES) + +add_library(UPCXX::UPCXX UNKNOWN IMPORTED) +set_target_properties(UPCXX::UPCXX PROPERTIES + #IMPORTED_LOCATION "${UPCXX_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${UPCXX_INCLUDE_DIRS}" +) diff --git a/src/bcl/cmake/bclConfig.cmake b/src/bcl/cmake/bclConfig.cmake new file mode 100644 index 0000000..7639e51 --- /dev/null +++ b/src/bcl/cmake/bclConfig.cmake @@ -0,0 +1,50 @@ +## SPDX-FileCopyrightText: 2021 Benjamin Brock +## +## SPDX-License-Identifier: BSD-3-Clause + +cmake_minimum_required(VERSION 3.10) + +# Guard against multiple 'find_package(bcl)' calls +if (TARGET bcl OR bcl_FOUND) + return() +endif() + +set(bcl_LOC ${CMAKE_CURRENT_LIST_DIR}/..) +list(APPEND CMAKE_MODULE_PATH ${bcl_LOC}/cmake) + +## Base target ## + +add_library(bcl::core INTERFACE IMPORTED) +#target_include_directories(bcl::core INTERFACE ${bcl_LOC}) +SET_PROPERTY(TARGET bcl::core APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${bcl_LOC}) +## MPI ## + +find_package(MPI QUIET) +if (TARGET MPI::MPI_CXX) + add_library(bcl::mpi INTERFACE IMPORTED) + #target_link_libraries(bcl::mpi INTERFACE bcl::core MPI::MPI_CXX) + #target_compile_definitions(bcl::mpi INTERFACE BCL_MPI) + SET_PROPERTY(TARGET bcl::mpi APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS BCL_MPI) +endif() + +## SHMEM ## + +find_package(SHMEM QUIET MODULE) +if (TARGET SHMEM::SHMEM) + add_library(bcl::shmem INTERFACE IMPORTED) + #target_link_libraries(bcl::shmem INTERFACE bcl::core SHMEM::SHMEM) + #target_compile_definitions(bcl::shmem INTERFACE SHMEM) + SET_PROPERTY(TARGET bcl::shmem APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS SHMEM) +endif() + +## GASNET_EX ## + +find_package(GASNET_EX QUIET MODULE) +if (TARGET GASNET_EX::GASNET_EX) + add_library(bcl::gasnet_ex INTERFACE IMPORTED) + #target_link_libraries(bcl::gasnet_ex INTERFACE bcl::core GASNET_EX::GASNET_EX) + #target_compile_definitions(bcl::gasnet_ex INTERFACE GASNET_EX) + SET_PROPERTY(TARGET bcl::gasnet_ex APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS GASNET_EX) +endif() + +set(bcl_FOUND ON)