F4MP/codigos originales/tiltedcode/xmake.lua

162 lines
5.2 KiB
Lua
Raw Normal View History

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." },
}
}