Fixing CMake to avoid unnecessary git_version relinking (#594)
This commit is contained in:
+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()
|
||||
|
||||
مرجع در شماره جدید
Block a user