prplos/tools/cmake/patches/160-disable_xcode_generator.patch
Hauke Mehrtens c510069ea2 tools/cmake: backport bootstrap fix for GCC 16
CMake fails to bootstrap its host tool with GCC 16:

    cmake.o: undefined reference to
    `cmGlobalGhsMultiGenerator::cmGlobalGhsMultiGenerator(cmake*)'

Source/cmake.cxx includes cmGlobalGhsMultiGenerator.h guarded only by
__linux__, not by CMAKE_BOOTSTRAP. The NewFactory() call is compiled out
during bootstrap, but GCC 16 devirtualization still emits the uncalled
inline NewFactory() and the cmGlobalGeneratorSimpleFactory<> template,
which reference symbols only defined in cmGlobalGhsMultiGenerator.cxx, a
file that is not compiled during bootstrap.

Backport the upstream fix, which moves the include behind the existing
CMAKE_BOOTSTRAP guard. It is in no 3.30.x release (that branch is EOL);
upstream shipped it first in 3.31.10 / 4.0.5 / 4.1.2.

Assisted-by: Claude:claude-opus-4-8
Link: https://github.com/openwrt/openwrt/pull/24303
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit ee6e56c82ef738199312e3eb28df40806ddf41cf)
2026-08-18 11:40:42 +01:00

23 lines
439 B
Diff

--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -858,7 +858,7 @@ if(CMake_USE_XCOFF_PARSER)
endif()
# Xcode only works on Apple
-if(APPLE)
+if(APPLE_DISABLED)
target_sources(
CMakeLib
PRIVATE
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -134,7 +134,7 @@
# endif
#endif
-#if defined(__APPLE__)
+#if defined(__APPLE_DISABLED__)
# if !defined(CMAKE_BOOTSTRAP)
# include "cmGlobalXCodeGenerator.h"