1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
--
-- premake.lua
-- High-level processing functions.
-- Copyright (c) 2002-2009 Jason Perkins and the Premake project
--
premake._filelevelconfig = false
--
-- Open a file for output, and call a function to actually do the writing.
-- Used by the actions to generate solution and project files.
--
-- @param obj
-- A solution or project object; will be based to the callback function.
-- @param filename
-- The output filename; see the docs for premake.project.getfilename()
-- for the expected format.
-- @param callback
-- The function responsible for writing the file, should take a solution
-- or project as a parameters.
--
function premake.generate(obj, filename, callback)
filename = premake.project.getfilename(obj, filename)
printf("Generating %s...", filename)
local f, err = io.open(filename, "wb")
if (not f) then
error(err, 0)
end
io.output(f)
callback(obj)
f:close()
premake.stats.num_generated = premake.stats.num_generated + 1
end
--
-- Finds a valid premake build file in the specified directory
-- Used by both the main genie process, and include commands
--
-- @param dir
-- The path in which to start looking for the script
-- @param search_upwards
-- When the script was not found in the specified directory, does the
-- script need to look upwards in the file system
--
function premake.findDefaultScript(dir, search_upwards)
search_upwards = search_upwards or true
local last = ""
while dir ~= last do
for _, name in ipairs({ "genie.lua", "solution.lua", "premake4.lua" }) do
local script0 = dir .. "/" .. name
if (os.isfile(script0)) then
return dir, name
end
local script1 = dir .. "/scripts/" .. name
if (os.isfile(script1)) then
return dir .. "/scripts/", name
end
end
last = dir
dir = path.getabsolute(dir .. "/..")
if dir == "." or not search_upwards then break end
end
return nil, nil
end
|