From afdbd861afc89e38e888548baeba32948f80bc37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Sun, 1 Feb 2026 15:51:30 +0100 Subject: [PATCH 1/2] Pass headerpad_max_install_names to linker --- .changeset/clear-peas-fly.md | 5 +++++ packages/cmake-rn/src/platforms/apple.ts | 2 ++ 2 files changed, 7 insertions(+) create mode 100644 .changeset/clear-peas-fly.md diff --git a/.changeset/clear-peas-fly.md b/.changeset/clear-peas-fly.md new file mode 100644 index 00000000..32da5927 --- /dev/null +++ b/.changeset/clear-peas-fly.md @@ -0,0 +1,5 @@ +--- +"cmake-rn": patch +--- + +Fix auto-linking failures due to lack of padding when renaming install name of libraries, by passing headerpad_max_install_names argument to linker. diff --git a/packages/cmake-rn/src/platforms/apple.ts b/packages/cmake-rn/src/platforms/apple.ts index c61c1e81..cb2e7f1b 100644 --- a/packages/cmake-rn/src/platforms/apple.ts +++ b/packages/cmake-rn/src/platforms/apple.ts @@ -278,6 +278,8 @@ export const platform: Platform = { CMAKE_SYSTEM_NAME: CMAKE_SYSTEM_NAMES[triplet], CMAKE_OSX_SYSROOT: XCODE_SDK_NAMES[triplet], CMAKE_OSX_ARCHITECTURES: APPLE_ARCHITECTURES[triplet], + // Passing a linker flag to increase the header pad size to allow renaming the install name when linking it into the app. + CMAKE_SHARED_LINKER_FLAGS: "-Wl,-headerpad_max_install_names", }, { // Setting the output directories works around an issue with Xcode generator From bd4c9116d0fd434bc3fa1fa28d6c8082c964eee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Sun, 1 Feb 2026 19:44:36 +0100 Subject: [PATCH 2/2] Add weak-node-api to macos test app --- scripts/init-macos-test-app.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/init-macos-test-app.ts b/scripts/init-macos-test-app.ts index 7d3abd1e..1f80b1a7 100644 --- a/scripts/init-macos-test-app.ts +++ b/scripts/init-macos-test-app.ts @@ -104,6 +104,10 @@ async function patchPackageJson() { APP_PATH, path.join(ROOT_PATH, "packages", "host"), ), + "weak-node-api": path.relative( + APP_PATH, + path.join(ROOT_PATH, "packages", "weak-node-api"), + ), ...Object.fromEntries( Object.entries(otherDependencies).filter(([name]) => transferredDependencies.has(name),