Build: Improve code and allow to be platform specific about everything

Former-commit-id: 7f13e1a49ad33da26c1841ee550c9de03303cd80
This commit is contained in:
Lynix 2016-04-29 20:34:03 +02:00
parent 4996b158c2
commit 0aac3ab33e
2 changed files with 38 additions and 65 deletions

View File

@ -85,7 +85,7 @@ function NazaraBuild:Execute()
location(_ACTION .. "/extlibs") location(_ACTION .. "/extlibs")
files(libTable.Files) files(libTable.Files)
excludes(libTable.FilesExclusion) excludes(libTable.FilesExcluded)
defines(libTable.Defines) defines(libTable.Defines)
flags(libTable.Flags) flags(libTable.Flags)
@ -226,7 +226,7 @@ function NazaraBuild:Execute()
configuration({}) configuration({})
files(moduleTable.Files) files(moduleTable.Files)
excludes(moduleTable.FilesExclusion) excludes(moduleTable.FilesExcluded)
defines(moduleTable.Defines) defines(moduleTable.Defines)
flags(moduleTable.Flags) flags(moduleTable.Flags)
@ -354,7 +354,7 @@ function NazaraBuild:Execute()
configuration({}) configuration({})
files(toolTable.Files) files(toolTable.Files)
excludes(toolTable.FilesExclusion) excludes(toolTable.FilesExcluded)
defines(toolTable.Defines) defines(toolTable.Defines)
flags(toolTable.Flags) flags(toolTable.Flags)
@ -389,7 +389,7 @@ function NazaraBuild:Execute()
targetdir("../examples/bin") targetdir("../examples/bin")
files(exampleTable.Files) files(exampleTable.Files)
excludes(exampleTable.FilesExclusion) excludes(exampleTable.FilesExcluded)
defines(exampleTable.Defines) defines(exampleTable.Defines)
flags(exampleTable.Flags) flags(exampleTable.Flags)
@ -709,7 +709,7 @@ function NazaraBuild:RegisterModule(moduleTable)
table.insert(moduleTable.Files, "../src/Nazara/" .. moduleTable.Name .. "/**.cpp") table.insert(moduleTable.Files, "../src/Nazara/" .. moduleTable.Name .. "/**.cpp")
if (_OPTIONS["united"] and lowerCaseName ~= "core") then if (_OPTIONS["united"] and lowerCaseName ~= "core") then
table.insert(moduleTable.FilesExclusion, "../src/Nazara/" .. moduleTable.Name .. "/Debug/NewOverload.cpp") table.insert(moduleTable.FilesExcluded, "../src/Nazara/" .. moduleTable.Name .. "/Debug/NewOverload.cpp")
end end
moduleTable.Type = "Module" moduleTable.Type = "Module"
@ -804,7 +804,13 @@ function NazaraBuild:Process(infoTable)
end end
infoTable.Libraries = libraries infoTable.Libraries = libraries
for platform, defineTable in pairs(infoTable.OsDefines) do for k,v in pairs(infoTable) do
local target = k:match("Os(%w+)")
if (target) then
local targetTable = infoTable[target]
if (targetTable) then
local excludeTargetTable = infoTable[target .. "Excluded"]
for platform, defineTable in pairs(v) do
platform = string.lower(platform) platform = string.lower(platform)
if (platform == "posix") then if (platform == "posix") then
local osname = os.get() local osname = os.get()
@ -815,49 +821,19 @@ function NazaraBuild:Process(infoTable)
if (os.is(platform)) then if (os.is(platform)) then
for k,v in ipairs(defineTable) do for k,v in ipairs(defineTable) do
table.insert(infoTable.Defines, v) table.insert(targetTable, v)
end end
elseif (excludeTargetTable) then
for k,v in ipairs(defineTable) do
table.insert(excludeTargetTable, v)
end end
end end
infoTable.OsDefines = nil
for platform, fileTable in pairs(infoTable.OsFiles) do
platform = string.lower(platform)
if (platform == "posix") then
local osname = os.get()
if (PosixOSes[osname]) then
platform = osname
end
end end
if (os.is(platform)) then infoTable[k] = nil
for k,v in ipairs(fileTable) do
table.insert(infoTable.Files, v)
end
else
for k,v in ipairs(fileTable) do
table.insert(infoTable.FilesExclusion, v)
end end
end end
end end
infoTable.OsFiles = nil
for platform, libraryTable in pairs(infoTable.OsLibraries) do
platform = string.lower(platform)
if (platform == "posix") then
local osname = os.get()
if (PosixOSes[osname]) then
platform = osname
end
end
if (os.is(platform)) then
for k,v in ipairs(libraryTable) do
table.insert(infoTable.Libraries, v)
end
end
end
infoTable.OsLibraries = nil
end end
function NazaraBuild:SetupInfoTable(infoTable) function NazaraBuild:SetupInfoTable(infoTable)
@ -866,13 +842,10 @@ function NazaraBuild:SetupInfoTable(infoTable)
infoTable.ConfigurationLibraries.ReleaseStatic = {} infoTable.ConfigurationLibraries.ReleaseStatic = {}
infoTable.ConfigurationLibraries.DebugDynamic = {} infoTable.ConfigurationLibraries.DebugDynamic = {}
infoTable.ConfigurationLibraries.ReleaseDynamic = {} infoTable.ConfigurationLibraries.ReleaseDynamic = {}
infoTable.Defines = {}
infoTable.Files = {} local infos = {"Defines", "Files", "FilesExcluded", "Flags", "Includes", "Libraries"}
infoTable.FilesExclusion = {} for k,v in ipairs(infos) do
infoTable.Flags = {} infoTable[v] = {}
infoTable.Includes = {} infoTable["Os" .. v] = {}
infoTable.Libraries = {} end
infoTable.OsDefines = {}
infoTable.OsFiles = {}
infoTable.OsLibraries = {}
end end

View File

@ -22,7 +22,7 @@ TOOL.Files = {
} }
-- Exlude client-only files -- Exlude client-only files
TOOL.FilesExclusion = { TOOL.FilesExcluded = {
"../SDK/**/CameraComponent.*", "../SDK/**/CameraComponent.*",
"../SDK/**/Console.*", "../SDK/**/Console.*",
"../SDK/**/GraphicsComponent.*", "../SDK/**/GraphicsComponent.*",