-- Copyright Epic Games, Inc. All Rights Reserved. target('zencore') set_kind("static") set_group("libs") add_options("zentrace", "zenmimalloc", "zenrpmalloc") add_headerfiles("**.h") add_includedirs("include", {public=true}) add_configfiles("include/zencore/config.h.in") on_load(function (target) local version = io.readfile("VERSION.txt") version = string.gsub(version,"%-pre.*", "") target:set("version", version:trim(), {build = "%Y%m%d%H%M"}) end) set_configdir("include/zencore") add_files("**.cpp") add_files("trace.cpp", {unity_ignored = true }) if has_config("zenrpmalloc") then add_deps("rpmalloc") end if has_config("zenmimalloc") then add_packages("mimalloc") end add_deps("zenbase") add_deps("spdlog") add_deps("utfcpp") add_deps("oodle") add_deps("blake3") add_deps("ue-trace") add_deps("timesinceprocessstart") add_deps("doctest") add_deps("fmt") add_packages("json11") if is_plat("linux", "macosx") then add_packages("openssl3") -- required for crypto end add_packages( "gsl-lite", "eastl", "lz4", "xxhash", {public=true} ) if has_config("zensentry") then add_packages("sentry-native") if is_os("windows") then add_cxxflags("/wd4996") else add_cxxflags("-Wno-deprecated-declarations") -- temporary workaround for sentry-native deprecation warnings end if is_plat("windows") then add_links("dbghelp", "winhttp", "version") -- for Sentry end if is_plat("linux") then -- As sentry_native uses symbols from breakpad_client, the latter must -- be specified after the former with GCC-like toolchains. xmake however -- is unaware of this and simply globs files from vcpkg's output. The -- line below forces breakpad_client to be to the right of sentry_native -- add_syslinks("breakpad_client") end if is_plat("macosx") then add_syslinks("bsm") end end if is_plat("linux") then add_syslinks("rt") end if is_plat("windows") then add_syslinks("Advapi32") add_syslinks("Dbghelp") add_syslinks("Shell32") add_syslinks("User32") add_syslinks("crypt32") add_syslinks("bcrypt") add_syslinks("ws2_32") end