Rework depedency management in premake lua scripts

This commit is contained in:
Jan
2021-03-03 11:55:37 -08:00
parent 1a45cf2107
commit dc3fef5b0f
29 changed files with 447 additions and 386 deletions

View File

@ -1,31 +1,33 @@
Crypto = {}
function Crypto:include()
if References:include("Crypto") then
function Crypto:include(includes)
if includes:handle(self:name()) then
includedirs {
path.join(ProjectFolder(), "Crypto")
}
end
end
function Crypto:link()
if References:link("Crypto") then
libtomcrypt:link()
libtommath:link()
salsa20:link()
links "Crypto"
end
function Crypto:link(links)
links:add(self:name())
links:linkto(libtomcrypt)
links:linkto(libtommath)
links:linkto(salsa20)
end
function Crypto:use()
end
function Crypto:project()
References:reset()
local folder = ProjectFolder();
function Crypto:name()
return "Crypto"
end
project "Crypto"
function Crypto:project()
local folder = ProjectFolder()
local includes = Includes:create()
project(self:name())
targetdir(TargetDirectoryLib)
location "%{wks.location}/src/%{prj.name}"
kind "StaticLib"
@ -36,8 +38,8 @@ function Crypto:project()
path.join(folder, "Crypto/**.cpp")
}
self:include()
libtomcrypt:include()
libtommath:include()
salsa20:include()
self:include(includes)
libtomcrypt:include(includes)
libtommath:include(includes)
salsa20:include(includes)
end

View File

@ -1,26 +1,31 @@
Linker = {}
function Linker:include()
if References:include("Linker") then
function Linker:include(includes)
if includes:handle(self:name()) then
includedirs {
path.join(ProjectFolder(), "Linker")
}
end
end
function Linker:link()
function Linker:link(links)
end
function Linker:use()
dependson "Linker"
dependson(self:name())
end
function Linker:name()
return "Linker"
end
function Linker:project()
References:reset()
local folder = ProjectFolder();
local folder = ProjectFolder()
local includes = Includes:create()
local links = Links:create()
project "Linker"
project(self:name())
targetdir(TargetDirectoryBin)
location "%{wks.location}/src/%{prj.name}"
kind "ConsoleApp"
@ -31,10 +36,12 @@ function Linker:project()
path.join(folder, "Linker/**.cpp")
}
self:include()
Utils:include()
ZoneWriting:include()
self:include(includes)
Utils:include(includes)
ZoneWriting:include(includes)
Utils:link()
--ZoneWriting:link()
links:linkto(Utils)
links:linkto(ZoneWriting)
--ZoneWriting:link(links)
links:linkall()
end

View File

@ -1,35 +1,35 @@
ObjCommon = {}
function ObjCommon:include()
if References:include("ObjCommon") then
ZoneCommon:include()
minizip:include()
function ObjCommon:include(includes)
if includes:handle(self:name()) then
ZoneCommon:include(includes)
minizip:include(includes)
includedirs {
path.join(ProjectFolder(), "ObjCommon")
}
end
end
function ObjCommon:link()
if References:link("ObjCommon") then
Utils:link()
ZoneCommon:link()
minizip:link()
links {
"ObjCommon"
}
end
function ObjCommon:link(links)
links:add(self:name())
links:linkto(Utils)
links:linkto(ZoneCommon)
links:linkto(minizip)
end
function ObjCommon:use()
end
function ObjCommon:project()
References:reset()
local folder = ProjectFolder();
function ObjCommon:name()
return "ObjCommon"
end
project "ObjCommon"
function ObjCommon:project()
local folder = ProjectFolder()
local includes = Includes:create()
project(self:name())
targetdir(TargetDirectoryLib)
location "%{wks.location}/src/%{prj.name}"
kind "StaticLib"
@ -46,6 +46,6 @@ function ObjCommon:project()
}
}
self:include()
Utils:include()
self:include(includes)
Utils:include(includes)
end

View File

