Files
Simple-Protocol-Lib/xmake.lua
Persson-dev 59bedd6482
All checks were successful
Linux arm64 / Build (push) Successful in 14s
read/write for basic types
2025-06-26 16:02:18 +02:00

115 lines
2.5 KiB
Lua

add_rules("mode.debug", "mode.release")
add_requires("boost_pfr")
set_warnings("all")
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"}
}
}
-- 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_packages("boost_pfr", {public = true})
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")
set_rundir(".")
add_deps("SimpleProtocol")
add_tests("compile_and_run")
end