summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-09-13 21:02:12 +0800
committerruki <[email protected]>2024-09-13 21:02:12 +0800
commit252dbbe8a9c57e096f44c964d2b4dae2ea822c26 (patch)
tree4c896d44761df896c3b1ed5e01e3ae35d5eda736
parentdecc680dfd4f703b072664433e177673c027c903 (diff)
add install.strip_packagelibs
-rw-r--r--xmake/core/project/policy.lua2
-rw-r--r--xmake/modules/target/action/install/main.lua11
-rw-r--r--xmake/modules/target/action/uninstall/main.lua11
3 files changed, 16 insertions, 8 deletions
diff --git a/xmake/core/project/policy.lua b/xmake/core/project/policy.lua
index 3e02d210d..7327918a2 100644
--- a/xmake/core/project/policy.lua
+++ b/xmake/core/project/policy.lua
@@ -100,6 +100,8 @@ function policy.policies()
["run.autobuild"] = {description = "Automatically build before running.", type = "boolean"},
-- Enable install rpath
["install.rpath"] = {description = "Enable install rpath.", default = true, type = "boolean"},
+ -- Strip package libraries for installation
+ ["install.strip_packagelibs"] = {description = "Strip package libraries for installation.", default = true, type = "boolean"},
-- Preprocessor configuration for ccache/distcc, we can disable linemarkers to speed up preprocess
["preprocessor.linemarkers"] = {description = "Enable linemarkers for preprocessor.", default = true, type = "boolean"},
-- Preprocessor configuration for ccache/distcc, we can disable it to avoid cache object file with __DATE__, __TIME__
diff --git a/xmake/modules/target/action/install/main.lua b/xmake/modules/target/action/install/main.lua
index 257bdcedc..45f43a7cb 100644
--- a/xmake/modules/target/action/install/main.lua
+++ b/xmake/modules/target/action/install/main.lua
@@ -21,6 +21,7 @@
-- imports
import("core.base.option")
import("core.base.hashset")
+import("core.project.project")
import("utils.binary.deplibs", {alias = "get_depend_libraries"})
import("utils.binary.rpath", {alias = "rpath_utils"})
@@ -60,10 +61,12 @@ function _get_target_package_libfiles(target, opt)
end
end
-- we can only reserve used libraries
- if target:is_binary() or target:is_shared() then
- local depends = hashset.new()
- _get_target_package_deplibs(target, depends, libfiles, target:targetfile())
- table.remove_if(libfiles, function (_, libfile) return not depends:has(path.filename(libfile)) end)
+ if project.policy("install.strip_packagelibs") then
+ if target:is_binary() or target:is_shared() then
+ local depends = hashset.new()
+ _get_target_package_deplibs(target, depends, libfiles, target:targetfile())
+ table.remove_if(libfiles, function (_, libfile) return not depends:has(path.filename(libfile)) end)
+ end
end
return libfiles
end
diff --git a/xmake/modules/target/action/uninstall/main.lua b/xmake/modules/target/action/uninstall/main.lua
index ab2333207..912e5140f 100644
--- a/xmake/modules/target/action/uninstall/main.lua
+++ b/xmake/modules/target/action/uninstall/main.lua
@@ -21,6 +21,7 @@
-- imports
import("core.base.option")
import("core.base.hashset")
+import("core.project.project")
import("utils.binary.deplibs", {alias = "get_depend_libraries"})
import("private.action.clean.remove_files")
@@ -61,10 +62,12 @@ function _get_target_package_libfiles(target, opt)
end
end
-- we can only reserve used libraries
- if target:is_binary() or target:is_shared() then
- local depends = hashset.new()
- _get_target_package_deplibs(target, depends, libfiles, target:targetfile())
- table.remove_if(libfiles, function (_, libfile) return not depends:has(path.filename(libfile)) end)
+ if project.policy("install.strip_packagelibs") then
+ if target:is_binary() or target:is_shared() then
+ local depends = hashset.new()
+ _get_target_package_deplibs(target, depends, libfiles, target:targetfile())
+ table.remove_if(libfiles, function (_, libfile) return not depends:has(path.filename(libfile)) end)
+ end
end
return libfiles
end