From ceb93a5ad678efec9793d4e8b4c4e68bf4bc6358 Mon Sep 17 00:00:00 2001 From: Hanjin Bae Date: Tue, 9 Jun 2026 22:04:54 +0900 Subject: [PATCH] fix: properly fix graphite2 visibility in overlay port Previous overlay only set CMAKE_C_FLAGS which gets overridden by target-level COMPILE_FLAGS. This version: 1. Patches src/CMakeLists.txt to remove -fvisibility=hidden from target COMPILE_FLAGS 2. Adds -DGRAPHITE2_EXPORTING so GR2_API macro uses visibility("default") instead of visibility("hidden") 3. Stops replacing GRAPHITE2_STATIC check in Types.h with "1" Co-Authored-By: Claude Opus 4.6 (1M context) --- .../vcpkg-overlays/graphite2/portfile.cmake | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/vcpkg-overlays/graphite2/portfile.cmake b/.github/vcpkg-overlays/graphite2/portfile.cmake index 85f5215..cdb7269 100644 --- a/.github/vcpkg-overlays/graphite2/portfile.cmake +++ b/.github/vcpkg-overlays/graphite2/portfile.cmake @@ -7,17 +7,19 @@ vcpkg_from_github( PATCHES disable-tests.patch ) -# Force default symbol visibility so gr_* symbols are exported in static libs. -# Without this, static builds use -fvisibility=hidden and rust-lld/mold -# cannot resolve the hidden symbols at link time. +# Fix symbol visibility for static builds: +# 1. Remove -fvisibility=hidden from COMPILE_FLAGS (target property overrides CMAKE_*_FLAGS) +# 2. Add GRAPHITE2_EXPORTING so GR2_API = visibility("default") even in static builds +file(READ "${SOURCE_PATH}/src/CMakeLists.txt" _src_cmake) +string(REPLACE "-fvisibility=hidden" "" _src_cmake "${_src_cmake}") +string(REPLACE "-fvisibility-inlines-hidden" "" _src_cmake "${_src_cmake}") +string(REPLACE "add_definitions(-DGRAPHITE2_STATIC)" "add_definitions(-DGRAPHITE2_STATIC)\n add_definitions(-DGRAPHITE2_EXPORTING)" _src_cmake "${_src_cmake}") +file(WRITE "${SOURCE_PATH}/src/CMakeLists.txt" "${_src_cmake}") + vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS -DDISABLE_TESTS=ON - -DCMAKE_C_VISIBILITY_PRESET=default - -DCMAKE_CXX_VISIBILITY_PRESET=default - -DCMAKE_C_FLAGS=-fvisibility=default - -DCMAKE_CXX_FLAGS=-fvisibility=default ) vcpkg_cmake_install() @@ -26,7 +28,9 @@ vcpkg_cmake_config_fixup() vcpkg_fixup_pkgconfig() if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/graphite2/Types.h" "defined GRAPHITE2_STATIC" "1") + # Do NOT replace with "1" — keep the original check so GRAPHITE2_EXPORTING + # takes effect and GR2_API = visibility("default") + message(STATUS "graphite2 overlay: keeping GRAPHITE2_STATIC check in Types.h (GRAPHITE2_EXPORTING overrides)") endif() file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")