From 7e3704f106fd9ecfd7c81ebb861175550e8ac1a2 Mon Sep 17 00:00:00 2001 From: Kartik Kenchi Date: Sun, 16 Aug 2026 22:28:42 +0530 Subject: [PATCH] cmake: Centralize MinGW/Cygwin -Wa,-mbig-obj test workaround --- googlemock/CMakeLists.txt | 4 ---- googletest/cmake/internal_utils.cmake | 7 +++++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt index 33ec9636..384026cc 100644 --- a/googlemock/CMakeLists.txt +++ b/googlemock/CMakeLists.txt @@ -131,10 +131,6 @@ if (gmock_build_tests) # 'make test' or ctest. enable_testing() - if (MINGW OR CYGWIN) - add_compile_options("-Wa,-mbig-obj") - endif() - ############################################################ # C++ tests built with standard compiler flags. diff --git a/googletest/cmake/internal_utils.cmake b/googletest/cmake/internal_utils.cmake index 10c55955..1abe8d93 100644 --- a/googletest/cmake/internal_utils.cmake +++ b/googletest/cmake/internal_utils.cmake @@ -237,6 +237,13 @@ function(cxx_executable_with_flags name cxx_flags libs) if (MSVC) # BigObj required for tests. set(cxx_flags "${cxx_flags} -bigobj") + elseif (MINGW OR CYGWIN) + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR + CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + # MinGW and Cygwin use the GNU assembler, which has a 2^16 section limit. + # Large generated test executables exceed this limit, so raise it. + set(cxx_flags "${cxx_flags} -Wa,-mbig-obj") + endif() endif() if (cxx_flags) set_target_properties(${name}