Skip to content

Commit

Permalink
rapids-cmake won't ever use an existing variable starting with RAPIDS_ (
Browse files Browse the repository at this point in the history
#203)

Fixes #200

Authors:
  - Robert Maynard (https://github.com/robertmaynard)

Approvers:
  - Vyas Ramasubramani (https://github.com/vyasr)
  - AJ Schmidt (https://github.com/ajschmidt8)

URL: #203
  • Loading branch information
robertmaynard authored Jun 22, 2022
1 parent 048e269 commit 4c3f903
Show file tree
Hide file tree
Showing 25 changed files with 252 additions and 248 deletions.
2 changes: 2 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ Here are some guidelines to help the review process go smoothly.
- Each user facing function should be added to the `cmake-format.json` document
- Run `cmake-genparsers -f json` on the `.cmake` file as a starting point
- Each function first line should be `list(APPEND CMAKE_MESSAGE_CONTEXT "rapids.<component>.<function>")`
- Internal variables for things like `cmake_parse_arguments` should use `_RAPIDS`
instead of `RAPIDS`, so we don't incorrectly use an existing variable like `RAPIDS_VERSION`
- A file should not modify any state simply by being included. State modification should
only occur inside functions unless absolutely necessary due to restrictions of the CMake
Expand Down
24 changes: 12 additions & 12 deletions rapids-cmake/cmake/detail/compute_git_info.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -17,36 +17,36 @@ if(GIT_EXECUTABLE AND EXISTS "${GIT_EXECUTABLE}")
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
WORKING_DIRECTORY ${WORKING_DIRECTORY}
ERROR_QUIET
OUTPUT_VARIABLE RAPIDS_WRITE_SHA1
OUTPUT_VARIABLE _RAPIDS_WRITE_SHA1
OUTPUT_STRIP_TRAILING_WHITESPACE # need to strip off any newline
)
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${WORKING_DIRECTORY}
ERROR_QUIET
OUTPUT_VARIABLE RAPIDS_WRITE_BRANCH
OUTPUT_VARIABLE _RAPIDS_WRITE_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE # need to strip off any newline
)
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tag --dirty --always
WORKING_DIRECTORY ${WORKING_DIRECTORY}
ERROR_QUIET
OUTPUT_VARIABLE RAPIDS_WRITE_VERSION
OUTPUT_VARIABLE _RAPIDS_WRITE_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE # need to strip off any newline
)
endif()

if(NOT RAPIDS_WRITE_SHA1)
set(RAPIDS_WRITE_SHA1 "unknown")
if(NOT _RAPIDS_WRITE_SHA1)
set(_RAPIDS_WRITE_SHA1 "unknown")
endif()
if(NOT RAPIDS_WRITE_BRANCH)
set(RAPIDS_WRITE_BRANCH "unknown")
if(NOT _RAPIDS_WRITE_BRANCH)
set(_RAPIDS_WRITE_BRANCH "unknown")
endif()
if(NOT RAPIDS_WRITE_VERSION)
set(RAPIDS_WRITE_VERSION "unknown")
if(NOT _RAPIDS_WRITE_VERSION)
set(_RAPIDS_WRITE_VERSION "unknown")
endif()

set(RAPIDS_GIT_IS_DIRTY 0)
if(RAPIDS_WRITE_VERSION MATCHES dirty)
set(RAPIDS_GIT_IS_DIRTY 1)
set(_RAPIDS_GIT_IS_DIRTY 0)
if(_RAPIDS_WRITE_VERSION MATCHES dirty)
set(_RAPIDS_GIT_IS_DIRTY 1)
endif()

configure_file("${TEMPLATE_FILE}" "${FILE_TO_WRITE}" @ONLY)
10 changes: 5 additions & 5 deletions rapids-cmake/cmake/template/git_revision.hpp.in
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
*/
#pragma once

