From 5792421d6194a5f681fa76440e693234f50e9015 Mon Sep 17 00:00:00 2001 From: Tom Benson Date: Wed, 15 Nov 2023 14:20:53 -0500 Subject: [PATCH] Changes to support building as a submodule (#218) * Changes to support building as a submodule * Use the list dir since project() will not have been called --- CMakeLists.txt | 31 +++++++++++++++---------------- benchmark/CMakeLists.txt | 2 +- src/CMakeLists.txt | 6 +++--- test/CMakeLists.txt | 6 +++--- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7890f5c..47824bb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,28 +10,27 @@ set(ALUMINUM_VERSION "${ALUMINUM_VERSION_MAJOR}.${ALUMINUM_VERSION_MINOR}.${ALUMINUM_VERSION_PATCH}") # Gather Git information if available. -find_program(__GIT_EXECUTABLE git) -mark_as_advanced(__GIT_EXECUTABLE) -if (__GIT_EXECUTABLE) +find_package(Git) +if (GIT_EXECUTABLE) execute_process( - COMMAND ${__GIT_EXECUTABLE} rev-parse --is-inside-source-tree - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + COMMAND ${GIT_EXECUTABLE} rev-parse --is-inside-source-tree + WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}" OUTPUT_VARIABLE __BUILDING_FROM_GIT_SOURCES OUTPUT_STRIP_TRAILING_WHITESPACE) if (__BUILDING_FROM_GIT_SOURCES) execute_process( - COMMAND ${__GIT_EXECUTABLE} rev-parse --show-toplevel - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + COMMAND ${GIT_EXECUTABLE} rev-parse --show-toplevel + WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}" OUTPUT_VARIABLE __GIT_TOPLEVEL_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process( - COMMAND ${__GIT_EXECUTABLE} rev-parse --git-dir + COMMAND ${GIT_EXECUTABLE} rev-parse --git-dir WORKING_DIRECTORY "${__GIT_TOPLEVEL_DIR}" OUTPUT_VARIABLE __GIT_GIT_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process( - COMMAND ${__GIT_EXECUTABLE} --git-dir "${__GIT_GIT_DIR}" describe + COMMAND ${GIT_EXECUTABLE} --git-dir "${__GIT_GIT_DIR}" describe --abbrev=7 --always --dirty --tags WORKING_DIRECTORY "${__GIT_TOPLEVEL_DIR}" OUTPUT_VARIABLE __GIT_DESCRIBE_VERSION @@ -48,13 +47,13 @@ endif () project(ALUMINUM VERSION ${ALUMINUM_VERSION} LANGUAGES CXX) # Not "CUDA" just yet since that's only one possible device paradigm. -if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) +if (${PROJECT_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) message(FATAL_ERROR "In-source builds are prohibited. " "Create a new directory and build there.") endif () include(GNUInstallDirs) -list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") +list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") # Options @@ -475,11 +474,11 @@ if (AL_HAS_NVPROF) set(AL_HAS_PROF ON) endif () configure_file( - "${CMAKE_SOURCE_DIR}/cmake/Al_config.hpp.in" + "${PROJECT_SOURCE_DIR}/cmake/Al_config.hpp.in" "${CMAKE_BINARY_DIR}/Al_config.hpp" @ONLY) configure_file( - "${CMAKE_SOURCE_DIR}/cmake/tuning_params.hpp.in" + "${PROJECT_SOURCE_DIR}/cmake/tuning_params.hpp.in" "${CMAKE_BINARY_DIR}/aluminum/tuning_params.hpp" @ONLY) # Macro for setting full paths to source files. @@ -494,7 +493,7 @@ endmacro() add_subdirectory(include/aluminum) # Add in the master header -list(APPEND ALUMINUM_HEADERS "${CMAKE_SOURCE_DIR}/include/Al.hpp") +list(APPEND ALUMINUM_HEADERS "${PROJECT_SOURCE_DIR}/include/Al.hpp") # Add the library targets add_subdirectory(src) @@ -522,10 +521,10 @@ write_basic_package_version_file( "${CMAKE_BINARY_DIR}/AluminumConfigVersion.cmake" VERSION ${ALUMINUM_VERSION} COMPATIBILITY SameMajorVersion ) -set(INCLUDE_INSTALL_DIRS ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src) +set(INCLUDE_INSTALL_DIRS ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src) set(LIB_INSTALL_DIR src) set(CMAKE_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}) -set(CMAKE_MODULE_LOCATION "${CMAKE_SOURCE_DIR}/cmake") +set(CMAKE_MODULE_LOCATION "${PROJECT_SOURCE_DIR}/cmake") set(REAL_CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}") configure_package_config_file(cmake/AluminumConfig.cmake.in diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt index c062e59..f7d4165 100644 --- a/benchmark/CMakeLists.txt +++ b/benchmark/CMakeLists.txt @@ -30,7 +30,7 @@ foreach(src IN LISTS AL_BENCHMARK_SOURCES AL_GPU_BENCHMARK_SOURCES) PRIVATE Al aluminum_test_headers) target_include_directories( ${_benchmark_exe_name} SYSTEM PRIVATE - ${CMAKE_SOURCE_DIR}/third_party/cxxopts/include) + ${PROJECT_SOURCE_DIR}/third_party/cxxopts/include) # FIXME: Hopefully this can be removed in a future version of ROCm. if (AL_HAS_ROCM AND AL_BUILD_TYPE_UPPER MATCHES "DEBUG") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index badb5b5..136f253 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -42,7 +42,7 @@ add_library(Al "${ALUMINUM_CUDA_SOURCES}" "${ALUMINUM_HEADERS}") target_include_directories(Al PUBLIC - $) + $) set_target_properties(Al PROPERTIES @@ -141,11 +141,11 @@ endif (AL_HAS_ROCM) # Header installation. install( - DIRECTORY ${CMAKE_SOURCE_DIR}/include/aluminum + DIRECTORY ${PROJECT_SOURCE_DIR}/include/aluminum DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} FILES_MATCHING PATTERN "*.hpp") install( - FILES ${CMAKE_SOURCE_DIR}/include/Al.hpp + FILES ${PROJECT_SOURCE_DIR}/include/Al.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(TARGETS Al diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 313956b..cde8f0f 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -54,7 +54,7 @@ foreach(src ${AL_TEST_SOURCES}) add_executable(${_test_exe_name} ${src}) target_include_directories(${_test_exe_name} SYSTEM PRIVATE - ${CMAKE_SOURCE_DIR}/third_party/cxxopts/include) + ${PROJECT_SOURCE_DIR}/third_party/cxxopts/include) target_link_libraries(${_test_exe_name} PRIVATE Al aluminum_test_headers) # FIXME: Hopefully this can be removed in a future version of ROCm. if (AL_HAS_ROCM AND AL_BUILD_TYPE_UPPER MATCHES "DEBUG") @@ -65,11 +65,11 @@ endforeach() if (AL_HAS_MPI_CUDA_RMA AND NOT AL_HAS_ROCM) add_executable(test_rma_ring.exe test_rma_ring.cpp ${TEST_HEADERS}) target_include_directories( - test_rma_ring.exe SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/third_party/cxxopts/include) + test_rma_ring.exe SYSTEM PRIVATE ${PROJECT_SOURCE_DIR}/third_party/cxxopts/include) target_link_libraries(test_rma_ring.exe PRIVATE Al) add_executable(test_rma_halo_exchange.exe test_rma_halo_exchange.cpp ${TEST_HEADERS}) target_include_directories( - test_rma_halo_exchange.exe SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/third_party/cxxopts/include) + test_rma_halo_exchange.exe SYSTEM PRIVATE ${PROJECT_SOURCE_DIR}/third_party/cxxopts/include) target_link_libraries(test_rma_halo_exchange.exe PRIVATE Al) endif ()