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

Remove DXC_BUILD_ARCH variable (#4156)

* Remove DXC_BUILD_ARCH variable

This commit simplifies the cross-targeting build support to not require
specifying the build architecture explicitly. Instead it is derived from
the build tools used in the generation.

I've tested this change locally for Win32, x64 and arm64.

* Special handling for arm64ec

* Bump required CMake to 3.10

CMake 3.10 is very old, but has a feature this PR uses. Raising the
requirement should have no impact on our users.

* Fix build issues caused by changes in CMake 3.10
Chris B 2 жил өмнө
parent
commit
fb6b287c23

+ 1 - 1
CMakeLists.txt

@@ -1,5 +1,5 @@
 # See docs/CMake.html for instructions about how to build LLVM with CMake.
-cmake_minimum_required(VERSION 2.8.12.2)
+cmake_minimum_required(VERSION 3.10) # HLSL Change - Require CMake 3.10.
 
 if (NOT "${DXC_CMAKE_BEGINS_INCLUDE}" STREQUAL "")
   include(${DXC_CMAKE_BEGINS_INCLUDE})

+ 1 - 1
cmake/caches/PredefinedParams.cmake

@@ -31,4 +31,4 @@ set(CLANG_ENABLE_STATIC_ANALYZER OFF CACHE BOOL "")
 set(CLANG_INCLUDE_TESTS OFF CACHE BOOL "") 
 set(HLSL_INCLUDE_TESTS ON CACHE BOOL "") 
 set(ENABLE_SPIRV_CODEGEN ON CACHE BOOL "") 
-set(SPIRV_BUILD_TESTS ON CACHE BOOL "")
+set(SPIRV_BUILD_TESTS ON CACHE BOOL "")

+ 5 - 5
cmake/modules/FindDiaSDK.cmake

@@ -26,15 +26,15 @@ find_path(DIASDK_INCLUDE_DIR    # Set variable DIASDK_INCLUDE_DIR
           )
 
 
-if ((CMAKE_GENERATOR_PLATFORM STREQUAL "x64") OR ("${DXC_BUILD_ARCH}" STREQUAL "x64"))
+if ((CMAKE_GENERATOR_PLATFORM STREQUAL "x64") OR ("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "x64"))
   find_library(DIASDK_GUIDS_LIBRARY NAMES diaguids.lib HINTS ${DIASDK_INCLUDE_DIR}/../lib/amd64 )
-elseif ((CMAKE_GENERATOR_PLATFORM STREQUAL "ARM") OR ("${DXC_BUILD_ARCH}" STREQUAL "ARM"))
+elseif ((CMAKE_GENERATOR_PLATFORM STREQUAL "ARM") OR ("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM"))
   find_library(DIASDK_GUIDS_LIBRARY NAMES diaguids.lib HINTS ${DIASDK_INCLUDE_DIR}/../lib/arm )
-elseif ((CMAKE_GENERATOR_PLATFORM MATCHES "ARM64.*") OR ("${DXC_BUILD_ARCH}" MATCHES "ARM64.*"))
+elseif ((CMAKE_GENERATOR_PLATFORM MATCHES "ARM64.*") OR ("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" MATCHES "ARM64.*"))
   find_library(DIASDK_GUIDS_LIBRARY NAMES diaguids.lib HINTS ${DIASDK_INCLUDE_DIR}/../lib/arm64 )
-else ((CMAKE_GENERATOR_PLATFORM STREQUAL "x64") OR ("${DXC_BUILD_ARCH}" STREQUAL "x64"))
+else ((CMAKE_GENERATOR_PLATFORM STREQUAL "x64") OR ("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "x64"))
   find_library(DIASDK_GUIDS_LIBRARY NAMES diaguids.lib HINTS ${DIASDK_INCLUDE_DIR}/../lib )
-endif((CMAKE_GENERATOR_PLATFORM STREQUAL "x64") OR ("${DXC_BUILD_ARCH}" STREQUAL "x64"))
+endif((CMAKE_GENERATOR_PLATFORM STREQUAL "x64") OR ("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "x64"))
 
 set(DIASDK_LIBRARIES ${DIASDK_GUIDS_LIBRARY})
 set(DIASDK_INCLUDE_DIRS ${DIASDK_INCLUDE_DIR})

+ 4 - 8
cmake/modules/FindTAEF.cmake

@@ -27,15 +27,11 @@ macro(find_taef_libraries targetplatform)
   set(TAEF_COMMON_LIBRARY ${TAEF_LIB_Te.Common.lib})
 endmacro(find_taef_libraries)
 
-if ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
-  find_taef_libraries(x64)
-elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM" OR "${DXC_BUILD_ARCH}" STREQUAL "ARM")
-  find_taef_libraries(arm)
-elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM64" OR "${DXC_BUILD_ARCH}" MATCHES "ARM64.*")
+if(CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "ARM64EC")
   find_taef_libraries(arm64)
-elseif ("${DXC_BUILD_ARCH}" STREQUAL "Win32" )
-  find_taef_libraries(x86)
-endif ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
+else()
+  find_taef_libraries(${CMAKE_C_COMPILER_ARCHITECTURE_ID})
+endif()
 
 set(TAEF_INCLUDE_DIRS ${TAEF_INCLUDE_DIR})
 

+ 2 - 2
cmake/modules/HandleLLVMOptions.cmake

@@ -551,14 +551,14 @@ add_llvm_definitions( -D__STDC_LIMIT_MACROS )
 
 # clang doesn't print colored diagnostics when invoked from Ninja
 if (UNIX AND
-    CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
+    CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND # HLSL Change - Update to CMake 3.13.4
     CMAKE_GENERATOR STREQUAL "Ninja")
   append("-fcolor-diagnostics" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
 endif()
 
 # HLSL Change Starts
 # Enable -fms-extensions for clang to use MS uuid extensions for COM.
-if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
   append("-fms-extensions -Wno-language-extension-token" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
 endif()
 # HLSL Change Ends

+ 3 - 3
tools/clang/tools/dotnetc/CMakeLists.txt

@@ -4,13 +4,13 @@ set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
 file(TO_NATIVE_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" DOS_STYLE_OUTPUT_DIRECTORY)
 file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" DOS_STYLE_SOURCE_DIR)
 
-if (DXC_BUILD_ARCH MATCHES "x64" )
+if (CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "x64" )
   set ( DOTNET_PLATFORM_TARGET "x64" )
 elseif (CMAKE_GENERATOR STREQUAL "Visual Studio 12" )
   set ( DOTNET_PLATFORM_TARGET "x86" )
-else (DXC_BUILD_ARCH MATCHES "x64" )
+else ()
   set ( DOTNET_PLATFORM_TARGET "AnyCPU" )
-endif (DXC_BUILD_ARCH MATCHES "x64" )
+endif ()
 
 configure_file(dndxc.csproj.txt dndxc.csproj)
 

+ 0 - 1
utils/hct/hctbuild.cmd

@@ -322,7 +322,6 @@ set CMAKE_OPTS=%CMAKE_OPTS% -DCLANG_BUILD_EXAMPLES:BOOL=OFF
 set CMAKE_OPTS=%CMAKE_OPTS% -DLLVM_REQUIRES_RTTI:BOOL=ON
 set CMAKE_OPTS=%CMAKE_OPTS% -DCLANG_CL:BOOL=OFF
 set CMAKE_OPTS=%CMAKE_OPTS% -DCMAKE_SYSTEM_VERSION=%DXC_CMAKE_SYSTEM_VERSION%
-set CMAKE_OPTS=%CMAKE_OPTS% -DDXC_BUILD_ARCH=%BUILD_ARCH%
 
 rem ARM cross-compile setup
 if %BUILD_ARM_CROSSCOMPILING% == 0 goto :after-cross-compile