summaryrefslogtreecommitdiff
path: root/xmake/modules/package/manager
diff options
context:
space:
mode:
authorruki <[email protected]>2019-01-25 00:59:27 +0800
committerruki <[email protected]>2019-01-24 23:56:46 +0800
commite7627900b6acfeaefd69e65927178ee16ca0374e (patch)
tree824bc219d363ac4044972f2b504137d0b1280e61 /xmake/modules/package/manager
parentfc20a39a1a046630864ff21d8156dc1e1ca99fb3 (diff)
generate conanfile.txt
Diffstat (limited to 'xmake/modules/package/manager')
-rw-r--r--xmake/modules/package/manager/brew/install_package.lua3
-rw-r--r--xmake/modules/package/manager/conan/find_package.lua3
-rw-r--r--xmake/modules/package/manager/conan/install_package.lua46
-rw-r--r--xmake/modules/package/manager/install_package.lua6
4 files changed, 52 insertions, 6 deletions
diff --git a/xmake/modules/package/manager/brew/install_package.lua b/xmake/modules/package/manager/brew/install_package.lua
index 56b12e50f..2c41721d5 100644
--- a/xmake/modules/package/manager/brew/install_package.lua
+++ b/xmake/modules/package/manager/brew/install_package.lua
@@ -35,9 +35,6 @@ import("lib.detect.find_tool")
--
function main(name, opt)
- -- init options
- opt = opt or {}
-
-- find brew
local brew = find_tool("brew")
if not brew then
diff --git a/xmake/modules/package/manager/conan/find_package.lua b/xmake/modules/package/manager/conan/find_package.lua
index bec025128..bc386d50a 100644
--- a/xmake/modules/package/manager/conan/find_package.lua
+++ b/xmake/modules/package/manager/conan/find_package.lua
@@ -22,6 +22,9 @@
-- @file find_package.lua
--
+-- imports
+import("core.base.option")
+
-- find package using the conan package manager
--
-- @param name the package name
diff --git a/xmake/modules/package/manager/conan/install_package.lua b/xmake/modules/package/manager/conan/install_package.lua
index 587287e0c..ada3f110e 100644
--- a/xmake/modules/package/manager/conan/install_package.lua
+++ b/xmake/modules/package/manager/conan/install_package.lua
@@ -24,19 +24,59 @@
-- imports
import("core.base.option")
+import("core.project.config")
import("lib.detect.find_tool")
+-- get build directory
+function _get_build_directory(name)
+ return path.join(config.buildir() or os.tmpdir(), ".conan", name)
+end
+
+-- generate conanfile.txt
+function _generate_conanfile(name, opt)
+
+ -- get conanfile.txt
+ local conanfile = path.join(_get_build_directory(name), "conanfile.txt")
+
+ -- trace
+ dprint("generate %s ..", conanfile)
+
+ -- get conan options and imports
+ local conan_options = opt.conan_options or {}
+ local conan_imports = opt.conan_imports or {}
+
+ -- generate it
+ io.writefile(conanfile, ([[
+[generators]
+xmake
+[requires]
+%s
+[options]
+%s
+[imports]
+%s
+[build_requires]
+xmake_generator/0.1.0@conan/xmakegen
+ ]]):format(name, table.concat(conan_options, "\n"), table.concat(conan_imports, "\n")))
+end
+
-- install package
--
-- @param name the package name, e.g. conan::OpenSSL/1.0.2n@conan/stable
--- @param opt the options, .e.g {verbose = true}
+-- @param opt the options, .e.g {verbose = true, conan_options = {}, conan_imports = {}}
--
-- @return true or false
--
function main(name, opt)
- -- init options
- opt = opt or {}
+ -- find conan
+ local conan = find_tool("conan")
+ if not conan then
+ return false
+ end
+
+ -- generate conanfile.txt
+ _generate_conanfile(name, opt)
-- ok
return true
diff --git a/xmake/modules/package/manager/install_package.lua b/xmake/modules/package/manager/install_package.lua
index 46eabf28c..42f60d68f 100644
--- a/xmake/modules/package/manager/install_package.lua
+++ b/xmake/modules/package/manager/install_package.lua
@@ -22,6 +22,9 @@
-- @file install_package.lua
--
+-- imports
+import("core.project.config")
+
-- install package
function _install_package(manager_name, package_name, opt)
@@ -61,6 +64,9 @@ function main(name, opt)
-- get the copied options
opt = table.copy(opt)
+ opt.plat = opt.plat or config.get("plat") or os.host()
+ opt.arch = opt.arch or config.get("arch") or os.arch()
+ opt.mode = opt.mode or config.mode() or "release"
-- get package manager name
local manager_name, package_name = unpack(name:split("::", true))