2
0
Эх сурвалжийг харах

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.
Marcelo Lopez Ruiz 8 жил өмнө
parent
commit
ff210c4abf

+ 20 - 0
cmake/modules/AddLLVM.cmake

@@ -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

+ 6 - 0
tools/clang/lib/Basic/CMakeLists.txt

@@ -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}"

+ 32 - 0
tools/clang/lib/Basic/Version.cpp

@@ -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

+ 1 - 0
tools/clang/tools/dxc/CMakeLists.txt

@@ -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})
 

+ 1 - 20
tools/clang/tools/dxcompiler/CMakeLists.txt

@@ -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")