author | Ryan C. Gordon <icculus@icculus.org> |
Sun, 10 Nov 2013 00:38:37 -0500 | |
changeset 7925 | f090a47eb7f7 |
child 8149 | 681eb46b8ac4 |
permissions | -rwxr-xr-x |
7925
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
1 |
-- Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org> |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
2 |
-- |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
3 |
-- This software is provided 'as-is', without any express or implied |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
4 |
-- warranty. In no event will the authors be held liable for any damages |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
5 |
-- arising from the use of this software. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
6 |
-- |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
7 |
-- Permission is granted to anyone to use this software for any purpose, |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
8 |
-- including commercial applications, and to alter it and redistribute it |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
9 |
-- freely. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
10 |
-- |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
11 |
-- Meta-build system using premake created and maintained by |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
12 |
-- Benjamin Henning <b.henning@digipen.edu> |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
13 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
14 |
--[[ |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
15 |
sdl_file.lua |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
16 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
17 |
This function contains a wrapper for the I/O file operations, providing a few |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
18 |
custom functions which simplify the file I/O process (especially useful for |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
19 |
the vast amount of generation used by the meta-build system). |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
20 |
]] |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
21 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
22 |
-- Given a filename and open mode (look at io.open for more information), opens |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
23 |
-- the file with various contained functions for printing to the file, writing |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
24 |
-- to the file, reading from the file, or closing the file. If the filename is |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
25 |
-- nil, then this will open a file in a special text mode. In that case, the |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
26 |
-- mode is ignored. Returned is an instanced table with all of the |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
27 |
-- aforementioned functions. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
28 |
-- |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
29 |
-- The print function is associated with textprint/fileprint, the write function |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
30 |
-- with textwrite/filewrite, the read function with fileread, and the close |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
31 |
-- function with textclose/fileclose. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
32 |
function fileopen(file, mode) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
33 |
if file == nil then |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
34 |
return { texth = "", print = textprint, write = textwrite, read = nil, close = textclose } |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
35 |
else |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
36 |
return { fileh = io.open(file, mode), print = fileprint, write = filewrite, read = fileread, close = fileclose } |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
37 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
38 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
39 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
40 |
-- Given a filename and file mode, reads the entire contents of the file and |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
41 |
-- returns the contents as a string. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
42 |
function readfile(file, mode) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
43 |
local file = fileopen(file, mode) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
44 |
local content = file:read() |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
45 |
file:close() |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
46 |
return content |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
47 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
48 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
49 |
-- Given a file, the number of tabs to indent, and a line to print, append the |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
50 |
-- line tabbed n times with an appended newline to the end of the input text. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
51 |
function textprint(f, tabs, line) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
52 |
for i = 0, tabs - 1, 1 do |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
53 |
f.texth = f.texth .. "\t" |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
54 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
55 |
f.texth = f.texth .. line .. "\n" |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
56 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
57 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
58 |
-- Given a file, the number of tabs to indent, and a line to print, append the |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
59 |
-- line tabbed n times with an appended newline to the end of the input file. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
60 |
function fileprint(f, tabs, line) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
61 |
for i = 0, tabs - 1, 1 do |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
62 |
f.fileh:write("\t") |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
63 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
64 |
f.fileh:write(line .. "\n") |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
65 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
66 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
67 |
-- Given a file and some text, append the text to the end of the input text. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
68 |
function textwrite(f, text) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
69 |
f.texth = f.texth .. text |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
70 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
71 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
72 |
-- Given a file and some text, append the text to the end of the input file. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
73 |
function filewrite(f, text) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
74 |
f.fileh:write(text) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
75 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
76 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
77 |
-- Given a file, read all the contents of the file and return them as a string. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
78 |
function fileread(file) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
79 |
return file.fileh:read("*all") |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
80 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
81 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
82 |
-- Given a file opened in text mode, return the result of the current file |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
83 |
-- operations as a text string. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
84 |
function textclose(file) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
85 |
return file.texth |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
86 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
87 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
88 |
-- Given a file opened regularly, close the file handle resource, preventing |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
89 |
-- any future I/O operations. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
90 |
function fileclose(file) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
91 |
file.fileh:close() |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
92 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
93 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
94 |
-- Given a source path, builds a table containing all directories and recursive |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
95 |
-- subdirectories which contain files, and returns the table. Each entry in the |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
96 |
-- table will have a '/' at the end of its path, plus they will all be relative |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
97 |
-- to the parent source path. The table will contain a single entry with the |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
98 |
-- value '/' to indicate the source path itself. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
99 |
function createDirTable(sourcePath) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
100 |
local dirs = os.matchdirs(sourcePath.."/**") |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
101 |
for k,d in pairs(dirs) do |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
102 |
dirs[k] = string.sub(d, #sourcePath + 1) .. "/" |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
103 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
104 |
table.insert(dirs, "/") |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
105 |
return dirs |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
106 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
107 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
108 |
-- This works like os.pathsearch, but for directories. Look at the premake |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
109 |
-- documentation for os.pathsearch for more information. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
110 |
os.dirpathsearch = function(subdir, path, path_delimiter) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
111 |
for i,p in ipairs(explode(path, path_delimiter)) do |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
112 |
local needle = p .. "/" .. subdir |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
113 |
if os.isdir(needle) then |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
114 |
return needle |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
115 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
116 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
117 |
return nil |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
118 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
119 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
120 |
-- Given a variable number of environmental variable names, this will join them |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
121 |
-- together based on the current OS path delimeter and quietly ignoring those |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
122 |
-- variables which do not exist on this system. The resulting path is always |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
123 |
-- normalized for Unix-based path separators, regardless of the system. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
124 |
os.getenvpath = function(...) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
125 |
local path = "" |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
126 |
local pathDelimeter = ":" |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
127 |
if os.is("windows") then |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
128 |
pathDelimeter = ";" |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
129 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
130 |
for i,a in ipairs(arg) do |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
131 |
local value = os.getenv(a) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
132 |
if value then |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
133 |
if #path > 0 then |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
134 |
path = path .. pathDelimeter |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
135 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
136 |
path = path .. value |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
137 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
138 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
139 |
-- normalize path to unix |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
140 |
return path:gsub("\\", "/"):gsub("//", "/") |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
141 |
end |