From a05f63f1b2ddf06fcab5cf6f25f46f2e5ef3aca8 Mon Sep 17 00:00:00 2001 From: Sergey Fedorov Date: Sun, 19 Jul 2026 07:58:44 +0000 Subject: [PATCH 05/71] fix(macos): drop Windows-only wFamilyName; guard -Wno-c2y-extensions to Clang - render_probe: font_description::wFamilyName exists only under _WIN32; setting it broke the GCC/macOS compile. familyName (the std::string the CoreText locator uses) is sufficient. - CMake: -Wno-c2y-extensions is a Clang-only flag that GCC rejects; the engine's other CMakeLists apply it unconditionally (works only because upstream CI is Clang). Apply it in contour_macos only under Clang/AppleClang so the GCC build is clean. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01AeG2jwYMX5gdvvtUnx3PJa --- src/contour_macos/CMakeLists.txt | 19 +++++++++++-------- src/contour_macos/render_probe.cpp | 3 --- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/contour_macos/CMakeLists.txt b/src/contour_macos/CMakeLists.txt index b5793c06..3fe6da26 100644 --- a/src/contour_macos/CMakeLists.txt +++ b/src/contour_macos/CMakeLists.txt @@ -18,22 +18,25 @@ set(_source_files source_group(Headers FILES ${_header_files}) source_group(Sources FILES ${_source_files}) +# -Wno-c2y-extensions is a Clang-only flag (GCC rejects it); the engine's other CMakeLists +# apply it unconditionally, which only works because upstream CI is Clang. Guard it here so +# the GCC build stays clean. +set(_contour_macos_warn_opts "") +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + set(_contour_macos_warn_opts -Wno-c2y-extensions) +endif() + add_library(contour_macos STATIC ${_source_files} ${_header_files}) target_include_directories(contour_macos PUBLIC ${PROJECT_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src) target_link_libraries(contour_macos PUBLIC vtrasterizer vtbackend vtmux text_shaper crispy::core) -if(NOT WIN32) - target_compile_options(contour_macos PRIVATE -Wno-c2y-extensions) -endif() +target_compile_options(contour_macos PRIVATE ${_contour_macos_warn_opts}) # Engine build smoke test (constructs Renderer + a no-op target; no window/PTY). add_executable(contour_macos_smoke smoke_main.cpp) target_link_libraries(contour_macos_smoke PRIVATE contour_macos) +target_compile_options(contour_macos_smoke PRIVATE ${_contour_macos_warn_opts}) # Headless render probe: drives a real Terminal, renders one frame, dumps a PPM. add_executable(contour_macos_render_probe render_probe.cpp) target_link_libraries(contour_macos_render_probe PRIVATE contour_macos) - -if(NOT WIN32) - target_compile_options(contour_macos_smoke PRIVATE -Wno-c2y-extensions) - target_compile_options(contour_macos_render_probe PRIVATE -Wno-c2y-extensions) -endif() +target_compile_options(contour_macos_render_probe PRIVATE ${_contour_macos_warn_opts}) diff --git a/src/contour_macos/render_probe.cpp b/src/contour_macos/render_probe.cpp index 61fdb2ce..58a7d93d 100644 --- a/src/contour_macos/render_probe.cpp +++ b/src/contour_macos/render_probe.cpp @@ -74,10 +74,7 @@ int main(int argc, char** argv) auto fonts = FontDescriptions {}; char const* const family = argc > 2 ? argv[2] : "Menlo"; for (text::font_description* fd: { &fonts.regular, &fonts.bold, &fonts.italic, &fonts.boldItalic }) - { fd->familyName = family; - fd->wFamilyName = std::wstring(family, family + std::char_traits::length(family)); - } fonts.regular.weight = text::font_weight::normal; fonts.bold.weight = text::font_weight::bold; fonts.italic.slant = text::font_slant::italic;