summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-07-12 00:52:16 +0800
committerruki <[email protected]>2024-07-15 12:21:41 +0800
commit2ae6ada73e544bba9f547b022393f1e3c5093ec6 (patch)
tree8b774c6301bece9cced338eead3adb8e6ce5e25a
parent22df8e0d89a1d8f3358797ed2094f692be62b4e4 (diff)
add set_prefixdir
-rw-r--r--xmake/core/project/target.lua45
-rw-r--r--xmake/plugins/pack/xpack.lua6
2 files changed, 43 insertions, 8 deletions
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua
index 0ed7465d4..fb7801f3c 100644
--- a/xmake/core/project/target.lua
+++ b/xmake/core/project/target.lua
@@ -1623,20 +1623,54 @@ function _instance:rundir()
return baseoption.get("workdir") or self:get("rundir") or path.directory(self:targetfile())
end
--- get install directory
-function _instance:installdir()
+-- get prefix directory
+function _instance:prefixdir()
+ return self:get("prefixdir")
+end
+
+-- get the installed binary directory
+function _instance:bindir()
+ local bindir = self:extraconf("prefixdir", self:prefixdir(), "bindir")
+ if bindir == nil then
+ bindir = "bin"
+ end
+ return self:installdir(bindir)
+end
+
+-- get the installed library directory
+function _instance:libdir()
+ local libdir = self:extraconf("prefixdir", self:prefixdir(), "libdir")
+ if libdir == nil then
+ libdir = "lib"
+ end
+ return self:installdir(libdir)
+end
- -- get it from the cache
+-- get the installed include directory
+function _instance:includedir()
+ local includedir = self:extraconf("prefixdir", self:prefixdir(), "includedir")
+ if includedir == nil then
+ includedir = "include"
+ end
+ return self:installdir(includedir)
+end
+
+-- get install directory
+function _instance:installdir(...)
+ opt = opt or {}
local installdir = baseoption.get("installdir")
if not installdir then
-
-- DESTDIR: be compatible with https://www.gnu.org/prep/standards/html_node/DESTDIR.html
installdir = self:get("installdir") or os.getenv("INSTALLDIR") or os.getenv("PREFIX") or os.getenv("DESTDIR") or platform.get("installdir")
if installdir then
installdir = installdir:trim()
end
end
- return installdir
+ local prefixdir = self:prefixdir()
+ if prefixdir then
+ installdir = path.join(installdir, prefixdir)
+ end
+ return path.normalize(path.join(installdir, ...))
end
-- get package directory
@@ -2737,6 +2771,7 @@ function target.apis()
, "target.set_runargs"
, "target.set_exceptions"
, "target.set_encodings"
+ , "target.set_prefixdir"
-- target.add_xxx
, "target.add_deps"
, "target.add_rules"
diff --git a/xmake/plugins/pack/xpack.lua b/xmake/plugins/pack/xpack.lua
index 89ee5a54b..203fcbe6d 100644
--- a/xmake/plugins/pack/xpack.lua
+++ b/xmake/plugins/pack/xpack.lua
@@ -453,7 +453,7 @@ end
-- get the binary directory
function xpack:bindir()
- local bindir = self:get("bindir")
+ local bindir = self:get("bindir") or self:extraconf("prefixdir", self:prefixdir(), "bindir")
if bindir == nil then
bindir = "bin"
end
@@ -462,7 +462,7 @@ end
-- get the library directory
function xpack:libdir()
- local libdir = self:get("libdir")
+ local libdir = self:get("libdir") or self:extraconf("prefixdir", self:prefixdir(), "libdir")
if libdir == nil then
libdir = "lib"
end
@@ -471,7 +471,7 @@ end
-- get the include directory
function xpack:includedir()
- local includedir = self:get("includedir")
+ local includedir = self:get("includedir") or self:extraconf("prefixdir", self:prefixdir(), "includedir")
if includedir == nil then
includedir = "include"
end