From 6795fcd02a684fe13e13d363465535049a9d64fc Mon Sep 17 00:00:00 2001 From: Raed Rizqie Date: Thu, 29 Oct 2026 09:44:47 +0800 Subject: [PATCH 1/7] CMake updates for MinGW --- CMakeLists.txt | 6 ++++-- cmake/modules/HandleLLVMOptions.cmake | 15 ++++++++++++++- projects/CMakeLists.txt | 4 ++-- tools/clang/CMakeLists.txt | 3 +++ tools/clang/tools/dxc/CMakeLists.txt | 4 ++++ tools/clang/tools/dxclib/CMakeLists.txt | 1 - tools/clang/tools/dxcvalidator/CMakeLists.txt | 5 ----- tools/clang/tools/dxildll/CMakeLists.txt | 6 +++--- tools/clang/tools/dxl/CMakeLists.txt | 4 ++++ tools/clang/tools/dxr/CMakeLists.txt | 4 ++++ 10 files changed, 38 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 50b21e943f8..b6c17d50e65 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -111,7 +111,9 @@ if(WIN32) add_compile_options(/guard:cf) add_link_options(/guard:cf) else() - add_compile_options(-fcf-protection) + if(LLVM_NATIVE_ARCH MATCHES "X86") + add_compile_options(-fcf-protection) + endif() endif() endif(WIN32) @@ -595,7 +597,7 @@ if (APPLE) set(CMAKE_INSTALL_NAME_DIR "@rpath") set(CMAKE_INSTALL_RPATH "@executable_path/../lib") endif(NOT DEFINED CMAKE_INSTALL_RPATH) -else(UNIX) +elseif(UNIX) if(NOT DEFINED CMAKE_INSTALL_RPATH) set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}") if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)") diff --git a/cmake/modules/HandleLLVMOptions.cmake b/cmake/modules/HandleLLVMOptions.cmake index 8fdff83e3f4..a8881c9e877 100644 --- a/cmake/modules/HandleLLVMOptions.cmake +++ b/cmake/modules/HandleLLVMOptions.cmake @@ -237,7 +237,13 @@ if( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 ) endif( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 ) if (LLVM_BUILD_STATIC) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") + if(MINGW) + # We want to mimic MSVC standalone build here + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++") + else() + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") + endif() endif() if( XCODE ) @@ -430,12 +436,19 @@ elseif( LLVM_COMPILER_IS_GCC_COMPATIBLE ) append("-Wno-unknown-pragmas" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) if (MINGW) + append("-Wno-cast-function-type-mismatch" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) append("-Wno-implicit-fallthrough" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-Wno-inconsistent-dllimport" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) append("-Wno-missing-exception-spec" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) append("-Wno-reorder-ctor" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) append("-Wno-sign-compare" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) append("-Wno-unused-const-variable" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) append("-Wno-unused-function" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-Wno-unused-private-field" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + append("-Wno-gnu-zero-variadic-macro-arguments" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + endif() endif() add_flag_if_supported("-Wno-unused-but-set-variable" UNUSED_BUT_SET_VARIABLE) diff --git a/projects/CMakeLists.txt b/projects/CMakeLists.txt index 9f361a95e53..93ee2d85ada 100644 --- a/projects/CMakeLists.txt +++ b/projects/CMakeLists.txt @@ -1,11 +1,11 @@ set(DXC_PROJECTS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(DXC_PROJECTS_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) -if(WIN32) +if(MSVC) add_subdirectory(include/Tracing) # DxcRuntimeEtw target if(HLSL_BUILD_DXILCONV) add_subdirectory(dxilconv) endif (HLSL_BUILD_DXILCONV) -endif (WIN32) +endif (MSVC) diff --git a/tools/clang/CMakeLists.txt b/tools/clang/CMakeLists.txt index 449e6c28b49..fca026d790c 100644 --- a/tools/clang/CMakeLists.txt +++ b/tools/clang/CMakeLists.txt @@ -431,6 +431,9 @@ install(DIRECTORY include/clang-c ) add_definitions( -D_GNU_SOURCE ) +if (MINGW) + add_definitions( -DMS_SUPPORT_VARIABLE_LANGOPTS ) +endif() option(CLANG_ENABLE_ARCMT "Build ARCMT." ON) if (CLANG_ENABLE_ARCMT) diff --git a/tools/clang/tools/dxc/CMakeLists.txt b/tools/clang/tools/dxc/CMakeLists.txt index 9df8da34638..5f730dfaf12 100644 --- a/tools/clang/tools/dxc/CMakeLists.txt +++ b/tools/clang/tools/dxc/CMakeLists.txt @@ -27,6 +27,10 @@ target_link_libraries(dxc dxclib ) +if (MINGW) + target_link_options(dxc PRIVATE -mconsole -municode) +endif() + if(ENABLE_SPIRV_CODEGEN) target_link_libraries(dxc SPIRV-Tools) endif() diff --git a/tools/clang/tools/dxclib/CMakeLists.txt b/tools/clang/tools/dxclib/CMakeLists.txt index 74927fd4038..19bb1b3b3af 100644 --- a/tools/clang/tools/dxclib/CMakeLists.txt +++ b/tools/clang/tools/dxclib/CMakeLists.txt @@ -21,7 +21,6 @@ add_clang_library(dxclib ) if (MINGW) - target_link_options(dxclib PUBLIC -mconsole -municode) target_link_libraries(dxclib PRIVATE version) endif() diff --git a/tools/clang/tools/dxcvalidator/CMakeLists.txt b/tools/clang/tools/dxcvalidator/CMakeLists.txt index 28e56ab7ac8..3a51214b0bf 100644 --- a/tools/clang/tools/dxcvalidator/CMakeLists.txt +++ b/tools/clang/tools/dxcvalidator/CMakeLists.txt @@ -19,10 +19,5 @@ add_clang_library(dxcvalidator dxcvalidator.cpp ) -if (MINGW) - target_link_options(dxcvalidator PUBLIC -mconsole -municode) - target_link_libraries(dxcvalidator PRIVATE version) -endif() - target_compile_definitions(dxcvalidator PRIVATE VERSION_STRING_SUFFIX=" for ${CMAKE_SYSTEM_NAME}") diff --git a/tools/clang/tools/dxildll/CMakeLists.txt b/tools/clang/tools/dxildll/CMakeLists.txt index 67a24d11074..4974da843ca 100644 --- a/tools/clang/tools/dxildll/CMakeLists.txt +++ b/tools/clang/tools/dxildll/CMakeLists.txt @@ -41,7 +41,7 @@ set(sources dxcvalidator.cpp ) -if (WIN32) +if (MSVC) add_clang_library(dxildll SHARED ${sources}) list(APPEND DXCLibs kernel32.lib @@ -58,7 +58,7 @@ target_link_libraries(dxildll PRIVATE dxcvalidator ) -if (WIN32) +if (MSVC) add_dependencies(dxildll ${DXCDependencies} DxcEtw @@ -77,7 +77,7 @@ if (WIN32) set_target_properties(${target_name} PROPERTIES SOURCES "${sources}") set_property(SOURCE dxildll.rc PROPERTY COMPILE_DEFINITIONS "INCLUDE_HLSL_VERSION_FILE=1") - set_property(SOURCE dxildll.rc PROPERTY COMPILE_OPTIONS "/I" "${HLSL_VERSION_LOCATION}" "/I" "${LLVM_MAIN_SRC_DIR}") + set_property(SOURCE dxildll.rc PROPERTY COMPILE_OPTIONS "-I" "${HLSL_VERSION_LOCATION}" "-I" "${LLVM_MAIN_SRC_DIR}") endif() set_target_properties(dxildll diff --git a/tools/clang/tools/dxl/CMakeLists.txt b/tools/clang/tools/dxl/CMakeLists.txt index d3f123aad3c..8305e06047a 100644 --- a/tools/clang/tools/dxl/CMakeLists.txt +++ b/tools/clang/tools/dxl/CMakeLists.txt @@ -24,6 +24,10 @@ target_link_libraries(dxl dxcompiler ) +if (MINGW) + target_link_options(dxl PRIVATE -mconsole -municode) +endif() + set_target_properties(dxl PROPERTIES VERSION ${CLANG_EXECUTABLE_VERSION}) if (MSVC) diff --git a/tools/clang/tools/dxr/CMakeLists.txt b/tools/clang/tools/dxr/CMakeLists.txt index f0d22283347..2d7e9ed6ec2 100644 --- a/tools/clang/tools/dxr/CMakeLists.txt +++ b/tools/clang/tools/dxr/CMakeLists.txt @@ -19,6 +19,10 @@ target_link_libraries(dxr dxcompiler ) +if (MINGW) + target_link_options(dxr PRIVATE -mconsole -municode) +endif() + set_target_properties(dxr PROPERTIES VERSION ${CLANG_EXECUTABLE_VERSION}) # set_target_properties(dxr PROPERTIES ENABLE_EXPORTS 1) From c5633b772551b42cf908415309a6fb474c138e5d Mon Sep 17 00:00:00 2001 From: Raed Rizqie Date: Thu, 29 Oct 2026 17:32:23 +0800 Subject: [PATCH 2/7] use better guard --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b6c17d50e65..aca082cf78b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -111,7 +111,7 @@ if(WIN32) add_compile_options(/guard:cf) add_link_options(/guard:cf) else() - if(LLVM_NATIVE_ARCH MATCHES "X86") + if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64") add_compile_options(-fcf-protection) endif() endif() From c60c32907a640f391ee63f184417c83b68210420 Mon Sep 17 00:00:00 2001 From: Raed Rizqie Date: Thu, 29 Oct 2026 17:33:36 +0800 Subject: [PATCH 3/7] remove variable language flag --- tools/clang/CMakeLists.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/tools/clang/CMakeLists.txt b/tools/clang/CMakeLists.txt index fca026d790c..449e6c28b49 100644 --- a/tools/clang/CMakeLists.txt +++ b/tools/clang/CMakeLists.txt @@ -431,9 +431,6 @@ install(DIRECTORY include/clang-c ) add_definitions( -D_GNU_SOURCE ) -if (MINGW) - add_definitions( -DMS_SUPPORT_VARIABLE_LANGOPTS ) -endif() option(CLANG_ENABLE_ARCMT "Build ARCMT." ON) if (CLANG_ENABLE_ARCMT) From 8428586dfb2ecf26a13c64564e88109a6fd31284 Mon Sep 17 00:00:00 2001 From: Raed Rizqie Date: Thu, 29 Oct 2026 18:00:06 +0800 Subject: [PATCH 4/7] revert change --- projects/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/CMakeLists.txt b/projects/CMakeLists.txt index 93ee2d85ada..9f361a95e53 100644 --- a/projects/CMakeLists.txt +++ b/projects/CMakeLists.txt @@ -1,11 +1,11 @@ set(DXC_PROJECTS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(DXC_PROJECTS_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) -if(MSVC) +if(WIN32) add_subdirectory(include/Tracing) # DxcRuntimeEtw target if(HLSL_BUILD_DXILCONV) add_subdirectory(dxilconv) endif (HLSL_BUILD_DXILCONV) -endif (MSVC) +endif (WIN32) From 4c37f9b8a3e1c2b531191082d8ee6bd08662476f Mon Sep 17 00:00:00 2001 From: Raed Rizqie Date: Thu, 29 Oct 2026 18:20:58 +0800 Subject: [PATCH 5/7] revert etw changes --- tools/clang/tools/dxildll/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/clang/tools/dxildll/CMakeLists.txt b/tools/clang/tools/dxildll/CMakeLists.txt index 4974da843ca..2861d258cd3 100644 --- a/tools/clang/tools/dxildll/CMakeLists.txt +++ b/tools/clang/tools/dxildll/CMakeLists.txt @@ -58,7 +58,7 @@ target_link_libraries(dxildll PRIVATE dxcvalidator ) -if (MSVC) +if (WIN32) add_dependencies(dxildll ${DXCDependencies} DxcEtw From a8cb181759eeb3e02ed7b3781e76d5089b2a4ae4 Mon Sep 17 00:00:00 2001 From: Raed Rizqie Date: Thu, 29 Oct 2026 18:23:43 +0800 Subject: [PATCH 6/7] add -static-libgcc --- cmake/modules/HandleLLVMOptions.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/modules/HandleLLVMOptions.cmake b/cmake/modules/HandleLLVMOptions.cmake index a8881c9e877..32242bed660 100644 --- a/cmake/modules/HandleLLVMOptions.cmake +++ b/cmake/modules/HandleLLVMOptions.cmake @@ -239,8 +239,8 @@ endif( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 ) if (LLVM_BUILD_STATIC) if(MINGW) # We want to mimic MSVC standalone build here - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++") else() set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") endif() From 3fe6413e0b46e004efa90143214695e8ff69243c Mon Sep 17 00:00:00 2001 From: Raed Rizqie Date: Fri, 30 Oct 2026 15:20:49 +0800 Subject: [PATCH 7/7] Action --- .github/workflows/pr-description-checker.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr-description-checker.yml b/.github/workflows/pr-description-checker.yml index 4d83532df55..ff87178b3ff 100644 --- a/.github/workflows/pr-description-checker.yml +++ b/.github/workflows/pr-description-checker.yml @@ -1,12 +1,13 @@ name: 'PR description checker' on: - pull_request_target: + pull_request: types: - opened - edited - reopened - labeled - unlabeled + workflow_dispatch: permissions: contents: read pull-requests: write