author | Sam Lantinga <slouken@libsdl.org> |
Sat, 02 Jan 2016 10:10:34 -0800 | |
changeset 9998 | f67cf37e9cd4 |
parent 9619 | b94b6d0bff0f |
permissions | -rwxr-xr-x |
9998
f67cf37e9cd4
Updated copyright to 2016
Sam Lantinga <slouken@libsdl.org>
parents:
9619
diff
changeset
|
1 |
-- Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org> |
7925
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_gen_config.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 |
Given a series of set configuration values from the project definitions, |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
18 |
this file contains a series of functions that generate valid preprocessor |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
19 |
definitions to enable or disable various features of the SDL2 library. These |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
20 |
definitions are pasted into a template SDL config header file, which is then |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
21 |
saved in the local directory and referenced to in generated project files. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
22 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
23 |
This file depends on sdl_file.lua. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
24 |
]] |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
25 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
26 |
-- The line that must exist in the template file in order to properly paste |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
27 |
-- the generated definitions. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
28 |
local searchKey = "/%* Paste generated code here %*/\n" |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
29 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
30 |
local configFile, templateFileContents |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
31 |
local insertLocation |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
32 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
33 |
-- This function begins config header generation given the name of the generated |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
34 |
-- file and the name of the template file to use. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
35 |
function startGeneration(file, template) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
36 |
configFile = fileopen(file, "wt") |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
37 |
templateFileContents = readfile(template, "rt") |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
38 |
insertLocation = templateFileContents:find(searchKey) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
39 |
if insertLocation then |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
40 |
configFile:write(templateFileContents:sub(1, insertLocation - 1)) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
41 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
42 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
43 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
44 |
-- Adds a table of configuration values to the generated file. Each |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
45 |
-- configuration line is wrapped around a preprocessor definition check, so they |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
46 |
-- can be manually overwritten by the developer if necessary. The definition |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
47 |
-- pastes string versions of both the key and the value on the line, where |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
48 |
-- either is allowed to be empty. That means the table stores key-value pairs. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
49 |
function addConfig(tbl) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
50 |
-- if no insert location, don't paste anything |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
51 |
if not insertLocation then return end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
52 |
for k,v in pairs(tbl) do |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
53 |
configFile:print(0, "#ifndef " .. k) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
54 |
configFile:print(0, "#define " .. tostring(k) .. " " .. tostring(v)) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
55 |
configFile:print(0, "#endif") |
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 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
58 |
|
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
59 |
-- Finishes the generation and writes the remains of the template file into the |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
60 |
-- generated config file. |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
61 |
function endGeneration() |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
62 |
if insertLocation then |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
63 |
configFile:write(templateFileContents:sub(insertLocation + #searchKey - 2)) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
64 |
else -- write entire file since nothing is being pasted |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
65 |
configFile:write(templateFileContents) |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
66 |
end |
f090a47eb7f7
Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
67 |
configFile:close() |
8149
681eb46b8ac4
Fixed bug 2374 - Update copyright for 2014...
Sam Lantinga <slouken@libsdl.org>
parents:
7925
diff
changeset
|
68 |
end |