@ -1,38 +1,38 @@
ObjLoading = {}
function ObjLoading:include()
if References:include("ObjLoading") then
ObjCommon:include()
ZoneCommon:include()
function ObjLoading:include(includes)
if includes:handle(self:name()) then
ObjCommon:include(includes)
ZoneCommon:include(includes)
includedirs {
path.join(ProjectFolder(), "ObjLoading")
}
end
end
function ObjLoading:link()
if References:link("ObjLoading") then
Utils:link()
ObjCommon:link()
ZoneCommon:link()
minilzo:link()
minizip:link()
zlib:link()
links {
"ObjLoading"
}
end
function ObjLoading:link(links)
links:add(self:name())
links:linkto(Utils)
links:linkto(ObjCommon)
links:linkto(ZoneCommon)
links:linkto(minilzo)
links:linkto(minizip)
links:linkto(zlib)
end
function ObjLoading:use()
end
function ObjLoading:project()
References:reset()
local folder = ProjectFolder();
function ObjLoading:name()
return "ObjLoading"
end
project "ObjLoading"
function ObjLoading:project()
local folder = ProjectFolder()
local includes = Includes:create()
project(self:name())
targetdir(TargetDirectoryLib)
location "%{wks.location}/src/%{prj.name}"
kind "StaticLib"
@ -49,10 +49,10 @@ function ObjLoading:project()
}
}
self:include()
Crypto:include()
Utils:include()
minilzo:include()
minizip:include()
zlib:include()
self:include(includes)
Crypto:include(includes)
Utils:include(includes)
minilzo:include(includes)
minizip:include(includes)
zlib:include(includes)
end

View File

@ -1,37 +1,37 @@
ObjWriting = {}
function ObjWriting:include()
if References:include("ObjWriting") then
ObjCommon:include()
ZoneCommon:include()
function ObjWriting:include(includes)
if includes:handle(self:name()) then
ObjCommon:include(includes)
ZoneCommon:include(includes)
includedirs {
path.join(ProjectFolder(), "ObjWriting")
}
end
end
function ObjWriting:link()
if References:link("ObjWriting") then
Utils:link()
ObjCommon:link()
ZoneCommon:link()
minilzo:link()
minizip:link()
links {
"ObjWriting"
}
end
function ObjWriting:link(links)
links:add(self:name())
links:linkto(Utils)
links:linkto(ObjCommon)
links:linkto(ZoneCommon)
links:linkto(minilzo)
links:linkto(minizip)
end
function ObjWriting:use()
end
function ObjWriting:project()
References:reset()
local folder = ProjectFolder();
function ObjWriting:name()
return "ObjWriting"
end
project "ObjWriting"
function ObjWriting:project()
local folder = ProjectFolder()
local includes = Includes:create()
project(self:name())
targetdir(TargetDirectoryLib)
location "%{wks.location}/src/%{prj.name}"
kind "StaticLib"
@ -48,8 +48,8 @@ function ObjWriting:project()
}
}
self:include()
Utils:include()
minilzo:include()
minizip:include()
self:include(includes)
Utils:include(includes)
minilzo:include(includes)
minizip:include(includes)
end

View File

@ -1,26 +1,31 @@
Unlinker = {}
function Unlinker:include()
if References:include("Unlinker") then
function Unlinker:include(includes)
if includes:handle(self:name()) then
includedirs {
path.join(ProjectFolder(), "Unlinker")
}
end
end
function Unlinker:link()
function Unlinker:link(links)
end
function Unlinker:use()
dependson "Unlinker"
dependson(self:name())
end
function Unlinker:name()
return "Unlinker"
end
function Unlinker:project()
References:reset()
local folder = ProjectFolder();
local folder = ProjectFolder()
local includes = Includes:create()
local links = Links:create()
project "Unlinker"
project(self:name())
targetdir(TargetDirectoryBin)
location "%{wks.location}/src/%{prj.name}"
kind "ConsoleApp"
@ -31,14 +36,15 @@ function Unlinker:project()
path.join(folder, "Unlinker/**.cpp")
}
self:include()
Utils:include()
ZoneLoading:include()
ObjLoading:include()
ObjWriting:include()
self:include(includes)
Utils:include(includes)
ZoneLoading:include(includes)
ObjLoading:include(includes)
ObjWriting:include(includes)
Utils:link()
ZoneLoading:link()
ObjLoading:link()
ObjWriting:link()
links:linkto(Utils)
links:linkto(ZoneLoading)
links:linkto(ObjLoading)
links:linkto(ObjWriting)
links:linkall()
end

