Skip to content

Commit

Permalink
Changes to support building as a submodule (#218)
Browse files Browse the repository at this point in the history
* Changes to support building as a submodule

* Use the list dir since project() will not have been called
  • Loading branch information
benson31 committed Nov 15, 2023
1 parent 74088c9 commit 5792421
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 23 deletions.
31 changes: 15 additions & 16 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down Expand Up @@ -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.
Expand All @@ -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)
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion benchmark/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
6 changes: 3 additions & 3 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ add_library(Al
"${ALUMINUM_CUDA_SOURCES}"
"${ALUMINUM_HEADERS}")
target_include_directories(Al PUBLIC
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>)
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>)

set_target_properties(Al
PROPERTIES
Expand Down Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -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 ()

0 comments on commit 5792421

Please sign in to comment.