From 482b81ae5d4dc0bca6d2869c94237b48a55a2cfa Mon Sep 17 00:00:00 2001 From: Akaps316 <48785708+Akaps316@users.noreply.github.com> Date: Fri, 3 Apr 2026 21:17:05 +0530 Subject: fix(xcode.application): avoid duplicate bundle rpath insertion Only add the macOS app bundle framework rpath if it is missing from the copied app binary. This avoids install_name_tool failing when the target already links with @executable_path/../Frameworks, for example via add_rpathdirs(). Add a regression test covering a macOS app target that already carries the bundle rpath before xcode.application generates the app bundle. --- tests/projects/objc/macapp_duplicate_rpath/test.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 tests/projects/objc/macapp_duplicate_rpath/test.lua (limited to 'tests/projects/objc/macapp_duplicate_rpath/test.lua') diff --git a/tests/projects/objc/macapp_duplicate_rpath/test.lua b/tests/projects/objc/macapp_duplicate_rpath/test.lua new file mode 100644 index 000000000..f2821df14 --- /dev/null +++ b/tests/projects/objc/macapp_duplicate_rpath/test.lua @@ -0,0 +1,18 @@ +function main(t) + if not is_host("macosx") then + return t:skip("wrong host platform") + end + + local homedir = path.absolute("home") + os.setenv("HOME", homedir) + os.mkdir(homedir) + os.mkdir(path.join(homedir, ".xmake")) + + local xmake = path.absolute(path.join(os.projectdir(), "build", "xmake")) + local xmake_program_dir = path.absolute(path.join(os.projectdir(), "xmake")) + os.setenv("XMAKE_PROGRAM_FILE", xmake) + os.setenv("XMAKE_PROGRAM_DIR", xmake_program_dir) + + os.execv(xmake, {"f", "-p", "macosx", "-a", os.arch(), "-c"}) + os.execv(xmake, {"-vD"}) +end -- cgit v1.3.1