114 lines
2.6 KiB
Lua
114 lines
2.6 KiB
Lua
add_rules("mode.debug", "mode.release")
|
|
|
|
set_languages("c++17")
|
|
|
|
local modules = {
|
|
Compression = {
|
|
Option = "zlib",
|
|
Deps = {"zlib"},
|
|
Includes = {"include/(sp/extensions/Compress.h)"},
|
|
Sources = {"src/sp/extensions/Compress.cpp"}
|
|
},
|
|
TcpSocket = {
|
|
Option = "tcp",
|
|
Deps = {},
|
|
Includes = {"include/(sp/extensions/Tcp.h)", "include/(sp/extensions/tcp/*.h)"},
|
|
Sources = {"src/sp/extensions/Tcp*.cpp"}
|
|
},
|
|
MbedTls = {
|
|
Option = "tls",
|
|
Deps = {"mbedtls"},
|
|
Includes = {"include/(sp/extensions/Ssl.h)", "include/(sp/extensions/Ssl/*.h)"},
|
|
Sources = {"src/sp/extensions/Ssl*.cpp"}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
-- Map modules to options
|
|
for name, module in table.orderpairs(modules) do
|
|
if module.Option then
|
|
option(module.Option, { description = "Enables the " .. name .. " module", default = true, category = "Modules" })
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
-- Add modules requirements
|
|
for name, module in table.orderpairs(modules) do
|
|
if module.Deps then
|
|
add_requires(module.Deps)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
-- Add modules targets
|
|
for name, module in table.orderpairs(modules) do
|
|
if module.Deps and has_config(module.Option) then
|
|
target("SimpleProtocol-" .. name)
|
|
add_includedirs("include")
|
|
for _, include in table.orderpairs(module.Includes) do
|
|
add_headerfiles(include)
|
|
end
|
|
for _, source in table.orderpairs(module.Sources) do
|
|
add_files(source)
|
|
end
|
|
for _, package in table.orderpairs(module.Deps) do
|
|
add_packages(package)
|
|
end
|
|
set_group("Library")
|
|
set_kind("$(kind)")
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
target("SimpleProtocol")
|
|
add_includedirs("include")
|
|
add_files("src/sp/**.cpp")
|
|
set_group("Library")
|
|
set_kind("$(kind)")
|
|
|
|
add_headerfiles("include/(sp/**.h)", "include/(sp/**.inl)")
|
|
|
|
-- adding extensions
|
|
for name, module in table.orderpairs(modules) do
|
|
if module.Deps and has_config(module.Option) then
|
|
add_deps("SimpleProtocol-" .. name)
|
|
end
|
|
end
|
|
|
|
-- we don't want extensions
|
|
remove_files("src/sp/extensions/**.cpp")
|
|
remove_headerfiles("include/(sp/extension/**.h)")
|
|
|
|
-- we need this for endian functions
|
|
if is_os("windows") then
|
|
add_links("ws2_32")
|
|
end
|
|
|
|
|
|
|
|
-- Tests
|
|
for _, file in ipairs(os.files("test/**.cpp")) do
|
|
local name = path.basename(file)
|
|
target(name)
|
|
set_kind("binary")
|
|
|
|
add_files(file)
|
|
add_includedirs("include")
|
|
|
|
add_deps("SimpleProtocol")
|
|
|
|
add_tests("compile_and_run")
|
|
end
|