View File

@ -1,17 +1,15 @@
Utils = {}
function Utils:include()
if References:include(self:name()) then
function Utils:include(includes)
if includes:handle(self:name()) then
includedirs {
path.join(ProjectFolder(), "Utils")
}
end
end
function Utils:link()
if References:link(self:name()) then
links(self:name())
end
function Utils:link(links)
links:add(self:name())
end
function Utils:use()
@ -23,8 +21,8 @@ function Utils:name()
end
function Utils:project()
References:reset()
local folder = ProjectFolder();
local folder = ProjectFolder()
local includes = Includes:create()
project(self:name())
targetdir(TargetDirectoryLib)
@ -43,5 +41,5 @@ function Utils:project()
}
}
self:include()
self:include(includes)
end

View File

@ -145,8 +145,8 @@ function ZoneCode:allWriteFiles()
return result
end
function ZoneCode:include()
if References:include("ZoneCode") then
function ZoneCode:include(includes)
if includes:handle(self:name()) then
includedirs {
path.join(ProjectFolder(), "ZoneCode"),
"%{wks.location}/src/ZoneCode"
@ -154,19 +154,22 @@ function ZoneCode:include()
end
end
function ZoneCode:link()
function ZoneCode:link(links)
end
function ZoneCode:use()
dependson "ZoneCode"
dependson(self:name())
end
function ZoneCode:name()
return "ZoneCode"
end
function ZoneCode:project()
References:reset()
local folder = ProjectFolder();
local folder = ProjectFolder()
project "ZoneCode"
project(self:name())
targetdir(TargetDirectoryLib)
location "%{wks.location}/src/%{prj.name}"
kind "Utility"

View File

@ -1,18 +1,16 @@
ZoneCodeGenerator = {}
function ZoneCodeGenerator:include()
if References:include(self:name()) then
function ZoneCodeGenerator:include(includes)
if includes:handle(self:name()) then
includedirs {
path.join(ProjectFolder(), "ZoneCodeGenerator")
}
Utils:include(includes)
end
Utils:include()
end
function ZoneCodeGenerator:link()
if References:link(self:name()) then
links(self:name())
end
function ZoneCodeGenerator:link(links)
end
function ZoneCodeGenerator:use()
@ -24,8 +22,9 @@ function ZoneCodeGenerator:name()
end
function ZoneCodeGenerator:project()
References:reset()
local folder = ProjectFolder();
local folder = ProjectFolder()
local includes = Includes:create()
local links = Links:create()
project(self:name())
targetdir(TargetDirectoryBin)
@ -43,9 +42,10 @@ function ZoneCodeGenerator:project()
}
}
self:include()
ZoneCodeGeneratorLib:include()
self:include(includes)
ZoneCodeGeneratorLib:include(includes)
ZoneCodeGeneratorLib:link()
Utils:link()
links:linkto(Utils)
links:linkto(ZoneCodeGeneratorLib)
links:linkall()
end

View File

@ -1,19 +1,17 @@
ZoneCodeGeneratorLib = {}
function ZoneCodeGeneratorLib:include()
if References:include(self:name()) then
function ZoneCodeGeneratorLib:include(includes)
if includes:handle(self:name()) then
includedirs {
path.join(ProjectFolder(), "ZoneCodeGeneratorLib")
}
Utils:include(includes)
end
Utils:include()
end
function ZoneCodeGeneratorLib:link()
if References:link(self:name()) then
links(self:name())
Utils:link()
end
function ZoneCodeGeneratorLib:link(links)
links:add(self:name())
links:linkto(Utils)
end
function ZoneCodeGeneratorLib:use()
@ -25,8 +23,8 @@ function ZoneCodeGeneratorLib:name()
end
function ZoneCodeGeneratorLib:project()
References:reset()
local folder = ProjectFolder();
local folder = ProjectFolder()
local includes = Includes:create()
project(self:name())
targetdir(TargetDirectoryLib)
@ -39,7 +37,5 @@ function ZoneCodeGeneratorLib:project()
path.join(folder, "ZoneCodeGeneratorLib/**.cpp")
}
self:include()
Utils:link()
self:include(includes)
end

