Fixing CMake to avoid unnecessary git_version relinking (#594)

This commit is contained in:
gilbertlee-amd
2022-08-04 18:03:59 -06:00
کامیت شده توسط GitHub
والد 2cb2f9493a
کامیت 9ed9cd0e31
2فایلهای تغییر یافته به همراه29 افزوده شده و 18 حذف شده
+14 -8
مشاهده پرونده
@@ -124,14 +124,6 @@ include_directories(src/include)
include_directories(src/collectives)
include_directories(src/collectives/device)
# Create git version file
# _git_version.cpp is a dummy output to force re-run prior to build
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/git_version.cpp
${CMAKE_CURRENT_BINARY_DIR}/_git_version.cpp
COMMAND ${CMAKE_COMMAND} -P
${CMAKE_CURRENT_SOURCE_DIR}/cmake/git_version.cmake)
if (BUILD_ALLREDUCE_ONLY)
add_definitions(-DBUILD_ALLREDUCE_ONLY)
set(CU_SOURCES
@@ -223,6 +215,20 @@ endforeach(filename)
add_library(rccl ${CPP_SOURCES})
# Create a custom target that creates/updates git_version.cpp
# that executes whenever rccl is built
add_custom_target(git_version_check
COMMENT "Updating git_version.cpp if necessary"
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/git_version.cmake
VERBATIM
)
# Create a dummy git_version.cpp file in case it doesn't exist
configure_file(src/nccl.h.in ${CMAKE_CURRENT_BINARY_DIR}/git_version.cpp)
# Execute git_version_check whenever rccl library is built
add_dependencies(rccl git_version_check)
if(TRACE)
add_definitions(-DENABLE_TRACE)
endif()
+15 -10
مشاهده پرونده
@@ -21,17 +21,22 @@ else()
string(STRIP "${GIT_DIFF}" GIT_DIFF)
string(STRIP "${GIT_BRANCH}" GIT_BRANCH)
set(GIT_VERSION "const char *rcclGitHash =\"${GIT_BRANCH}:${GIT_REV}${GIT_DIFF}\";")
set(CURR_GIT_VERSION "const char *rcclGitHash =\"${GIT_BRANCH}:${GIT_REV}${GIT_DIFF}\";")
endif()
# Compare file with existing file (if any)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/git_version.cpp)
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/git_version.cpp GIT_VERSION_)
# Compare file with older git version file (git_version.cpp)
if (EXISTS ${CMAKE_CURRENT_BINARY_DIR}/git_version.cpp)
#MESSAGE(STATUS "Found ${CMAKE_CURRENT_BINARY_DIR}/git_version.cpp")
file(READ ${CMAKE_CURRENT_BINARY_DIR}/git_version.cpp PREV_GIT_VERSION)
#message(STATUS "CURR GIT version: ${CURR_GIT_VERSION}")
#message(STATUS "PREV GIT version: ${PREV_GIT_VERSION}")
if (NOT "${CURR_GIT_VERSION}" STREQUAL "${PREV_GIT_VERSION}")
message(STATUS "Updating git_version.cpp")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/git_version.cpp "${CURR_GIT_VERSION}")
else()
message(STATUS "No changes to git_version.cpp required")
endif()
else()
set(GIT_VERSION_ "")
endif()
# Write updated file
if (NOT "${GIT_VERSION}" STREQUAL "${GIT_VERSION_}")
file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/git_version.cpp "${GIT_VERSION}")
# Create git_version.cpp if it doesn't exist yet
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/git_version.cpp "${GIT_VERSION}")
endif()