add support for overriding version strings in llvm.ident and resources (#354)

Typically this functionality will be triggered via lab automated builds in preparation for a release.

hctbuild supports the required flag already via the -fv switch.
This commit is contained in:
Marcelo Lopez Ruiz 2017-06-14 18:00:54 -07:00 коммит произвёл GitHub
Родитель 2c568d00db
Коммит ff210c4abf
5 изменённых файлов: 60 добавлений и 20 удалений

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

@ -950,3 +950,23 @@ function(add_lit_testsuites project directory)
endforeach()
endif()
endfunction()
# HLSL Change Starts
function(hlsl_update_product_ver RC_INTERNAL_NAME)
if (HLSL_ENABLE_FIXED_VER)
set_property(SOURCE ${windows_resource_file}
PROPERTY COMPILE_DEFINITIONS
"RC_COMPANY_NAME=\"Microsoft(r) Corporation\""
"RC_VERSION_FIELD_1=0"
"RC_VERSION_FIELD_2=2017"
"RC_VERSION_FIELD_3=6"
"RC_VERSION_FIELD_4=0"
"RC_FILE_VERSION=\"0.2017.6.0\""
"RC_FILE_DESCRIPTION=\"DirectX Compiler - Out Of Band\""
"RC_INTERNAL_NAME=\"${RC_INTERNAL_NAME}\""
"RC_COPYRIGHT=\"(c) Microsoft Corporation. All rights reserved.\""
"RC_PRODUCT_NAME=\"Microsoft(r) DirectX for Windows(r) - Out Of Band\""
"RC_PRODUCT_VERSION=\"0.2017.6.0\"")
endif (HLSL_ENABLE_FIXED_VER)
endfunction(hlsl_update_product_ver)
# HLSL Change Ends

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

@ -30,6 +30,12 @@ set(version_inc "${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc")
set(get_svn_script "${LLVM_MAIN_SRC_DIR}/cmake/modules/GetSVN.cmake")
# HLSL Change Starts
if (HLSL_ENABLE_FIXED_VER)
add_definitions(/DHLSL_FIXED_VER="dxcoob 2017.6")
endif (HLSL_ENABLE_FIXED_VER)
# HLSL Change Ends
if(DEFINED llvm_vc AND DEFINED clang_vc)
# Create custom target to generate the VC revision include.
add_custom_command(OUTPUT "${version_inc}"

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

@ -25,6 +25,9 @@
namespace clang {
std::string getClangRepositoryPath() {
#ifdef HLSL_FIXED_VER // HLSL Change Starts
return std::string();
#else
#if defined(CLANG_REPOSITORY_STRING)
return CLANG_REPOSITORY_STRING;
#else
@ -52,9 +55,13 @@ std::string getClangRepositoryPath() {
return URL;
#endif
#endif // HLSL Change Ends
}
std::string getLLVMRepositoryPath() {
#ifdef HLSL_FIXED_VER // HLSL Change Starts
return std::string();
#else
#ifdef LLVM_REPOSITORY
StringRef URL(LLVM_REPOSITORY);
#else
@ -69,25 +76,37 @@ std::string getLLVMRepositoryPath() {
URL = URL.substr(Start);
return URL;
#endif // HLSL Change Ends
}
std::string getClangRevision() {
#ifdef HLSL_FIXED_VER // HLSL Change Starts
return std::string();
#else
#ifdef SVN_REVISION
return SVN_REVISION;
#else
return "";
#endif
#endif // HLSL Change Ends
}
std::string getLLVMRevision() {
#ifdef HLSL_FIXED_VER // HLSL Change Starts
return std::string();
#else
#ifdef LLVM_REVISION
return LLVM_REVISION;
#else
return "";
#endif
#endif // HLSL Change Ends
}
std::string getClangFullRepositoryVersion() {
#ifdef HLSL_FIXED_VER // HLSL Change Starts
return std::string();
#else
std::string buf;
llvm::raw_string_ostream OS(buf);
std::string Path = getClangRepositoryPath();
@ -113,6 +132,7 @@ std::string getClangFullRepositoryVersion() {
OS << LLVMRev << ')';
}
return OS.str();
#endif
}
std::string getClangFullVersion() {
@ -120,6 +140,11 @@ std::string getClangFullVersion() {
}
std::string getClangToolFullVersion(StringRef ToolName) {
#ifdef HLSL_FIXED_VER // HLSL Change Starts
// We fix a specific version for builds that are released;
// this allows tools to pick a known version for a given !llvm.ident value.
return std::string(HLSL_FIXED_VER);
#else
std::string buf;
llvm::raw_string_ostream OS(buf);
#ifdef CLANG_VENDOR
@ -134,9 +159,15 @@ std::string getClangToolFullVersion(StringRef ToolName) {
#endif
return OS.str();
#endif // HLSL Change Ends
}
std::string getClangFullCPPVersion() {
#ifdef HLSL_FIXED_VER // HLSL Change Starts
// We fix a specific version for builds that are released;
// this allows tools to pick a known version for a given !llvm.ident value.
return std::string(HLSL_FIXED_VER);
#else
// The version string we report in __VERSION__ is just a compacted version of
// the one we report on the command line.
std::string buf;
@ -146,6 +177,7 @@ std::string getClangFullCPPVersion() {
#endif
OS << "Clang " CLANG_VERSION_STRING " " << getClangFullRepositoryVersion();
return OS.str();
#endif // HLSL Change Ends
}
} // end namespace clang

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

@ -22,6 +22,7 @@ target_link_libraries(dxc
)
set_target_properties(dxc PROPERTIES VERSION ${CLANG_EXECUTABLE_VERSION})
hlsl_update_product_ver("dxc")
include_directories(AFTER ${DIASDK_INCLUDE_DIRS})

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

@ -99,23 +99,4 @@ set_target_properties(dxcompiler
VERSION ${LIBCLANG_LIBRARY_VERSION}
DEFINE_SYMBOL _CINDEX_LIB_)
# This will likely go to a more common location to be reused from other targets.
function(hlsl_update_product_ver)
if (HLSL_ENABLE_FIXED_VER)
set_property(SOURCE ${windows_resource_file}
PROPERTY COMPILE_DEFINITIONS
"RC_COMPANY_NAME=\"Microsoft® Corporation\""
"RC_VERSION_FIELD_1=0"
"RC_VERSION_FIELD_2=2"
"RC_VERSION_FIELD_3=0"
"RC_VERSION_FIELD_4=0"
"RC_FILE_VERSION=\"0.2.0.0\""
"RC_FILE_DESCRIPTION=\"DirectX Compiler\""
"RC_INTERNAL_NAME=\"dxcompiler\""
"RC_COPYRIGHT=\"© Microsoft Corporation. All rights reserved.\""
"RC_PRODUCT_NAME=\"Microsoft® DirectX for Windows®\""
"RC_PRODUCT_VERSION=\"0.2.0.0\"")
endif (HLSL_ENABLE_FIXED_VER)
endfunction(hlsl_update_product_ver)
hlsl_update_product_ver()
hlsl_update_product_ver("dxcompiler")