From c360a739ba17f89f7f4d4f8ffbebc30576cd7dea Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 7 Oct 2021 00:47:50 +0800 Subject: improve make for tools/make/autoconf --- xmake/modules/package/tools/make.lua | 39 +++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 18 deletions(-) (limited to 'xmake/modules/package/tools/make.lua') diff --git a/xmake/modules/package/tools/make.lua b/xmake/modules/package/tools/make.lua index a40cd57c1..af5f977fa 100644 --- a/xmake/modules/package/tools/make.lua +++ b/xmake/modules/package/tools/make.lua @@ -21,6 +21,7 @@ -- imports import("core.base.option") import("core.project.config") +import("lib.detect.find_tool") -- get the build environments function buildenvs(package) @@ -84,6 +85,24 @@ function buildenvs(package) return envs end +-- do make +function make(package, argv, opt) + opt = opt or {} + local program + local runenvs = opt.envs or buildenvs(package) + if package:is_plat("mingw") and is_subhost("windows") then + local mingw = assert(package:build_getenv("mingw") or package:build_getenv("sdk"), "mingw not found!") + program = path.join(mingw, "bin", "mingw32-make.exe") + else + local tool = find_tool("make", {envs = runenvs}) + if tool then + program = tool.program + end + end + assert(program, "make not found!") + os.vrunv(program, argv, {envs = runenvs}) +end + -- build package function build(package, configs, opt) @@ -108,15 +127,7 @@ function build(package, configs, opt) end -- do build - if is_host("bsd") then - os.vrunv("gmake", argv, {envs = opt.envs or buildenvs(package)}) - elseif package:is_plat("mingw") and is_subhost("windows") then - local mingw = assert(package:build_getenv("mingw") or package:build_getenv("sdk"), "mingw not found!") - local make = path.join(mingw, "bin", "mingw32-make.exe") - os.vrunv(make, argv, {envs = opt.envs or buildenvs(package)}) - else - os.vrunv("make", argv, {envs = opt.envs or buildenvs(package)}) - end + make(package, argv, opt) end -- install package @@ -131,13 +142,5 @@ function install(package, configs, opt) if option.get("verbose") then table.insert(argv, "VERBOSE=1") end - if is_host("bsd") then - os.vrunv("gmake", argv, {envs = opt.envs or buildenvs(package)}) - elseif package:is_plat("mingw") and is_subhost("windows") then - local mingw = assert(package:build_getenv("mingw") or package:build_getenv("sdk"), "mingw not found!") - local make = path.join(mingw, "bin", "mingw32-make.exe") - os.vrunv(make, argv, {envs = opt.envs or buildenvs(package)}) - else - os.vrunv("make", argv, {envs = opt.envs or buildenvs(package)}) - end + make(package, argv, opt) end -- cgit v1.3.1