121 lines
2.5 KiB
Lua
121 lines
2.5 KiB
Lua
gitVersioningCommand = "git describe --tags --dirty --always"
|
|
gitCurrentBranchCommand = "git symbolic-ref -q --short HEAD"
|
|
|
|
-- Quote the given string input as a C string
|
|
function cstrquote(value)
|
|
if value == nil then
|
|
return "\"\""
|
|
end
|
|
result = value:gsub("\\", "\\\\")
|
|
result = result:gsub("\"", "\\\"")
|
|
result = result:gsub("\n", "\\n")
|
|
result = result:gsub("\t", "\\t")
|
|
result = result:gsub("\r", "\\r")
|
|
result = result:gsub("\a", "\\a")
|
|
result = result:gsub("\b", "\\b")
|
|
result = "\"" .. result .. "\""
|
|
return result
|
|
end
|
|
|
|
-- Converts tags in "vX.X.X" format and given revision number Y to an array of numbers {X,X,X,Y}.
|
|
-- In the case where the format does not work fall back to padding with zeroes and just ending with the revision number.
|
|
-- partscount can be either 3 or 4.
|
|
function vertonumarr(value, vernumber, partscount)
|
|
vernum = {}
|
|
for num in string.gmatch(value or "", "%d+") do
|
|
if #vernum < 3 then
|
|
table.insert(vernum, tonumber(num))
|
|
end
|
|
end
|
|
while #vernum < 3 do
|
|
table.insert(vernum, 0)
|
|
end
|
|
if #vernum < partscount then
|
|
table.insert(vernum, tonumber(vernumber))
|
|
end
|
|
return vernum
|
|
end
|
|
|
|
dependencies = {
|
|
basePath = "./deps"
|
|
}
|
|
|
|
function dependencies.load()
|
|
dir = path.join(dependencies.basePath, "premake/*.lua")
|
|
deps = os.matchfiles(dir)
|
|
|
|
for i, dep in pairs(deps) do
|
|
dep = dep:gsub(".lua", "")
|
|
require(dep)
|
|
end
|
|
end
|
|
|
|
function dependencies.imports()
|
|
for i, proj in pairs(dependencies) do
|
|
if type(i) == 'number' then
|
|
proj.import()
|
|
end
|
|
end
|
|
end
|
|
|
|
function dependencies.projects()
|
|
for i, proj in pairs(dependencies) do
|
|
if type(i) == 'number' then
|
|
proj.project()
|
|
end
|
|
end
|
|
end
|
|
|
|
dependencies.load()
|
|
|
|
workspace "h2-mod"
|
|
location "./build"
|
|
objdir "%{wks.location}/obj/%{cfg.buildcfg}"
|
|
targetdir "%{wks.location}/bin/%{cfg.buildcfg}"
|
|
targetname "%{prj.name}"
|
|
|
|
language "C++"
|
|
|
|
architecture "x64"
|
|
platforms "x64"
|
|
|
|
buildoptions "/std:c++latest"
|
|
systemversion "latest"
|
|
|
|
flags
|
|
{
|
|
"NoIncrementalLink",
|
|
"MultiProcessorCompile",
|
|
}
|
|
|
|
configurations { "Debug", "Release", }
|
|
|
|
symbols "On"
|
|
|
|
configuration "Release"
|
|
optimize "Full"
|
|
defines { "NDEBUG" }
|
|
configuration{}
|
|
|
|
configuration "Debug"
|
|
optimize "Debug"
|
|
defines { "DEBUG", "_DEBUG" }
|
|
configuration {}
|
|
|
|
startproject "h2-mod"
|
|
|
|
project "h2-mod"
|
|
kind "SharedLib"
|
|
language "C++"
|
|
|
|
pchheader "stdinc.hpp"
|
|
pchsource "src/stdinc.cpp"
|
|
|
|
includedirs { "src" }
|
|
|
|
files { "src/**.h", "src/**.hpp", "src/**.cpp" }
|
|
|
|
dependencies.imports()
|
|
|
|
group "Dependencies"
|
|
dependencies.projects() |