summaryrefslogtreecommitdiff
path: root/tests/projects/objc/macapp_duplicate_rpath/test.lua
diff options
context:
space:
mode:
authorAkaps316 <[email protected]>2026-04-03 21:17:05 +0530
committerAkaps316 <[email protected]>2026-04-03 21:17:05 +0530
commit482b81ae5d4dc0bca6d2869c94237b48a55a2cfa (patch)
tree57d5ac4e114f091c09acf1c5893cdb305e19ca56 /tests/projects/objc/macapp_duplicate_rpath/test.lua
parent39fd35ea9d5d14079e4669b85423d488c9097cd4 (diff)
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.
Diffstat (limited to 'tests/projects/objc/macapp_duplicate_rpath/test.lua')
-rw-r--r--tests/projects/objc/macapp_duplicate_rpath/test.lua18
1 files changed, 18 insertions, 0 deletions
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