View File

@ -1,21 +1,19 @@
ZoneCommon = {}
function ZoneCommon:include()
if References:include(self:name()) then
Utils:include()
ObjCommon:include()
function ZoneCommon:include(includes)
if includes:handle(self:name()) then
Utils:include(includes)
ObjCommon:include(includes)
includedirs {
path.join(ProjectFolder(), "ZoneCommon")
}
end
end
function ZoneCommon:link()
if References:link(self:name()) then
links(self:name())
Utils:link()
ObjCommon:link()
end
function ZoneCommon:link(links)
links:add(self:name())
links:linkto(Utils)
links:linkto(ObjCommon)
end
function ZoneCommon:use()
@ -27,8 +25,8 @@ function ZoneCommon:name()
end
function ZoneCommon:project()
References:reset()
local folder = ProjectFolder();
local folder = ProjectFolder()
local includes = Includes:create()
project(self:name())
targetdir(TargetDirectoryLib)
@ -41,7 +39,5 @@ function ZoneCommon:project()
path.join(folder, "ZoneCommon/**.cpp")
}
self:include()
Utils:link()
self:include(includes)
end

View File

@ -1,35 +1,35 @@
ZoneLoading = {}
function ZoneLoading:include()
if References:include("ZoneLoading") then
ZoneCommon:include()
function ZoneLoading:include(includes)
if includes:handle(self:name()) then
ZoneCommon:include(includes)
includedirs {
path.join(ProjectFolder(), "ZoneLoading")
}
end
end
function ZoneLoading:link()
if References:link("ZoneLoading") then
Crypto:link()
Utils:link()
ZoneCommon:link()
zlib:link()
links {
"ZoneLoading"
}
end
function ZoneLoading:link(links)
links:add(self:name())
links:linkto(Crypto)
links:linkto(Utils)
links:linkto(ZoneCommon)
links:linkto(zlib)
end
function ZoneLoading:use()
end
function ZoneLoading:project()
References:reset()
local folder = ProjectFolder();
function ZoneLoading:name()
return "ZoneLoading"
end
project "ZoneLoading"
function ZoneLoading:project()
local folder = ProjectFolder()
local includes = Includes:create()
project(self:name())
targetdir(TargetDirectoryLib)
location "%{wks.location}/src/%{prj.name}"
kind "StaticLib"
@ -48,11 +48,11 @@ function ZoneLoading:project()
}
}
self:include()
Crypto:include()
Utils:include()
zlib:include()
ZoneCode:include()
self:include(includes)
Crypto:include(includes)
Utils:include(includes)
zlib:include(includes)
ZoneCode:include(includes)
ZoneCode:use()
end

View File

@ -1,35 +1,35 @@
ZoneWriting = {}
function ZoneWriting:include()
if References:include("ZoneWriting") then
ZoneCommon:include()
function ZoneWriting:include(includes)
if includes:handle(self:name()) then
ZoneCommon:include(includes)
includedirs {
path.join(ProjectFolder(), "ZoneWriting")
}
end
end
function ZoneWriting:link()
if References:link("ZoneWriting") then
Crypto:link()
Utils:link()
ZoneCommon:link()
zlib:link()
links {
"ZoneWriting"
}
end
function ZoneWriting:link(links)
links:add(self:name())
links:linkto(Crypto)
links:linkto(Utils)
links:linkto(ZoneCommon)
links:linkto(zlib)
end
function ZoneWriting:use()
end
function ZoneWriting:project()
References:reset()
local folder = ProjectFolder();
function ZoneWriting:name()
return "ZoneWriting"
end
project "ZoneWriting"
function ZoneWriting:project()
local folder = ProjectFolder()
local includes = Includes:create()
project(self:name())
targetdir(TargetDirectoryLib)
location "%{wks.location}/src/%{prj.name}"
kind "StaticLib"
@ -46,10 +46,10 @@ function ZoneWriting:project()
}
}
self:include()
Crypto:include()
Utils:include()
zlib:include()
self:include(includes)
Crypto:include(includes)
Utils:include(includes)
zlib:include(includes)
ZoneCode:use()
end