diff options
| author | ruki <[email protected]> | 2019-01-25 00:59:27 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-01-24 23:56:46 +0800 |
| commit | e7627900b6acfeaefd69e65927178ee16ca0374e (patch) | |
| tree | 824bc219d363ac4044972f2b504137d0b1280e61 /xmake/modules/package/manager | |
| parent | fc20a39a1a046630864ff21d8156dc1e1ca99fb3 (diff) | |
generate conanfile.txt
Diffstat (limited to 'xmake/modules/package/manager')
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)) |
