mirror of
https://github.com/Jous99/F4MP.git
synced 2026-01-12 18:20:54 +01:00
161 lines
5.2 KiB
Lua
161 lines
5.2 KiB
Lua
set_xmakever("2.8.5")
|
|
|
|
-- If newer version of xmake, remove ccache until it actually works
|
|
if set_policy ~= nil then
|
|
set_policy("build.ccache", false)
|
|
end
|
|
|
|
-- c code will use c99,
|
|
set_languages("c99", "cxx20")
|
|
|
|
if is_plat("windows") then
|
|
add_cxflags("/bigobj")
|
|
add_syslinks("kernel32")
|
|
set_arch("x64")
|
|
end
|
|
|
|
if is_plat("linux") then
|
|
add_cxflags("-fPIC")
|
|
end
|
|
|
|
set_warnings("all")
|
|
add_vectorexts("sse", "sse2", "sse3", "ssse3")
|
|
add_vectorexts("neon")
|
|
|
|
-- build configurations
|
|
add_rules("mode.debug", "mode.releasedbg", "mode.release")
|
|
|
|
if has_config("unitybuild") then
|
|
add_rules("c.unity_build")
|
|
add_rules("c++.unity_build", {batchsize = 12})
|
|
end
|
|
|
|
-- direct dependencies version pinning
|
|
add_requires(
|
|
"entt v3.10.0",
|
|
"recastnavigation v1.6.0",
|
|
"tiltedcore v0.2.7",
|
|
"cryptopp 8.9.0",
|
|
"spdlog v1.13.0",
|
|
"cpp-httplib 0.14.0",
|
|
"gtest v1.14.0",
|
|
"mem 1.0.0",
|
|
"glm 0.9.9+8",
|
|
"sentry-native 0.7.1",
|
|
"zlib v1.3.1"
|
|
)
|
|
if is_plat("windows") then
|
|
add_requires(
|
|
"discord 3.2.1",
|
|
"imgui v1.89.7"
|
|
)
|
|
end
|
|
|
|
-- dependencies' dependencies version pinning
|
|
add_requireconfs("*.mimalloc", { version = "2.2.4", override = true })
|
|
add_requireconfs("*.cmake", { version = "3.30.2", override = true })
|
|
add_requireconfs("*.openssl", { version = "1.1.1-w", override = true })
|
|
add_requireconfs("*.zlib", { version = "v1.3.1", override = true })
|
|
if is_plat("linux") then
|
|
add_requireconfs("*.libcurl", { version = "8.7.1", override = true })
|
|
end
|
|
|
|
add_requireconfs("cpp-httplib", {configs = {ssl = true}})
|
|
add_requireconfs("sentry-native", { configs = { backend = "crashpad" } })
|
|
--[[
|
|
add_requireconfs("magnum", { configs = { sdl2 = true }})
|
|
add_requireconfs("magnum-integration", { configs = { imgui = true }})
|
|
add_requireconfs("magnum-integration.magnum", { configs = { sdl2 = true }})
|
|
add_requireconfs("magnum-integration.imgui", { override = true })
|
|
--]]
|
|
|
|
before_build(function (target)
|
|
import("modules.version")
|
|
local branch, commitHash = version()
|
|
bool_to_number={ [true]=1, [false]=0 }
|
|
local contents = string.format([[
|
|
#pragma once
|
|
#define IS_MASTER %d
|
|
#define IS_BRANCH_BETA %d
|
|
#define IS_BRANCH_PREREL %d
|
|
]],
|
|
bool_to_number[branch == "master"],
|
|
bool_to_number[branch == "bluedove"],
|
|
bool_to_number[branch == "prerel"])
|
|
|
|
-- fix always-compiles problem by updating the file only if content has changed.
|
|
local filepath = "build/BranchInfo.h"
|
|
local old_content = nil
|
|
if os.exists(filepath) then
|
|
old_content = io.readfile(filepath)
|
|
end
|
|
if old_content ~= contents then
|
|
print("Updating file:", filepath)
|
|
io.writefile(filepath, contents)
|
|
end
|
|
end)
|
|
|
|
if is_mode("debug") then
|
|
add_defines("DEBUG")
|
|
end
|
|
|
|
if is_plat("windows") then
|
|
add_defines("NOMINMAX")
|
|
end
|
|
|
|
-- add projects
|
|
includes("Libraries")
|
|
includes("Code")
|
|
|
|
task("upload-symbols")
|
|
on_run(function ()
|
|
import("core.base.option")
|
|
|
|
local key = option.get('key')
|
|
local linux = option.get('linux')
|
|
|
|
if key ~= nil then
|
|
import("net.http")
|
|
import("core.project.config")
|
|
|
|
config.load()
|
|
|
|
local sentrybin = path.join(os.projectdir(), "build", "sentry-cli.exe")
|
|
if not os.exists(sentrybin) then
|
|
http.download("https://github.com/getsentry/sentry-cli/releases/download/2.0.2/sentry-cli-Windows-x86_64.exe", sentrybin)
|
|
end
|
|
|
|
if linux then
|
|
-- linux server bins
|
|
local file_path = path.join(os.projectdir(), "build", "linux", "x64", "SkyrimTogetherServer.debug")
|
|
os.execv(sentrybin, {"--auth-token", key, "upload-dif", "-o", "together-team", "-p", "st-server", file_path})
|
|
|
|
file_path = path.join(os.projectdir(), "build", "linux", "x64", "libSTServer.debug")
|
|
os.execv(sentrybin, {"--auth-token", key, "upload-dif", "-o", "together-team", "-p", "st-server", file_path})
|
|
end
|
|
|
|
-- windows bins
|
|
if not linux then
|
|
local file_path = path.join(os.projectdir(), "build", config.get("plat"), config.get("arch"), config.get("mode"), "SkyrimTogether.pdb")
|
|
os.execv(sentrybin, {"--auth-token", key, "upload-dif", "-o", "together-team", "-p", "st-reborn", file_path})
|
|
|
|
file_path = path.join(os.projectdir(), "build", config.get("plat"), config.get("arch"), config.get("mode"), "SkyrimTogetherServer.pdb")
|
|
os.execv(sentrybin, {"--auth-token", key, "upload-dif", "-o", "together-team", "-p", "st-server", file_path})
|
|
|
|
file_path = path.join(os.projectdir(), "build", config.get("plat"), config.get("arch"), config.get("mode"), "STServer.pdb")
|
|
os.execv(sentrybin, {"--auth-token", key, "upload-dif", "-o", "together-team", "-p", "st-server", file_path})
|
|
end
|
|
|
|
else
|
|
print("An API key is required to proceed!")
|
|
end
|
|
end)
|
|
|
|
set_menu {
|
|
usage = "xmake upload-symbols",
|
|
description = "Upload symbols to sentry",
|
|
options = {
|
|
{'k', "key", "kv", nil, "The API key to use." },
|
|
{'l', "linux", "v", false, "Upload linux symbols that were manually copied." },
|
|
}
|
|
}
|