29 lines
1.0 KiB
Lua
29 lines
1.0 KiB
Lua
|
|
function find_my_program(name, sdkdir, use_next)
|
||
|
|
import("lib.detect.find_file")
|
||
|
|
import("lib.detect.find_program")
|
||
|
|
import("lib.detect.find_tool")
|
||
|
|
|
||
|
|
local sdkdir = sdkdir or path.join(os.projectdir(), "tools")
|
||
|
|
local tool = find_tool(name, {pathes = {sdkdir, "/usr/local/bin"}})
|
||
|
|
local prog = tool and tool.program or find_program(name, {pathes = {sdkdir, "/usr/local/bin"}})
|
||
|
|
prog = prog or find_file(name, {sdkdir})
|
||
|
|
if (prog == nil) then
|
||
|
|
if os.host() ~= "windows" then
|
||
|
|
local outdata, errdata = os.iorun("which " .. name)
|
||
|
|
if (errdata ~= nil or errdata ~= "") then
|
||
|
|
prog = string.gsub(outdata, "%s+", "")
|
||
|
|
end
|
||
|
|
else
|
||
|
|
prog = find_file(name .. ".exe", {sdkdir})
|
||
|
|
end
|
||
|
|
end
|
||
|
|
if (prog == nil) then
|
||
|
|
if not use_next then
|
||
|
|
return find_my_program(name, path.join(sdkdir, name), true)
|
||
|
|
end
|
||
|
|
print(name .. "_f not found! under " .. sdkdir)
|
||
|
|
return
|
||
|
|
end
|
||
|
|
return {program = prog, sdkdir = sdkdir}
|
||
|
|
end
|