diff options
| author | ruki <[email protected]> | 2024-07-17 00:57:22 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-07-17 00:57:22 +0800 |
| commit | ad8a223ce684cd394179aca49fbea9c7b2e0d4c0 (patch) | |
| tree | 336c5e99524b50b66780eb4da5fcd31b3543c24a /xmake/plugins/pack/batchcmds.lua | |
| parent | 10df5c458fcf66832c0ef437157c7397f2283b18 (diff) | |
add rpath for xpack
Diffstat (limited to 'xmake/plugins/pack/batchcmds.lua')
| -rw-r--r-- | xmake/plugins/pack/batchcmds.lua | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/xmake/plugins/pack/batchcmds.lua b/xmake/plugins/pack/batchcmds.lua index e745cd19d..6245a345c 100644 --- a/xmake/plugins/pack/batchcmds.lua +++ b/xmake/plugins/pack/batchcmds.lua @@ -100,6 +100,33 @@ function _copy_file_with_symlinks(batchcmds_, srcfile, outputdir) end end +-- update install rpath, we can only get and update rpathdirs with `{installonly = true}` +-- e.g. add_rpathdirs("@loader_path/../lib", {installonly = true}) +function _update_target_install_rpath(target, batchcmds_, opt) + if target:is_plat("windows", "mingw") then + return + end + local package = opt.package + local bindir = _get_target_bindir(package, target) + local targetfile = path.join(bindir, target:filename()) + batchcmds_:clean_rpath(targetfile, {plat = target:plat(), arch = target:arch()}) + if target:policy("install.rpath") then + local result, sources = target:get_from("rpathdirs", "*") + if result and sources then + for idx, rpathdirs in ipairs(result) do + local source = sources[idx] + local extraconf = target:extraconf_from("rpathdirs", source) + for _, rpathdir in ipairs(rpathdirs) do + local extra = extraconf[rpathdir] + if extra and extra.installonly then + batchcmds_:insert_rpath(targetfile, rpathdir, {plat = target:plat(), arch = target:arch()}) + end + end + end + end + end +end + -- install target files function _install_target_files(target, batchcmds_, opt) local package = opt.package @@ -233,6 +260,7 @@ function _on_target_installcmd_binary(target, batchcmds_, opt) batchcmds_:cp(target:symbolfile(), path.join(bindir, path.filename(target:symbolfile()))) end _install_target_shared_libraries(target, batchcmds_, opt) + _update_target_install_rpath(target, batchcmds_, opt) end -- on install shared target command |
