Include one single copy of Git commit information

This commit is contained in:
Lei Zhang 2018-08-27 12:26:09 -04:00
Родитель 815c450f56
Коммит cde19502c5
7 изменённых файлов: 48 добавлений и 32 удалений

Просмотреть файл

@ -77,6 +77,15 @@ namespace clang {
/// for use in the CPP __VERSION__ macro, which includes the clang version
/// number, the repository version, and the vendor tag.
std::string getClangFullCPPVersion();
// HLSL Change Starts
#ifdef SUPPORT_QUERY_GIT_COMMIT_INFO
/// \brief Returns the number of Git commits in current branch.
uint32_t getGitCommitCount();
/// \brief Returns the hash of the current Git commit.
const char *getGitCommitHash();
#endif // SUPPORT_QUERY_GIT_COMMIT_INFO
// HLSL Change Ends
}
#endif // LLVM_CLANG_BASIC_VERSION_H

Просмотреть файл

@ -90,3 +90,25 @@ add_clang_library(clangBasic
${version_inc}
)
# HLSL Change Starts
if ( HLSL_SUPPORT_QUERY_GIT_COMMIT_INFO )
set(GIT_COMMIT_INFO_FILE ${CMAKE_CURRENT_BINARY_DIR}/GitCommitInfo.inc)
set(GET_GIT_COMMIT_SCRIPT ${PROJECT_SOURCE_DIR}/utils/GetCommitInfo.py)
add_custom_command(
OUTPUT ${GIT_COMMIT_INFO_FILE}
COMMAND ${PYTHON_EXECUTABLE} ${GET_GIT_COMMIT_SCRIPT}
${PROJECT_SOURCE_DIR} ${GIT_COMMIT_INFO_FILE}
DEPENDS ${GET_GIT_COMMIT_SCRIPT} GIT_COMMIT_INFO_ALWAYS_REBUILD
COMMENT "Collect Git commit info for versioning"
)
add_custom_target(
GIT_COMMIT_INFO_ALWAYS_REBUILD
${CMAKE_COMMAND} -E touch ${GET_GIT_COMMIT_SCRIPT}
COMMENT "Touch GetCommitInfo.py to trigger rebuild"
)
set_property(TARGET GIT_COMMIT_INFO_ALWAYS_REBUILD
PROPERTY FOLDER "Utils")
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/Version.cpp
PROPERTIES OBJECT_DEPENDS "${GIT_COMMIT_INFO_FILE}")
endif()
# HLSL Change Ends

Просмотреть файл

@ -180,4 +180,12 @@ std::string getClangFullCPPVersion() {
#endif // HLSL Change Ends
}
// HLSL Change Starts
#ifdef SUPPORT_QUERY_GIT_COMMIT_INFO
#include "GitCommitInfo.inc"
uint32_t getGitCommitCount() { return kGitCommitCount; }
const char *getGitCommitHash() { return kGitCommitHash; }
#endif // SUPPORT_QUERY_GIT_COMMIT_INFO
// HLSL Change Ends
} // end namespace clang

Просмотреть файл

@ -125,29 +125,6 @@ else ()
include_directories(AFTER ${LLVM_INCLUDE_DIR}/dxc/Tracing)
endif (WIN32)
if ( HLSL_SUPPORT_QUERY_GIT_COMMIT_INFO )
set(GIT_COMMIT_INFO_FILE ${CMAKE_CURRENT_BINARY_DIR}/GitCommitInfo.inc)
set(GET_GIT_COMMIT_SCRIPT ${PROJECT_SOURCE_DIR}/utils/GetCommitInfo.py)
add_custom_command(
OUTPUT ${GIT_COMMIT_INFO_FILE}
COMMAND ${PYTHON_EXECUTABLE} ${GET_GIT_COMMIT_SCRIPT}
${PROJECT_SOURCE_DIR} ${GIT_COMMIT_INFO_FILE}
DEPENDS ${GET_GIT_COMMIT_SCRIPT} GIT_COMMIT_INFO_ALWAYS_REBUILD
COMMENT "Collect Git commit info for versioning"
)
add_custom_target(
GIT_COMMIT_INFO_ALWAYS_REBUILD
${CMAKE_COMMAND} -E touch ${GET_GIT_COMMIT_SCRIPT}
COMMENT "Touch GetCommitInfo.py to trigger rebuild"
)
set_property(TARGET GIT_COMMIT_INFO_ALWAYS_REBUILD
PROPERTY FOLDER "Utils")
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/dxcompilerobj.cpp
PROPERTIES OBJECT_DEPENDS "${GIT_COMMIT_INFO_FILE}")
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/dxcvalidator.cpp
PROPERTIES OBJECT_DEPENDS "${GIT_COMMIT_INFO_FILE}")
endif()
set_target_properties(dxcompiler
PROPERTIES
OUTPUT_NAME "dxcompiler"

Просмотреть файл

@ -54,7 +54,7 @@
// SPIRV change ends
#ifdef SUPPORT_QUERY_GIT_COMMIT_INFO
#include "GitCommitInfo.inc" // Auto generated file containing Git commit info
#include "clang/Basic/Version.h"
#endif // SUPPORT_QUERY_GIT_COMMIT_INFO
#define CP_UTF16 1200
@ -961,13 +961,13 @@ public:
if (pCommitCount == nullptr || pCommitHash == nullptr)
return E_INVALIDARG;
char *const hash = (char *)CoTaskMemAlloc(ARRAYSIZE(kGitCommitHash) + 1);
char *const hash = (char *)CoTaskMemAlloc(8 + 1); // 8 is guaranteed by utils/GetCommitInfo.py
if (hash == nullptr)
return E_OUTOFMEMORY;
std::strcpy(hash, kGitCommitHash);
std::strcpy(hash, getGitCommitHash());
*pCommitHash = hash;
*pCommitCount = kGitCommitCount;
*pCommitCount = getGitCommitCount();
return S_OK;
}

Просмотреть файл

@ -30,7 +30,7 @@
#endif
#ifdef SUPPORT_QUERY_GIT_COMMIT_INFO
#include "GitCommitInfo.inc" // Auto generated file containing Git commit info
#include "clang/Basic/Version.h"
#endif // SUPPORT_QUERY_GIT_COMMIT_INFO
using namespace llvm;
@ -177,13 +177,13 @@ HRESULT STDMETHODCALLTYPE DxcValidator::GetCommitInfo(
if (pCommitCount == nullptr || pCommitHash == nullptr)
return E_INVALIDARG;
char *const hash = (char *)CoTaskMemAlloc(ARRAYSIZE(kGitCommitHash) + 1);
char *const hash = (char *)CoTaskMemAlloc(8 + 1); // 8 is guaranteed by utils/GetCommitInfo.py
if (hash == nullptr)
return E_OUTOFMEMORY;
std::strcpy(hash, kGitCommitHash);
std::strcpy(hash, clang::getGitCommitHash());
*pCommitHash = hash;
*pCommitCount = kGitCommitCount;
*pCommitCount = clang::getGitCommitCount();
return S_OK;
}

Просмотреть файл

@ -6,7 +6,7 @@ import subprocess
def git_get_commit_hash():
return subprocess.check_output(
['git', 'rev-parse', '--short', 'HEAD']).decode('ascii').strip()
['git', 'rev-parse', '--short=8', 'HEAD']).decode('ascii').strip()
def git_get_commit_count():