From 40e2368c41002d4114d2e80404d1175429b54de7 Mon Sep 17 00:00:00 2001 From: Alex Sepkowski Date: Tue, 18 Aug 2026 17:57:54 -0700 Subject: [PATCH] [Win] Add opt-in Release size optimization Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0f4d0e10-e926-4bce-b36b-0abebc08f6dc --- CMakeLists.txt | 2 ++ cmake/modules/HandleLLVMOptions.cmake | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5210718005..30ccd8b46f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -98,6 +98,8 @@ mark_as_advanced(DXC_DISABLE_ALLOCATOR_OVERRIDES) option(DXC_CODEGEN_EXCEPTIONS_TRAP "An exception in code generation generates a trap, ending the compiler process" OFF) mark_as_advanced(DXC_CODEGEN_EXCEPTIONS_TRAP) +option(DXC_OPTIMIZE_FOR_SIZE "Favor smaller Windows Release binaries over compiler throughput" OFF) + # adjust link option to enable debugging from kernel mode; not compatible with incremental linking if(NOT CMAKE_VERSION VERSION_LESS "3.13" AND MSVC AND NOT CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "ARM64EC") add_link_options(/DEBUGTYPE:CV,FIXUP,PDATA /INCREMENTAL:NO) diff --git a/cmake/modules/HandleLLVMOptions.cmake b/cmake/modules/HandleLLVMOptions.cmake index d5769abce7..027ef26242 100644 --- a/cmake/modules/HandleLLVMOptions.cmake +++ b/cmake/modules/HandleLLVMOptions.cmake @@ -370,6 +370,10 @@ if( MSVC ) append("/DEBUG /OPT:REF" CMAKE_EXE_LINKER_FLAGS_RELEASE) endif() + if (DXC_OPTIMIZE_FOR_SIZE) + append("/Os" CMAKE_C_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELEASE) + endif() + # HLSL Changes End # Enable warnings