aboutsummaryrefslogtreecommitdiff
path: root/xmake.lua
Commit message (Collapse)AuthorAgeFilesLines
* structured compute basics (#714)Stefan Boberg2026-02-181-0/+12
| | | | | | | | | this change adds the `zencompute` component, which can be used to distribute work dispatched from UE using the DDB (Derived Data Build) APIs via zenserver this change also adds a distinct zenserver compute mode (`zenserver compute`) which is intended to be used for leaf compute nodes to exercise the compute functionality without directly involving UE, a `zen exec` subcommand is also added, which can be used to feed replays through the system all new functionality is considered *experimental* and disabled by default at this time, behind the `zencompute` option in xmake config
* bump sentry to 0.12.1 (#721)Stefan Boberg2026-02-121-4/+4
|
* zen hub (#574)Stefan Boberg2026-01-211-4/+5
| | | | | Initial implementation of zenserver "hub" mode. This is an experimental feature. zenserver can be started in hub mode by specifying `hub` as the first argument to zenserver
* automatic scrub on startup (#667)Dan Engelbrecht2025-11-271-0/+1
| | | | | - Improvement: Deeper validation of data when scrub is activated (cas/cache/project) - Improvement: Enabled more multi threading when running scrub operations - Improvement: Added means to force a scrub operation at startup with a new release using ZEN_DATA_FORCE_SCRUB_VERSION variable in xmake.lua
* sentry/asan configuration tweaks (#649)v5.7.10-pre0Stefan Boberg2025-11-131-3/+10
| | | | | * Automated more of the decisions around which options to set when using ASAN * Also disabled Sentry by default as it's a bit annoying to have it upload crashes during development. Sentry is still automatically enabled and integrated as part of the `xmake bundle` step however so released builds will still have it.
* switch back to openssl on Mac (#641)Stefan Boberg2025-11-101-7/+3
| | | | | | | * switch back to openssl for Mac (fixes cross-compilation config) * add openssl 3.6.0 and change make target to install_dev for quicker install * disable LTO on Mac to reduce build time on openssl3 * add mbedTLS 3.6.5 (but this is not used anywhere right now)
* switch to xmake for package management (#611)Stefan Boberg2025-11-071-31/+96
| | | | | | | | | | | | | | | | | | | | | | This change removes our dependency on vcpkg for package management, in favour of bringing some code in-tree in the `thirdparty` folder as well as using the xmake build-in package management feature. For the latter, all the package definitions are maintained in the zen repo itself, in the `repo` folder. It should now also be easier to build the project as it will no longer depend on having the right version of vcpkg installed, which has been a common problem for new people coming in to the codebase. Now you should only need xmake to build. * Bumps xmake requirement on github runners to 2.9.9 to resolve an issue where xmake on Windows invokes cmake with `v144` toolchain which does not exist * BLAKE3 is now in-tree at `thirdparty/blake3` * cpr is now in-tree at `thirdparty/cpr` * cxxopts is now in-tree at `thirdparty/cxxopts` * fmt is now in-tree at `thirdparty/fmt` * robin-map is now in-tree at `thirdparty/robin-map` * ryml is now in-tree at `thirdparty/ryml` * sol2 is now in-tree at `thirdparty/sol2` * spdlog is now in-tree at `thirdparty/spdlog` * utfcpp is now in-tree at `thirdparty/utfcpp` * xmake package repo definitions is in `repo` * implemented support for sanitizers. ASAN is supported on windows, TSAN, UBSAN, MSAN etc are supported on Linux/MacOS though I have not yet tested it extensively on MacOS * the zencore encryption implementation also now supports using mbedTLS which is used on MacOS, though for now we still use openssl on Linux * crashpad * bumps libcurl to 8.11.0 (from 8.8.0) which should address a rare build upload bug
* Various fixes to address issues flagged by gcc / non-UE toolchain build (#621)Stefan Boberg2025-11-011-1/+1
| | | | | | | | | | | | | | | | | | | | * gcc: avoid using memset on nontrivial struct * redundant `return std::move` * fixed various compilation issues flagged by gcc * fix issue in xmake.lua detecting whether we are building with the UE toolchain or not * add GCC ignore -Wundef (comment is inaccurate) * remove redundant std::move * don't catch exceptions by value * unreferenced variables * initialize "by the book" instead of memset * remove unused exception reference * add #include <cstring> to fix gcc build * explicitly poulate KeyValueMap by traversing input spans fixes gcc compilation * remove unreferenced variable * eliminate redundant `std::move` which gcc complains about * fix gcc compilation by including <cstring> * tag unreferenced variable to fix gcc compilation * fixes for various cases of naming members the same as their type
* move cpr in-tree (#605)Stefan Boberg2025-10-241-11/+9
| | | | | | * added cpr 1.10.5 in-tree to allow updates to vcpkg without breaking the build * added asio 1.29.0 in-tree to remove one more vcpkg dependency * bumped vcpkg to 2024.06.15 to address failure to build due to use of deprecated binaries in vcpkg (404 error: `https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-pkgconf-1~2.1.0-1-any.pkg.tar.zst` during build)
* in-tree spdlog (#602)Stefan Boberg2025-10-241-1/+0
| | | | move spdlog into the tree to remove dependency on vcpkg::spdlog, to allow diverging from the official version and evolve it to fit better with OTLP logging requirements
* add support for OTLP logging/tracing (#599)Stefan Boberg2025-10-221-8/+10
| | | | | | | | - adds `zentelemetry` project which houses new functionality for serializing logs and traces in OpenTelemetry Protocol format (OTLP) - moved existing stats functionality from `zencore` to `zentelemetry` - adds `TRefCounted<T>` for vtable-less refcounting - adds `MemoryArena` class which allows for linear allocation of memory from chunks - adds `protozero` which is used to encode OTLP protobuf messages
* ignore vla-cxx-extension warning on MacOS as well as on Linux (#593)Stefan Boberg2025-10-211-1/+7
| | | | | this triggers in more recent versions of the MacOS toolchain this also adds `--Wno-unknown-warning-option` for macosx until we can figure out how to detect toolchain version since the xcode version we use in CI fails on the `-Wno-vla-cxx-extension`
* added separate xmake.lua for thirdparty (#578)Stefan Boberg2025-10-151-0/+1
| | | | | Moves out third-party stuff from zencore Establishes new pattern for incorporating thirdparty code. The integration is cleaner, clearer and also surfaces the code in the generated .sln
* add zenremotestore lib (#540)Dan Engelbrecht2025-10-021-1/+3
|
* rpmalloc fixes (#499)Stefan Boberg2025-09-171-1/+2
| | | | | | | | * fixed rpmalloc build on Linux and Mac * updated rpmalloc from develop branch on the advice of mjansson * enabled rpmalloc on all platforms note that this does not change any behaviour unless `--malloc=rpmalloc` is passed in on the command line. The default is still `mimalloc`.
* Remove broken debug symbols from Oodle and re-enable symbol stripping (#444)Liam Mitchell2025-06-191-5/+0
|
* symbol gen hack-fix for linux (#442)v5.6.13-pre2Dan Engelbrecht2025-06-181-3/+2
|
* symbol gen hack-fix for linuxv5.6.13-pre3Dan Engelbrecht2025-06-181-0/+6
|
* remove explicit set_strip statementDan Engelbrecht2025-06-181-1/+0
|
* change set_strip config till none to generate full symbols on mac/linuxDan Engelbrecht2025-06-181-1/+1
|
* Temporarily disable stripping of symbols while investigating issues with ↵Liam Mitchell2025-06-131-0/+4
| | | | toolchain versions of objcopy
* Use llvm-objcopy provided by UE toolchainLiam Mitchell2025-06-131-0/+1
|
* Update to recent UE toolchain, and link statically against toolchain libc++ ↵Liam Mitchell2025-06-131-0/+10
| | | | and libc++abi
* remove xcode 12.1 workaround (#339)Dan Engelbrecht2025-04-021-6/+0
| | | | | * remove xcode 12.1 workaround * bump min macos version to 14.0
* reduced memory churn using fixed_xxx containers (#236)Stefan Boberg2025-03-061-0/+3
| | | | | | * Added EASTL to help with eliminating memory allocations * Applied EASTL to eliminate memory allocations, primarily by using `fixed_vector` et al to use stack allocations / inline struct allocations Reduces memory events in traces by close to a factor of 10 in test scenario (starting editor for project F)
* enable LTO / optimize for speed (#256)Stefan Boberg2024-12-041-1/+5
| | | | | * changed so release build uses lto and optimizes for speed on Mac and Windows * Linux does not currently support LTO due to toolchain limitations
* don't force openssl to version 3.0.8 (#252)Stefan Boberg2024-12-031-3/+1
| | | should fix build issues caused by curl pulling in a different version
* Insights-compatible memory tracking (#214)Stefan Boberg2024-11-251-0/+19
| | | | | | | | | | | | | This change introduces support for tracing of memory allocation activity. The code is ported from UE5, and Unreal Insights can be used to analyze the output. This is currently only fully supported on Windows, but will be extended to Mac/Linux in the near future. To activate full memory tracking, pass `--trace=memory` on the commandline alongside `--tracehost=<ip>` or `-tracefile=<path>`. For more control over how much detail is traced you can instead pass some combination of `callstack`, `memtag`, `memalloc` instead. In practice, `--trace=memory` is an alias for `--trace=callstack,memtag,memalloc`). For convenience we also support `--trace=memory_light` which omits call stacks. This change also introduces multiple memory allocators, which may be selected via command-line option `--malloc=<allocator>`: * `mimalloc` - mimalloc (default, same as before) * `rpmalloc` - rpmalloc is another high performance allocator for multithreaded applications which may be a better option than mimalloc (to be evaluated). Due to toolchain limitations this is currently only supported on Windows. * `stomp` - an allocator intended to be used during development/debugging to help track down memory issues such as use-after-free or out-of-bounds access. Currently only supported on Windows. * `ansi` - fallback to default system allocator
* Revert "remove temporary workaround involving _LIBCPP_DISABLE_AVAILABILITY ↵Dan Engelbrecht2024-10-101-0/+6
| | | | | (#191)" (#193) This reverts commit e809931618b443809e9740edb70a62d0cab01f87.
* remove temporary workaround involving _LIBCPP_DISABLE_AVAILABILITY (#191)Stefan Boberg2024-10-081-6/+0
| | | | | | * remove temporary workaround involving _LIBCPP_DISABLE_AVAILABILITY * temp disable signing on Mac this change should be revisited once we have resumed regular service wrt MacOS runners
* Separate UTF-8 flags by platform (#178)Dmytro Ivanov2024-10-011-2/+5
| | | | | | | Fixes the following warnings ``` 1>cl : Command line warning D9002: ignoring unknown option '-source-charset=utf-8' 1>cl : Command line warning D9002: ignoring unknown option '-execution-charset=utf-8' ```
* Fixing compilation errors with fmt v11 (#172)Dmytro Ivanov2024-09-271-0/+4
|
* cleaned up top level xmake (#125)Stefan Boberg2024-08-191-14/+12
|
* enable mimalloc on arm64 (#120)Stefan Boberg2024-08-161-10/+8
| | | * enable mimalloc on arm64
* enable sentry on arm64 (#119)Stefan Boberg2024-08-151-2/+3
| | | * enable sentry on arm64
* bump vcpkg and xmake to latest (#40)Dan Engelbrecht2024-04-241-1/+1
| | | - Improvement: Bumped xmake to 2.9.1 and vcpkg version to 2024.03.25
* add yaml serialization support (#3)Stefan Boberg2024-03-261-0/+2
| | | | | | | this change adds serialization of payloads as YAML, but not parsing. The implementation is somewhat based on the JSON path, and may be collapsed eventually as it is possible to serialize JSON format using the same code it also separates out the JSON serialization into a separate file for ease of maintenance any HTTP request response may be formatted as yaml by using a `.yaml` suffix or an `Accept: text/yaml` header
* clean up test linking (#4)Dan Engelbrecht2024-03-141-2/+4
| | | | | | | - Improvement: Add zenhttp-test and zenutil-test - Improvement: Moved cachepolicy test to cachepolicy.cpp - Improvement: Renamed cachestore tests from z$ to cachestore - Improvement: Moved test linking so test for a lib is linked by <lib>-test - Improvement: Removed HttpRequestParseRelativeUri in httpstructuredcache.cpp and use the one in cacherequests.h instead
* changed RPC recording to MPSC setup (#638)Stefan Boberg2024-01-311-0/+6
| | | fixes rare race condition when using RPC recording for long periods of time
* embed html frontend content as binary compiled data (#559)Dan Engelbrecht2023-11-231-0/+11
| | | | | | - Feature: Added xmake task `updatefrontend` which updates the zip file containing the frontend html (`/src/zenserver/frontend/html.zip`) - Improvement: The frontend html content is no longer appended at the end of the executable which prevented signing, instead it is compiled in from the `/src/zenserver/frontend/html.zip` archive - Improvement: MacOS now does ad-hoc code signing by default when issuing `xmake bundle`, signing with proper cert is done on CI builds
* use dynamic port assignment for tests (#545)Stefan Boberg2023-11-171-0/+7
| | | this change replaces hard-coded port numbers in tests with dynamically assigned ports, to avoid potential issues around socket lifetimes and re-use policies
* schema bump (#544)Dan Engelbrecht2023-11-151-1/+1
|
* implemented openssl-free encryption for Windows (#520)Stefan Boberg2023-11-081-1/+3
| | | trims 40% off the (Windows) executable size
* removed zstd references (#521)Stefan Boberg2023-11-081-2/+1
|
* factored out some compiler definitions etc into zenbase (#517)Stefan Boberg2023-11-071-0/+1
| | | | | this is a header-only library which mostly contains definitions to support different platforms and compilers. It is part of the zen codebase but is intended to be consumable separately to zenbase etc to support standalone transport plug-ins and similar.
* bump xmake CI version to 2.8.2 (#514)Dan Engelbrecht2023-11-071-0/+1
| | | | * bump xmake CI version to 2.8.2 * show test times in log
* spdlog implementation hiding (#498)Stefan Boberg2023-11-061-3/+2
| | | | | | | | | this change aims to hide logging internals from client code, in order to make it easier to extend and take more control over the logging process in the future. As a bonus side effect, the generated code is much tighter (net delta around 2.5% on the resulting executable which includes lots of thirdparty code) and should take less time to compile and link. Client usage via macros is pretty much unchanged. The main exposure client code had to spdlog internals before was the use of custom loggers per subsystem, where it would be common to have `spdlog::logger` references to keep a reference to a logger within a class. This is now replaced by `zen::LoggerRef` which currently simply encapsulates an actual `spdlog::logger` instance, but this is intended to be an implementation detail which will change in the future. The way the change works is that we now handle any formatting of log messages in the zencore logging subsystem instead of relying on `spdlog` to manage this. We use the `fmt` library to do the formatting which means the client usage is identical to using `spdlog`. The formatted message is then forwarded onto any sinks etc which are still implememted via `spdlog`.
* set up arch properly when running tests (mac) (#505)Stefan Boberg2023-10-281-0/+2
|
* statsd metrics reporting (#496)Stefan Boberg2023-10-251-0/+1
| | | | | added support for reporting metrics via statsd style UDP messaging, which is supported by many monitoring solution providers this change adds reporting only of three cache related metrics (hit/miss/put) but this should be extended to include more metrics after additional evaluation
* restructured transports SDK for easier UE integration (#470)Stefan Boberg2023-10-121-5/+1
|