#define @RAPIDS_GIT_PREFIX@_GIT_BRANCH "@RAPIDS_WRITE_BRANCH@"
#define @RAPIDS_GIT_PREFIX@_GIT_SHA1 "@RAPIDS_WRITE_SHA1@"
#define @RAPIDS_GIT_PREFIX@_GIT_VERSION "@RAPIDS_WRITE_VERSION@"
#if (@RAPIDS_GIT_IS_DIRTY@) //
# define @RAPIDS_GIT_PREFIX@_GIT_IS_DIRTY
#define @_RAPIDS_GIT_PREFIX@_GIT_BRANCH "@_RAPIDS_WRITE_BRANCH@"
#define @_RAPIDS_GIT_PREFIX@_GIT_SHA1 "@_RAPIDS_WRITE_SHA1@"
#define @_RAPIDS_GIT_PREFIX@_GIT_VERSION "@_RAPIDS_WRITE_VERSION@"
#if (@_RAPIDS_GIT_IS_DIRTY@) //
# define @_RAPIDS_GIT_PREFIX@_GIT_IS_DIRTY
#endif
6 changes: 3 additions & 3 deletions rapids-cmake/cmake/template/version.hpp.in
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@
*/
#pragma once

#define @RAPIDS_PREFIX@_VERSION_MAJOR @RAPIDS_WRITE_MAJOR@
#define @RAPIDS_PREFIX@_VERSION_MINOR @RAPIDS_WRITE_MINOR@
#define @RAPIDS_PREFIX@_VERSION_PATCH @RAPIDS_WRITE_PATCH@
#define @_RAPIDS_PREFIX@_VERSION_MAJOR @_RAPIDS_WRITE_MAJOR@
#define @_RAPIDS_PREFIX@_VERSION_MINOR @_RAPIDS_WRITE_MINOR@
#define @_RAPIDS_PREFIX@_VERSION_PATCH @_RAPIDS_WRITE_PATCH@
9 changes: 5 additions & 4 deletions rapids-cmake/cmake/write_git_revision_file.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ function(rapids_cmake_write_git_revision_file target file_path)
set(options "")
set(one_value PREFIX)
set(multi_value "")
cmake_parse_arguments(RAPIDS "${options}" "${one_value}" "${multi_value}" ${ARGN})
cmake_parse_arguments(_RAPIDS "${options}" "${one_value}" "${multi_value}" ${ARGN})

cmake_path(IS_RELATIVE file_path is_relative)
if(is_relative)
Expand All @@ -89,8 +89,8 @@ function(rapids_cmake_write_git_revision_file target file_path)
set(output_path "${file_path}")
endif()

if(NOT RAPIDS_PREFIX)
set(RAPIDS_PREFIX "${PROJECT_NAME}")
if(NOT _RAPIDS_PREFIX)
set(_RAPIDS_PREFIX "${PROJECT_NAME}")
endif()

# Find Git
Expand All @@ -100,7 +100,8 @@ function(rapids_cmake_write_git_revision_file target file_path)
BYPRODUCTS "${file_path}"
COMMENT "Generate git revision file for ${target}"
COMMAND ${CMAKE_COMMAND} -DWORKING_DIRECTORY=${CMAKE_CURRENT_SOURCE_DIR}
-DGIT_EXECUTABLE=${GIT_EXECUTABLE} -DRAPIDS_GIT_PREFIX=${RAPIDS_PREFIX}
-DGIT_EXECUTABLE=${GIT_EXECUTABLE}
-D_RAPIDS_GIT_PREFIX=${_RAPIDS_PREFIX}
-DTEMPLATE_FILE=${CMAKE_CURRENT_FUNCTION_LIST_DIR}/template/git_revision.hpp.in
-DFILE_TO_WRITE=${file_path} -P
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/detail/compute_git_info.cmake
Expand Down
18 changes: 9 additions & 9 deletions rapids-cmake/cmake/write_version_file.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ function(rapids_cmake_write_version_file file_path)
set(options "")
set(one_value PREFIX)
set(multi_value "")
cmake_parse_arguments(RAPIDS "${options}" "${one_value}" "${multi_value}" ${ARGN})
cmake_parse_arguments(_RAPIDS "${options}" "${one_value}" "${multi_value}" ${ARGN})

