diff options
| author | ruki <[email protected]> | 2024-07-12 00:52:16 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-07-15 12:21:41 +0800 |
| commit | 2ae6ada73e544bba9f547b022393f1e3c5093ec6 (patch) | |
| tree | 8b774c6301bece9cced338eead3adb8e6ce5e25a | |
| parent | 22df8e0d89a1d8f3358797ed2094f692be62b4e4 (diff) | |
add set_prefixdir
| -rw-r--r-- | xmake/core/project/target.lua | 45 | ||||
| -rw-r--r-- | xmake/plugins/pack/xpack.lua | 6 |
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 |
