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
							 |