cmake_path(IS_RELATIVE file_path is_relative)
if(is_relative)
Expand All @@ -69,26 +69,26 @@ function(rapids_cmake_write_version_file file_path)
set(output_path "${file_path}")
endif()

if(NOT RAPIDS_PREFIX)
set(RAPIDS_PREFIX "${PROJECT_NAME}")
if(NOT _RAPIDS_PREFIX)
set(_RAPIDS_PREFIX "${PROJECT_NAME}")
endif()

if(PROJECT_VERSION_MAJOR)
math(EXPR RAPIDS_WRITE_MAJOR "${PROJECT_VERSION_MAJOR} + 0" OUTPUT_FORMAT DECIMAL)
math(EXPR _RAPIDS_WRITE_MAJOR "${PROJECT_VERSION_MAJOR} + 0" OUTPUT_FORMAT DECIMAL)
else()
set(RAPIDS_WRITE_MAJOR 0)
set(_RAPIDS_WRITE_MAJOR 0)
endif()

if(PROJECT_VERSION_MINOR)
math(EXPR RAPIDS_WRITE_MINOR "${PROJECT_VERSION_MINOR} + 0" OUTPUT_FORMAT DECIMAL)
math(EXPR _RAPIDS_WRITE_MINOR "${PROJECT_VERSION_MINOR} + 0" OUTPUT_FORMAT DECIMAL)
else()
set(RAPIDS_WRITE_MINOR 0)
set(_RAPIDS_WRITE_MINOR 0)
endif()

if(PROJECT_VERSION_PATCH)
math(EXPR RAPIDS_WRITE_PATCH "${PROJECT_VERSION_PATCH} + 0" OUTPUT_FORMAT DECIMAL)
math(EXPR _RAPIDS_WRITE_PATCH "${PROJECT_VERSION_PATCH} + 0" OUTPUT_FORMAT DECIMAL)
else()
set(RAPIDS_WRITE_PATCH 0)
set(_RAPIDS_WRITE_PATCH 0)
endif()

