Files
DpsManagerServer/xmake.lua
2026-04-15 15:19:28 +08:00

104 lines
3.3 KiB
Lua

set_project("dps_manager_server")
set_version("0.1.0")
set_languages("c11", "cxx17")
set_warnings("all", "error")
add_rules("mode.debug", "mode.release")
add_cxxflags("-Wno-deprecated-declarations", {tools = {"gcc", "clang"}})
add_requires("openssl3", "zlib", "mariadb-connector-c")
if is_plat("linux") then
add_syslinks("pthread")
elseif is_plat("mingw", "windows") then
add_defines("DPS_WINDOWS")
add_syslinks("ws2_32")
end
add_defines("OPENSSL_SUPPRESS_DEPRECATED")
target("dps_manager_server")
set_kind("binary")
add_includedirs("include")
add_includedirs("third_party/libbcrypt/crypt_blowfish")
add_packages("openssl3", "zlib", "mariadb-connector-c")
add_files("src/*.cpp")
add_files(
"third_party/libbcrypt/crypt_blowfish/wrapper.c",
"third_party/libbcrypt/crypt_blowfish/crypt_blowfish.c",
"third_party/libbcrypt/crypt_blowfish/crypt_gensalt.c",
{warnings = "none"}
)
add_headerfiles("include/(dps/*.hpp)")
after_build(function (target)
local project_config_dir = path.join(os.projectdir(), "config")
local output_config_dir = path.join(target:targetdir(), "config")
local config_files = {
"server.conf",
"server.conf.example",
"server.windows.conf"
}
os.mkdir(output_config_dir)
for _, config_file in ipairs(config_files) do
local source = path.join(project_config_dir, config_file)
if os.isfile(source) then
os.cp(source, path.join(output_config_dir, config_file))
end
end
if not target:is_plat("windows") then
return
end
local pkg = target:pkg("mariadb-connector-c")
if not pkg then
return
end
local plugin_dir = path.join(pkg:installdir(), "lib", "mariadb", "plugin")
if os.isdir(plugin_dir) then
local output_dir = path.join(target:targetdir(), "mariadb-plugin")
if os.isfile(output_dir) then
os.rm(output_dir)
end
os.mkdir(output_dir)
os.cp(path.join(plugin_dir, "*.dll"), output_dir)
end
end)
target("json_smoke_test")
set_kind("binary")
set_default(false)
add_includedirs("include")
add_files("tests/json_smoke_test.cpp", "src/json.cpp")
target("crypto_smoke_test")
set_kind("binary")
set_default(false)
add_includedirs("include")
add_includedirs("third_party/libbcrypt/crypt_blowfish")
add_packages("openssl3", "zlib", "mariadb-connector-c")
add_files(
"tests/crypto_smoke_test.cpp",
"src/app.cpp",
"src/config.cpp",
"src/fs_utils.cpp",
"src/http.cpp",
"src/json.cpp",
"src/labels.cpp",
"third_party/libbcrypt/crypt_blowfish/wrapper.c",
"third_party/libbcrypt/crypt_blowfish/crypt_blowfish.c",
"third_party/libbcrypt/crypt_blowfish/crypt_gensalt.c",
{warnings = "none"}
)
target("fs_utils_smoke_test")
set_kind("binary")
set_default(false)
add_includedirs("include")
add_files("tests/fs_utils_smoke_test.cpp", "src/fs_utils.cpp")
target("labels_smoke_test")
set_kind("binary")
set_default(false)
add_includedirs("include")
add_files("tests/labels_smoke_test.cpp", "src/labels.cpp")