configure_file("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/template/version.hpp.in" "${output_path}"
Expand Down
30 changes: 15 additions & 15 deletions rapids-cmake/cpm/find.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -129,15 +129,15 @@ function(rapids_cpm_find name version)
set(options CPM_ARGS)
set(one_value BUILD_EXPORT_SET INSTALL_EXPORT_SET)
set(multi_value GLOBAL_TARGETS)
cmake_parse_arguments(RAPIDS "${options}" "${one_value}" "${multi_value}" ${ARGN})
cmake_parse_arguments(_RAPIDS "${options}" "${one_value}" "${multi_value}" ${ARGN})

if(NOT DEFINED RAPIDS_CPM_ARGS)
if(NOT DEFINED _RAPIDS_CPM_ARGS)
message(FATAL_ERROR "rapids_cpm_find requires you to specify CPM_ARGS before any CPM arguments")
endif()

set(package_needs_to_be_added TRUE)
if(RAPIDS_GLOBAL_TARGETS)
foreach(target IN LISTS RAPIDS_GLOBAL_TARGETS)
if(_RAPIDS_GLOBAL_TARGETS)
foreach(target IN LISTS _RAPIDS_GLOBAL_TARGETS)
if(TARGET ${target})
set(package_needs_to_be_added FALSE)
break()
Expand All @@ -147,9 +147,9 @@ function(rapids_cpm_find name version)

if(package_needs_to_be_added)
if(CPM_${name}_SOURCE)
CPMAddPackage(NAME ${name} VERSION ${version} ${RAPIDS_UNPARSED_ARGUMENTS})
CPMAddPackage(NAME ${name} VERSION ${version} ${_RAPIDS_UNPARSED_ARGUMENTS})
else()
CPMFindPackage(NAME ${name} VERSION ${version} ${RAPIDS_UNPARSED_ARGUMENTS})
CPMFindPackage(NAME ${name} VERSION ${version} ${_RAPIDS_UNPARSED_ARGUMENTS})
endif()
else()
# Restore any CPM variables that might be cached
Expand All @@ -160,25 +160,25 @@ function(rapids_cpm_find name version)
endif()

set(extra_info)
if(RAPIDS_GLOBAL_TARGETS)
if(_RAPIDS_GLOBAL_TARGETS)
include("${rapids-cmake-dir}/cmake/make_global.cmake")
rapids_cmake_make_global(RAPIDS_GLOBAL_TARGETS)
rapids_cmake_make_global(_RAPIDS_GLOBAL_TARGETS)

set(extra_info "GLOBAL_TARGETS")
list(APPEND extra_info ${RAPIDS_GLOBAL_TARGETS})
list(APPEND extra_info ${_RAPIDS_GLOBAL_TARGETS})
endif()

if(RAPIDS_BUILD_EXPORT_SET)
if(_RAPIDS_BUILD_EXPORT_SET)
include("${rapids-cmake-dir}/export/cpm.cmake")
rapids_export_cpm(BUILD ${name} ${RAPIDS_BUILD_EXPORT_SET}
CPM_ARGS NAME ${name} VERSION ${version} ${RAPIDS_UNPARSED_ARGUMENTS}
rapids_export_cpm(BUILD ${name} ${_RAPIDS_BUILD_EXPORT_SET}
CPM_ARGS NAME ${name} VERSION ${version} ${_RAPIDS_UNPARSED_ARGUMENTS}
${extra_info})
endif()

if(RAPIDS_INSTALL_EXPORT_SET)
if(_RAPIDS_INSTALL_EXPORT_SET)
include("${rapids-cmake-dir}/export/package.cmake")
rapids_export_package(INSTALL ${name} ${RAPIDS_INSTALL_EXPORT_SET} VERSION ${version}
${extra_info})
rapids_export_package(INSTALL ${name} ${_RAPIDS_INSTALL_EXPORT_SET} VERSION ${version}
${extra_info})
endif()

# Propagate up variables that CPMFindPackage provide
Expand Down
8 changes: 4 additions & 4 deletions rapids-cmake/cpm/init.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,15 @@ function(rapids_cpm_init)
set(_rapids_options)
set(_rapids_one_value OVERRIDE)
set(_rapids_multi_value)
cmake_parse_arguments(RAPIDS "${_rapids_options}" "${_rapids_one_value}" "${_rapids_multi_value}"
${ARGN})
cmake_parse_arguments(_RAPIDS "${_rapids_options}" "${_rapids_one_value}"
"${_rapids_multi_value}" ${ARGN})

include("${rapids-cmake-dir}/cpm/detail/load_preset_versions.cmake")
rapids_cpm_load_preset_versions()

if(RAPIDS_OVERRIDE)
if(_RAPIDS_OVERRIDE)
include("${rapids-cmake-dir}/cpm/package_override.cmake")
rapids_cpm_package_override("${RAPIDS_OVERRIDE}")
rapids_cpm_package_override("${_RAPIDS_OVERRIDE}")
endif()

include("${rapids-cmake-dir}/cpm/detail/download.cmake")
Expand Down
18 changes: 9 additions & 9 deletions rapids-cmake/cpm/libcudacxx.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,13 @@ function(rapids_cpm_libcudacxx)
set(options CPM_ARGS)
set(one_value BUILD_EXPORT_SET INSTALL_EXPORT_SET)
set(multi_value)
cmake_parse_arguments(RAPIDS "${options}" "${one_value}" "${multi_value}" ${ARGN})
cmake_parse_arguments(_RAPIDS "${options}" "${one_value}" "${multi_value}" ${ARGN})

include("${rapids-cmake-dir}/cpm/detail/package_details.cmake")
rapids_cpm_package_details(libcudacxx version repository tag shallow exclude)

include("${rapids-cmake-dir}/cpm/find.cmake")
rapids_cpm_find(libcudacxx ${version} ${RAPIDS_UNPARSED_ARGUMENTS}
rapids_cpm_find(libcudacxx ${version} ${_RAPIDS_UNPARSED_ARGUMENTS}
GLOBAL_TARGETS libcudacxx::libcudacxx
CPM_ARGS
GIT_REPOSITORY ${repository}
Expand All @@ -74,19 +74,19 @@ function(rapids_cpm_libcudacxx)
EXCLUDE_FROM_ALL ${exclude}
DOWNLOAD_ONLY TRUE)

if(RAPIDS_BUILD_EXPORT_SET)
if(_RAPIDS_BUILD_EXPORT_SET)
include("${rapids-cmake-dir}/export/package.cmake")
rapids_export_package(BUILD libcudacxx ${RAPIDS_BUILD_EXPORT_SET}
rapids_export_package(BUILD libcudacxx ${_RAPIDS_BUILD_EXPORT_SET}
GLOBAL_TARGETS libcudacxx::libcudacxx)

include("${rapids-cmake-dir}/export/find_package_root.cmake")
rapids_export_find_package_root(BUILD libcudacxx [=[${CMAKE_CURRENT_LIST_DIR}]=]
${RAPIDS_BUILD_EXPORT_SET})
${_RAPIDS_BUILD_EXPORT_SET})
endif()

if(RAPIDS_INSTALL_EXPORT_SET)
if(_RAPIDS_INSTALL_EXPORT_SET)
include("${rapids-cmake-dir}/export/package.cmake")
rapids_export_package(INSTALL libcudacxx ${RAPIDS_INSTALL_EXPORT_SET} VERSION ${version}
rapids_export_package(INSTALL libcudacxx ${_RAPIDS_INSTALL_EXPORT_SET} VERSION ${version}
GLOBAL_TARGETS libcudacxx::libcudacxx)
endif()

Expand Down Expand Up @@ -121,7 +121,7 @@ if(NOT TARGET libcudacxx_includes)
endif()
]=])

if(RAPIDS_BUILD_EXPORT_SET)
if(_RAPIDS_BUILD_EXPORT_SET)
include("${rapids-cmake-dir}/export/export.cmake")
rapids_export(BUILD libcudacxx
EXPORT_SET libcudacxx-targets
Expand All @@ -131,7 +131,7 @@ endif()
FINAL_CODE_BLOCK code_string)
endif()

if(RAPIDS_INSTALL_EXPORT_SET)
if(_RAPIDS_INSTALL_EXPORT_SET)
include(GNUInstallDirs) # For CMAKE_INSTALL_INCLUDEDIR
install(DIRECTORY "${libcudacxx_SOURCE_DIR}/include/"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/rapids/libcudacxx")
Expand Down
24 changes: 12 additions & 12 deletions rapids-cmake/cpm/nvcomp.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -79,32 +79,32 @@ function(rapids_cpm_nvcomp)
set(options)
set(one_value USE_PROPRIETARY_BINARY BUILD_EXPORT_SET INSTALL_EXPORT_SET)
set(multi_value)
cmake_parse_arguments(RAPIDS "${options}" "${one_value}" "${multi_value}" ${ARGN})
cmake_parse_arguments(_RAPIDS "${options}" "${one_value}" "${multi_value}" ${ARGN})

# Fix up RAPIDS_UNPARSED_ARGUMENTS to have EXPORT_SETS as this is need for rapids_cpm_find
if(RAPIDS_INSTALL_EXPORT_SET)
list(APPEND RAPIDS_UNPARSED_ARGUMENTS INSTALL_EXPORT_SET ${RAPIDS_INSTALL_EXPORT_SET})
# Fix up _RAPIDS_UNPARSED_ARGUMENTS to have EXPORT_SETS as this is need for rapids_cpm_find
if(_RAPIDS_INSTALL_EXPORT_SET)
list(APPEND _RAPIDS_UNPARSED_ARGUMENTS INSTALL_EXPORT_SET ${_RAPIDS_INSTALL_EXPORT_SET})
endif()
if(RAPIDS_BUILD_EXPORT_SET)
list(APPEND RAPIDS_UNPARSED_ARGUMENTS BUILD_EXPORT_SET ${RAPIDS_BUILD_EXPORT_SET})
if(_RAPIDS_BUILD_EXPORT_SET)
list(APPEND _RAPIDS_UNPARSED_ARGUMENTS BUILD_EXPORT_SET ${_RAPIDS_BUILD_EXPORT_SET})
endif()

include("${rapids-cmake-dir}/cpm/detail/package_details.cmake")
rapids_cpm_package_details(nvcomp version repository tag shallow exclude)
set(to_exclude OFF)
if(NOT RAPIDS_INSTALL_EXPORT_SET OR exclude)
if(NOT _RAPIDS_INSTALL_EXPORT_SET OR exclude)
set(to_exclude ON)
endif()

# first see if we have a proprietary pre-built binary listed in versions.json and it if requested.
set(nvcomp_proprietary_binary OFF) # will be set to true by rapids_cpm_get_proprietary_binary
if(RAPIDS_USE_PROPRIETARY_BINARY)
if(_RAPIDS_USE_PROPRIETARY_BINARY)
include("${rapids-cmake-dir}/cpm/detail/get_proprietary_binary.cmake")
rapids_cpm_get_proprietary_binary(nvcomp ${version})
endif()

include("${rapids-cmake-dir}/cpm/find.cmake")
rapids_cpm_find(nvcomp ${version} ${RAPIDS_UNPARSED_ARGUMENTS}
rapids_cpm_find(nvcomp ${version} ${_RAPIDS_UNPARSED_ARGUMENTS}
GLOBAL_TARGETS nvcomp::nvcomp
CPM_ARGS
GIT_REPOSITORY ${repository}
Expand All @@ -129,7 +129,7 @@ function(rapids_cpm_nvcomp)
# Set up up install rules when using the proprietary_binary. When building from source, nvcomp
# will set the correct install rules
include("${rapids-cmake-dir}/export/find_package_root.cmake")
if(RAPIDS_INSTALL_EXPORT_SET AND nvcomp_proprietary_binary)
if(_RAPIDS_INSTALL_EXPORT_SET AND nvcomp_proprietary_binary)
include(GNUInstallDirs)
install(DIRECTORY "${nvcomp_ROOT}/lib/" DESTINATION lib)
install(DIRECTORY "${nvcomp_ROOT}/include/" DESTINATION include)
Expand All @@ -138,9 +138,9 @@ function(rapids_cpm_nvcomp)
install(FILES "${nvcomp_ROOT}/LICENSE" DESTINATION info/ RENAME NVCOMP_LICENSE)
endif()

if(RAPIDS_BUILD_EXPORT_SET AND nvcomp_proprietary_binary)
if(_RAPIDS_BUILD_EXPORT_SET AND nvcomp_proprietary_binary)
# point our consumers to where they can find the pre-built version
rapids_export_find_package_root(BUILD nvcomp "${nvcomp_ROOT}" ${RAPIDS_BUILD_EXPORT_SET})
rapids_export_find_package_root(BUILD nvcomp "${nvcomp_ROOT}" ${_RAPIDS_BUILD_EXPORT_SET})
endif()

endfunction()
Loading

0 comments on commit 4c3f903

Please sign in to comment.