From a12fdee02f8b682d7c8e6fa2355eb7ee68e3b589 Mon Sep 17 00:00:00 2001 From: "Herman S." <429230+has207@users.noreply.github.com> Date: Wed, 15 Apr 2026 11:36:26 +0900 Subject: [PATCH] [Build] Convert to cmake --- .github/workflows/CI.yml | 18 +- .gitignore | 6 + .gitmodules | 12 - CMakeLists.txt | 326 +++++ CMakePresets.json | 60 + cmake/XeniaHelpers.cmake | 242 ++++ premake5.lua | 558 -------- src/xenia/CMakeLists.txt | 46 + src/xenia/app/CMakeLists.txt | 172 +++ src/xenia/app/discord/CMakeLists.txt | 9 + src/xenia/app/discord/premake5.lua | 18 - src/xenia/app/emulator_window.cc | 4 +- src/xenia/app/premake5.lua | 211 --- src/xenia/apu/CMakeLists.txt | 13 + src/xenia/apu/alsa/CMakeLists.txt | 7 + src/xenia/apu/alsa/premake5.lua | 18 - src/xenia/apu/nop/CMakeLists.txt | 4 + src/xenia/apu/nop/premake5.lua | 13 - src/xenia/apu/premake5.lua | 26 - src/xenia/apu/sdl/CMakeLists.txt | 4 + src/xenia/apu/sdl/premake5.lua | 16 - src/xenia/apu/xaudio2/CMakeLists.txt | 4 + src/xenia/apu/xaudio2/premake5.lua | 13 - src/xenia/base/CMakeLists.txt | 18 + src/xenia/base/main_win.cc | 4 +- src/xenia/base/premake5.lua | 22 - src/xenia/base/testing/CMakeLists.txt | 3 + src/xenia/base/testing/premake5.lua | 12 - src/xenia/cpu/CMakeLists.txt | 17 + src/xenia/cpu/backend/a64/premake5.lua | 47 - src/xenia/cpu/backend/x64/CMakeLists.txt | 18 + src/xenia/cpu/backend/x64/premake5.lua | 30 - src/xenia/cpu/ppc/testing/CMakeLists.txt | 41 + src/xenia/cpu/ppc/testing/premake5.lua | 97 -- src/xenia/cpu/premake5.lua | 27 - src/xenia/cpu/testing/CMakeLists.txt | 13 + src/xenia/cpu/testing/premake5.lua | 32 - src/xenia/debug/gdb/CMakeLists.txt | 10 + src/xenia/debug/gdb/premake5.lua | 25 - src/xenia/debug/ui/CMakeLists.txt | 4 + src/xenia/debug/ui/premake5.lua | 15 - src/xenia/gpu/CMakeLists.txt | 37 + src/xenia/gpu/d3d12/CMakeLists.txt | 40 + src/xenia/gpu/d3d12/premake5.lua | 130 -- src/xenia/gpu/metal/premake5.lua | 326 ----- src/xenia/gpu/null/CMakeLists.txt | 7 + src/xenia/gpu/null/premake5.lua | 19 - src/xenia/gpu/premake5.lua | 74 - src/xenia/gpu/trace_writer.cc | 3 +- src/xenia/gpu/vulkan/CMakeLists.txt | 67 + src/xenia/gpu/vulkan/premake5.lua | 169 --- src/xenia/helper/sdl/CMakeLists.txt | 4 + src/xenia/helper/sdl/premake5.lua | 13 - src/xenia/hid/CMakeLists.txt | 11 + src/xenia/hid/nop/CMakeLists.txt | 4 + src/xenia/hid/nop/premake5.lua | 13 - src/xenia/hid/premake5.lua | 16 - src/xenia/hid/sdl/CMakeLists.txt | 4 + src/xenia/hid/sdl/premake5.lua | 16 - src/xenia/hid/skylander/CMakeLists.txt | 14 + src/xenia/hid/skylander/premake5.lua | 23 - src/xenia/hid/winkey/CMakeLists.txt | 4 + src/xenia/hid/winkey/premake5.lua | 14 - src/xenia/hid/xinput/CMakeLists.txt | 4 + src/xenia/hid/xinput/premake5.lua | 13 - src/xenia/kernel/CMakeLists.txt | 24 + src/xenia/kernel/premake5.lua | 57 - src/xenia/kernel/testing/premake5.lua | 10 - src/xenia/patcher/CMakeLists.txt | 4 + src/xenia/patcher/premake5.lua | 12 - src/xenia/premake5.lua | 16 - src/xenia/ui/CMakeLists.txt | 37 + src/xenia/ui/d3d12/CMakeLists.txt | 23 + src/xenia/ui/d3d12/premake5.lua | 62 - src/xenia/ui/premake5.lua | 38 - src/xenia/ui/vulkan/CMakeLists.txt | 47 + src/xenia/ui/vulkan/premake5.lua | 97 -- src/xenia/vfs/CMakeLists.txt | 48 + src/xenia/vfs/premake5.lua | 61 - src/xenia/vfs/testing/CMakeLists.txt | 3 + src/xenia/vfs/testing/premake5.lua | 8 - third_party/CMakeLists.txt | 687 ++++++++++ third_party/SDL2-static.lua | 360 ----- third_party/SDL2.lua | 94 -- third_party/aes_128.lua | 11 - third_party/asio.lua | 26 - third_party/capstone.lua | 73 - third_party/cxxopts.lua | 14 - third_party/discord-rpc.lua | 65 - third_party/dxbc.lua | 11 - .../ffmpeg-xenia/libavcodec/premake5.lua | 156 --- .../ffmpeg-xenia/libavformat/premake5.lua | 61 - .../ffmpeg-xenia/libavutil/premake5.lua | 225 --- third_party/ffmpeg-xenia/premake5.lua | 42 - third_party/fmt.lua | 13 - third_party/glslang-spirv.lua | 20 - third_party/imgui.lua | 19 - third_party/libusb.lua | 47 - third_party/metal-cpp.lua | 21 - third_party/metal-shader-converter.lua | 30 - third_party/miniaudio.lua | 14 - third_party/mspack.lua | 19 - third_party/premake-androidndk | 1 - third_party/premake-cmake | 1 - third_party/premake-core | 1 - third_party/premake-export-compile-commands | 1 - third_party/pugixml.lua | 8 - third_party/snappy.lua | 25 - third_party/tomlplusplus.lua | 13 - third_party/xxhash.lua | 11 - third_party/zarchive.lua | 21 - third_party/zlib-ng.lua | 68 - third_party/zstd.lua | 19 - tools/build/bin/premake5.exe | Bin 1318400 -> 0 bytes tools/build/compile_shader_dxbc.py | 121 ++ tools/build/compile_shader_spirv.py | 171 +++ tools/build/premake.py | 275 ---- tools/build/premake5.lua | 10 - tools/build/scripts/apu_deps.lua | 11 - tools/build/scripts/build_paths.lua | 16 - tools/build/scripts/force_compile_as_c.lua | 32 - tools/build/scripts/force_compile_as_cc.lua | 32 - tools/build/scripts/pkg_config.lua | 45 - tools/build/scripts/platform_files.lua | 71 - tools/build/scripts/single_library.lua | 19 - tools/build/scripts/test_suite.lua | 99 -- tools/build/scripts/util.lua | 50 - xenia-build.py | 1204 ++--------------- 128 files changed, 2514 insertions(+), 5626 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 CMakePresets.json create mode 100644 cmake/XeniaHelpers.cmake delete mode 100644 premake5.lua create mode 100644 src/xenia/CMakeLists.txt create mode 100644 src/xenia/app/CMakeLists.txt create mode 100644 src/xenia/app/discord/CMakeLists.txt delete mode 100644 src/xenia/app/discord/premake5.lua delete mode 100644 src/xenia/app/premake5.lua create mode 100644 src/xenia/apu/CMakeLists.txt create mode 100644 src/xenia/apu/alsa/CMakeLists.txt delete mode 100644 src/xenia/apu/alsa/premake5.lua create mode 100644 src/xenia/apu/nop/CMakeLists.txt delete mode 100644 src/xenia/apu/nop/premake5.lua delete mode 100644 src/xenia/apu/premake5.lua create mode 100644 src/xenia/apu/sdl/CMakeLists.txt delete mode 100644 src/xenia/apu/sdl/premake5.lua create mode 100644 src/xenia/apu/xaudio2/CMakeLists.txt delete mode 100644 src/xenia/apu/xaudio2/premake5.lua create mode 100644 src/xenia/base/CMakeLists.txt delete mode 100644 src/xenia/base/premake5.lua create mode 100644 src/xenia/base/testing/CMakeLists.txt delete mode 100644 src/xenia/base/testing/premake5.lua create mode 100644 src/xenia/cpu/CMakeLists.txt delete mode 100644 src/xenia/cpu/backend/a64/premake5.lua create mode 100644 src/xenia/cpu/backend/x64/CMakeLists.txt delete mode 100644 src/xenia/cpu/backend/x64/premake5.lua create mode 100644 src/xenia/cpu/ppc/testing/CMakeLists.txt delete mode 100644 src/xenia/cpu/ppc/testing/premake5.lua delete mode 100644 src/xenia/cpu/premake5.lua create mode 100644 src/xenia/cpu/testing/CMakeLists.txt delete mode 100644 src/xenia/cpu/testing/premake5.lua create mode 100644 src/xenia/debug/gdb/CMakeLists.txt delete mode 100644 src/xenia/debug/gdb/premake5.lua create mode 100644 src/xenia/debug/ui/CMakeLists.txt delete mode 100644 src/xenia/debug/ui/premake5.lua create mode 100644 src/xenia/gpu/CMakeLists.txt create mode 100644 src/xenia/gpu/d3d12/CMakeLists.txt delete mode 100644 src/xenia/gpu/d3d12/premake5.lua delete mode 100644 src/xenia/gpu/metal/premake5.lua create mode 100644 src/xenia/gpu/null/CMakeLists.txt delete mode 100644 src/xenia/gpu/null/premake5.lua delete mode 100644 src/xenia/gpu/premake5.lua create mode 100644 src/xenia/gpu/vulkan/CMakeLists.txt delete mode 100644 src/xenia/gpu/vulkan/premake5.lua create mode 100644 src/xenia/helper/sdl/CMakeLists.txt delete mode 100644 src/xenia/helper/sdl/premake5.lua create mode 100644 src/xenia/hid/CMakeLists.txt create mode 100644 src/xenia/hid/nop/CMakeLists.txt delete mode 100644 src/xenia/hid/nop/premake5.lua delete mode 100644 src/xenia/hid/premake5.lua create mode 100644 src/xenia/hid/sdl/CMakeLists.txt delete mode 100644 src/xenia/hid/sdl/premake5.lua create mode 100644 src/xenia/hid/skylander/CMakeLists.txt delete mode 100644 src/xenia/hid/skylander/premake5.lua create mode 100644 src/xenia/hid/winkey/CMakeLists.txt delete mode 100644 src/xenia/hid/winkey/premake5.lua create mode 100644 src/xenia/hid/xinput/CMakeLists.txt delete mode 100644 src/xenia/hid/xinput/premake5.lua create mode 100644 src/xenia/kernel/CMakeLists.txt delete mode 100644 src/xenia/kernel/premake5.lua delete mode 100644 src/xenia/kernel/testing/premake5.lua create mode 100644 src/xenia/patcher/CMakeLists.txt delete mode 100644 src/xenia/patcher/premake5.lua delete mode 100644 src/xenia/premake5.lua create mode 100644 src/xenia/ui/CMakeLists.txt create mode 100644 src/xenia/ui/d3d12/CMakeLists.txt delete mode 100644 src/xenia/ui/d3d12/premake5.lua delete mode 100644 src/xenia/ui/premake5.lua create mode 100644 src/xenia/ui/vulkan/CMakeLists.txt delete mode 100644 src/xenia/ui/vulkan/premake5.lua create mode 100644 src/xenia/vfs/CMakeLists.txt delete mode 100644 src/xenia/vfs/premake5.lua create mode 100644 src/xenia/vfs/testing/CMakeLists.txt delete mode 100644 src/xenia/vfs/testing/premake5.lua create mode 100644 third_party/CMakeLists.txt delete mode 100644 third_party/SDL2-static.lua delete mode 100644 third_party/SDL2.lua delete mode 100644 third_party/aes_128.lua delete mode 100644 third_party/asio.lua delete mode 100644 third_party/capstone.lua delete mode 100644 third_party/cxxopts.lua delete mode 100644 third_party/discord-rpc.lua delete mode 100644 third_party/dxbc.lua delete mode 100644 third_party/ffmpeg-xenia/libavcodec/premake5.lua delete mode 100644 third_party/ffmpeg-xenia/libavformat/premake5.lua delete mode 100644 third_party/ffmpeg-xenia/libavutil/premake5.lua delete mode 100644 third_party/ffmpeg-xenia/premake5.lua delete mode 100644 third_party/fmt.lua delete mode 100644 third_party/glslang-spirv.lua delete mode 100644 third_party/imgui.lua delete mode 100644 third_party/libusb.lua delete mode 100644 third_party/metal-cpp.lua delete mode 100644 third_party/metal-shader-converter.lua delete mode 100644 third_party/miniaudio.lua delete mode 100644 third_party/mspack.lua delete mode 160000 third_party/premake-androidndk delete mode 160000 third_party/premake-cmake delete mode 160000 third_party/premake-core delete mode 160000 third_party/premake-export-compile-commands delete mode 100644 third_party/pugixml.lua delete mode 100644 third_party/snappy.lua delete mode 100644 third_party/tomlplusplus.lua delete mode 100644 third_party/xxhash.lua delete mode 100644 third_party/zarchive.lua delete mode 100644 third_party/zlib-ng.lua delete mode 100644 third_party/zstd.lua delete mode 100644 tools/build/bin/premake5.exe create mode 100644 tools/build/compile_shader_dxbc.py create mode 100644 tools/build/compile_shader_spirv.py delete mode 100755 tools/build/premake.py delete mode 100644 tools/build/premake5.lua delete mode 100644 tools/build/scripts/apu_deps.lua delete mode 100644 tools/build/scripts/build_paths.lua delete mode 100644 tools/build/scripts/force_compile_as_c.lua delete mode 100644 tools/build/scripts/force_compile_as_cc.lua delete mode 100644 tools/build/scripts/pkg_config.lua delete mode 100644 tools/build/scripts/platform_files.lua delete mode 100644 tools/build/scripts/single_library.lua delete mode 100644 tools/build/scripts/test_suite.lua delete mode 100644 tools/build/scripts/util.lua diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 8a55b3497..53f49412d 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -40,13 +40,6 @@ jobs: with: fetch-depth: 0 - - name: Cache premake5 - id: cache-premake5 - uses: actions/cache@main - with: - path: tools/build/bin/premake5 - key: ${{ runner.os }}-premake5-${{ hashFiles('third_party/premake-core/**') }} - - name: Cache Qt6 id: cache-qt-linux uses: actions/cache@v3 @@ -86,7 +79,7 @@ jobs: sudo apt-add-repository "deb http://apt.llvm.org/${UBUNTU_BASE}/ llvm-toolchain-${UBUNTU_BASE}-21 main" sudo apt-get -y update - sudo apt-get -y install mesa-vulkan-drivers valgrind libc++-dev libc++abi-dev libsdl2-dev libvulkan-dev libx11-xcb-dev clang-21 ninja-build spirv-tools libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-cursor0 libxcb-shape0 libfontconfig1-dev libxtst-dev + sudo apt-get -y install mesa-vulkan-drivers valgrind libc++-dev libc++abi-dev libgtk-3-dev libsdl2-dev libvulkan-dev libx11-xcb-dev clang-21 lld-21 ninja-build cmake spirv-tools libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-cursor0 libxcb-shape0 libfontconfig1-dev libxtst-dev # Install Vulkan SDK if [ '${{ steps.cache-vulkan-sdk-linux.outputs.cache-hit }}' != 'true' ]; then @@ -131,12 +124,7 @@ jobs: # Update submodules if not cached if [ '${{ steps.cache-submodules.outputs.cache-hit }}' != 'true' ]; then - git submodule update --init --depth=1 -j$(getconf _NPROCESSORS_ONLN) $(grep -oP '(?<=path = )(?!third_party\/(DirectXShaderCompiler|premake-(androidndk|export-compile-commands))).+' .gitmodules) - fi - - if [ '${{ steps.cache-premake5.outputs.cache-hit }}' != 'true' ]; then - ./xenia-build.py premake - cp third_party/premake-core/bin/release/premake5 tools/build/bin + git submodule update --init --depth=1 -j$(getconf _NPROCESSORS_ONLN) $(grep -oP '(?<=path = )(?!third_party\/DirectXShaderCompiler).+' .gitmodules) fi # Fetch data repos (game-patches, optimized-settings) @@ -310,7 +298,7 @@ jobs: $cacheHit = '${{ steps.cache-submodules.outputs.cache-hit }}' if ($cacheHit -ne 'true') { - git submodule update --init --depth=1 -j $env:NUMBER_OF_PROCESSORS (Select-String -CaseSensitive '(?<=path = )(?!third_party\/(premake-(androidndk|cmake|export-compile-commands))).+' .gitmodules).Matches.Value + git submodule update --init --depth=1 -j $env:NUMBER_OF_PROCESSORS (Select-String -CaseSensitive '(?<=path = ).+' .gitmodules).Matches.Value } # Fetch data repos (game-patches, optimized-settings) diff --git a/.gitignore b/.gitignore index 89f11cb08..2b089129a 100644 --- a/.gitignore +++ b/.gitignore @@ -94,7 +94,13 @@ node_modules/.bin/ # coverage/etc /scratch/ +# CMake build trees /build/ +/build-vs/ + +# CMake user-specific overrides + compile commands export +CMakeUserPresets.json +/compile_commands.json # ============================================================================== # Local-only paths diff --git a/.gitmodules b/.gitmodules index 0182fcf66..2811d61a2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,16 +7,10 @@ [submodule "third_party/catch"] path = third_party/catch url = https://github.com/catchorg/Catch2.git -[submodule "third_party/premake-core"] - path = third_party/premake-core - url = https://github.com/premake/premake-core.git [submodule "third_party/snappy"] path = third_party/snappy url = https://github.com/google/snappy.git ignore = dirty -[submodule "third_party/premake-export-compile-commands"] - path = third_party/premake-export-compile-commands - url = https://github.com/xenia-project/premake-export-compile-commands.git [submodule "third_party/discord-rpc"] path = third_party/discord-rpc url = https://github.com/discordapp/discord-rpc.git @@ -50,9 +44,6 @@ [submodule "third_party/DirectXShaderCompiler"] path = third_party/DirectXShaderCompiler url = https://github.com/microsoft/DirectXShaderCompiler.git -[submodule "third_party/premake-cmake"] - path = third_party/premake-cmake - url = https://github.com/JoelLinn/premake-cmake.git [submodule "third_party/date"] path = third_party/date url = https://github.com/HowardHinnant/date.git @@ -63,9 +54,6 @@ path = third_party/FFmpeg url = https://github.com/has207/FFmpeg.git branch = xmaframes -[submodule "third_party/premake-androidndk"] - path = third_party/premake-androidndk - url = https://github.com/Triang3l/premake-androidndk.git [submodule "third_party/FidelityFX-CAS"] path = third_party/FidelityFX-CAS url = https://github.com/GPUOpen-Effects/FidelityFX-CAS.git diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..a30cce83c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,326 @@ +cmake_minimum_required(VERSION 3.20) +project(xenia LANGUAGES C CXX) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_C_STANDARD 17) +set(CMAKE_C_STANDARD_REQUIRED ON) + +option(XENIA_BUILD_TESTS "Build test suites" OFF) +option(XENIA_BUILD_MISC "Build misc subprojects (trace viewers, shader compiler, vfs-dump, demos)" OFF) +option(XENIA_ENABLE_LTO "Enable link-time optimization in Release (slow link)" ON) + +get_property(_is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(_is_multi_config) + set(CMAKE_CONFIGURATION_TYPES "Checked;Debug;Release;Valgrind" CACHE STRING "" FORCE) +endif() + +# Checked and Valgrind inherit Debug's flags as a starting point; the +# platform blocks below layer sanitizers and config-specific tweaks on top. +foreach(_cfg CHECKED VALGRIND) + set(CMAKE_C_FLAGS_${_cfg} "${CMAKE_C_FLAGS_DEBUG}" CACHE STRING "" FORCE) + set(CMAKE_CXX_FLAGS_${_cfg} "${CMAKE_CXX_FLAGS_DEBUG}" CACHE STRING "" FORCE) + set(CMAKE_EXE_LINKER_FLAGS_${_cfg} "${CMAKE_EXE_LINKER_FLAGS_DEBUG}" CACHE STRING "" FORCE) + set(CMAKE_SHARED_LINKER_FLAGS_${_cfg} "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}" CACHE STRING "" FORCE) + set(CMAKE_STATIC_LINKER_FLAGS_${_cfg} "${CMAKE_STATIC_LINKER_FLAGS_DEBUG}" CACHE STRING "" FORCE) +endforeach() + +if(WIN32) + set(XE_PLATFORM_NAME "Windows") +else() + set(XE_PLATFORM_NAME "Linux") +endif() + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/${XE_PLATFORM_NAME}") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/${XE_PLATFORM_NAME}") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/obj/${XE_PLATFORM_NAME}") + +file(MAKE_DIRECTORY "${PROJECT_SOURCE_DIR}/scratch") + +find_package(Python3 REQUIRED COMPONENTS Interpreter) + +# Debug/Checked/Valgrind are compiled against the release CRT (/MD) so we +# can link the Vulkan SDK's release-only SPIRV-Tools libs. Force any +# imported library (Qt6::*, etc.) to resolve to its Release variant in +# those configs too — otherwise Qt6*d.dll drags in /MDd and the process +# ends up mixing two CRTs, corrupting std::string/QString allocations. +# NOCONFIG is the fallback for imported targets that ship without a +# configuration suffix (FindOpenGL on Linux creates OpenGL::OpenGL this +# way — without NOCONFIG in the map we fail to resolve it in Debug et al). +set(CMAKE_MAP_IMPORTED_CONFIG_DEBUG "Release;NOCONFIG" CACHE STRING "" FORCE) +set(CMAKE_MAP_IMPORTED_CONFIG_CHECKED "Release;NOCONFIG" CACHE STRING "" FORCE) +set(CMAKE_MAP_IMPORTED_CONFIG_VALGRIND "Release;NOCONFIG" CACHE STRING "" FORCE) + +include(cmake/XeniaHelpers.cmake) + +include_directories( + ${PROJECT_SOURCE_DIR} + ${PROJECT_SOURCE_DIR}/src + ${PROJECT_SOURCE_DIR}/third_party + # Build directory — for `#include "version.h"` (generated by xenia-build.py + # into CMAKE_BINARY_DIR, which varies per configure: build/, build-vs/, ...). + ${CMAKE_BINARY_DIR} +) + +add_compile_definitions( + VULKAN_HPP_NO_TO_STRING + IMGUI_DISABLE_OBSOLETE_FUNCTIONS + IMGUI_DISABLE_DEFAULT_FONT + IMGUI_USE_STB_SPRINTF + USE_CPP17 # Tabulate + _LIB +) + +# ============================================================================== +# Qt6 (optional, gated on the QT_DIR env var) +# ============================================================================== + +set(XE_QT_DIR "$ENV{QT_DIR}") +if(XE_QT_DIR) + list(PREPEND CMAKE_PREFIX_PATH "${XE_QT_DIR}") + set(QT_NO_PRIVATE_MODULE_WARNING ON) + find_package(Qt6 COMPONENTS Core Gui GuiPrivate Widgets QUIET) + if(Qt6_FOUND) + message(STATUS "Qt6: using QT_DIR=${XE_QT_DIR} (version ${Qt6_VERSION})") + set(CMAKE_AUTOMOC ON) + # CMAKE_INCLUDE_CURRENT_DIR is intentionally off. Setting it globally + # would add each target's source dir to its include path, and + # src/xenia/base contains files named assert.h / string.h / memory.h / + # mutex.h that collide with C/C++ standard headers. Targets that need + # their source dir on the path (xenia-ui, so AUTOMOC-generated moc + # files can find Q_OBJECT headers) add it via target_include_directories. + if(NOT WIN32) + add_link_options("-Wl,-rpath,${XE_QT_DIR}/lib") + endif() + set(XE_HAS_QT TRUE) + + # Qt6 pulls in third-party find-modules (FindOpenGL, FindXKB, …) that + # create UNKNOWN IMPORTED targets with only a bare IMPORTED_LOCATION (no + # config suffix). Ninja Multi-Config can't map NOCONFIG locations for + # custom configs even with CMAKE_MAP_IMPORTED_CONFIG_*. Re-tag every + # such target as Release so the existing MAP resolves them correctly. + get_property(_imported_targets DIRECTORY PROPERTY IMPORTED_TARGETS) + foreach(_tgt IN LISTS _imported_targets) + get_target_property(_loc ${_tgt} IMPORTED_LOCATION) + if(_loc AND NOT _loc MATCHES "-NOTFOUND$") + get_target_property(_confs ${_tgt} IMPORTED_CONFIGURATIONS) + if(NOT _confs OR _confs MATCHES "-NOTFOUND$") + set_target_properties(${_tgt} PROPERTIES + IMPORTED_CONFIGURATIONS "Release" + IMPORTED_LOCATION_RELEASE "${_loc}" + ) + endif() + endif() + endforeach() + else() + message(WARNING "QT_DIR=${XE_QT_DIR} is set but find_package(Qt6) failed; building without Qt") + endif() +endif() + +# ============================================================================== +# Platform-specific global settings +# ============================================================================== + +if(MSVC) + # CRT runtime selection via CMP0091. Debug and Release use the release + # CRT (/MD); Checked uses the debug CRT (/MDd) because it pairs /RTCsu + # with ASan. + set(CMAKE_MSVC_RUNTIME_LIBRARY + "MultiThreaded$<$:Debug>DLL" + CACHE STRING "" FORCE) + + add_compile_options( + /utf-8 # non-Latin-codepage-safe source parsing + /Zc:__cplusplus # correct __cplusplus macro value (Qt6 needs this) + /Zc:preprocessor # conformant preprocessor + /wd4201 # nameless struct/unions are ok + /arch:AVX + /MP + ) + add_compile_definitions( + _CRT_NONSTDC_NO_DEPRECATE + _CRT_SECURE_NO_WARNINGS + WIN32 + _WIN64=1 + _AMD64=1 + UNICODE + _UNICODE + ) + add_link_options( + /ignore:4006 # duplicate symbols in static libs + /ignore:4221 # empty obj files + ) + link_libraries( + ntdll wsock32 ws2_32 xinput comctl32 shcore shlwapi dxguid bcrypt + ) + + # Checked: /RTCsu + ASan + debug symbols. /RTC1 from CMake's default + # Debug flags conflicts with /RTCsu, so strip it first. + string(REPLACE "/RTC1" "" CMAKE_C_FLAGS_CHECKED "${CMAKE_C_FLAGS_CHECKED}") + string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_CHECKED "${CMAKE_CXX_FLAGS_CHECKED}") + string(APPEND CMAKE_C_FLAGS_CHECKED " /RTCsu /fsanitize=address /Zi") + string(APPEND CMAKE_CXX_FLAGS_CHECKED " /RTCsu /fsanitize=address /Zi") + string(APPEND CMAKE_EXE_LINKER_FLAGS_CHECKED " /INCREMENTAL:NO") + add_compile_definitions( + $<$:DEBUG> + $<$:NDEBUG> + # STB_SPRINTF is incompatible with ASan runtime hooks. + $<$:IMGUI_USE_STB_SPRINTF_DISABLED> + ) + + # Debug: /RTC1 requires the debug CRT, so strip it — we're on /MD. Pin + # _ITERATOR_DEBUG_LEVEL=0 so our STL object layouts match release-CRT + # prebuilts (Vulkan SDK SPIRV-Tools) and we don't hit LNK2038. + string(REPLACE "/RTC1" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") + string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") + add_compile_definitions( + $<$:DEBUG> + $<$:_NO_DEBUG_HEAP=1> + $<$:_ITERATOR_DEBUG_LEVEL=0> + ) + + add_compile_definitions( + $<$:NDEBUG> + $<$:_NO_DEBUG_HEAP=1> + ) + add_compile_options( + $<$:/Gw> + $<$:/GS-> # NoBufferSecurityCheck + ) + # /Ob3 is a stronger inline heuristic than CMake's default /Ob2. + string(REPLACE "/Ob2" "/Ob3" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") + string(REPLACE "/Ob2" "/Ob3" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") + # LTCG (whole-program optimization). Disabled by -DXENIA_ENABLE_LTO=OFF + # for faster Release link times during iterative work. + if(XENIA_ENABLE_LTO) + add_compile_options($<$:/GL>) + add_link_options($<$:/LTCG>) + set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG") + endif() + # Release has no PDB. + string(REPLACE "/Zi" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") + string(REPLACE "/Zi" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") + string(REPLACE "/DEBUG" "" CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") + +else() + # GCC/Clang (Linux) + add_compile_options(-mavx) + + add_compile_options( + $<$:-Wno-switch> + $<$:-Wno-attributes> + ) + + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + add_compile_options( + $<$:-Wno-deprecated-register> + $<$:-Wno-deprecated-volatile> + $<$:-Wno-deprecated-enum-enum-conversion> + ) + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 20) + add_compile_options( + $<$:-Wno-deprecated-literal-operator> + $<$:-Wno-nontrivial-memcall> + ) + endif() + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 21) + add_compile_options( + $<$:-Wno-character-conversion> + ) + endif() + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + add_compile_options( + $<$:-Wno-unused-result> + $<$:-Wno-volatile> + $<$:-Wno-template-id-cdtor> + $<$:-Wno-return-type> + $<$:-Wno-deprecated> + -fpermissive # HACK + ) + add_link_options(-fpermissive) + endif() + + add_compile_options( + $<$:-Wno-implicit-function-declaration> + ) + + find_package(PkgConfig REQUIRED) + pkg_check_modules(GTK3 REQUIRED gtk+-x11-3.0) + include_directories(${GTK3_INCLUDE_DIRS}) + link_directories(${GTK3_LIBRARY_DIRS}) + add_compile_options(${GTK3_CFLAGS_OTHER}) + + link_libraries(stdc++fs dl lz4 m pthread rt) + + # Link group so executables resolve circular static-lib deps. + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--start-group") + set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -Wl,--end-group") + + # Checked: UBSan. + string(APPEND CMAKE_C_FLAGS_CHECKED " -fsanitize=undefined") + string(APPEND CMAKE_CXX_FLAGS_CHECKED " -fsanitize=undefined") + string(APPEND CMAKE_EXE_LINKER_FLAGS_CHECKED " -fsanitize=undefined") + add_compile_definitions( + $<$:DEBUG> + $<$:NDEBUG> + ) + + add_compile_definitions( + $<$:DEBUG> + $<$:_NO_DEBUG_HEAP=1> + ) + + # Release keeps -g so crashes in the field have resolvable frames. + add_compile_definitions( + $<$:NDEBUG> + $<$:_NO_DEBUG_HEAP=1> + ) + add_compile_options( + $<$:-O3> + $<$:-finline-functions> + $<$:-funroll-loops> + $<$:-fomit-frame-pointer> + $<$:-g> + ) + # ThinLTO + lld. Gated behind XENIA_ENABLE_LTO so -DXENIA_ENABLE_LTO=OFF + # produces a Release binary with the standard system linker and no LTO, + # which links an order of magnitude faster during iterative work. + if(XENIA_ENABLE_LTO) + add_compile_options($<$:-flto=thin>) + add_link_options( + $<$:-flto=thin> + $<$:-fuse-ld=lld> + ) + endif() + + # Valgrind: -Og for debuggability without the pathological debug perf + # cost, no sanitizers (they fight valgrind), no inlining so stack + # traces reflect source structure. + string(APPEND CMAKE_C_FLAGS_VALGRIND " -Og -g3 -fno-omit-frame-pointer -fno-inline-functions") + string(APPEND CMAKE_CXX_FLAGS_VALGRIND " -Og -g3 -fno-omit-frame-pointer -fno-inline-functions") + add_compile_definitions( + $<$:DEBUG> + $<$:NDEBUG> + $<$:_NO_DEBUG_HEAP=1> + ) +endif() + +# ============================================================================== +# Subdirectories +# ============================================================================== + +# third_party is added before Qt is made directory-global so its libs +# don't pull Qt into their compile lines. +add_subdirectory(third_party) + +# Qt headers reach into src/xenia/kernel, src/xenia/gpu, etc. via +# transitive includes of app/emulator_window.h and ui/*_qt.h — not just +# the targets with Q_OBJECT. Linking Qt at directory scope keeps all +# xenia src libs consistent. +if(XE_HAS_QT) + link_libraries(Qt6::Core Qt6::Gui Qt6::Widgets) +endif() + +add_subdirectory(src/xenia) + +set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT xenia-app) diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 000000000..d3f46c291 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,60 @@ +{ + "version": 3, + "cmakeMinimumRequired": { + "major": 3, + "minor": 20, + "patch": 0 + }, + "configurePresets": [ + { + "name": "default", + "displayName": "Ninja Multi-Config", + "generator": "Ninja Multi-Config", + "binaryDir": "${sourceDir}/build" + }, + { + "name": "vs", + "displayName": "Visual Studio 2022", + "generator": "Visual Studio 17 2022", + "architecture": "x64", + "binaryDir": "${sourceDir}/build" + } + ], + "buildPresets": [ + { + "name": "debug", + "configurePreset": "default", + "configuration": "Debug" + }, + { + "name": "release", + "configurePreset": "default", + "configuration": "Release" + }, + { + "name": "checked", + "configurePreset": "default", + "configuration": "Checked" + }, + { + "name": "valgrind", + "configurePreset": "default", + "configuration": "Valgrind" + }, + { + "name": "vs-debug", + "configurePreset": "vs", + "configuration": "Debug" + }, + { + "name": "vs-release", + "configurePreset": "vs", + "configuration": "Release" + }, + { + "name": "vs-checked", + "configurePreset": "vs", + "configuration": "Checked" + } + ] +} diff --git a/cmake/XeniaHelpers.cmake b/cmake/XeniaHelpers.cmake new file mode 100644 index 000000000..b3db267c1 --- /dev/null +++ b/cmake/XeniaHelpers.cmake @@ -0,0 +1,242 @@ +# Helper functions for the xenia build. + +include(CMakeParseArguments) + +set(XE_PLATFORM_SUFFIXES + _win _linux _posix _gnulinux _x11 _gtk _android _mac +) + +# xe_platform_sources(target base_path [RECURSIVE]) +# +# Globs source files from base_path and adds them to target. Excludes +# *_main.cc / *_test.cc / *_demo.cc, and any file with a platform suffix +# that doesn't match the current platform. RECURSIVE descends into +# subdirectories. +function(xe_platform_sources target base_path) + set(options RECURSIVE) + cmake_parse_arguments(ARG "${options}" "" "" ${ARGN}) + + if(ARG_RECURSIVE) + set(glob_mode GLOB_RECURSE) + else() + set(glob_mode GLOB) + endif() + + file(${glob_mode} _all_sources + "${base_path}/*.h" + "${base_path}/*.cc" + "${base_path}/*.cpp" + "${base_path}/*.c" + "${base_path}/*.inc" + ) + + set(_excluded) + foreach(src ${_all_sources}) + get_filename_component(_name_we ${src} NAME_WE) + if(_name_we MATCHES "_main$" OR _name_we MATCHES "_test$" OR _name_we MATCHES "_demo$") + list(APPEND _excluded ${src}) + continue() + endif() + foreach(suffix ${XE_PLATFORM_SUFFIXES}) + if(_name_we MATCHES "${suffix}$") + list(APPEND _excluded ${src}) + break() + endif() + endforeach() + endforeach() + + set(_sources ${_all_sources}) + if(_excluded) + list(REMOVE_ITEM _sources ${_excluded}) + endif() + + if(WIN32) + file(${glob_mode} _plat_sources + "${base_path}/*_win.h" + "${base_path}/*_win.cc" + ) + elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") + file(${glob_mode} _plat_sources + "${base_path}/*_posix.h" + "${base_path}/*_posix.cc" + "${base_path}/*_linux.h" + "${base_path}/*_linux.cc" + "${base_path}/*_gnulinux.h" + "${base_path}/*_gnulinux.cc" + "${base_path}/*_x11.h" + "${base_path}/*_x11.cc" + "${base_path}/*_gtk.h" + "${base_path}/*_gtk.cc" + ) + endif() + + list(APPEND _sources ${_plat_sources}) + target_sources(${target} PRIVATE ${_sources}) +endfunction() + +# xe_target_defaults(target) +# +# Applies xenia-wide compile defaults to a target: project-root include +# directories and warnings-as-errors. GCC is excluded from -Werror because +# it's too noisy to keep clean across the codebase. +function(xe_target_defaults target) + target_include_directories(${target} PRIVATE + ${PROJECT_SOURCE_DIR} + ${PROJECT_SOURCE_DIR}/src + ${PROJECT_SOURCE_DIR}/third_party + ) + if(MSVC) + target_compile_options(${target} PRIVATE /WX) + elseif(NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_compile_options(${target} PRIVATE -Werror) + endif() +endfunction() + +# xe_shader_rules_spirv(target shader_dir) +# +# Wires up SPIR-V shader compilation (glslang + spirv-opt + spirv-dis, +# via tools/build/compile_shader_spirv.py) as a prerequisite of target. +# Sources are *.xesl / *.glsl with a stage suffix (vs/hs/ds/gs/ps/cs); +# outputs land in /bytecode/vulkan_spirv/.h. A stamp +# file drives incremental rebuilds when any source or the compile +# script changes. +function(xe_shader_rules_spirv target shader_dir) + get_filename_component(shader_dir "${shader_dir}" ABSOLUTE) + file(GLOB _sources + "${shader_dir}/*.xesl" "${shader_dir}/*.glsl" + "${shader_dir}/*.xesli" "${shader_dir}/*.glsli") + set(_stamp "${CMAKE_CURRENT_BINARY_DIR}/${target}_spirv.stamp") + set(_script "${PROJECT_SOURCE_DIR}/tools/build/compile_shader_spirv.py") + set(_valid_stages vs hs ds gs ps cs) + set(_commands) + set(_bytecode_dir "${shader_dir}/bytecode/vulkan_spirv") + list(APPEND _commands COMMAND ${CMAKE_COMMAND} -E make_directory "${_bytecode_dir}") + foreach(src ${_sources}) + get_filename_component(_name ${src} NAME) + string(REGEX REPLACE "\\.[^.]+$" "" _basename "${_name}") + string(REPLACE "." "_" _id "${_basename}") + string(LENGTH "${_id}" _len) + if(_len LESS 3) + continue() + endif() + math(EXPR _s "${_len} - 2") + string(SUBSTRING "${_id}" ${_s} 2 _stage) + if(NOT _stage IN_LIST _valid_stages) + continue() + endif() + list(APPEND _commands COMMAND ${Python3_EXECUTABLE} "${_script}" "${src}" "${_bytecode_dir}/${_id}.h") + endforeach() + add_custom_command( + OUTPUT "${_stamp}" + ${_commands} + COMMAND ${CMAKE_COMMAND} -E touch "${_stamp}" + DEPENDS ${_sources} "${_script}" + COMMENT "Compiling SPIR-V shaders for ${target}..." + VERBATIM + ) + add_custom_target(${target}-spirv-shaders DEPENDS "${_stamp}") + add_dependencies(${target} ${target}-spirv-shaders) + # Attach sources to the target for IDE visibility without letting VS + # try to compile them as C++. + set_source_files_properties(${_sources} PROPERTIES HEADER_FILE_ONLY TRUE) + target_sources(${target} PRIVATE ${_sources}) +endfunction() + +# xe_shader_rules_dxbc(target shader_dir) +# +# DXBC counterpart to xe_shader_rules_spirv: invokes FXC via +# tools/build/compile_shader_dxbc.py on each stage-suffixed *.xesl / +# *.hlsl under shader_dir, emitting /bytecode/d3d12_5_1/.h. +function(xe_shader_rules_dxbc target shader_dir) + get_filename_component(shader_dir "${shader_dir}" ABSOLUTE) + file(GLOB _sources + "${shader_dir}/*.xesl" "${shader_dir}/*.hlsl" + "${shader_dir}/*.xesli" "${shader_dir}/*.hlsli") + set(_stamp "${CMAKE_CURRENT_BINARY_DIR}/${target}_dxbc.stamp") + set(_script "${PROJECT_SOURCE_DIR}/tools/build/compile_shader_dxbc.py") + set(_valid_stages vs hs ds gs ps cs) + set(_commands) + set(_bytecode_dir "${shader_dir}/bytecode/d3d12_5_1") + list(APPEND _commands COMMAND ${CMAKE_COMMAND} -E make_directory "${_bytecode_dir}") + foreach(src ${_sources}) + get_filename_component(_name ${src} NAME) + string(REGEX REPLACE "\\.[^.]+$" "" _basename "${_name}") + string(REPLACE "." "_" _id "${_basename}") + string(LENGTH "${_id}" _len) + if(_len LESS 3) + continue() + endif() + math(EXPR _s "${_len} - 2") + string(SUBSTRING "${_id}" ${_s} 2 _stage) + if(NOT _stage IN_LIST _valid_stages) + continue() + endif() + list(APPEND _commands COMMAND ${Python3_EXECUTABLE} "${_script}" "${src}" "${_bytecode_dir}/${_id}.h") + endforeach() + add_custom_command( + OUTPUT "${_stamp}" + ${_commands} + COMMAND ${CMAKE_COMMAND} -E touch "${_stamp}" + DEPENDS ${_sources} "${_script}" + COMMENT "Compiling DXBC shaders for ${target}..." + VERBATIM + ) + add_custom_target(${target}-dxbc-shaders DEPENDS "${_stamp}") + add_dependencies(${target} ${target}-dxbc-shaders) + set_source_files_properties(${_sources} PROPERTIES HEADER_FILE_ONLY TRUE) + target_sources(${target} PRIVATE ${_sources}) +endfunction() + +# xe_force_c(files...) — compile the given sources as C. +function(xe_force_c) + set_source_files_properties(${ARGN} PROPERTIES LANGUAGE C) +endfunction() + +# xe_force_cxx(files...) — compile the given sources as C++. +function(xe_force_cxx) + set_source_files_properties(${ARGN} PROPERTIES LANGUAGE CXX) +endfunction() + +# xe_test_suite(name base_path LINKS lib1 lib2 ...) +# +# Creates a Catch2 test executable from *_test.cc files in base_path. +# Returns early (no target) if no test sources are found. +function(xe_test_suite name base_path) + cmake_parse_arguments(ARG "" "" "LINKS" ${ARGN}) + + file(GLOB _test_sources "${base_path}/*_test.cc") + if(NOT _test_sources) + return() + endif() + + add_executable(${name} + ${_test_sources} + ${PROJECT_SOURCE_DIR}/tools/build/src/test_suite_main.cc + ) + + if(WIN32) + target_sources(${name} PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_win.cc) + else() + target_sources(${name} PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_posix.cc) + endif() + + target_compile_definitions(${name} PRIVATE + "XE_TEST_SUITE_NAME=\"${name}\"" + ) + target_include_directories(${name} PRIVATE + ${PROJECT_SOURCE_DIR}/tools/build + ${PROJECT_SOURCE_DIR}/tools/build/src + ${PROJECT_SOURCE_DIR}/tools/build/third_party/catch/include + ) + if(ARG_LINKS) + target_link_libraries(${name} PRIVATE ${ARG_LINKS}) + endif() + xe_target_defaults(${name}) + + if(MSVC) + # Edit-and-Continue rewrites __LINE__ and breaks Catch2 test discovery. + target_compile_options(${name} PRIVATE /Zi) + endif() +endfunction() diff --git a/premake5.lua b/premake5.lua deleted file mode 100644 index 951a26db9..000000000 --- a/premake5.lua +++ /dev/null @@ -1,558 +0,0 @@ -include("tools/build") -if _ACTION == "export-compile-commands" then - require("third_party/premake-export-compile-commands/export-compile-commands") -end -if os.istarget("android") then - require("third_party/premake-androidndk/androidndk") -end -if _ACTION == "cmake" then - require("third_party/premake-cmake/cmake") -end - --- Helper function to extract Qt version from qconfig.pri -function get_qt_version(qt_dir) - local qconfig_path = path.join(qt_dir, "mkspecs/qconfig.pri") - local qconfig_file = io.open(qconfig_path, "r") - if qconfig_file then - for line in qconfig_file:lines() do - local version = line:match("^QT_VERSION%s*=%s*(.+)$") - if version then - qconfig_file:close() - return version:gsub("^%s*", ""):gsub("%s*$", "") -- trim whitespace - end - end - qconfig_file:close() - end - error("Could not read Qt version from " .. qconfig_path) -end - -location(build_root) -targetdir(build_bin) -objdir(build_obj) - --- Define variables for enabling specific submodules --- Todo: Add changing from xb command -enableTests = false -enableMiscSubprojects = false - --- Define an ARCH variable --- Only use this to enable architecture-specific functionality. -if os.istarget("linux") then - ARCH = os.outputof("uname -p") -else - ARCH = "unknown" -end - -includedirs({ - ".", - "src", - "third_party", -}) - -defines({ - "VULKAN_HPP_NO_TO_STRING", - "IMGUI_DISABLE_OBSOLETE_FUNCTIONS", - "IMGUI_DISABLE_DEFAULT_FONT", - --"IMGUI_USE_WCHAR32", - "IMGUI_USE_STB_SPRINTF", - --"IMGUI_ENABLE_FREETYPE", - "USE_CPP17", -- Tabulate -}) - -cdialect("C17") -cppdialect("C++20") -symbols("On") -fatalwarnings("All") - --- TODO(DrChat): Find a way to disable this on other architectures. -if ARCH ~= "ppc64" then - filter({"architecture:x86_64"}) - -- AVX2 requires Haswell (2013+) or newer - vectorextensions("AVX") - filter({}) -end - -filter("kind:StaticLib") - defines({ - "_LIB", - }) - -filter("configurations:Checked") - runtime("Debug") - inlining("Auto") -- /Ob2 for Checked builds - flags("NoIncrementalLink") - editandcontinue("Off") - staticruntime("Off") - optimize("Off") - removedefines({ - "IMGUI_USE_STB_SPRINTF", - }) - defines({ - "DEBUG", - "NDEBUG", - }) - -filter({"configurations:Checked", "platforms:Linux"}) - buildoptions({ - "-fsanitize=undefined", - }) - linkoptions({ - "-fsanitize=undefined", - }) - -filter({"configurations:Checked", "platforms:Windows"}) -- "toolset:msc" - buildoptions({ - "/RTCsu", -- Full Run-Time Checks. - }) - -- AddressSanitizer on Windows (doesn't conflict with memory layout like on Linux) - sanitize("Address") - -filter({"configurations:Checked or Debug", "platforms:Linux"}) - defines({ - -- "_GLIBCXX_DEBUG", -- libstdc++ debug mode (disabled - causes ABI issues with system libraries) - }) - -filter({"configurations:Checked or Debug", "platforms:Windows"}) -- "toolset:msc" - symbols("Full") - -filter("configurations:Debug") - runtime("Release") - optimize("Off") - inlining("Disabled") -- No inlining for debug - defines({ - "DEBUG", - "_NO_DEBUG_HEAP=1", - }) - -filter("configurations:Release") - runtime("Release") - defines({ - "NDEBUG", - "_NO_DEBUG_HEAP=1", - }) - optimize("Speed") - flags({ - "NoBufferSecurityCheck" - }) - editandcontinue("Off") - -- Not using floatingpoint("Fast") - NaN checks are used in some places - -- (though rarely), overall preferable to avoid any functional differences - -- between debug and release builds, and to have calculations involved in GPU - -- (especially anything that may affect vertex position invariance) and CPU - -- (such as constant propagation) emulation as predictable as possible, - -- including handling of specials since games make assumptions about them. - -filter({"configurations:Release", "platforms:not Windows"}) - symbols("On") -- Enable debug symbols for crash debugging - linktimeoptimization("On") - buildoptions({ - "-O3", -- Maximum optimization (premake's optimize("Speed") might only be -O2) - "-finline-functions", -- Aggressive function inlining - "-funroll-loops", -- Unroll loops where beneficial - "-fomit-frame-pointer", -- Don't keep frame pointer for better performance - }) - -filter({"configurations:Release", "platforms:Windows"}) -- "toolset:msc" - symbols("Off") -- Disable PDB generation for release builds - linktimeoptimization("On") - buildoptions({ - "/Gw", - "/Ob3", -- Aggressive inlining for maximum performance --- "/Qpar", -- TODO: Test this. - }) - -filter("configurations:Valgrind") - runtime("Release") - optimize("Debug") -- -Og for reasonable performance with debuggability - symbols("Full") -- Full debug symbols for better Valgrind output - defines({ - "DEBUG", - "NDEBUG", - "_NO_DEBUG_HEAP=1", - }) - -- NO sanitize("Address") - incompatible with Valgrind - -- Disable optimizations that make debugging harder - buildoptions({ - "-fno-omit-frame-pointer", -- Keep frame pointers for better stack traces - "-fno-inline-functions", -- Disable function inlining for clearer traces - }) - -filter({"configurations:Valgrind", "platforms:Linux"}) - -- Additional Valgrind-friendly settings for Linux - buildoptions({ - "-g3", -- Maximum debug info - }) - -filter("platforms:Linux") - system("linux") - toolset("clang") - local qt_dir = os.getenv("QT_DIR") - if qt_dir then - local qt_version = get_qt_version(qt_dir) - includedirs({ - path.join(qt_dir, "include"), - path.join(qt_dir, "include/QtCore"), - path.join(qt_dir, "include/QtCore", qt_version), - path.join(qt_dir, "include/QtCore", qt_version, "QtCore"), - path.join(qt_dir, "include/QtGui"), - path.join(qt_dir, "include/QtGui", qt_version), - path.join(qt_dir, "include/QtGui", qt_version, "QtGui"), - path.join(qt_dir, "include/QtWidgets"), - }) - libdirs({ - path.join(qt_dir, "lib"), - }) - runpathdirs({ - path.join(qt_dir, "lib"), - }) - -- For CMake: set RPATH to find Qt libraries - linkoptions({ - "-Wl,-rpath," .. path.join(qt_dir, "lib"), - }) - links({ - "Qt6Core", - "Qt6Gui", - "Qt6Widgets", - }) - end - - links({ - "stdc++fs", - "dl", - "lz4", - "m", - "pthread", - "rt", - }) - -filter({"platforms:Linux", "kind:*App"}) - linkgroups("On") - -filter({"language:C++", "toolset:clang or gcc"}) -- "platforms:Linux" - disablewarnings({ - "switch", - "attributes", - }) - -filter({"language:C++", "toolset:gcc"}) -- "platforms:Linux" - disablewarnings({ - "unused-result", - "volatile", - "template-id-cdtor", - "return-type", - "deprecated", - }) - -filter("toolset:gcc") -- "platforms:Linux" - removefatalwarnings("All") -- HACK - if ARCH == "ppc64" then - buildoptions({ - "-m32", - "-mpowerpc64" - }) - linkoptions({ - "-m32", - "-mpowerpc64" - }) - else - buildoptions({ - "-fpermissive", -- HACK - }) - linkoptions({ - "-fpermissive", -- HACK - }) - end - -filter({"language:C++", "toolset:clang"}) -- "platforms:Linux" - disablewarnings({ - "deprecated-register", - "deprecated-volatile", - "deprecated-enum-enum-conversion", - }) -CLANG_BIN = os.getenv("CC") or _OPTIONS["cc"] or "clang" -if os.istarget("linux") and string.contains(CLANG_BIN, "clang") then - CLANG_VER = tonumber(string.match(os.outputof(CLANG_BIN.." --version"), "version (%d%d)")) - if CLANG_VER >= 20 then - filter({"language:C++", "toolset:clang"}) -- "platforms:Linux" - disablewarnings({ - "deprecated-literal-operator", -- Needed only for tabulate - "nontrivial-memcall", - }) - end - if CLANG_VER >= 21 then - filter({"language:C++", "toolset:clang"}) -- "platforms:Linux" - disablewarnings({ - "character-conversion", -- Needed for utfcpp third-party library - }) - end -end - -filter({"language:C", "toolset:clang or gcc"}) -- "platforms:Linux" - disablewarnings({ - "implicit-function-declaration", - }) - -if os.istarget("android") then - filter("platforms:Android-*") - system("android") - systemversion("24") - cppstl("c++") - staticruntime("On") - -- Hidden visibility is needed to prevent dynamic relocations in FFmpeg - -- AArch64 Neon libavcodec assembly with PIC (accesses extern lookup tables - -- using `adrp` and `add`, without the Global Object Table, expecting that all - -- FFmpeg symbols that aren't a part of the FFmpeg API are hidden by FFmpeg's - -- original build system) by resolving those relocations at link time instead. - visibility("Hidden") - links({ - "android", - "dl", - "log", - }) -end - -filter("platforms:Windows") - system("windows") - toolset("msc") - buildoptions({ - "/utf-8", -- 'build correctly on systems with non-Latin codepages'. - "/Zc:__cplusplus", -- Enable correct __cplusplus macro value (required for Qt6). - "/Zc:preprocessor", -- Enable conformant preprocessor (supports #if in macro args). - -- Disable warnings - "/wd4201", -- Nameless struct/unions are ok. - }) - flags({ - "MultiProcessorCompile", -- Multiprocessor compilation. - "NoMinimalRebuild", -- Required for /MP above. - }) - - defines({ - "_CRT_NONSTDC_NO_DEPRECATE", - "_CRT_SECURE_NO_WARNINGS", - "WIN32", - "_WIN64=1", - "_AMD64=1", - }) - linkoptions({ - "/ignore:4006", -- Ignores complaints about empty obj files. - "/ignore:4221", - }) - links({ - "ntdll", - "wsock32", - "ws2_32", - "xinput", - "comctl32", - "shcore", - "shlwapi", - "dxguid", - "bcrypt", - }) - -- Add Qt for Windows - local qt_dir = os.getenv("QT_DIR") - if qt_dir then - includedirs({ - path.join(qt_dir, "include"), - path.join(qt_dir, "include/QtCore"), - path.join(qt_dir, "include/QtGui"), - path.join(qt_dir, "include/QtWidgets"), - }) - libdirs({ - path.join(qt_dir, "lib"), - }) - end - -filter({"platforms:Windows", "configurations:Release"}) - if qt_dir then - links({ - "Qt6Core", - "Qt6Gui", - "Qt6Widgets", - }) - end - -filter({"platforms:Windows", "configurations:Debug or Checked"}) - if qt_dir then - links({ - "Qt6Cored", - "Qt6Guid", - "Qt6Widgetsd", - }) - end - -filter("platforms:Windows") - --- Embed the manifest for things like dependencies and DPI awareness. -filter({"platforms:Windows", "kind:ConsoleApp or WindowedApp"}) - files({ - "src/xenia/base/app_win32.manifest" - }) - --- Create scratch/ path -if not os.isdir("scratch") then - os.mkdir("scratch") -end - -workspace("xenia") - uuid("931ef4b0-6170-4f7a-aaf2-0fece7632747") - startproject("xenia-app") - if os.istarget("android") then - platforms({"Android-ARM64", "Android-x86_64"}) - filter("platforms:Android-ARM64") - architecture("ARM64") - filter("platforms:Android-x86_64") - architecture("x86_64") - filter({}) - else - architecture("x86_64") - if os.istarget("linux") then - platforms({"Linux"}) - elseif os.istarget("macosx") then - platforms({"Mac"}) - xcodebuildsettings({ - ["ARCHS"] = "x86_64" - }) - elseif os.istarget("windows") then - platforms({"Windows"}) - -- 10.0.15063.0: ID3D12GraphicsCommandList1::SetSamplePositions. - -- 10.0.19041.0: D3D12_HEAP_FLAG_CREATE_NOT_ZEROED. - -- 10.0.22000.0: DWMWA_WINDOW_CORNER_PREFERENCE. - systemversion("latest") - filter({}) - end - end - configurations({"Checked", "Debug", "Release", "Valgrind"}) - - include("third_party/aes_128.lua") - include("third_party/asio.lua") - include("third_party/capstone.lua") - include("third_party/dxbc.lua") - include("third_party/discord-rpc.lua") - include("third_party/cxxopts.lua") - include("third_party/tomlplusplus.lua") - include("third_party/ffmpeg-xenia/premake5.lua") - include("third_party/fmt.lua") - include("third_party/glslang-spirv.lua") - include("third_party/imgui.lua") - include("third_party/metal-shader-converter.lua") - include("third_party/metal-cpp.lua") - include("third_party/miniaudio.lua") - include("third_party/mspack.lua") - include("third_party/snappy.lua") - include("third_party/xxhash.lua") - include("third_party/zarchive.lua") - include("third_party/zstd.lua") - include("third_party/zlib-ng.lua") - include("third_party/pugixml.lua") - - if os.istarget("windows") then - include("third_party/libusb.lua") - end - - if not os.istarget("android") then - -- SDL2 requires sdl2-config, and as of November 2020 isn't high-quality on - -- Android yet, most importantly in game controllers - the keycode and axis - -- enums are being ruined during conversion to SDL2 enums resulting in only - -- one controller (Nvidia Shield) being supported, digital triggers are also - -- not supported; lifecycle management (especially surface loss) is also - -- complicated. - include("third_party/SDL2.lua") - end - - -- Disable treating warnings as fatal errors for all third party projects, as - -- well as other things relevant only to Xenia itself. - for _, prj in ipairs(premake.api.scope.current.solution.projects) do - project(prj.name) - removefiles({ - "src/xenia/base/app_win32.manifest" - }) - removefatalwarnings("All") - - filter({"platforms:Linux", "configurations:Checked"}) - buildoptions({ - "-fsanitize=undefined", - }) - linkoptions({ - "-fsanitize=undefined", - }) - filter({}) - - -- Add POSIX feature test macros for FFmpeg on Linux - if prj.name == "libavutil" or prj.name == "libavcodec" or prj.name == "libavformat" then - filter({"platforms:Linux"}) - defines({ - "_GNU_SOURCE", - "_POSIX_C_SOURCE=200809L", - "_XOPEN_SOURCE=700", - }) - filter({}) - end - - -- Suppress warnings for third_party modules on Windows - filter({"platforms:Windows"}) - if string.startswith(prj.name, "third_party") or - prj.name == "aes_128" or - prj.name == "capstone" or - prj.name == "dxbc" or - prj.name == "discord-rpc" or - prj.name == "cxxopts" or - prj.name == "tomlplusplus" or - prj.name == "FFmpeg" or - prj.name == "fmt" or - prj.name == "glslang-spirv" or - prj.name == "imgui" or - prj.name == "mspack" or - prj.name == "snappy" or - prj.name == "xxhash" or - prj.name == "zarchive" or - prj.name == "zstd" or - prj.name == "zlib-ng" or - prj.name == "pugixml" or - prj.name == "libusb" or - prj.name == "SDL2" then - buildoptions({ - "/W0", -- Disable all warnings for third_party code - }) - end - filter({}) - end - - include("src/xenia") - include("src/xenia/app") - include("src/xenia/app/discord") - include("src/xenia/apu") - include("src/xenia/apu/nop") - include("src/xenia/base") - include("src/xenia/cpu") - include("src/xenia/cpu/backend/x64") - include("src/xenia/debug/ui") - include("src/xenia/gpu") - include("src/xenia/gpu/null") - include("src/xenia/gpu/vulkan") - include("src/xenia/hid") - include("src/xenia/hid/nop") - include("src/xenia/hid/skylander") - include("src/xenia/kernel") - include("src/xenia/patcher") - include("src/xenia/ui") - include("src/xenia/ui/vulkan") - include("src/xenia/vfs") - - if not os.istarget("android") then - include("src/xenia/apu/sdl") - include("src/xenia/helper/sdl") - include("src/xenia/hid/sdl") - end - - if os.istarget("linux") then - include("src/xenia/apu/alsa") - end - - if os.istarget("windows") then - include("src/xenia/apu/xaudio2") - include("src/xenia/debug/gdb") -- Needs socket support for other systems. - include("src/xenia/gpu/d3d12") - include("src/xenia/hid/winkey") - include("src/xenia/hid/xinput") - include("src/xenia/ui/d3d12") - end diff --git a/src/xenia/CMakeLists.txt b/src/xenia/CMakeLists.txt new file mode 100644 index 000000000..255df5549 --- /dev/null +++ b/src/xenia/CMakeLists.txt @@ -0,0 +1,46 @@ +# xenia-core: the loose .h/.cc files directly under src/xenia/ (emulator, +# kernel_state, etc.) that aren't part of any specific submodule. +add_library(xenia-core STATIC) +file(GLOB _core_sources + "${CMAKE_CURRENT_SOURCE_DIR}/*.h" + "${CMAKE_CURRENT_SOURCE_DIR}/*.cc" +) +target_sources(xenia-core PRIVATE ${_core_sources}) +target_link_libraries(xenia-core PUBLIC fmt xenia-base) +xe_target_defaults(xenia-core) + +add_subdirectory(base) +add_subdirectory(cpu) +add_subdirectory(cpu/backend/x64) +add_subdirectory(apu) +add_subdirectory(apu/nop) +add_subdirectory(apu/sdl) +add_subdirectory(gpu) +add_subdirectory(gpu/null) +add_subdirectory(gpu/vulkan) +add_subdirectory(helper/sdl) +add_subdirectory(hid) +add_subdirectory(hid/nop) +add_subdirectory(hid/sdl) +add_subdirectory(hid/skylander) +add_subdirectory(kernel) +add_subdirectory(patcher) +add_subdirectory(ui) +add_subdirectory(ui/vulkan) +add_subdirectory(vfs) +add_subdirectory(debug/ui) +add_subdirectory(app/discord) +add_subdirectory(app) + +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + add_subdirectory(apu/alsa) +endif() + +if(WIN32) + add_subdirectory(apu/xaudio2) + add_subdirectory(debug/gdb) + add_subdirectory(gpu/d3d12) + add_subdirectory(hid/winkey) + add_subdirectory(hid/xinput) + add_subdirectory(ui/d3d12) +endif() diff --git a/src/xenia/app/CMakeLists.txt b/src/xenia/app/CMakeLists.txt new file mode 100644 index 000000000..05586b658 --- /dev/null +++ b/src/xenia/app/CMakeLists.txt @@ -0,0 +1,172 @@ +if(WIN32) + add_executable(xenia-app WIN32) +else() + add_executable(xenia-app) +endif() + +set_target_properties(xenia-app PROPERTIES OUTPUT_NAME "xenia_edge") + +target_sources(xenia-app PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/xenia_main.cc +) + +xe_platform_sources(xenia-app ${CMAKE_CURRENT_SOURCE_DIR}) + +# Qt owns the windowed main entry point; one implementation is shared +# across platforms. +target_sources(xenia-app PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/ui/windowed_app_main_qt.cc +) + +if(WIN32) + target_sources(xenia-app PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/main_init_win.cc + ${CMAKE_CURRENT_SOURCE_DIR}/main_resources.rc + ${PROJECT_SOURCE_DIR}/src/xenia/base/app_win32.manifest + ) + # main_init runs the AVX feature check — it must itself not use AVX. + set_source_files_properties( + ${PROJECT_SOURCE_DIR}/src/xenia/base/main_init_win.cc + PROPERTIES COMPILE_OPTIONS "/arch:SSE2" + ) + # WIN32 executable defaults to /SUBSYSTEM:WINDOWS; override to CONSOLE + # in Debug so stdout/stderr reach an attached terminal. /ENTRY points + # at the Qt-style main() rather than WinMain. + target_link_options(xenia-app PRIVATE + $<$:/SUBSYSTEM:CONSOLE> + /ENTRY:mainCRTStartup + ) +else() + target_sources(xenia-app PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/main_init_posix.cc + ) + if(NOT MSVC) + set_source_files_properties( + ${PROJECT_SOURCE_DIR}/src/xenia/base/main_init_posix.cc + PROPERTIES COMPILE_OPTIONS "-msse2;-mno-avx" + ) + endif() +endif() + +target_compile_definitions(xenia-app PRIVATE + XBYAK_NO_OP_NAMES + XBYAK_ENABLE_OMITTED_OPERAND +) + +target_link_libraries(xenia-app PRIVATE + xenia-apu + xenia-apu-nop + xenia-base + xenia-core + xenia-cpu + xenia-gpu + xenia-gpu-null + xenia-gpu-vulkan + xenia-hid + xenia-hid-nop + xenia-kernel + xenia-patcher + xenia-ui + xenia-ui-vulkan + xenia-vfs + aes_128 + capstone + fmt + dxbc + discord-rpc + glslang-spirv + imgui + libavcodec + libavutil + mspack + snappy + xxhash + xenia-app-discord + xenia-apu-sdl + xenia-debug-ui + xenia-helper-sdl + xenia-hid-sdl +) + +if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64") + target_link_libraries(xenia-app PRIVATE xenia-cpu-backend-x64) +endif() + +if(WIN32) + target_link_libraries(xenia-app PRIVATE + xenia-apu-xaudio2 + xenia-debug-gdb + xenia-gpu-d3d12 + xenia-hid-winkey + xenia-hid-xinput + xenia-ui-d3d12 + ) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_link_libraries(xenia-app PRIVATE + xenia-apu-alsa + X11 + xcb + X11-xcb + SDL2 + ) +endif() + +xe_target_defaults(xenia-app) + +# ============================================================================== +# Post-build: Qt deployment and runtime asset copy +# ============================================================================== + +set(_edge_assets_font_src "${PROJECT_SOURCE_DIR}/assets/font") +set(_edge_optimized_src "${PROJECT_SOURCE_DIR}/.data_repos/optimized-settings/settings") +set(_edge_game_patches_src "${PROJECT_SOURCE_DIR}/.data_repos/game-patches/patches") + +# windeployqt always deploys --release DLLs. All our configs link +# release Qt (root CMakeLists maps Debug/Checked/Valgrind imported +# configs to Release), so deploying Qt6Cored.dll would pull in the +# debug CRT and corrupt Qt/STL objects at runtime. +if(WIN32) + set(XE_QT_DIR "$ENV{QT_DIR}") + if(XE_QT_DIR AND EXISTS "${XE_QT_DIR}/bin/windeployqt.exe") + add_custom_command(TARGET xenia-app POST_BUILD + COMMAND "${XE_QT_DIR}/bin/windeployqt.exe" + --release + --no-translations + --no-system-d3d-compiler + --no-opengl-sw + --no-compiler-runtime + "$" + VERBATIM + ) + endif() +endif() + +# Stage runtime assets (fonts, game patches, optimized settings) next to +# the executable. Same layout on Windows and Linux. +add_custom_command(TARGET xenia-app POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "$/optimized_settings" + COMMAND ${CMAKE_COMMAND} -E make_directory "$/game_patches" + COMMAND ${CMAKE_COMMAND} -E make_directory "$/assets/font" + VERBATIM +) +if(EXISTS "${_edge_optimized_src}") + add_custom_command(TARGET xenia-app POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${_edge_optimized_src}" "$/optimized_settings" + VERBATIM + ) +endif() +if(EXISTS "${_edge_game_patches_src}") + add_custom_command(TARGET xenia-app POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${_edge_game_patches_src}" "$/game_patches" + VERBATIM + ) +endif() +if(EXISTS "${_edge_assets_font_src}") + add_custom_command(TARGET xenia-app POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${_edge_assets_font_src}" "$/assets/font" + VERBATIM + ) +endif() diff --git a/src/xenia/app/discord/CMakeLists.txt b/src/xenia/app/discord/CMakeLists.txt new file mode 100644 index 000000000..5f7adb86b --- /dev/null +++ b/src/xenia/app/discord/CMakeLists.txt @@ -0,0 +1,9 @@ +add_library(xenia-app-discord STATIC + ${CMAKE_CURRENT_SOURCE_DIR}/discord_presence.cc + ${CMAKE_CURRENT_SOURCE_DIR}/discord_presence.h +) +target_include_directories(xenia-app-discord PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/discord-rpc/src +) +target_link_libraries(xenia-app-discord PUBLIC discord-rpc) +xe_target_defaults(xenia-app-discord) diff --git a/src/xenia/app/discord/premake5.lua b/src/xenia/app/discord/premake5.lua deleted file mode 100644 index 13e82b5f0..000000000 --- a/src/xenia/app/discord/premake5.lua +++ /dev/null @@ -1,18 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-app-discord") - uuid("d14c0885-22d2-40de-ab28-7b234ef2b949") - kind("StaticLib") - language("C++") - links({ - "discord-rpc" - }) - includedirs({ - project_root.."/third_party/discord-rpc/src" - }) - files({ - "discord_presence.cc", - "discord_presence.h" - }) diff --git a/src/xenia/app/emulator_window.cc b/src/xenia/app/emulator_window.cc index dae171c6c..22af98563 100644 --- a/src/xenia/app/emulator_window.cc +++ b/src/xenia/app/emulator_window.cc @@ -125,8 +125,8 @@ #include "xenia/ui/virtual_key.h" #include "xenia/ui/window_qt.h" -// Autogenerated by `xb premake`. -#include "build/version.h" +// version.h is autogenerated by xenia-build.py into the CMake binary dir. +#include "version.h" DECLARE_bool(debug); diff --git a/src/xenia/app/premake5.lua b/src/xenia/app/premake5.lua deleted file mode 100644 index d157e7fd2..000000000 --- a/src/xenia/app/premake5.lua +++ /dev/null @@ -1,211 +0,0 @@ -project_root = "../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-app") - uuid("d7e98620-d007-4ad8-9dbd-b47c8853a17f") - language("C++") - links({ - "xenia-apu", - "xenia-apu-nop", - "xenia-base", - "xenia-core", - "xenia-cpu", - "xenia-gpu", - "xenia-gpu-null", - "xenia-gpu-vulkan", - "xenia-hid", - "xenia-hid-nop", - "xenia-kernel", - "xenia-patcher", - "xenia-ui", - "xenia-ui-vulkan", - "xenia-vfs", - }) - links({ - "aes_128", - "capstone", - "fmt", - "dxbc", - "discord-rpc", - "glslang-spirv", - "imgui", - "libavcodec", - "libavutil", - "mspack", - "snappy", - "xxhash", - }) - defines({ - "XBYAK_NO_OP_NAMES", - "XBYAK_ENABLE_OMITTED_OPERAND", - }) - apu_transitive_deps() - local_platform_files() - files({ - "../base/main_init_"..platform_suffix..".cc", - "../ui/windowed_app_main_qt.cc", - }) - - resincludedirs({ - project_root, - }) - - filter(SINGLE_LIBRARY_FILTER) - -- Unified library containing all apps as StaticLibs, not just the main - -- emulator windowed app. - kind("SharedLib") - if enableMiscSubprojects then - links({ - "xenia-gpu-vulkan-trace-viewer", - "xenia-hid-demo", - "xenia-ui-window-vulkan-demo", - }) - end - filter(NOT_SINGLE_LIBRARY_FILTER) - kind("WindowedApp") - filter({NOT_SINGLE_LIBRARY_FILTER, "platforms:Windows", "configurations:Debug"}) - kind("ConsoleApp") - - -- `targetname` is broken if building from Gradle, works only for toggling the - -- `lib` prefix, as Gradle uses LOCAL_MODULE_FILENAME, not a derivative of - -- LOCAL_MODULE, to specify the targets to build when executing ndk-build. - filter("platforms:not Android-*") - targetname("xenia_edge") - - filter("architecture:x86_64") - links({ - "xenia-cpu-backend-x64", - }) - - -- TODO(Triang3l): The emulator itself on Android. - filter("platforms:not Android-*") - files({ - "xenia_main.cc", - }) - - filter("platforms:Windows") - files({ - "main_resources.rc", - }) - linkoptions({"/ENTRY:mainCRTStartup"}) - - filter({"architecture:x86_64", "files:../base/main_init_"..platform_suffix..".cc"}) - vectorextensions("SSE2") -- Disable AVX for main_init_win.cc so our AVX check doesn't use AVX instructions. - - filter("platforms:not Android-*") - links({ - "xenia-app-discord", - "xenia-apu-sdl", - -- TODO(Triang3l): CPU debugger on Android. - "xenia-debug-ui", - "xenia-helper-sdl", - "xenia-hid-sdl", - }) - - filter("platforms:Linux") - links({ - "xenia-apu-alsa", - "X11", - "xcb", - "X11-xcb", - "SDL2", - }) - - filter("platforms:Windows") - links({ - "xenia-apu-xaudio2", - "xenia-debug-gdb", - "xenia-gpu-d3d12", - "xenia-hid-winkey", - "xenia-hid-xinput", - "xenia-ui-d3d12", - }) - - filter("platforms:Windows") - - if enableMiscSubprojects then - filter({"platforms:Windows", SINGLE_LIBRARY_FILTER}) - links({ - "xenia-gpu-d3d12-trace-viewer", - "xenia-ui-window-d3d12-demo", - }) - end - - filter("platforms:Windows") - -- Only create the .user file if it doesn't already exist. - local user_file = project_root.."/build/xenia-app.vcxproj.user" - if not os.isfile(user_file) then - debugdir(project_root) - end - - -- Run windeployqt as post-build event to copy Qt DLLs - filter({"platforms:Windows", "configurations:Debug or Checked"}) - local qt_dir = os.getenv("QT_DIR") - if qt_dir then - local windeployqt = path.translate(path.join(qt_dir, "bin", "windeployqt.exe"), "\\") - postbuildcommands { - 'if exist "' .. windeployqt .. '" "' .. windeployqt .. '" --debug --no-translations --no-system-d3d-compiler --no-opengl-sw --no-compiler-runtime "$(TargetPath)"' - } - end - - filter({"platforms:Windows", "configurations:Release"}) - local qt_dir = os.getenv("QT_DIR") - if qt_dir then - local windeployqt = path.translate(path.join(qt_dir, "bin", "windeployqt.exe"), "\\") - postbuildcommands { - 'if exist "' .. windeployqt .. '" "' .. windeployqt .. '" --release --no-translations --no-system-d3d-compiler --no-opengl-sw --no-compiler-runtime "$(TargetPath)"' - } - end - - -- Copy optimized-settings files (TOML or JSON) next to executable - filter("platforms:Windows") - -- Use absolute path to avoid issues with relative paths - local optimized_settings_src = path.translate(path.getabsolute(path.join(project_root, ".data_repos", "optimized-settings", "settings")), "\\") - postbuildcommands { - 'if not exist "$(TargetDir)optimized_settings" mkdir "$(TargetDir)optimized_settings"', - 'if exist "' .. optimized_settings_src .. '\\*.json" xcopy /I /Y /Q "' .. optimized_settings_src .. '\\*.json" "$(TargetDir)optimized_settings\\"', - 'if exist "' .. optimized_settings_src .. '\\*.toml" xcopy /I /Y /Q "' .. optimized_settings_src .. '\\*.toml" "$(TargetDir)optimized_settings\\"' - } - - -- Copy game-patches TOML files next to executable - filter("platforms:Windows") - local game_patches_src = path.translate(path.getabsolute(path.join(project_root, ".data_repos", "game-patches", "patches")), "\\") - postbuildcommands { - 'if not exist "$(TargetDir)game_patches" mkdir "$(TargetDir)game_patches"', - 'xcopy /I /Y /Q "' .. game_patches_src .. '\\*.toml" "$(TargetDir)game_patches\\"' - } - - -- Copy assets/font next to executable - filter("platforms:Windows") - local assets_font_src = path.translate(path.getabsolute(path.join(project_root, "assets", "font")), "\\") - postbuildcommands { - 'if not exist "$(TargetDir)assets\\font" mkdir "$(TargetDir)assets\\font"', - 'xcopy /I /Y /Q "' .. assets_font_src .. '\\*.*" "$(TargetDir)assets\\font\\"' - } - - filter("platforms:Linux") - local optimized_settings_src = path.getabsolute(path.join(project_root, ".data_repos", "optimized-settings", "settings")) - local optimized_settings_dst = path.getabsolute(path.join(project_root, "build", "bin", "Linux")) .. "/%{cfg.buildcfg}/optimized_settings" - postbuildcommands { - '{MKDIR} ' .. optimized_settings_dst, - '{COPY} ' .. optimized_settings_src .. '/*.json ' .. optimized_settings_dst .. ' 2>/dev/null || true', - '{COPY} ' .. optimized_settings_src .. '/*.toml ' .. optimized_settings_dst .. ' 2>/dev/null || true' - } - - filter("platforms:Linux") - local game_patches_src = path.getabsolute(path.join(project_root, ".data_repos", "game-patches", "patches")) - local game_patches_dst = path.getabsolute(path.join(project_root, "build", "bin", "Linux")) .. "/%{cfg.buildcfg}/game_patches" - postbuildcommands { - '{MKDIR} ' .. game_patches_dst, - '{COPY} ' .. game_patches_src .. '/*.toml ' .. game_patches_dst - } - - -- Copy assets/font next to executable - filter("platforms:Linux") - local assets_font_src = path.getabsolute(path.join(project_root, "assets", "font")) - local assets_font_dst = path.getabsolute(path.join(project_root, "build", "bin", "Linux")) .. "/%{cfg.buildcfg}/assets/font" - postbuildcommands { - '{MKDIR} ' .. assets_font_dst, - '{COPY} ' .. assets_font_src .. '/* ' .. assets_font_dst - } diff --git a/src/xenia/apu/CMakeLists.txt b/src/xenia/apu/CMakeLists.txt new file mode 100644 index 000000000..456c68fb0 --- /dev/null +++ b/src/xenia/apu/CMakeLists.txt @@ -0,0 +1,13 @@ +add_library(xenia-apu STATIC) +xe_platform_sources(xenia-apu ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(xenia-apu PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/FFmpeg + ${PROJECT_SOURCE_DIR}/third_party/ffmpeg-xenia +) +target_link_libraries(xenia-apu PUBLIC libavcodec libavutil libavformat xenia-base) +# AudioMediaPlayer instantiates SDLAudioDriver directly on Linux, so the +# SDL chain is a transitive dependency of xenia-apu there. +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_link_libraries(xenia-apu PUBLIC xenia-helper-sdl SDL2) +endif() +xe_target_defaults(xenia-apu) diff --git a/src/xenia/apu/alsa/CMakeLists.txt b/src/xenia/apu/alsa/CMakeLists.txt new file mode 100644 index 000000000..ee4662ed8 --- /dev/null +++ b/src/xenia/apu/alsa/CMakeLists.txt @@ -0,0 +1,7 @@ +add_library(xenia-apu-alsa STATIC) +xe_platform_sources(xenia-apu-alsa ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(xenia-apu-alsa PUBLIC xenia-apu xenia-base) +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_link_libraries(xenia-apu-alsa PRIVATE asound pthread) +endif() +xe_target_defaults(xenia-apu-alsa) diff --git a/src/xenia/apu/alsa/premake5.lua b/src/xenia/apu/alsa/premake5.lua deleted file mode 100644 index cad0cdc61..000000000 --- a/src/xenia/apu/alsa/premake5.lua +++ /dev/null @@ -1,18 +0,0 @@ -group("src") -project("xenia-apu-alsa") - uuid("8c2e1340-f847-4f9a-8b2e-5d8c1b7a8f9e") - kind("StaticLib") - language("C++") - links({ - "xenia-apu", - "xenia-base", - }) - defines({ - }) - local_platform_files() - - filter("platforms:Linux") - links({ - "asound", - "pthread", - }) diff --git a/src/xenia/apu/nop/CMakeLists.txt b/src/xenia/apu/nop/CMakeLists.txt new file mode 100644 index 000000000..febc15c28 --- /dev/null +++ b/src/xenia/apu/nop/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(xenia-apu-nop STATIC) +xe_platform_sources(xenia-apu-nop ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(xenia-apu-nop PUBLIC xenia-base xenia-apu) +xe_target_defaults(xenia-apu-nop) diff --git a/src/xenia/apu/nop/premake5.lua b/src/xenia/apu/nop/premake5.lua deleted file mode 100644 index 2b5435229..000000000 --- a/src/xenia/apu/nop/premake5.lua +++ /dev/null @@ -1,13 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-apu-nop") - uuid("f37dbf3a-d200-4cc0-83f0-f801b1bdd862") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - "xenia-apu", - }) - local_platform_files() diff --git a/src/xenia/apu/premake5.lua b/src/xenia/apu/premake5.lua deleted file mode 100644 index 0b0b297e2..000000000 --- a/src/xenia/apu/premake5.lua +++ /dev/null @@ -1,26 +0,0 @@ -project_root = "../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-apu") - uuid("f4df01f0-50e4-4c67-8f54-61660696cc79") - kind("StaticLib") - language("C++") - links({ - "libavcodec", - "libavutil", - "libavformat", - "xenia-base", - }) - includedirs({ - project_root.."/third_party/FFmpeg", - project_root.."/third_party/ffmpeg-xenia", - }) - filter("platforms:Linux") - links({ - "xenia-helper-sdl", - "SDL2", - }) - sdl2_include() - filter({}) - local_platform_files() diff --git a/src/xenia/apu/sdl/CMakeLists.txt b/src/xenia/apu/sdl/CMakeLists.txt new file mode 100644 index 000000000..3052fde6c --- /dev/null +++ b/src/xenia/apu/sdl/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(xenia-apu-sdl STATIC) +xe_platform_sources(xenia-apu-sdl ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(xenia-apu-sdl PUBLIC xenia-apu xenia-base xenia-helper-sdl SDL2) +xe_target_defaults(xenia-apu-sdl) diff --git a/src/xenia/apu/sdl/premake5.lua b/src/xenia/apu/sdl/premake5.lua deleted file mode 100644 index 77bf00131..000000000 --- a/src/xenia/apu/sdl/premake5.lua +++ /dev/null @@ -1,16 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-apu-sdl") - uuid("153b4e8b-813a-40e6-9366-4b51abc73c45") - kind("StaticLib") - language("C++") - links({ - "xenia-apu", - "xenia-base", - "xenia-helper-sdl", - "SDL2", - }) - local_platform_files() - sdl2_include() diff --git a/src/xenia/apu/xaudio2/CMakeLists.txt b/src/xenia/apu/xaudio2/CMakeLists.txt new file mode 100644 index 000000000..c598ccc5a --- /dev/null +++ b/src/xenia/apu/xaudio2/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(xenia-apu-xaudio2 STATIC) +xe_platform_sources(xenia-apu-xaudio2 ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(xenia-apu-xaudio2 PUBLIC xenia-base xenia-apu) +xe_target_defaults(xenia-apu-xaudio2) diff --git a/src/xenia/apu/xaudio2/premake5.lua b/src/xenia/apu/xaudio2/premake5.lua deleted file mode 100644 index 8444d05b1..000000000 --- a/src/xenia/apu/xaudio2/premake5.lua +++ /dev/null @@ -1,13 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-apu-xaudio2") - uuid("7a54a497-24d9-4c0e-a013-8507a04231f9") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - "xenia-apu", - }) - local_platform_files() diff --git a/src/xenia/base/CMakeLists.txt b/src/xenia/base/CMakeLists.txt new file mode 100644 index 000000000..b2e8c99fd --- /dev/null +++ b/src/xenia/base/CMakeLists.txt @@ -0,0 +1,18 @@ +add_library(xenia-base STATIC) +xe_platform_sources(xenia-base ${CMAKE_CURRENT_SOURCE_DIR}) +# Exclude console_app_main and main_init files +file(GLOB _base_exclude + "${CMAKE_CURRENT_SOURCE_DIR}/console_app_main_*.cc" + "${CMAKE_CURRENT_SOURCE_DIR}/main_init_*.cc" +) +get_target_property(_base_srcs xenia-base SOURCES) +if(_base_exclude AND _base_srcs) + list(REMOVE_ITEM _base_srcs ${_base_exclude}) + set_target_properties(xenia-base PROPERTIES SOURCES "${_base_srcs}") +endif() +target_link_libraries(xenia-base PUBLIC fmt) +xe_target_defaults(xenia-base) + +if(XENIA_BUILD_TESTS) + add_subdirectory(testing) +endif() diff --git a/src/xenia/base/main_win.cc b/src/xenia/base/main_win.cc index 98e84a071..5df9b4b1d 100644 --- a/src/xenia/base/main_win.cc +++ b/src/xenia/base/main_win.cc @@ -15,8 +15,8 @@ #include "xenia/base/platform_win.h" #include "xenia/base/string.h" -// Autogenerated by `xb premake`. -#include "build/version.h" +// version.h is autogenerated by xenia-build.py into the CMake binary dir. +#include "version.h" // For RequestWin32MMCSS. #include diff --git a/src/xenia/base/premake5.lua b/src/xenia/base/premake5.lua deleted file mode 100644 index a4ed45935..000000000 --- a/src/xenia/base/premake5.lua +++ /dev/null @@ -1,22 +0,0 @@ -project_root = "../../.." -include(project_root.."/tools/build") - -project("xenia-base") - uuid("aeadaf22-2b20-4941-b05f-a802d5679c11") - kind("StaticLib") - language("C++") - links({ - "fmt", - }) - local_platform_files() - removefiles({ - "console_app_main_*.cc", - "main_init_*.cc", - }) - files({ - "debug_visualizers.natvis", - }) - -if enableTests then - include("testing") -end diff --git a/src/xenia/base/testing/CMakeLists.txt b/src/xenia/base/testing/CMakeLists.txt new file mode 100644 index 000000000..20491c344 --- /dev/null +++ b/src/xenia/base/testing/CMakeLists.txt @@ -0,0 +1,3 @@ +xe_test_suite(xenia-base-tests ${CMAKE_CURRENT_SOURCE_DIR} + LINKS fmt xenia-base xenia-core xenia-cpu xenia-gpu +) diff --git a/src/xenia/base/testing/premake5.lua b/src/xenia/base/testing/premake5.lua deleted file mode 100644 index 371606537..000000000 --- a/src/xenia/base/testing/premake5.lua +++ /dev/null @@ -1,12 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -test_suite("xenia-base-tests", project_root, ".", { - links = { - "fmt", - "xenia-base", - "xenia-core", - "xenia-cpu", - "xenia-gpu", - }, -}) diff --git a/src/xenia/cpu/CMakeLists.txt b/src/xenia/cpu/CMakeLists.txt new file mode 100644 index 000000000..6637bdad9 --- /dev/null +++ b/src/xenia/cpu/CMakeLists.txt @@ -0,0 +1,17 @@ +add_library(xenia-cpu STATIC) +xe_platform_sources(xenia-cpu ${CMAKE_CURRENT_SOURCE_DIR}) +xe_platform_sources(xenia-cpu ${CMAKE_CURRENT_SOURCE_DIR}/backend) +xe_platform_sources(xenia-cpu ${CMAKE_CURRENT_SOURCE_DIR}/compiler) +xe_platform_sources(xenia-cpu ${CMAKE_CURRENT_SOURCE_DIR}/compiler/passes) +xe_platform_sources(xenia-cpu ${CMAKE_CURRENT_SOURCE_DIR}/hir) +xe_platform_sources(xenia-cpu ${CMAKE_CURRENT_SOURCE_DIR}/ppc) +target_include_directories(xenia-cpu PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/llvm/include +) +target_link_libraries(xenia-cpu PUBLIC xenia-base mspack) +xe_target_defaults(xenia-cpu) + +if(XENIA_BUILD_TESTS) + add_subdirectory(testing) + add_subdirectory(ppc/testing) +endif() diff --git a/src/xenia/cpu/backend/a64/premake5.lua b/src/xenia/cpu/backend/a64/premake5.lua deleted file mode 100644 index 2ff243630..000000000 --- a/src/xenia/cpu/backend/a64/premake5.lua +++ /dev/null @@ -1,47 +0,0 @@ -project_root = "../../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-cpu-backend-a64") - uuid("495f3f3e-f5e8-489a-bd0f-289d0495bc08") - - -- Apply settings only for ARM64 - filter("architecture:ARM64") - kind("StaticLib") - language("C++") - cppdialect("C++20") - links({ - "fmt", - "xenia-base", - "xenia-cpu", - }) - sysincludedirs({ - project_root.."/third_party/oaknut/include", - }) - defines({ - }) - - -- Add oaknut as external include to suppress warnings - filter("toolset:clang or toolset:gcc") - externalincludedirs({ - project_root.."/third_party/oaknut/include", - }) - -- Also explicitly disable the warning for third-party code - buildoptions({ - "-Wno-shorten-64-to-32", - }) - filter("toolset:msc") - includedirs({ - project_root.."/third_party/oaknut/include", - }) - filter("architecture:ARM64") - - -- Include only ARM64-specific files - local_platform_files() - - -- For non-ARM64 architectures, create an empty static lib - filter("architecture:x86_64") - kind("None") - - -- Reset filter - filter({}) diff --git a/src/xenia/cpu/backend/x64/CMakeLists.txt b/src/xenia/cpu/backend/x64/CMakeLists.txt new file mode 100644 index 000000000..b7ec45902 --- /dev/null +++ b/src/xenia/cpu/backend/x64/CMakeLists.txt @@ -0,0 +1,18 @@ +add_library(xenia-cpu-backend-x64 STATIC) +xe_platform_sources(xenia-cpu-backend-x64 ${CMAKE_CURRENT_SOURCE_DIR}) +target_compile_definitions(xenia-cpu-backend-x64 PRIVATE + CAPSTONE_X86_ATT_DISABLE + CAPSTONE_HAS_X86 + CAPSTONE_USE_SYS_DYN_MEM + XBYAK_NO_OP_NAMES + XBYAK_ENABLE_OMITTED_OPERAND +) +# Optional VTune support +if(EXISTS "${PROJECT_SOURCE_DIR}/third_party/vtune") + target_compile_definitions(xenia-cpu-backend-x64 PRIVATE ENABLE_VTUNE=1) +endif() +target_include_directories(xenia-cpu-backend-x64 PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/capstone/include +) +target_link_libraries(xenia-cpu-backend-x64 PUBLIC capstone fmt xenia-base xenia-cpu) +xe_target_defaults(xenia-cpu-backend-x64) diff --git a/src/xenia/cpu/backend/x64/premake5.lua b/src/xenia/cpu/backend/x64/premake5.lua deleted file mode 100644 index ac9c7f80d..000000000 --- a/src/xenia/cpu/backend/x64/premake5.lua +++ /dev/null @@ -1,30 +0,0 @@ -project_root = "../../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-cpu-backend-x64") - uuid("7d8d5dce-4696-4197-952a-09506f725afe") - kind("StaticLib") - language("C++") - links({ - "capstone", - "fmt", - "xenia-base", - "xenia-cpu", - }) - defines({ - "CAPSTONE_X86_ATT_DISABLE", - "CAPSTONE_HAS_X86", - "CAPSTONE_USE_SYS_DYN_MEM", - "XBYAK_NO_OP_NAMES", - "XBYAK_ENABLE_OMITTED_OPERAND", - }) - -- Enable VTune, if it's installed. - if os.isdir(project_root.."/third_party/vtune") then - defines { "ENABLE_VTUNE=1" } - end - - includedirs({ - project_root.."/third_party/capstone/include", - }) - local_platform_files() diff --git a/src/xenia/cpu/ppc/testing/CMakeLists.txt b/src/xenia/cpu/ppc/testing/CMakeLists.txt new file mode 100644 index 000000000..6eb2e75b2 --- /dev/null +++ b/src/xenia/cpu/ppc/testing/CMakeLists.txt @@ -0,0 +1,41 @@ +if(NOT XENIA_BUILD_TESTS) + return() +endif() + +add_executable(xenia-cpu-ppc-tests + ${CMAKE_CURRENT_SOURCE_DIR}/ppc_testing_main.cc +) + +if(WIN32) + target_sources(xenia-cpu-ppc-tests PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_win.cc) +else() + target_sources(xenia-cpu-ppc-tests PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_posix.cc) +endif() + +# Attach the PPC assembly test inputs to the target for IDE visibility; +# they're test data, not compiled code. +file(GLOB _ppc_asm "${CMAKE_CURRENT_SOURCE_DIR}/*.s") +target_sources(xenia-cpu-ppc-tests PRIVATE ${_ppc_asm}) +set_source_files_properties(${_ppc_asm} PROPERTIES HEADER_FILE_ONLY TRUE) + +target_link_libraries(xenia-cpu-ppc-tests PRIVATE + xenia-apu xenia-apu-nop + xenia-base xenia-core xenia-cpu + xenia-gpu xenia-gpu-null + xenia-hid xenia-hid-nop + xenia-kernel xenia-patcher xenia-ui xenia-vfs + capstone fmt imgui mspack +) + +if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64") + target_link_libraries(xenia-cpu-ppc-tests PRIVATE xenia-cpu-backend-x64) +endif() + +# See src/xenia/apu/CMakeLists.txt — xenia-apu requires xenia-apu-sdl on Linux. +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_link_libraries(xenia-cpu-ppc-tests PRIVATE xenia-apu-sdl) +endif() + +xe_target_defaults(xenia-cpu-ppc-tests) diff --git a/src/xenia/cpu/ppc/testing/premake5.lua b/src/xenia/cpu/ppc/testing/premake5.lua deleted file mode 100644 index 02f6d56b7..000000000 --- a/src/xenia/cpu/ppc/testing/premake5.lua +++ /dev/null @@ -1,97 +0,0 @@ -project_root = "../../../../.." -include(project_root.."/tools/build") - -group("tests") -project("xenia-cpu-ppc-tests") - uuid("2a57d5ac-4024-4c49-9cd3-aa3a603c2ef8") - kind("ConsoleApp") - language("C++") - links({ - "xenia-apu", - "xenia-apu-nop", - "xenia-base", - "xenia-core", - "xenia-cpu", - "xenia-gpu", - "xenia-gpu-null", - "xenia-hid", - "xenia-hid-nop", - "xenia-kernel", - "xenia-patcher", - "xenia-ui", - "xenia-vfs", - }) - links({ - "capstone", - "fmt", - "imgui", - "mspack", - }) - apu_transitive_deps() - -- Qt is required because xenia-kernel now uses Qt for achievements dialog - filter("platforms:Linux") - local qt_dir = os.getenv("QT_DIR") - if qt_dir then - links({ - "Qt6Core", - "Qt6Gui", - "Qt6Widgets", - }) - end - filter({}) - files({ - "ppc_testing_main.cc", - "../../../base/console_app_main_"..platform_suffix..".cc", - }) - files({ - "*.s", - }) - filter("files:*.s") - flags({ - "ExcludeFromBuild", - }) - filter("architecture:x86_64") - links({ - "xenia-cpu-backend-x64", - }) - filter("platforms:Windows") - debugdir(project_root) - debugargs({ - "2>&1", - "1>scratch/stdout-testing.txt", - }) - - filter({}) - -if ARCH == "ppc64" or ARCH == "powerpc64" then - -project("xenia-cpu-ppc-nativetests") - uuid("E381E8EE-65CD-4D5E-9223-D9C03B2CE78C") - kind("ConsoleApp") - language("C++") - links({ - "fmt", - "xenia-base", - }) - files({ - "ppc_testing_native_main.cc", - "../../../base/console_app_main_"..platform_suffix..".cc", - }) - files({ - "instr_*.s", - "seq_*.s", - }) - filter("files:instr_*.s", "files:seq_*.s") - flags({ - "ExcludeFromBuild", - }) - filter({}) - buildoptions({ - "-Wa,-mregnames", -- Tell GAS to accept register names. - }) - - files({ - "ppc_testing_native_thunks.s", - }) - -end diff --git a/src/xenia/cpu/premake5.lua b/src/xenia/cpu/premake5.lua deleted file mode 100644 index 6c0240c9d..000000000 --- a/src/xenia/cpu/premake5.lua +++ /dev/null @@ -1,27 +0,0 @@ -project_root = "../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-cpu") - uuid("0109c91e-5a04-41ab-9168-0d5187d11298") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - "mspack", - }) - - includedirs({ - project_root.."/third_party/llvm/include", - }) - local_platform_files() - local_platform_files("backend") - local_platform_files("compiler") - local_platform_files("compiler/passes") - local_platform_files("hir") - local_platform_files("ppc") - -if enableTests then - include("testing") - include("ppc/testing") -end diff --git a/src/xenia/cpu/testing/CMakeLists.txt b/src/xenia/cpu/testing/CMakeLists.txt new file mode 100644 index 000000000..a92ed2dda --- /dev/null +++ b/src/xenia/cpu/testing/CMakeLists.txt @@ -0,0 +1,13 @@ +xe_test_suite(xenia-cpu-tests ${CMAKE_CURRENT_SOURCE_DIR} + LINKS + capstone fmt imgui + xenia-apu xenia-base xenia-core xenia-cpu xenia-gpu + xenia-hid-skylander xenia-kernel xenia-ui xenia-patcher +) +if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64" AND TARGET xenia-cpu-tests) + target_link_libraries(xenia-cpu-tests PRIVATE xenia-cpu-backend-x64) +endif() +# xenia-apu pulls in xenia-apu-sdl on Linux (see src/xenia/apu/CMakeLists.txt). +if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND TARGET xenia-cpu-tests) + target_link_libraries(xenia-cpu-tests PRIVATE xenia-apu-sdl) +endif() diff --git a/src/xenia/cpu/testing/premake5.lua b/src/xenia/cpu/testing/premake5.lua deleted file mode 100644 index b9c5896fc..000000000 --- a/src/xenia/cpu/testing/premake5.lua +++ /dev/null @@ -1,32 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -test_suite("xenia-cpu-tests", project_root, ".", { - links = { - "capstone", - "fmt", - "imgui", - "xenia-apu", -- Explicitly link xenia-apu (transitively required by xenia-kernel) - "xenia-base", - "xenia-core", - "xenia-cpu", - "xenia-gpu", - "xenia-hid-skylander", - - -- TODO(benvanik): cut these dependencies? - "xenia-kernel", - "xenia-ui", -- needed by xenia-base - "xenia-patcher", - }, - filtered_links = { - { - filter = 'architecture:x86_64', - links = { - "xenia-cpu-backend-x64", - }, - } - }, -}) - --- xenia-kernel links to xenia-apu, which needs SDL on Linux -apu_transitive_deps() diff --git a/src/xenia/debug/gdb/CMakeLists.txt b/src/xenia/debug/gdb/CMakeLists.txt new file mode 100644 index 000000000..3dadfc0eb --- /dev/null +++ b/src/xenia/debug/gdb/CMakeLists.txt @@ -0,0 +1,10 @@ +add_library(xenia-debug-gdb STATIC) +xe_platform_sources(xenia-debug-gdb ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(xenia-debug-gdb PUBLIC imgui xenia-base xenia-cpu xenia-ui) +if(MSVC) + # Prefer size over speed — the GDB stub isn't performance-critical. + target_compile_options(xenia-debug-gdb PRIVATE + $<$:/Os> + ) +endif() +xe_target_defaults(xenia-debug-gdb) diff --git a/src/xenia/debug/gdb/premake5.lua b/src/xenia/debug/gdb/premake5.lua deleted file mode 100644 index 9e6db656c..000000000 --- a/src/xenia/debug/gdb/premake5.lua +++ /dev/null @@ -1,25 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-debug-gdb") - uuid("9193a274-f4c2-4746-bd85-93fcfc5c3e39") - kind("StaticLib") - language("C++") - links({ - "imgui", - "xenia-base", - "xenia-cpu", - "xenia-ui", - }) - filter({"configurations:Release", "platforms:Windows"}) - buildoptions({ - "/Os", - "/O1" - }) - filter{} - defines({ - }) - includedirs({ - }) - local_platform_files() diff --git a/src/xenia/debug/ui/CMakeLists.txt b/src/xenia/debug/ui/CMakeLists.txt new file mode 100644 index 000000000..8038cae65 --- /dev/null +++ b/src/xenia/debug/ui/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(xenia-debug-ui STATIC) +xe_platform_sources(xenia-debug-ui ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(xenia-debug-ui PUBLIC imgui xenia-base xenia-cpu xenia-ui) +xe_target_defaults(xenia-debug-ui) diff --git a/src/xenia/debug/ui/premake5.lua b/src/xenia/debug/ui/premake5.lua deleted file mode 100644 index 19d48cc2f..000000000 --- a/src/xenia/debug/ui/premake5.lua +++ /dev/null @@ -1,15 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-debug-ui") - uuid("9193a274-f4c2-4746-bd85-93fcfc5c3e38") - kind("StaticLib") - language("C++") - links({ - "imgui", - "xenia-base", - "xenia-cpu", - "xenia-ui", - }) - local_platform_files() diff --git a/src/xenia/gpu/CMakeLists.txt b/src/xenia/gpu/CMakeLists.txt new file mode 100644 index 000000000..bba9cfa95 --- /dev/null +++ b/src/xenia/gpu/CMakeLists.txt @@ -0,0 +1,37 @@ +add_library(xenia-gpu STATIC) +xe_platform_sources(xenia-gpu ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(xenia-gpu PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/Vulkan-Headers/include + ${PROJECT_SOURCE_DIR}/third_party/glslang +) +# Windows: SPIRV-Tools headers come from the Vulkan SDK +if(WIN32 AND DEFINED ENV{VULKAN_SDK}) + target_include_directories(xenia-gpu PRIVATE "$ENV{VULKAN_SDK}/Include") +endif() +target_link_libraries(xenia-gpu PUBLIC dxbc fmt glslang-spirv snappy xxhash xenia-base xenia-ui) +xe_target_defaults(xenia-gpu) + +if(XENIA_BUILD_MISC) + # Shader compiler tool + add_executable(xenia-gpu-shader-compiler + ${CMAKE_CURRENT_SOURCE_DIR}/shader_compiler_main.cc + ) + if(WIN32) + target_sources(xenia-gpu-shader-compiler PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_win.cc) + else() + target_sources(xenia-gpu-shader-compiler PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_posix.cc) + endif() + target_include_directories(xenia-gpu-shader-compiler PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/Vulkan-Headers/include + ${PROJECT_SOURCE_DIR}/third_party/glslang + ) + if(WIN32 AND DEFINED ENV{VULKAN_SDK}) + target_include_directories(xenia-gpu-shader-compiler PRIVATE "$ENV{VULKAN_SDK}/Include") + endif() + target_link_libraries(xenia-gpu-shader-compiler PRIVATE + dxbc fmt glslang-spirv snappy xenia-base xenia-gpu xenia-ui xenia-ui-vulkan + ) + xe_target_defaults(xenia-gpu-shader-compiler) +endif() diff --git a/src/xenia/gpu/d3d12/CMakeLists.txt b/src/xenia/gpu/d3d12/CMakeLists.txt new file mode 100644 index 000000000..b6721e52a --- /dev/null +++ b/src/xenia/gpu/d3d12/CMakeLists.txt @@ -0,0 +1,40 @@ +add_library(xenia-gpu-d3d12 STATIC) +xe_platform_sources(xenia-gpu-d3d12 ${CMAKE_CURRENT_SOURCE_DIR}) +xe_shader_rules_dxbc(xenia-gpu-d3d12 ${CMAKE_CURRENT_SOURCE_DIR}/../shaders) +target_link_libraries(xenia-gpu-d3d12 PUBLIC + fmt xxhash xenia-base xenia-gpu xenia-ui xenia-ui-d3d12 +) +xe_target_defaults(xenia-gpu-d3d12) + +if(XENIA_BUILD_MISC) + add_executable(xenia-gpu-d3d12-trace-viewer WIN32 + ${CMAKE_CURRENT_SOURCE_DIR}/d3d12_trace_viewer_main.cc + ${PROJECT_SOURCE_DIR}/src/xenia/ui/windowed_app_main_qt.cc + ) + target_link_libraries(xenia-gpu-d3d12-trace-viewer PRIVATE + xenia-apu xenia-apu-nop xenia-base xenia-core xenia-cpu + xenia-gpu xenia-gpu-d3d12 xenia-hid xenia-hid-nop xenia-hid-skylander + xenia-kernel xenia-patcher xenia-ui xenia-ui-d3d12 xenia-vfs + aes_128 capstone dxbc fmt imgui libavcodec libavutil mspack snappy xxhash + ) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64") + target_link_libraries(xenia-gpu-d3d12-trace-viewer PRIVATE xenia-cpu-backend-x64) + endif() + xe_target_defaults(xenia-gpu-d3d12-trace-viewer) + + # D3D12 trace dump + add_executable(xenia-gpu-d3d12-trace-dump + ${CMAKE_CURRENT_SOURCE_DIR}/d3d12_trace_dump_main.cc + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_win.cc + ) + target_link_libraries(xenia-gpu-d3d12-trace-dump PRIVATE + xenia-apu xenia-apu-nop xenia-base xenia-core xenia-cpu + xenia-gpu xenia-gpu-d3d12 xenia-hid xenia-hid-nop xenia-hid-skylander + xenia-kernel xenia-patcher xenia-ui xenia-ui-d3d12 xenia-vfs + aes_128 capstone dxbc fmt imgui libavcodec libavutil mspack snappy xxhash + ) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64") + target_link_libraries(xenia-gpu-d3d12-trace-dump PRIVATE xenia-cpu-backend-x64) + endif() + xe_target_defaults(xenia-gpu-d3d12-trace-dump) +endif() diff --git a/src/xenia/gpu/d3d12/premake5.lua b/src/xenia/gpu/d3d12/premake5.lua deleted file mode 100644 index 0ef8f2da0..000000000 --- a/src/xenia/gpu/d3d12/premake5.lua +++ /dev/null @@ -1,130 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-gpu-d3d12") - uuid("c057eae4-e7bb-4113-9a69-1fe07b735c49") - kind("StaticLib") - language("C++") - links({ - "fmt", - "xenia-base", - "xenia-gpu", - "xenia-ui", - "xenia-ui-d3d12", - "xxhash", - }) - local_platform_files() - files({ - "../shaders/bytecode/d3d12_5_1/*.h", - }) - -if enableMiscSubprojects then - group("src") - project("xenia-gpu-d3d12-trace-viewer") - uuid("7b5b9fcb-7bf1-43ff-a774-d4c41c8706be") - single_library_windowed_app_kind() - language("C++") - links({ - "xenia-apu", - "xenia-apu-nop", - "xenia-base", - "xenia-core", - "xenia-cpu", - "xenia-gpu", - "xenia-gpu-d3d12", - "xenia-hid", - "xenia-hid-nop", - "xenia-hid-skylander", - "xenia-kernel", - "xenia-patcher", - "xenia-ui", - "xenia-ui-d3d12", - "xenia-vfs", - }) - links({ - "aes_128", - "capstone", - "dxbc", - "fmt", - "imgui", - "libavcodec", - "libavutil", - "mspack", - "snappy", - "xxhash", - }) - apu_transitive_deps() - files({ - "d3d12_trace_viewer_main.cc", - "../../ui/windowed_app_main_qt.cc", - }) - -- Only create the .user file if it doesn't already exist. - local user_file = project_root.."/build/xenia-gpu-d3d12-trace-viewer.vcxproj.user" - if not os.isfile(user_file) then - debugdir(project_root) - debugargs({ - "2>&1", - "1>scratch/stdout-trace-viewer.txt", - }) - end - - filter("architecture:x86_64") - links({ - "xenia-cpu-backend-x64", - }) - - group("src") - project("xenia-gpu-d3d12-trace-dump") - uuid("686b859c-0046-44c4-a02c-41fc3fb75698") - kind("ConsoleApp") - language("C++") - links({ - "xenia-apu", - "xenia-apu-nop", - "xenia-base", - "xenia-core", - "xenia-cpu", - "xenia-gpu", - "xenia-gpu-d3d12", - "xenia-hid", - "xenia-hid-nop", - "xenia-hid-skylander", - "xenia-kernel", - "xenia-ui", - "xenia-ui-d3d12", - "xenia-vfs", - "xenia-patcher", - }) - links({ - "aes_128", - "capstone", - "dxbc", - "fmt", - "imgui", - "libavcodec", - "libavutil", - "mspack", - "snappy", - "xxhash", - }) - apu_transitive_deps() - files({ - "d3d12_trace_dump_main.cc", - "../../base/console_app_main_"..platform_suffix..".cc", - }) - -- Only create the .user file if it doesn't already exist. - local user_file = project_root.."/build/xenia-gpu-d3d12-trace-dump.vcxproj.user" - if not os.isfile(user_file) then - debugdir(project_root) - debugargs({ - "2>&1", - "1>scratch/stdout-trace-dump.txt", - }) - end - - filter("architecture:x86_64") - links({ - "xenia-cpu-backend-x64", - }) -end \ No newline at end of file diff --git a/src/xenia/gpu/metal/premake5.lua b/src/xenia/gpu/metal/premake5.lua deleted file mode 100644 index d228b8b0f..000000000 --- a/src/xenia/gpu/metal/premake5.lua +++ /dev/null @@ -1,326 +0,0 @@ --- premake5.lua -local project_root = "../../../.." -local metal_converter_libdir = path.join(project_root, "third_party/metal-shader-converter/lib") -local dxilconv_root = path.join(project_root, "third_party/DirectXShaderCompiler") -local dxilconv_libdir_arm64 = path.join(dxilconv_root, "build_dxilconv_macos/lib") -local dxilconv_libdir_x86_64 = - path.join(dxilconv_root, "build_dxilconv_macos_x86_64/lib") -local sdl2_libdir_arm64 = "/opt/homebrew/opt/sdl2/lib" -local sdl2_libdir_x86_64 = "/usr/local/opt/sdl2/lib" -local dxilconv_includes = { - path.join(dxilconv_root, "include"), - path.join(dxilconv_root, "projects/dxilconv/include"), -} - -include(path.join(project_root, "tools/build")) - ----------------------------------------------------------------------- --- GPU backend ------------------------------------------------------- ----------------------------------------------------------------------- - -group("src") -project("xenia-gpu-metal") - uuid("a1b2c3d4-e5f6-7890-abcd-ef1234567890") - kind("StaticLib") - language("C++") - - links { - "xenia-base", - "xenia-gpu", - "xenia-ui", - "fmt", - "metal-cpp", - } - - filter "system:macosx" - files { - "dxbc_to_dxil_converter.cc", - "dxbc_to_dxil_converter.h", - "ir_runtime_impl.mm", - "metal_command_processor.cc", - "metal_command_processor.h", - "metal_geometry_shader.cc", - "metal_geometry_shader.h", - "metal_graphics_system.cc", - "metal_graphics_system.h", - "metal_heap_pool.cc", - "metal_heap_pool.h", - "metal_primitive_processor.cc", - "metal_primitive_processor.h", - "metal_render_target_cache.cc", - "metal_render_target_cache.h", - "metal_shader.cc", - "metal_shader.h", - "metal_shader_cache.cc", - "metal_shader_cache.h", - "metal_shader_converter.cc", - "metal_shader_converter.h", - "metal_shared_memory.cc", - "metal_shared_memory.h", - "metal_texture_cache.cc", - "metal_texture_cache.h", - } - - includedirs { - dxilconv_includes[1], - dxilconv_includes[2], - path.join(project_root, "third_party/metal-shader-converter/include"), - "/usr/local/include/metal_irconverter_runtime" - } - - defines { "METAL_SHADER_CONVERTER_AVAILABLE" } - - libdirs { metal_converter_libdir } - runpathdirs { - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - metal_converter_libdir, - } - linkoptions({ - "-Wl,-rpath,@executable_path/../Frameworks", - "-Wl,-rpath,@loader_path/../Frameworks", - "-Wl,-headerpad_max_install_names", - }) - - links { - "Metal.framework", - "MetalKit.framework", - "metalirconverter", - "dxilconv", - "LLVMDxcSupport", - } - filter {"system:macosx", "architecture:ARM64"} - libdirs { dxilconv_libdir_arm64, sdl2_libdir_arm64 } - runpathdirs { dxilconv_libdir_arm64, sdl2_libdir_arm64 } - filter {"system:macosx", "architecture:x86_64"} - libdirs { dxilconv_libdir_x86_64, sdl2_libdir_x86_64 } - runpathdirs { dxilconv_libdir_x86_64, sdl2_libdir_x86_64 } - removelinks { "LLVMDxcSupport" } - linkoptions { - path.getabsolute(path.join(dxilconv_libdir_x86_64, - "libLLVMDxcSupport.a")), - } - filter "not system:macosx" - removefiles "**" - filter {} - ----------------------------------------------------------------------- --- Trace‑dump utility ----------------------------------------------- ----------------------------------------------------------------------- - -project("xenia-gpu-metal-trace-viewer") - uuid("2f2d0f7a-0c2c-4d6d-9e7a-9fb0b72fb2a1") - single_library_windowed_app_kind() - language("C++") - - links { - "xenia-apu", - "xenia-apu-nop", - "xenia-base", - "xenia-core", - "xenia-cpu", - "xenia-gpu", - "xenia-gpu-metal", - "xenia-hid", - "xenia-hid-nop", - "xenia-kernel", - "xenia-patcher", - "xenia-ui", - "xenia-ui-metal", - "xenia-vfs", - - "aes_128", - "capstone", - "fmt", - "imgui", - "libavcodec", - "libavutil", - "mspack", - "snappy", - "xxhash", - "metal-cpp", - } - - files { - "metal_trace_viewer_main.cc", - } - - -- Use the Qt entrypoint for macOS builds. - local qt_main = path.join("..", "..", "ui", "windowed_app_main_qt.cc") - - filter "system:macosx" - files { qt_main } - filter "not system:macosx" - removefiles "**" - filter {} - - filter "architecture:ARM64" - links { "xenia-cpu-backend-a64" } - - filter "system:macosx" - libdirs { metal_converter_libdir } - runpathdirs { metal_converter_libdir } - includedirs { - dxilconv_includes[1], - dxilconv_includes[2], - path.join(project_root, "third_party/metal-shader-converter/include"), - "/usr/local/include/metal_irconverter_runtime" - } - - defines { "METAL_SHADER_CONVERTER_AVAILABLE" } - - links { - "Cocoa.framework", - "CoreFoundation.framework", - "Metal.framework", - "MetalFX.framework", - "MetalKit.framework", - "QuartzCore.framework", - "SDL2", - "metalirconverter", - "dxilconv", - "LLVMDxcSupport", - } - xcodebuildsettings({ - ["GENERATE_INFOPLIST_FILE"] = "YES", - ["MACOSX_DEPLOYMENT_TARGET"] = "15.0", - ["PRODUCT_BUNDLE_IDENTIFIER"] = "com.xenia.gpu-metal-trace-viewer", - ["CODE_SIGN_STYLE"] = "Automatic", - ["LD_RUNPATH_SEARCH_PATHS"] = - "@executable_path/../Frameworks @loader_path/../Frameworks " - .. "@loader_path/../../../../third_party/metal-shader-converter/lib " - .. "/opt/homebrew/opt/sdl2/lib /usr/local/opt/sdl2/lib", - }) - filter {"system:macosx", "architecture:ARM64"} - libdirs { dxilconv_libdir_arm64 } - runpathdirs { dxilconv_libdir_arm64 } - linkoptions { - path.getabsolute(path.join(dxilconv_libdir_arm64, "libdxilconv.dylib")), - } - xcodebuildsettings({ - ["MACOSX_DEPLOYMENT_TARGET"] = "15.0", - ["LD_RUNPATH_SEARCH_PATHS"] = - "@executable_path/../Frameworks @loader_path/../Frameworks " - .. "@loader_path/../../../../third_party/metal-shader-converter/lib " - .. "@loader_path/../../../../third_party/DirectXShaderCompiler/build_dxilconv_macos/lib " - .. "/opt/homebrew/opt/sdl2/lib", - }) - filter {"system:macosx", "architecture:x86_64"} - libdirs { dxilconv_libdir_x86_64 } - runpathdirs { dxilconv_libdir_x86_64 } - removelinks { "SDL2", "LLVMDxcSupport" } - linkoptions { - path.getabsolute(path.join(dxilconv_libdir_x86_64, - "libLLVMDxcSupport.a")), - path.getabsolute("/usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib"), - } - xcodebuildsettings({ - ["MACOSX_DEPLOYMENT_TARGET"] = "15.0", - ["LD_RUNPATH_SEARCH_PATHS"] = - "@executable_path/../Frameworks @loader_path/../Frameworks " - .. "@loader_path/../../../../third_party/metal-shader-converter/lib " - .. "@loader_path/../../../../third_party/DirectXShaderCompiler/build_dxilconv_macos_x86_64/lib " - .. "/usr/local/opt/sdl2/lib", - }) - filter {} - -project("xenia-gpu-metal-trace-dump") - uuid("8e9f0a1b-2c3d-4e5f-6789-0abcdef12345") - kind("ConsoleApp") - language("C++") - - links { - "xenia-apu", - "xenia-apu-nop", - "xenia-base", - "xenia-core", - "xenia-cpu", - "xenia-gpu", - "xenia-gpu-metal", - "xenia-hid", - "xenia-hid-nop", - "xenia-kernel", - "xenia-patcher", - "xenia-ui", - "xenia-ui-metal", - "xenia-vfs", - - "aes_128", - "capstone", - "fmt", - "imgui", - "libavcodec", - "libavutil", - "mspack", - "snappy", - "xxhash", - "metal-cpp", - } - - files { - "metal_trace_dump_main.cc", - } - - -- Check if mac-specific file exists, otherwise use posix - local mac_main_cc = path.join("..", "..", "base", "console_app_main_mac.cc") - local mac_main_mm = path.join("..", "..", "base", "console_app_main_mac.mm") - local posix_main = path.join("..", "..", "base", "console_app_main_posix.cc") - - filter "system:macosx" - if os.isfile(path.join(project_root, "src/xenia/base/console_app_main_mac.mm")) then - files { mac_main_mm } - elseif os.isfile(path.join(project_root, "src/xenia/base/console_app_main_mac.cc")) then - files { mac_main_cc } - else - files { posix_main } - end - filter "not system:macosx" - files { path.join("..", "..", "base", "console_app_main_" .. platform_suffix .. ".cc") } - filter {} - - filter "architecture:ARM64" - links { "xenia-cpu-backend-a64" } - - filter "system:macosx" - libdirs { metal_converter_libdir } - runpathdirs { metal_converter_libdir } - includedirs { - dxilconv_includes[1], - dxilconv_includes[2], - path.join(project_root, "third_party/metal-shader-converter/include"), - "/usr/local/include/metal_irconverter_runtime" - } - - defines { "METAL_SHADER_CONVERTER_AVAILABLE" } - - links { - "Cocoa.framework", - "CoreFoundation.framework", - "Metal.framework", - "MetalFX.framework", - "MetalKit.framework", - "QuartzCore.framework", - "metalirconverter", - "dxilconv", - "LLVMDxcSupport", - } - xcodebuildsettings({ - ["MACOSX_DEPLOYMENT_TARGET"] = "15.0", - }) - filter {"system:macosx", "architecture:ARM64"} - libdirs { dxilconv_libdir_arm64, sdl2_libdir_arm64 } - runpathdirs { dxilconv_libdir_arm64, sdl2_libdir_arm64 } - linkoptions { - path.getabsolute(path.join(dxilconv_libdir_arm64, "libdxilconv.dylib")), - } - filter {"system:macosx", "architecture:x86_64"} - libdirs { dxilconv_libdir_x86_64, sdl2_libdir_x86_64 } - runpathdirs { dxilconv_libdir_x86_64, sdl2_libdir_x86_64 } - removelinks { "LLVMDxcSupport" } - linkoptions { - path.getabsolute(path.join(dxilconv_libdir_x86_64, - "libLLVMDxcSupport.a")), - } - filter "not system:macosx" - removefiles "**" - filter {} diff --git a/src/xenia/gpu/null/CMakeLists.txt b/src/xenia/gpu/null/CMakeLists.txt new file mode 100644 index 000000000..d295b4ce9 --- /dev/null +++ b/src/xenia/gpu/null/CMakeLists.txt @@ -0,0 +1,7 @@ +add_library(xenia-gpu-null STATIC) +xe_platform_sources(xenia-gpu-null ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(xenia-gpu-null PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/Vulkan-Headers/include +) +target_link_libraries(xenia-gpu-null PUBLIC xenia-base xenia-gpu xenia-ui xenia-ui-vulkan xxhash) +xe_target_defaults(xenia-gpu-null) diff --git a/src/xenia/gpu/null/premake5.lua b/src/xenia/gpu/null/premake5.lua deleted file mode 100644 index 3f920eab0..000000000 --- a/src/xenia/gpu/null/premake5.lua +++ /dev/null @@ -1,19 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-gpu-null") - uuid("42FCA0B3-4C20-4532-95E9-07D297013BE4") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - "xenia-gpu", - "xenia-ui", - "xenia-ui-vulkan", - "xxhash", - }) - includedirs({ - project_root.."/third_party/Vulkan-Headers/include", - }) - local_platform_files() diff --git a/src/xenia/gpu/premake5.lua b/src/xenia/gpu/premake5.lua deleted file mode 100644 index 73e0c381b..000000000 --- a/src/xenia/gpu/premake5.lua +++ /dev/null @@ -1,74 +0,0 @@ -project_root = "../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-gpu") - uuid("0e8d3370-e4b1-4b05-a2e8-39ebbcdf9b17") - kind("StaticLib") - language("C++") - links({ - "dxbc", - "fmt", - "glslang-spirv", - "snappy", - "xenia-base", - "xenia-ui", - "xxhash", - }) - includedirs({ - project_root.."/third_party/Vulkan-Headers/include", - project_root.."/third_party/glslang", -- For glslang SPIRV headers - }) - - -- Include SPIRV-Tools headers from Vulkan SDK for Windows - filter("platforms:Windows") - includedirs({ - "$(VULKAN_SDK)/Include", - }) - filter({}) - - local_platform_files() - -if enableMiscSubprojects then - group("src") - project("xenia-gpu-shader-compiler") - uuid("ad76d3e4-4c62-439b-a0f6-f83fcf0e83c5") - kind("ConsoleApp") - language("C++") - links({ - "dxbc", - "fmt", - "glslang-spirv", - "snappy", - "xenia-base", - "xenia-gpu", - "xenia-ui", - "xenia-ui-vulkan", - }) - includedirs({ - project_root.."/third_party/Vulkan-Headers/include", - }) - files({ - "shader_compiler_main.cc", - "../base/console_app_main_"..platform_suffix..".cc", - }) - - -- Include SPIRV-Tools headers from Vulkan SDK - filter("platforms:Windows") - includedirs({ - "$(VULKAN_SDK)/Include", - }) - filter({}) - - filter("platforms:Windows") - -- Only create the .user file if it doesn't already exist. - local user_file = project_root.."/build/xenia-gpu-shader-compiler.vcxproj.user" - if not os.isfile(user_file) then - debugdir(project_root) - debugargs({ - "2>&1", - "1>scratch/stdout-shader-compiler.txt", - }) - end - filter({}) -end diff --git a/src/xenia/gpu/trace_writer.cc b/src/xenia/gpu/trace_writer.cc index e1fb81cce..bd78b55bf 100644 --- a/src/xenia/gpu/trace_writer.cc +++ b/src/xenia/gpu/trace_writer.cc @@ -14,7 +14,8 @@ #include "third_party/snappy/snappy-sinksource.h" #include "third_party/snappy/snappy.h" -#include "build/version.h" +// version.h is autogenerated by xenia-build.py into the CMake binary dir. +#include "version.h" #include "xenia/base/assert.h" #include "xenia/base/filesystem.h" #include "xenia/base/logging.h" diff --git a/src/xenia/gpu/vulkan/CMakeLists.txt b/src/xenia/gpu/vulkan/CMakeLists.txt new file mode 100644 index 000000000..86a38e940 --- /dev/null +++ b/src/xenia/gpu/vulkan/CMakeLists.txt @@ -0,0 +1,67 @@ +add_library(xenia-gpu-vulkan STATIC) +xe_platform_sources(xenia-gpu-vulkan ${CMAKE_CURRENT_SOURCE_DIR}) +xe_shader_rules_spirv(xenia-gpu-vulkan ${CMAKE_CURRENT_SOURCE_DIR}/../shaders) +target_include_directories(xenia-gpu-vulkan PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/Vulkan-Headers/include + ${PROJECT_SOURCE_DIR}/third_party/glslang +) +if(WIN32 AND DEFINED ENV{VULKAN_SDK}) + target_include_directories(xenia-gpu-vulkan PRIVATE "$ENV{VULKAN_SDK}/Include") +endif() +target_link_libraries(xenia-gpu-vulkan PUBLIC + fmt glslang-spirv xxhash xenia-base xenia-gpu xenia-ui xenia-ui-vulkan +) +xe_target_defaults(xenia-gpu-vulkan) + +if(XENIA_BUILD_MISC) + add_executable(xenia-gpu-vulkan-trace-viewer + ${CMAKE_CURRENT_SOURCE_DIR}/vulkan_trace_viewer_main.cc + ${PROJECT_SOURCE_DIR}/src/xenia/ui/windowed_app_main_qt.cc + ) + target_include_directories(xenia-gpu-vulkan-trace-viewer PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/Vulkan-Headers/include + ${PROJECT_SOURCE_DIR}/third_party/glslang + ) + target_link_libraries(xenia-gpu-vulkan-trace-viewer PRIVATE + xenia-apu xenia-apu-nop xenia-base xenia-core xenia-cpu + xenia-gpu xenia-gpu-vulkan xenia-hid xenia-hid-nop xenia-hid-skylander + xenia-kernel xenia-patcher xenia-ui xenia-ui-vulkan xenia-vfs + aes_128 capstone fmt glslang-spirv imgui libavcodec libavutil mspack snappy xxhash + ) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64") + target_link_libraries(xenia-gpu-vulkan-trace-viewer PRIVATE xenia-cpu-backend-x64) + endif() + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_link_libraries(xenia-gpu-vulkan-trace-viewer PRIVATE X11 xcb X11-xcb xenia-apu-sdl) + endif() + xe_target_defaults(xenia-gpu-vulkan-trace-viewer) + + # Vulkan trace dump + add_executable(xenia-gpu-vulkan-trace-dump + ${CMAKE_CURRENT_SOURCE_DIR}/vulkan_trace_dump_main.cc + ) + if(WIN32) + target_sources(xenia-gpu-vulkan-trace-dump PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_win.cc) + else() + target_sources(xenia-gpu-vulkan-trace-dump PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_posix.cc) + endif() + target_include_directories(xenia-gpu-vulkan-trace-dump PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/Vulkan-Headers/include + ${PROJECT_SOURCE_DIR}/third_party/glslang + ) + target_link_libraries(xenia-gpu-vulkan-trace-dump PRIVATE + xenia-apu xenia-apu-nop xenia-base xenia-core xenia-cpu + xenia-gpu xenia-gpu-vulkan xenia-hid xenia-hid-nop xenia-hid-skylander + xenia-kernel xenia-patcher xenia-ui xenia-ui-vulkan xenia-vfs + aes_128 capstone fmt glslang-spirv imgui libavcodec libavutil mspack snappy xxhash + ) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64") + target_link_libraries(xenia-gpu-vulkan-trace-dump PRIVATE xenia-cpu-backend-x64) + endif() + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_link_libraries(xenia-gpu-vulkan-trace-dump PRIVATE xenia-apu-sdl) + endif() + xe_target_defaults(xenia-gpu-vulkan-trace-dump) +endif() diff --git a/src/xenia/gpu/vulkan/premake5.lua b/src/xenia/gpu/vulkan/premake5.lua deleted file mode 100644 index 6cb3cda84..000000000 --- a/src/xenia/gpu/vulkan/premake5.lua +++ /dev/null @@ -1,169 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-gpu-vulkan") - uuid("717590b4-f579-4162-8f23-0624e87d6cca") - kind("StaticLib") - language("C++") - links({ - "fmt", - "glslang-spirv", - "xenia-base", - "xenia-gpu", - "xenia-ui", - "xenia-ui-vulkan", - "xxhash", - }) - includedirs({ - project_root.."/third_party/Vulkan-Headers/include", - project_root.."/third_party/glslang", -- For glslang SPIRV headers - }) - - -- Include SPIRV-Tools headers from Vulkan SDK for Windows - filter("platforms:Windows") - includedirs({ - "$(VULKAN_SDK)/Include", - }) - filter({}) - - local_platform_files() - files({ - "../shaders/bytecode/vulkan_spirv/*.h", - }) - -if enableMiscSubprojects then - group("src") - project("xenia-gpu-vulkan-trace-viewer") - uuid("86a1dddc-a26a-4885-8c55-cf745225d93e") - single_library_windowed_app_kind() - language("C++") - links({ - "xenia-apu", - "xenia-apu-nop", - "xenia-base", - "xenia-core", - "xenia-cpu", - "xenia-gpu", - "xenia-gpu-vulkan", - "xenia-hid", - "xenia-hid-nop", - "xenia-hid-skylander", - "xenia-kernel", - "xenia-patcher", - "xenia-ui", - "xenia-ui-vulkan", - "xenia-vfs", - }) - links({ - "aes_128", - "capstone", - "fmt", - "glslang-spirv", - "imgui", - "libavcodec", - "libavutil", - "mspack", - "snappy", - "xxhash", - }) - apu_transitive_deps() - includedirs({ - project_root.."/third_party/Vulkan-Headers/include", - project_root.."/third_party/glslang", -- For glslang SPIRV headers - }) - files({ - "vulkan_trace_viewer_main.cc", - "../../ui/windowed_app_main_qt.cc", - }) - - filter("architecture:x86_64") - links({ - "xenia-cpu-backend-x64", - }) - - filter("platforms:Linux") - links({ - "X11", - "xcb", - "X11-xcb", - }) - - filter("platforms:Windows") - -- Only create the .user file if it doesn't already exist. - local user_file = project_root.."/build/xenia-gpu-vulkan-trace-viewer.vcxproj.user" - if not os.isfile(user_file) then - debugdir(project_root) - debugargs({ - "2>&1", - "1>scratch/stdout-trace-viewer.txt", - }) - end - - group("src") - project("xenia-gpu-vulkan-trace-dump") - uuid("0dd0dd1c-b321-494d-ab9a-6c062f0c65cc") - kind("ConsoleApp") - language("C++") - links({ - "xenia-apu", - "xenia-apu-nop", - "xenia-base", - "xenia-core", - "xenia-cpu", - "xenia-gpu", - "xenia-gpu-vulkan", - "xenia-hid", - "xenia-hid-nop", - "xenia-hid-skylander", - "xenia-kernel", - "xenia-ui", - "xenia-ui-vulkan", - "xenia-vfs", - "xenia-patcher", - }) - links({ - "aes_128", - "capstone", - "fmt", - "glslang-spirv", - "imgui", - "libavcodec", - "libavutil", - "mspack", - "snappy", - "xxhash", - }) - apu_transitive_deps() - includedirs({ - project_root.."/third_party/Vulkan-Headers/include", - project_root.."/third_party/glslang", -- For glslang SPIRV headers - }) - files({ - "vulkan_trace_dump_main.cc", - "../../base/console_app_main_"..platform_suffix..".cc", - }) - - filter("architecture:x86_64") - links({ - "xenia-cpu-backend-x64", - }) - - filter("platforms:Linux") - links({ - "X11", - "xcb", - "X11-xcb", - }) - - filter("platforms:Windows") - -- Only create the .user file if it doesn't already exist. - local user_file = project_root.."/build/xenia-gpu-vulkan-trace-dump.vcxproj.user" - if not os.isfile(user_file) then - debugdir(project_root) - debugargs({ - "2>&1", - "1>scratch/stdout-trace-dump.txt", - }) - end -end diff --git a/src/xenia/helper/sdl/CMakeLists.txt b/src/xenia/helper/sdl/CMakeLists.txt new file mode 100644 index 000000000..e072735c9 --- /dev/null +++ b/src/xenia/helper/sdl/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(xenia-helper-sdl STATIC) +xe_platform_sources(xenia-helper-sdl ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(xenia-helper-sdl PUBLIC SDL2) +xe_target_defaults(xenia-helper-sdl) diff --git a/src/xenia/helper/sdl/premake5.lua b/src/xenia/helper/sdl/premake5.lua deleted file mode 100644 index 26058f713..000000000 --- a/src/xenia/helper/sdl/premake5.lua +++ /dev/null @@ -1,13 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-helper-sdl") - uuid("84b00ad3-fba3-4561-96c9-1f9993b14c9c") - kind("StaticLib") - language("C++") - links({ - "SDL2", - }) - local_platform_files() - sdl2_include() diff --git a/src/xenia/hid/CMakeLists.txt b/src/xenia/hid/CMakeLists.txt new file mode 100644 index 000000000..8b4e4c506 --- /dev/null +++ b/src/xenia/hid/CMakeLists.txt @@ -0,0 +1,11 @@ +add_library(xenia-hid STATIC) +xe_platform_sources(xenia-hid ${CMAKE_CURRENT_SOURCE_DIR}) +# Exclude demo files +file(GLOB _hid_demo "${CMAKE_CURRENT_SOURCE_DIR}/*_demo.cc") +get_target_property(_hid_srcs xenia-hid SOURCES) +if(_hid_demo AND _hid_srcs) + list(REMOVE_ITEM _hid_srcs ${_hid_demo}) + set_target_properties(xenia-hid PROPERTIES SOURCES "${_hid_srcs}") +endif() +target_link_libraries(xenia-hid PUBLIC xenia-base xenia-hid-skylander) +xe_target_defaults(xenia-hid) diff --git a/src/xenia/hid/nop/CMakeLists.txt b/src/xenia/hid/nop/CMakeLists.txt new file mode 100644 index 000000000..dd8985665 --- /dev/null +++ b/src/xenia/hid/nop/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(xenia-hid-nop STATIC) +xe_platform_sources(xenia-hid-nop ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(xenia-hid-nop PUBLIC xenia-base xenia-hid) +xe_target_defaults(xenia-hid-nop) diff --git a/src/xenia/hid/nop/premake5.lua b/src/xenia/hid/nop/premake5.lua deleted file mode 100644 index 4b83e2573..000000000 --- a/src/xenia/hid/nop/premake5.lua +++ /dev/null @@ -1,13 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-hid-nop") - uuid("887b6f26-b0c1-43c1-a013-a37e7b9634fd") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - "xenia-hid", - }) - local_platform_files() diff --git a/src/xenia/hid/premake5.lua b/src/xenia/hid/premake5.lua deleted file mode 100644 index dabe3402a..000000000 --- a/src/xenia/hid/premake5.lua +++ /dev/null @@ -1,16 +0,0 @@ -project_root = "../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-hid") - uuid("88a4ef38-c550-430f-8c22-8ded4e4ef601") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - "xenia-hid-skylander", - }) - local_platform_files() - removefiles({ - "*_demo.cc", - }) diff --git a/src/xenia/hid/sdl/CMakeLists.txt b/src/xenia/hid/sdl/CMakeLists.txt new file mode 100644 index 000000000..7e639d821 --- /dev/null +++ b/src/xenia/hid/sdl/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(xenia-hid-sdl STATIC) +xe_platform_sources(xenia-hid-sdl ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(xenia-hid-sdl PUBLIC xenia-base xenia-hid xenia-ui SDL2) +xe_target_defaults(xenia-hid-sdl) diff --git a/src/xenia/hid/sdl/premake5.lua b/src/xenia/hid/sdl/premake5.lua deleted file mode 100644 index 15bcf4fca..000000000 --- a/src/xenia/hid/sdl/premake5.lua +++ /dev/null @@ -1,16 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-hid-sdl") - uuid("44f5b9a1-00f8-4825-acf1-5c93f26eba9b") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - "xenia-hid", - "xenia-ui", - "SDL2", - }) - local_platform_files() - sdl2_include() diff --git a/src/xenia/hid/skylander/CMakeLists.txt b/src/xenia/hid/skylander/CMakeLists.txt new file mode 100644 index 000000000..8ae07a842 --- /dev/null +++ b/src/xenia/hid/skylander/CMakeLists.txt @@ -0,0 +1,14 @@ +add_library(xenia-hid-skylander STATIC + ${CMAKE_CURRENT_SOURCE_DIR}/skylander_portal.h + ${CMAKE_CURRENT_SOURCE_DIR}/skylander_portal.cc + ${CMAKE_CURRENT_SOURCE_DIR}/skylander_emulated.h + ${CMAKE_CURRENT_SOURCE_DIR}/skylander_emulated.cc +) +if(WIN32) + target_sources(xenia-hid-skylander PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/skylander_hardware.h + ${CMAKE_CURRENT_SOURCE_DIR}/skylander_hardware.cc + ) + target_link_libraries(xenia-hid-skylander PUBLIC libusb) +endif() +xe_target_defaults(xenia-hid-skylander) diff --git a/src/xenia/hid/skylander/premake5.lua b/src/xenia/hid/skylander/premake5.lua deleted file mode 100644 index a55c4c7c3..000000000 --- a/src/xenia/hid/skylander/premake5.lua +++ /dev/null @@ -1,23 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-hid-skylander") - uuid("ddc114da-a279-4868-8b20-53108599bd78") - kind("StaticLib") - language("C++") - files({ - "skylander_portal.h", - "skylander_portal.cc", - "skylander_emulated.h", - "skylander_emulated.cc" - }) - - filter({"platforms:Windows"}) - links({ - "libusb", - }) - files({ - "skylander_hardware.h", - "skylander_hardware.cc" - }) diff --git a/src/xenia/hid/winkey/CMakeLists.txt b/src/xenia/hid/winkey/CMakeLists.txt new file mode 100644 index 000000000..d48a1d7c7 --- /dev/null +++ b/src/xenia/hid/winkey/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(xenia-hid-winkey STATIC) +xe_platform_sources(xenia-hid-winkey ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(xenia-hid-winkey PUBLIC xenia-base xenia-hid xenia-ui) +xe_target_defaults(xenia-hid-winkey) diff --git a/src/xenia/hid/winkey/premake5.lua b/src/xenia/hid/winkey/premake5.lua deleted file mode 100644 index 819bc8f97..000000000 --- a/src/xenia/hid/winkey/premake5.lua +++ /dev/null @@ -1,14 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-hid-winkey") - uuid("fd16e19a-6219-4ab7-b95a-7c78523c50c3") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - "xenia-hid", - "xenia-ui", - }) - local_platform_files() diff --git a/src/xenia/hid/xinput/CMakeLists.txt b/src/xenia/hid/xinput/CMakeLists.txt new file mode 100644 index 000000000..3386b8985 --- /dev/null +++ b/src/xenia/hid/xinput/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(xenia-hid-xinput STATIC) +xe_platform_sources(xenia-hid-xinput ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(xenia-hid-xinput PUBLIC xenia-base xenia-hid) +xe_target_defaults(xenia-hid-xinput) diff --git a/src/xenia/hid/xinput/premake5.lua b/src/xenia/hid/xinput/premake5.lua deleted file mode 100644 index d50332af9..000000000 --- a/src/xenia/hid/xinput/premake5.lua +++ /dev/null @@ -1,13 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-hid-xinput") - uuid("3d49e251-07a7-40ae-9bc6-aae984c85568") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - "xenia-hid", - }) - local_platform_files() diff --git a/src/xenia/kernel/CMakeLists.txt b/src/xenia/kernel/CMakeLists.txt new file mode 100644 index 000000000..f25c61dd0 --- /dev/null +++ b/src/xenia/kernel/CMakeLists.txt @@ -0,0 +1,24 @@ +add_library(xenia-kernel STATIC) +xe_platform_sources(xenia-kernel ${CMAKE_CURRENT_SOURCE_DIR} RECURSIVE) +target_compile_definitions(xenia-kernel PRIVATE + X86_FEATURES + X86_HAVE_XSAVE_INTRIN + X86_SSSE3 + X86_SSE42 + WITH_GZFILEOP +) +if(WIN32) + target_compile_definitions(xenia-kernel PRIVATE + X86_SSE2 + X86_AVX2 + X86_AVX512 + X86_AVX512VNNI + X86_PCLMULQDQ_CRC + X86_VPCLMULQDQ_CRC + _WINSOCK_DEPRECATED_NO_WARNINGS + ) +endif() +target_link_libraries(xenia-kernel PUBLIC + aes_128 asio fmt zlib-ng pugixml xenia-apu xenia-base xenia-cpu xenia-hid xenia-vfs +) +xe_target_defaults(xenia-kernel) diff --git a/src/xenia/kernel/premake5.lua b/src/xenia/kernel/premake5.lua deleted file mode 100644 index d2799dbce..000000000 --- a/src/xenia/kernel/premake5.lua +++ /dev/null @@ -1,57 +0,0 @@ -project_root = "../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-kernel") - uuid("ae185c4a-1c4f-4503-9892-328e549e871a") - kind("StaticLib") - language("C++") - includedirs({ - project_root.."/third_party/asio/include", - }) - defines({ - "ASIO_STANDALONE", - "ASIO_NO_DEPRECATED", - }) - filter("platforms:Windows") - defines({ - "_WIN32_WINNT=0x0A00", -- Windows 10+ for Asio - "_WINSOCK_DEPRECATED_NO_WARNINGS", -- Suppress deprecated Winsock API warnings - }) - filter({}) - links({ - "aes_128", - "fmt", - "zlib-ng", - "pugixml", - "xenia-apu", - "xenia-base", - "xenia-cpu", - "xenia-hid", - "xenia-vfs", - }) - defines({ - "X86_FEATURES", - "X86_HAVE_XSAVE_INTRIN", - "X86_SSSE3", - "X86_SSE42", - "WITH_GZFILEOP", - }) - if os.istarget("windows") then - defines({ - "X86_SSE2", - "X86_AVX2", - "X86_AVX512", - "X86_AVX512VNNI", - "X86_PCLMULQDQ_CRC", - "X86_VPCLMULQDQ_CRC", - }) - end - recursive_platform_files() - files({ - "debug_visualizers.natvis", - }) - -if enableTests then - include("testing") -end diff --git a/src/xenia/kernel/testing/premake5.lua b/src/xenia/kernel/testing/premake5.lua deleted file mode 100644 index 0787f15f7..000000000 --- a/src/xenia/kernel/testing/premake5.lua +++ /dev/null @@ -1,10 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -test_suite("xenia-kernel-tests", project_root, ".", { - links = { - "fmt", - "xenia-base", - "xenia-kernel", - }, -}) diff --git a/src/xenia/patcher/CMakeLists.txt b/src/xenia/patcher/CMakeLists.txt new file mode 100644 index 000000000..078a6624a --- /dev/null +++ b/src/xenia/patcher/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(xenia-patcher STATIC) +xe_platform_sources(xenia-patcher ${CMAKE_CURRENT_SOURCE_DIR} RECURSIVE) +target_link_libraries(xenia-patcher PUBLIC xenia-base) +xe_target_defaults(xenia-patcher) diff --git a/src/xenia/patcher/premake5.lua b/src/xenia/patcher/premake5.lua deleted file mode 100644 index c41265f0b..000000000 --- a/src/xenia/patcher/premake5.lua +++ /dev/null @@ -1,12 +0,0 @@ -project_root = "../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-patcher") - uuid("e1c75f76-9e7b-48f6-b17e-dbd20f7a1592") - kind("StaticLib") - language("C++") - links({ - "xenia-base" - }) - recursive_platform_files() diff --git a/src/xenia/premake5.lua b/src/xenia/premake5.lua deleted file mode 100644 index 98846361e..000000000 --- a/src/xenia/premake5.lua +++ /dev/null @@ -1,16 +0,0 @@ -project_root = "../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-core") - uuid("970f7892-f19a-4bf5-8795-478c51757bec") - kind("StaticLib") - language("C++") - links({ - "fmt", - "xenia-base", - }) - files({ - "*.h", - "*.cc", - }) diff --git a/src/xenia/ui/CMakeLists.txt b/src/xenia/ui/CMakeLists.txt new file mode 100644 index 000000000..78003f133 --- /dev/null +++ b/src/xenia/ui/CMakeLists.txt @@ -0,0 +1,37 @@ +add_library(xenia-ui STATIC) +xe_platform_sources(xenia-ui ${CMAKE_CURRENT_SOURCE_DIR}) +# Demo files are standalone executables in XENIA_BUILD_MISC; moc_*.cc are +# owned by AUTOMOC and land in the build tree. Neither should reach this +# target's source list from the repo glob. +file(GLOB _ui_exclude + "${CMAKE_CURRENT_SOURCE_DIR}/*_demo.cc" + "${CMAKE_CURRENT_SOURCE_DIR}/moc_*.cc" +) +get_target_property(_ui_srcs xenia-ui SOURCES) +if(_ui_exclude AND _ui_srcs) + list(REMOVE_ITEM _ui_srcs ${_ui_exclude}) + set_target_properties(xenia-ui PROPERTIES SOURCES "${_ui_srcs}") +endif() +# The Qt resource compiler output is checked in under src/xenia/ui/ on +# Linux only (Windows embeds resources via main_resources.rc instead). +if(CMAKE_SYSTEM_NAME STREQUAL "Linux" + AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ui_resources_qrc.cpp") + target_sources(xenia-ui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/ui_resources_qrc.cpp) +endif() +target_link_libraries(xenia-ui PUBLIC xenia-base) +if(XE_HAS_QT) + target_link_libraries(xenia-ui PUBLIC Qt6::Core Qt6::Gui Qt6::Widgets) + target_link_libraries(xenia-ui PRIVATE Qt6::GuiPrivate) + # AUTOMOC-generated moc files sit in xenia-ui_autogen/ and include the + # original header via `#include "foo.h"`, so their directory needs to + # be on the quoted-include path. Scoped to this target — the global + # CMAKE_INCLUDE_CURRENT_DIR is off because other modules have source + # files that would shadow standard C headers. + target_include_directories(xenia-ui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +endif() +if(WIN32) + target_link_libraries(xenia-ui PRIVATE dwmapi dxgi winmm) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_link_libraries(xenia-ui PRIVATE xcb X11 X11-xcb fontconfig ${GTK3_LIBRARIES}) +endif() +xe_target_defaults(xenia-ui) diff --git a/src/xenia/ui/d3d12/CMakeLists.txt b/src/xenia/ui/d3d12/CMakeLists.txt new file mode 100644 index 000000000..551788884 --- /dev/null +++ b/src/xenia/ui/d3d12/CMakeLists.txt @@ -0,0 +1,23 @@ +add_library(xenia-ui-d3d12 STATIC) +xe_platform_sources(xenia-ui-d3d12 ${CMAKE_CURRENT_SOURCE_DIR}) +xe_shader_rules_dxbc(xenia-ui-d3d12 ${CMAKE_CURRENT_SOURCE_DIR}/../shaders) +target_link_libraries(xenia-ui-d3d12 PUBLIC xenia-base xenia-ui) +xe_target_defaults(xenia-ui-d3d12) + +if(XENIA_BUILD_MISC) + add_executable(xenia-ui-window-d3d12-demo WIN32 + ${CMAKE_CURRENT_SOURCE_DIR}/../window_demo.cc + ${CMAKE_CURRENT_SOURCE_DIR}/d3d12_window_demo.cc + ${PROJECT_SOURCE_DIR}/src/xenia/ui/windowed_app_main_qt.cc + ) + target_link_libraries(xenia-ui-window-d3d12-demo PRIVATE + xenia-apu xenia-base xenia-core xenia-cpu + xenia-gpu xenia-hid xenia-hid-skylander + xenia-kernel xenia-patcher xenia-ui xenia-ui-d3d12 xenia-vfs + aes_128 capstone dxbc fmt glslang-spirv imgui mspack snappy xxhash + ) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64") + target_link_libraries(xenia-ui-window-d3d12-demo PRIVATE xenia-cpu-backend-x64) + endif() + xe_target_defaults(xenia-ui-window-d3d12-demo) +endif() diff --git a/src/xenia/ui/d3d12/premake5.lua b/src/xenia/ui/d3d12/premake5.lua deleted file mode 100644 index 19ec7ccad..000000000 --- a/src/xenia/ui/d3d12/premake5.lua +++ /dev/null @@ -1,62 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-ui-d3d12") - uuid("f93dc1a8-600f-43e7-b0fc-ae3eefbe836b") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - "xenia-ui", - }) - local_platform_files() - files({ - "../shaders/bytecode/d3d12_5_1/*.h", - }) - -if enableMiscSubprojects then - group("demos") - project("xenia-ui-window-d3d12-demo") - uuid("3b9686a7-0f04-4e17-8b00-aeb78ae1107c") - single_library_windowed_app_kind() - language("C++") - links({ - "fmt", - "imgui", - "xenia-apu", - "xenia-base", - "xenia-core", - "xenia-gpu", - "xenia-hid", - "xenia-hid-skylander", - "xenia-kernel", -- Required by xenia-hid - "xenia-patcher", - "xenia-ui", - "xenia-ui-d3d12", - "xenia-vfs", - }) - links({ - "aes_128", - "capstone", - "dxbc", - "glslang-spirv", - "mspack", - "snappy", - "xxhash", - }) - apu_transitive_deps() - files({ - "../window_demo.cc", - "d3d12_window_demo.cc", - project_root.."/src/xenia/ui/windowed_app_main_qt.cc", - }) - resincludedirs({ - project_root, - }) - - filter("architecture:x86_64") - links({ - "xenia-cpu-backend-x64", - }) -end \ No newline at end of file diff --git a/src/xenia/ui/premake5.lua b/src/xenia/ui/premake5.lua deleted file mode 100644 index ec7183382..000000000 --- a/src/xenia/ui/premake5.lua +++ /dev/null @@ -1,38 +0,0 @@ -project_root = "../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-ui") - uuid("d0407c25-b0ea-40dc-846c-82c46fbd9fa2") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - }) - local_platform_files() - removefiles({ - "*_demo.cc", - }) - if os.istarget("android") then - filter("platforms:Android-*") - -- Exports JNI functions. - wholelib("On") - end - - filter("platforms:Windows") - links({ - "dwmapi", - "dxgi", - "winmm", - }) - - filter("platforms:Linux") - links({ - "xcb", - "X11", - "X11-xcb", - "fontconfig" - }) - files({ - "ui_resources_qrc.cpp", - }) diff --git a/src/xenia/ui/vulkan/CMakeLists.txt b/src/xenia/ui/vulkan/CMakeLists.txt new file mode 100644 index 000000000..dfcd96ca6 --- /dev/null +++ b/src/xenia/ui/vulkan/CMakeLists.txt @@ -0,0 +1,47 @@ +add_library(xenia-ui-vulkan STATIC) +xe_platform_sources(xenia-ui-vulkan ${CMAKE_CURRENT_SOURCE_DIR}) +xe_platform_sources(xenia-ui-vulkan ${CMAKE_CURRENT_SOURCE_DIR}/functions) +xe_shader_rules_spirv(xenia-ui-vulkan ${CMAKE_CURRENT_SOURCE_DIR}/../shaders) +target_include_directories(xenia-ui-vulkan PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/Vulkan-Headers/include + ${PROJECT_SOURCE_DIR}/third_party/glslang +) +target_link_libraries(xenia-ui-vulkan PUBLIC xenia-base xenia-ui) + +# SPIRV-Tools: Vulkan SDK on Windows (headers + libs under $VULKAN_SDK), +# system package on Linux (libspirv-tools-*). +if(WIN32 AND DEFINED ENV{VULKAN_SDK}) + target_include_directories(xenia-ui-vulkan PRIVATE "$ENV{VULKAN_SDK}/Include") + target_link_directories(xenia-ui-vulkan PUBLIC "$ENV{VULKAN_SDK}/Lib") + target_link_libraries(xenia-ui-vulkan PUBLIC SPIRV-Tools-opt SPIRV-Tools) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_link_libraries(xenia-ui-vulkan PUBLIC SPIRV-Tools-opt SPIRV-Tools) +endif() +xe_target_defaults(xenia-ui-vulkan) + +if(XENIA_BUILD_MISC) + add_executable(xenia-ui-window-vulkan-demo + ${CMAKE_CURRENT_SOURCE_DIR}/../window_demo.cc + ${CMAKE_CURRENT_SOURCE_DIR}/vulkan_window_demo.cc + ${PROJECT_SOURCE_DIR}/src/xenia/ui/windowed_app_main_qt.cc + ) + if(WIN32) + set_target_properties(xenia-ui-window-vulkan-demo PROPERTIES WIN32_EXECUTABLE TRUE) + endif() + target_include_directories(xenia-ui-window-vulkan-demo PRIVATE + ${PROJECT_SOURCE_DIR}/third_party/Vulkan-Headers/include + ) + target_link_libraries(xenia-ui-window-vulkan-demo PRIVATE + xenia-apu xenia-base xenia-core xenia-cpu + xenia-gpu xenia-hid xenia-hid-skylander + xenia-kernel xenia-patcher xenia-ui xenia-ui-vulkan xenia-vfs + aes_128 capstone dxbc fmt glslang-spirv imgui mspack snappy xxhash + ) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64") + target_link_libraries(xenia-ui-window-vulkan-demo PRIVATE xenia-cpu-backend-x64) + endif() + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_link_libraries(xenia-ui-window-vulkan-demo PRIVATE X11 xcb X11-xcb xenia-apu-sdl) + endif() + xe_target_defaults(xenia-ui-window-vulkan-demo) +endif() diff --git a/src/xenia/ui/vulkan/premake5.lua b/src/xenia/ui/vulkan/premake5.lua deleted file mode 100644 index 6d90277bf..000000000 --- a/src/xenia/ui/vulkan/premake5.lua +++ /dev/null @@ -1,97 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-ui-vulkan") - uuid("4933d81e-1c2c-4d5d-b104-3c0eb9dc2f00") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - "xenia-ui", - }) - includedirs({ - project_root.."/third_party/Vulkan-Headers/include", - project_root.."/third_party/glslang", -- For glslang SPIRV headers - }) - - -- Include SPIRV-Tools from Vulkan SDK - filter("platforms:Windows") - includedirs({ - "$(VULKAN_SDK)/Include", - }) - libdirs({ - "$(VULKAN_SDK)/Lib", - }) - links({ - "SPIRV-Tools-opt.lib", - "SPIRV-Tools.lib", - }) - - filter("platforms:Linux") - links({ - "SPIRV-Tools-opt", - "SPIRV-Tools", - }) - filter({}) - local_platform_files() - local_platform_files("functions") - files({ - "../shaders/bytecode/vulkan_spirv/*.h", - }) - -if enableMiscSubprojects then - group("demos") - project("xenia-ui-window-vulkan-demo") - uuid("97598f13-3177-454c-8e58-c59e2b6ede27") - single_library_windowed_app_kind() - language("C++") - links({ - "fmt", - "imgui", - "xenia-apu", - "xenia-base", - "xenia-core", - "xenia-gpu", - "xenia-hid", - "xenia-hid-skylander", - "xenia-kernel", -- Required by xenia-hid - "xenia-patcher", - "xenia-ui", - "xenia-ui-vulkan", - "xenia-vfs", - }) - links({ - "aes_128", - "capstone", - "dxbc", - "glslang-spirv", - "mspack", - "snappy", - "xxhash", - }) - apu_transitive_deps() - includedirs({ - project_root.."/third_party/Vulkan-Headers/include", - }) - files({ - "../window_demo.cc", - "vulkan_window_demo.cc", - project_root.."/src/xenia/ui/windowed_app_main_qt.cc", - }) - resincludedirs({ - project_root, - }) - - filter("architecture:x86_64") - links({ - "xenia-cpu-backend-x64", - }) - - filter("platforms:Linux") - links({ - "X11", - "xcb", - "X11-xcb", - }) -end diff --git a/src/xenia/vfs/CMakeLists.txt b/src/xenia/vfs/CMakeLists.txt new file mode 100644 index 000000000..a06a5f86c --- /dev/null +++ b/src/xenia/vfs/CMakeLists.txt @@ -0,0 +1,48 @@ +add_library(xenia-vfs STATIC) +xe_platform_sources(xenia-vfs ${CMAKE_CURRENT_SOURCE_DIR} RECURSIVE) +# Exclude vfs_dump.cc and xex_metadata_main.cc (these are their own executables) +file(GLOB _vfs_exclude + "${CMAKE_CURRENT_SOURCE_DIR}/vfs_dump.cc" + "${CMAKE_CURRENT_SOURCE_DIR}/xex_metadata_main.cc" +) +get_target_property(_vfs_srcs xenia-vfs SOURCES) +if(_vfs_exclude AND _vfs_srcs) + list(REMOVE_ITEM _vfs_srcs ${_vfs_exclude}) + set_target_properties(xenia-vfs PROPERTIES SOURCES "${_vfs_srcs}") +endif() +target_link_libraries(xenia-vfs PUBLIC xenia-base zstd zarchive) +xe_target_defaults(xenia-vfs) + +# xenia-xex-metadata: standalone console tool that dumps XEX metadata +add_executable(xenia-xex-metadata + ${CMAKE_CURRENT_SOURCE_DIR}/xex_metadata_main.cc +) +if(WIN32) + target_sources(xenia-xex-metadata PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_win.cc) +else() + target_sources(xenia-xex-metadata PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_posix.cc) +endif() +target_link_libraries(xenia-xex-metadata PRIVATE fmt xenia-base xenia-vfs) +xe_target_defaults(xenia-xex-metadata) + +if(XENIA_BUILD_MISC) + # VFS dump tool + add_executable(xenia-vfs-dump + ${CMAKE_CURRENT_SOURCE_DIR}/vfs_dump.cc + ) + if(WIN32) + target_sources(xenia-vfs-dump PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_win.cc) + else() + target_sources(xenia-vfs-dump PRIVATE + ${PROJECT_SOURCE_DIR}/src/xenia/base/console_app_main_posix.cc) + endif() + target_link_libraries(xenia-vfs-dump PRIVATE fmt xenia-base xenia-vfs) + xe_target_defaults(xenia-vfs-dump) +endif() + +if(XENIA_BUILD_TESTS) + add_subdirectory(testing) +endif() diff --git a/src/xenia/vfs/premake5.lua b/src/xenia/vfs/premake5.lua deleted file mode 100644 index d187cb524..000000000 --- a/src/xenia/vfs/premake5.lua +++ /dev/null @@ -1,61 +0,0 @@ -project_root = "../../.." -include(project_root.."/tools/build") - -group("src") -project("xenia-vfs") - uuid("395c8abd-4dc9-46ed-af7a-c2b9b68a3a98") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - "zstd", - "zarchive" - }) - - recursive_platform_files() - removefiles({ - "vfs_dump.cc", - "xex_metadata_main.cc", - }) - -if enableMiscSubprojects then - project("xenia-vfs-dump") - uuid("2EF270C7-41A8-4D0E-ACC5-59693A9CCE32") - kind("ConsoleApp") - language("C++") - links({ - "fmt", - "xenia-base", - "xenia-vfs", - }) - - files({ - "vfs_dump.cc", - project_root.."/src/xenia/base/console_app_main_"..platform_suffix..".cc", - }) - resincludedirs({ - project_root, - }) - - project("xenia-xex-metadata") - uuid("A1B2C3D4-E5F6-7890-ABCD-EF1234567890") - kind("ConsoleApp") - language("C++") - links({ - "fmt", - "xenia-base", - "xenia-vfs", - }) - - files({ - "xex_metadata_main.cc", - project_root.."/src/xenia/base/console_app_main_"..platform_suffix..".cc", - }) - resincludedirs({ - project_root, - }) -end - -if enableTests then - include("testing") -end diff --git a/src/xenia/vfs/testing/CMakeLists.txt b/src/xenia/vfs/testing/CMakeLists.txt new file mode 100644 index 000000000..31ac711f3 --- /dev/null +++ b/src/xenia/vfs/testing/CMakeLists.txt @@ -0,0 +1,3 @@ +xe_test_suite(xenia-vfs-tests ${CMAKE_CURRENT_SOURCE_DIR} + LINKS xenia-vfs +) diff --git a/src/xenia/vfs/testing/premake5.lua b/src/xenia/vfs/testing/premake5.lua deleted file mode 100644 index d9cd89626..000000000 --- a/src/xenia/vfs/testing/premake5.lua +++ /dev/null @@ -1,8 +0,0 @@ -project_root = "../../../.." -include(project_root.."/tools/build") - -test_suite("xenia-vfs-tests", project_root, ".", { - links = { - "xenia-vfs", - }, -}) diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt new file mode 100644 index 000000000..cf4e6e774 --- /dev/null +++ b/third_party/CMakeLists.txt @@ -0,0 +1,687 @@ +# Suppress warnings for all third-party code — we can't clean them up and +# don't want them contributing to -Werror noise on our own targets. +if(MSVC) + add_compile_options(/W0) +else() + add_compile_options(-w) +endif() + +# ============================================================================== +# aes_128 +# ============================================================================== +add_library(aes_128 STATIC + aes_128/unroll/aes.c +) +target_include_directories(aes_128 PUBLIC aes_128) + +# ============================================================================== +# asio (header-only) +# ============================================================================== +add_library(asio INTERFACE) +target_include_directories(asio INTERFACE asio/include) +target_compile_definitions(asio INTERFACE + ASIO_STANDALONE + ASIO_NO_DEPRECATED +) +if(WIN32) + target_compile_definitions(asio INTERFACE _WIN32_WINNT=0x0A00) +endif() + +# ============================================================================== +# capstone +# ============================================================================== +add_library(capstone STATIC + capstone/cs.c + capstone/MCInst.c + capstone/MCInstrDesc.c + capstone/MCRegisterInfo.c + capstone/SStream.c + capstone/utils.c + capstone/Mapping.c +) +# Glob X86 arch files +file(GLOB _capstone_x86_c "capstone/arch/X86/*.c") +file(GLOB _capstone_x86_h "capstone/arch/X86/*.h") +file(GLOB _capstone_x86_inc "capstone/arch/X86/*.inc") +# Remove excluded files +list(FILTER _capstone_x86_c EXCLUDE REGEX "X86ATTInstPrinter\\.c$") +list(FILTER _capstone_x86_inc EXCLUDE REGEX "reduce\\.inc$") +target_sources(capstone PRIVATE ${_capstone_x86_c} ${_capstone_x86_h} ${_capstone_x86_inc}) +target_compile_definitions(capstone PRIVATE + CAPSTONE_X86_ATT_DISABLE + CAPSTONE_HAS_X86 + CAPSTONE_USE_SYS_DYN_MEM +) +target_include_directories(capstone PUBLIC capstone/include PRIVATE capstone) +# Force all capstone sources to compile as C +file(GLOB_RECURSE _capstone_all_c "capstone/*.c") +set_source_files_properties(${_capstone_all_c} PROPERTIES LANGUAGE C) + +# ============================================================================== +# cxxopts (header-only) +# ============================================================================== +add_library(cxxopts INTERFACE) +target_include_directories(cxxopts INTERFACE cxxopts/include) + +# ============================================================================== +# tomlplusplus (header-only) +# ============================================================================== +add_library(tomlplusplus INTERFACE) +target_include_directories(tomlplusplus INTERFACE tomlplusplus/include) + +# ============================================================================== +# dxbc +# ============================================================================== +add_library(dxbc STATIC + dxbc/DXBCChecksum.cpp +) +target_include_directories(dxbc PUBLIC dxbc) + +# ============================================================================== +# discord-rpc +# ============================================================================== +add_library(discord-rpc STATIC + discord-rpc/src/connection.h + discord-rpc/src/discord_rpc.cpp + discord-rpc/src/msg_queue.h + discord-rpc/src/rpc_connection.cpp + discord-rpc/src/rpc_connection.h + discord-rpc/src/serialization.cpp + discord-rpc/src/serialization.h +) +target_compile_definitions(discord-rpc PRIVATE RAPIDJSON_SSE42) +target_include_directories(discord-rpc PUBLIC discord-rpc/include PRIVATE rapidjson/include) +if(WIN32) + target_sources(discord-rpc PRIVATE + discord-rpc/src/connection_win.cpp + discord-rpc/src/discord_register_win.cpp + ) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_sources(discord-rpc PRIVATE + discord-rpc/src/connection_unix.cpp + discord-rpc/src/discord_register_linux.cpp + ) +endif() + +# ============================================================================== +# fmt +# ============================================================================== +add_library(fmt STATIC + fmt/src/format.cc + fmt/src/os.cc +) +target_include_directories(fmt PUBLIC fmt/include) + +# ============================================================================== +# glslang-spirv +# ============================================================================== +file(GLOB _glslang_spirv_cpp "glslang/SPIRV/*.cpp") +file(GLOB _glslang_spirv_h "glslang/SPIRV/*.h") +file(GLOB _glslang_spirv_hpp "glslang/SPIRV/*.hpp11") +list(FILTER _glslang_spirv_cpp EXCLUDE REGEX "GlslangToSpv\\.cpp$") +add_library(glslang-spirv STATIC + ${_glslang_spirv_cpp} + ${_glslang_spirv_h} + ${_glslang_spirv_hpp} + glslang/glslang/Include/visibility.h +) +target_include_directories(glslang-spirv PUBLIC glslang) + +# ============================================================================== +# imgui +# ============================================================================== +add_library(imgui STATIC + imgui/imgui.cpp + imgui/imgui_demo.cpp + imgui/imgui_draw.cpp + imgui/imgui_tables.cpp + imgui/imgui_widgets.cpp +) +target_include_directories(imgui PUBLIC imgui PRIVATE stb) + +# ============================================================================== +# miniaudio (header-only) +# ============================================================================== +add_library(miniaudio INTERFACE) +target_include_directories(miniaudio INTERFACE miniaudio) + +# ============================================================================== +# mspack +# ============================================================================== +add_library(mspack STATIC + mspack/logging.cc + mspack/lzxd.c + mspack/system.c +) +target_compile_definitions(mspack PRIVATE HAVE_CONFIG_H) +target_include_directories(mspack PUBLIC mspack) +target_link_libraries(mspack PUBLIC xenia-base) + +# ============================================================================== +# oaknut (header-only, ARM64 codegen) +# ============================================================================== +add_library(oaknut INTERFACE) +target_include_directories(oaknut INTERFACE oaknut/include) + +# ============================================================================== +# pugixml +# ============================================================================== +add_library(pugixml STATIC + pugixml/src/pugixml.cpp +) +target_include_directories(pugixml PUBLIC pugixml/src) + +# ============================================================================== +# snappy +# ============================================================================== +# Generate snappy-stubs-public.h if missing +if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/snappy/snappy-stubs-public.h") + execute_process( + COMMAND ${CMAKE_COMMAND} + -DSNAPPY_BUILD_TESTS=OFF + -DSNAPPY_BUILD_BENCHMARKS=OFF + -DSNAPPY_REQUIRE_AVX=ON + ${CMAKE_CURRENT_SOURCE_DIR}/snappy + -B${CMAKE_CURRENT_SOURCE_DIR}/snappy + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) +endif() +add_library(snappy STATIC + snappy/snappy-internal.h + snappy/snappy-sinksource.cc + snappy/snappy-sinksource.h + snappy/snappy-stubs-internal.cc + snappy/snappy-stubs-internal.h + snappy/snappy-stubs-public.h + snappy/snappy.cc + snappy/snappy.h +) +target_include_directories(snappy PUBLIC snappy) + +# ============================================================================== +# xxhash +# ============================================================================== +add_library(xxhash STATIC + xxhash/xxhash.c +) +target_include_directories(xxhash PUBLIC xxhash) + +# ============================================================================== +# zstd +# ============================================================================== +file(GLOB_RECURSE _zstd_common "zstd/lib/common/*.c" "zstd/lib/common/*.h") +file(GLOB_RECURSE _zstd_compress "zstd/lib/compress/*.c" "zstd/lib/compress/*.h") +file(GLOB_RECURSE _zstd_decompress "zstd/lib/decompress/*.c" "zstd/lib/decompress/*.h") +add_library(zstd STATIC + zstd/lib/zstd.h + ${_zstd_common} + ${_zstd_compress} + ${_zstd_decompress} +) +target_include_directories(zstd PUBLIC zstd/lib PRIVATE zstd/lib/common) +target_compile_definitions(zstd PRIVATE + XXH_NAMESPACE=ZSTD_ + ZSTD_LEGACY_SUPPORT=0 +) +if(NOT MSVC) + target_compile_definitions(zstd PRIVATE ZSTD_DISABLE_ASM) +endif() + +# ============================================================================== +# zarchive +# ============================================================================== +add_library(zarchive STATIC + zarchive/include/zarchive/zarchivecommon.h + zarchive/include/zarchive/zarchivereader.h + zarchive/include/zarchive/zarchivewriter.h + zarchive/src/zarchivereader.cpp + zarchive/src/zarchivewriter.cpp + zarchive/src/sha_256.c + zarchive/src/sha_256.h +) +target_include_directories(zarchive PUBLIC zarchive/include PRIVATE zstd/lib) +target_link_libraries(zarchive PUBLIC zstd) + +# ============================================================================== +# zlib-ng +# ============================================================================== +# Generate headers if missing +set(_zlibng_needs_configure FALSE) +foreach(_hdr zlib-ng.h zconf-ng.h zlib_name_mangling-ng.h gzread.c) + if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/zlib-ng/${_hdr}") + set(_zlibng_needs_configure TRUE) + break() + endif() +endforeach() +if(_zlibng_needs_configure) + execute_process( + COMMAND ${CMAKE_COMMAND} + -DZLIB_ENABLE_TESTS=OFF + -DWITH_GTEST=OFF + ${CMAKE_CURRENT_SOURCE_DIR}/zlib-ng + -B${CMAKE_CURRENT_SOURCE_DIR}/zlib-ng + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) +endif() +file(GLOB _zlibng_c "zlib-ng/*.c") +file(GLOB _zlibng_x86 "zlib-ng/arch/x86/*.c") +file(GLOB _zlibng_generic "zlib-ng/arch/generic/*.c") +add_library(zlib-ng STATIC + ${_zlibng_c} + ${_zlibng_x86} + ${_zlibng_generic} +) +target_compile_definitions(zlib-ng PRIVATE + X86_FEATURES + X86_HAVE_XSAVE_INTRIN + X86_SSSE3 + X86_SSE42 + WITH_GZFILEOP +) +if(WIN32) + target_compile_definitions(zlib-ng PRIVATE + X86_SSE2 + X86_AVX2 + X86_AVX512 + X86_AVX512VNNI + X86_PCLMULQDQ_CRC + X86_VPCLMULQDQ_CRC + ) +else() + # Remove AVX2/AVX512 files on non-Windows + set(_zlibng_exclude_patterns + "adler32_avx2" "adler32_avx512" "adler32_avx512_vnni" + "chunkset_avx2" "compare256_avx2" + "crc32_pclmulqdq" "crc32_vpclmulqdq" + "slide_hash_avx2" + ) + foreach(_pat ${_zlibng_exclude_patterns}) + list(FILTER _zlibng_x86 EXCLUDE REGEX "${_pat}") + endforeach() + # Re-set sources without excluded files + get_target_property(_zlibng_srcs zlib-ng SOURCES) + set_target_properties(zlib-ng PROPERTIES SOURCES "") + target_sources(zlib-ng PRIVATE ${_zlibng_c} ${_zlibng_x86} ${_zlibng_generic}) +endif() +target_include_directories(zlib-ng PUBLIC zlib-ng) + +# ============================================================================== +# libusb (Windows only) +# ============================================================================== +if(WIN32) + add_library(libusb STATIC + libusb/libusb/core.c + libusb/libusb/descriptor.c + libusb/libusb/hotplug.c + libusb/libusb/io.c + libusb/libusb/strerror.c + libusb/libusb/sync.c + libusb/libusb/os/events_windows.c + libusb/libusb/os/events_windows.h + libusb/libusb/os/threads_windows.c + libusb/libusb/os/threads_windows.h + libusb/libusb/os/windows_common.c + libusb/libusb/os/windows_common.h + libusb/libusb/os/windows_usbdk.c + libusb/libusb/os/windows_usbdk.h + libusb/libusb/os/windows_winusb.c + libusb/libusb/os/windows_winusb.h + ) + target_include_directories(libusb PUBLIC libusb/libusb PRIVATE libusb/msvc) +endif() + +# ============================================================================== +# SDL2 +# ============================================================================== +if(WIN32) + # Build SDL2 from source on Windows + file(GLOB _sdl2_sources + "SDL2/src/*.c" + "SDL2/src/atomic/*.c" + "SDL2/src/audio/*.c" + "SDL2/src/audio/directsound/*.c" + "SDL2/src/audio/disk/*.c" + "SDL2/src/audio/dummy/*.c" + "SDL2/src/audio/wasapi/*.c" + "SDL2/src/audio/winmm/*.c" + "SDL2/src/core/windows/*.c" + "SDL2/src/cpuinfo/*.c" + "SDL2/src/dynapi/*.c" + "SDL2/src/events/*.c" + "SDL2/src/file/*.c" + "SDL2/src/filesystem/windows/*.c" + "SDL2/src/haptic/*.c" + "SDL2/src/haptic/dummy/*.c" + "SDL2/src/haptic/windows/*.c" + "SDL2/src/hidapi/*.c" + "SDL2/src/joystick/*.c" + "SDL2/src/joystick/dummy/*.c" + "SDL2/src/joystick/hidapi/*.c" + "SDL2/src/joystick/virtual/*.c" + "SDL2/src/joystick/windows/*.c" + "SDL2/src/libm/*.c" + "SDL2/src/loadso/windows/*.c" + "SDL2/src/locale/*.c" + "SDL2/src/locale/windows/*.c" + "SDL2/src/misc/*.c" + "SDL2/src/misc/windows/*.c" + "SDL2/src/power/*.c" + "SDL2/src/power/windows/*.c" + "SDL2/src/render/*.c" + "SDL2/src/render/direct3d/*.c" + "SDL2/src/render/direct3d11/*.c" + "SDL2/src/render/direct3d12/*.c" + "SDL2/src/render/opengl/*.c" + "SDL2/src/render/opengles2/*.c" + "SDL2/src/render/software/*.c" + "SDL2/src/sensor/*.c" + "SDL2/src/sensor/dummy/*.c" + "SDL2/src/sensor/windows/*.c" + "SDL2/src/stdlib/*.c" + "SDL2/src/thread/*.c" + "SDL2/src/thread/generic/SDL_syscond.c" + "SDL2/src/thread/windows/*.c" + "SDL2/src/timer/*.c" + "SDL2/src/timer/windows/*.c" + "SDL2/src/video/*.c" + "SDL2/src/video/dummy/*.c" + "SDL2/src/video/windows/*.c" + "SDL2/src/video/yuv2rgb/*.c" + ) + add_library(SDL2 STATIC ${_sdl2_sources}) + target_compile_definitions(SDL2 PRIVATE + HAVE_LIBC + SDL_LEAN_AND_MEAN + SDL_RENDER_DISABLED + ) + target_include_directories(SDL2 PUBLIC SDL2/include) + target_link_libraries(SDL2 PRIVATE setupapi winmm imm32 version) +else() + # Use system SDL2 on Linux + add_library(SDL2 INTERFACE) + find_package(PkgConfig REQUIRED) + pkg_check_modules(SDL2_PKG REQUIRED sdl2) + target_include_directories(SDL2 INTERFACE ${SDL2_PKG_INCLUDE_DIRS}) + target_link_libraries(SDL2 INTERFACE ${SDL2_PKG_LDFLAGS}) + target_compile_options(SDL2 INTERFACE ${SDL2_PKG_CFLAGS_OTHER}) +endif() + +# ============================================================================== +# FFmpeg — upstream source lives in the FFmpeg submodule; xenia's static +# config.h / asm configuration overlay lives in ffmpeg-xenia alongside it. +# ============================================================================== + +# Shared FFmpeg settings applied to each libav* target (defines, include +# paths, platform-specific link deps, warning suppression, C linkage). +function(ffmpeg_common target) + target_compile_definitions(${target} PRIVATE + HAVE_AV_CONFIG_H + _USE_MATH_DEFINES + ) + target_include_directories(${target} PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/ffmpeg-xenia + ${CMAKE_CURRENT_SOURCE_DIR}/FFmpeg + ) + + if(WIN32) + target_include_directories(${target} PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/FFmpeg/compat/atomics/win32 + ) + target_link_libraries(${target} PRIVATE bcrypt) + # FFmpeg in unoptimized builds emits so much dead code that link time + # blows up; /Os keeps Debug and Checked within sane limits. + target_compile_options(${target} PRIVATE + $<$:/Os> + $<$:/Os> + ) + else() + target_include_directories(${target} PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/FFmpeg/compat/atomics/gcc + ) + # glibc POSIX feature macros — FFmpeg assumes them for certain + # syscalls and string extensions. + target_compile_definitions(${target} PRIVATE + _GNU_SOURCE + _POSIX_C_SOURCE=200809L + _XOPEN_SOURCE=700 + ) + endif() + + if(MSVC) + target_compile_options(${target} PRIVATE /w) + else() + target_compile_options(${target} PRIVATE -w) + endif() + + # All FFmpeg source is C + set_target_properties(${target} PROPERTIES LINKER_LANGUAGE C) +endfunction() + +# --- libavutil --- +add_library(libavutil STATIC + FFmpeg/libavutil/adler32.c + FFmpeg/libavutil/aes.c + FFmpeg/libavutil/aes_ctr.c + FFmpeg/libavutil/audio_fifo.c + FFmpeg/libavutil/avstring.c + FFmpeg/libavutil/avsscanf.c + FFmpeg/libavutil/base64.c + FFmpeg/libavutil/blowfish.c + FFmpeg/libavutil/bprint.c + FFmpeg/libavutil/buffer.c + FFmpeg/libavutil/cast5.c + FFmpeg/libavutil/camellia.c + FFmpeg/libavutil/channel_layout.c + FFmpeg/libavutil/csp.c + FFmpeg/libavutil/cpu.c + FFmpeg/libavutil/crc.c + FFmpeg/libavutil/des.c + FFmpeg/libavutil/dict.c + FFmpeg/libavutil/display.c + FFmpeg/libavutil/dovi_meta.c + FFmpeg/libavutil/downmix_info.c + FFmpeg/libavutil/encryption_info.c + FFmpeg/libavutil/error.c + FFmpeg/libavutil/eval.c + FFmpeg/libavutil/fifo.c + FFmpeg/libavutil/file.c + FFmpeg/libavutil/file_open.c + FFmpeg/libavutil/float_dsp.c + FFmpeg/libavutil/fixed_dsp.c + FFmpeg/libavutil/frame.c + FFmpeg/libavutil/hash.c + FFmpeg/libavutil/hdr_dynamic_metadata.c + FFmpeg/libavutil/hmac.c + FFmpeg/libavutil/hwcontext.c + FFmpeg/libavutil/imgutils.c + FFmpeg/libavutil/integer.c + FFmpeg/libavutil/intmath.c + FFmpeg/libavutil/lfg.c + FFmpeg/libavutil/lls.c + FFmpeg/libavutil/log.c + FFmpeg/libavutil/log2_tab.c + FFmpeg/libavutil/mathematics.c + FFmpeg/libavutil/mastering_display_metadata.c + FFmpeg/libavutil/md5.c + FFmpeg/libavutil/mem.c + FFmpeg/libavutil/murmur3.c + FFmpeg/libavutil/opt.c + FFmpeg/libavutil/parseutils.c + FFmpeg/libavutil/pixdesc.c + FFmpeg/libavutil/pixelutils.c + FFmpeg/libavutil/random_seed.c + FFmpeg/libavutil/rational.c + FFmpeg/libavutil/reverse.c + FFmpeg/libavutil/rc4.c + FFmpeg/libavutil/ripemd.c + FFmpeg/libavutil/samplefmt.c + FFmpeg/libavutil/sha.c + FFmpeg/libavutil/sha512.c + FFmpeg/libavutil/slicethread.c + FFmpeg/libavutil/spherical.c + FFmpeg/libavutil/stereo3d.c + FFmpeg/libavutil/threadmessage.c + FFmpeg/libavutil/time.c + FFmpeg/libavutil/timecode.c + FFmpeg/libavutil/tree.c + FFmpeg/libavutil/twofish.c + FFmpeg/libavutil/utils.c + FFmpeg/libavutil/xga_font_data.c + FFmpeg/libavutil/xtea.c + FFmpeg/libavutil/tea.c + FFmpeg/libavutil/tx.c + FFmpeg/libavutil/tx_float.c + FFmpeg/libavutil/tx_double.c + FFmpeg/libavutil/tx_int32.c + FFmpeg/libavutil/video_enc_params.c + FFmpeg/libavutil/film_grain_params.c + FFmpeg/libavutil/side_data.c + FFmpeg/libavutil/refstruct.c + FFmpeg/libavutil/container_fifo.c + FFmpeg/libavutil/float_scalarproduct.c + FFmpeg/libavutil/timecode_internal.c + FFmpeg/libavutil/iamf.c + FFmpeg/libavutil/timestamp.c +) +# x86 platform files +if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64") + target_sources(libavutil PRIVATE + FFmpeg/libavutil/x86/cpu.c + FFmpeg/libavutil/x86/fixed_dsp_init.c + FFmpeg/libavutil/x86/float_dsp_init.c + FFmpeg/libavutil/x86/imgutils_init.c + FFmpeg/libavutil/x86/lls_init.c + FFmpeg/libavutil/x86/tx_float_init.c + ) +endif() +ffmpeg_common(libavutil) + +# --- libavcodec --- +add_library(libavcodec STATIC + FFmpeg/libavcodec/ac3_parser.c + FFmpeg/libavcodec/adts_parser.c + FFmpeg/libavcodec/allcodecs.c + FFmpeg/libavcodec/avcodec.c + FFmpeg/libavcodec/avdct.c + FFmpeg/libavcodec/packet.c + FFmpeg/libavcodec/bitstream.c + FFmpeg/libavcodec/bitstream_filters.c + FFmpeg/libavcodec/bsf.c + FFmpeg/libavcodec/codec_desc.c + FFmpeg/libavcodec/codec_par.c + FFmpeg/libavcodec/d3d11va.c + FFmpeg/libavcodec/decode.c + FFmpeg/libavcodec/dirac.c + FFmpeg/libavcodec/dv_profile.c + FFmpeg/libavcodec/encode.c + FFmpeg/libavcodec/imgconvert.c + FFmpeg/libavcodec/jni.c + FFmpeg/libavcodec/mathtables.c + FFmpeg/libavcodec/mediacodec.c + FFmpeg/libavcodec/mpeg12framerate.c + FFmpeg/libavcodec/options.c + FFmpeg/libavcodec/parser.c + FFmpeg/libavcodec/parsers.c + FFmpeg/libavcodec/profiles.c + FFmpeg/libavcodec/qsv_api.c + FFmpeg/libavcodec/raw.c + FFmpeg/libavcodec/utils.c + FFmpeg/libavcodec/vorbis_parser.c + FFmpeg/libavcodec/xiph.c + FFmpeg/libavcodec/dct32_fixed.c + FFmpeg/libavcodec/dct32_float.c + FFmpeg/libavcodec/faandct.c + FFmpeg/libavcodec/faanidct.c + FFmpeg/libavcodec/fdctdsp.c + FFmpeg/libavcodec/jfdctfst.c + FFmpeg/libavcodec/jfdctint.c + FFmpeg/libavcodec/idctdsp.c + FFmpeg/libavcodec/simple_idct.c + FFmpeg/libavcodec/jrevdct.c + FFmpeg/libavcodec/mpegaudio.c + FFmpeg/libavcodec/mpegaudiodec_common.c + FFmpeg/libavcodec/mpegaudiodsp.c + FFmpeg/libavcodec/mpegaudiodsp_data.c + FFmpeg/libavcodec/mpegaudiodsp_fixed.c + FFmpeg/libavcodec/mpegaudiodsp_float.c + FFmpeg/libavcodec/mpegaudiodecheader.c + FFmpeg/libavcodec/mpegaudiodata.c + FFmpeg/libavcodec/sinewin.c + FFmpeg/libavcodec/wma_freqs.c + FFmpeg/libavcodec/mpegaudiodec_fixed.c + FFmpeg/libavcodec/mpegaudiodec_float.c + FFmpeg/libavcodec/wmaprodec.c + FFmpeg/libavcodec/wma.c + FFmpeg/libavcodec/wma_common.c + FFmpeg/libavcodec/wmadec.c + FFmpeg/libavcodec/aactab.c + FFmpeg/libavcodec/mpegaudio_parser.c + FFmpeg/libavcodec/pthread.c + FFmpeg/libavcodec/pthread_slice.c + FFmpeg/libavcodec/pthread_frame.c + FFmpeg/libavcodec/get_buffer.c + FFmpeg/libavcodec/vlc.c + FFmpeg/libavcodec/threadprogress.c + FFmpeg/libavcodec/bsf/null.c + FFmpeg/libavcodec/exif.c + FFmpeg/libavcodec/mpegaudiotabs.c + FFmpeg/libavcodec/tiff_common.c +) +if(WIN32) + target_sources(libavcodec PRIVATE FFmpeg/libavcodec/file_open.c) +endif() +# x86 platform files +if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64") + target_sources(libavcodec PRIVATE + FFmpeg/libavcodec/x86/constants.c + FFmpeg/libavcodec/x86/fdctdsp_init.c + FFmpeg/libavcodec/x86/idctdsp_init.c + FFmpeg/libavcodec/x86/mpegaudiodsp.c + FFmpeg/libavcodec/x86/fdct.c + ) +endif() +target_include_directories(libavcodec PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/FFmpeg/libavcodec +) +target_link_libraries(libavcodec PRIVATE libavutil) +ffmpeg_common(libavcodec) + +# --- libavformat --- +add_library(libavformat STATIC + FFmpeg/libavformat/allformats.c + FFmpeg/libavformat/avio.c + FFmpeg/libavformat/aviobuf.c + FFmpeg/libavformat/dump.c + FFmpeg/libavformat/format.c + FFmpeg/libavformat/id3v1.c + FFmpeg/libavformat/id3v2.c + FFmpeg/libavformat/metadata.c + FFmpeg/libavformat/mux.c + FFmpeg/libavformat/options.c + FFmpeg/libavformat/os_support.c + FFmpeg/libavformat/protocols.c + FFmpeg/libavformat/riff.c + FFmpeg/libavformat/sdp.c + FFmpeg/libavformat/url.c + FFmpeg/libavformat/utils.c + FFmpeg/libavformat/riffdec.c + FFmpeg/libavformat/asfdec_f.c + FFmpeg/libavformat/asf.c + FFmpeg/libavformat/asfcrypt.c + FFmpeg/libavformat/avlanguage.c + FFmpeg/libavformat/mp3dec.c + FFmpeg/libavformat/replaygain.c + FFmpeg/libavformat/file.c + FFmpeg/libavformat/demux.c + FFmpeg/libavformat/avformat.c + FFmpeg/libavformat/seek.c + FFmpeg/libavformat/demux_utils.c + FFmpeg/libavformat/urldecode.c + FFmpeg/libavformat/asf_tags.c + FFmpeg/libavformat/to_upper4.c +) +if(WIN32) + target_sources(libavformat PRIVATE FFmpeg/libavformat/file_open.c) +endif() +target_link_libraries(libavformat PRIVATE libavutil libavcodec) +ffmpeg_common(libavformat) diff --git a/third_party/SDL2-static.lua b/third_party/SDL2-static.lua deleted file mode 100644 index 2598b90a9..000000000 --- a/third_party/SDL2-static.lua +++ /dev/null @@ -1,360 +0,0 @@ --- This project resembles the build configuration on Windows only. -group("third_party") -project("SDL2") - uuid("65878768-95A1-4E7B-8DFB-B23A09E0DE7C") - kind("StaticLib") - language("C") - - defines({ - "HAVE_LIBC", - "SDL_LEAN_AND_MEAN", - "SDL_RENDER_DISABLED", - }) - links({ - "setupapi.lib", - "winmm.lib", - "imm32.lib", - "version.lib", - }) - includedirs({ - "SDL2/include", - }) - files({ - -- 1:1 from SDL2/VisualC/SDL/SDL.vcxproj file - "SDL2/src/audio/directsound/SDL_directsound.h", - "SDL2/src/audio/disk/SDL_diskaudio.h", - "SDL2/src/audio/dummy/SDL_dummyaudio.h", - "SDL2/src/audio/SDL_audio_c.h", - "SDL2/src/audio/SDL_audiodev_c.h", - "SDL2/src/audio/SDL_sysaudio.h", - "SDL2/src/audio/SDL_wave.h", - "SDL2/src/audio/wasapi/SDL_wasapi.h", - "SDL2/src/audio/winmm/SDL_winmm.h", - "SDL2/src/core/windows/SDL_directx.h", - "SDL2/src/core/windows/SDL_hid.h", - "SDL2/src/core/windows/SDL_immdevice.h", - "SDL2/src/core/windows/SDL_windows.h", - "SDL2/src/core/windows/SDL_xinput.h", - "SDL2/src/dynapi/SDL_dynapi.h", - "SDL2/src/dynapi/SDL_dynapi_overrides.h", - "SDL2/src/dynapi/SDL_dynapi_procs.h", - "SDL2/src/events/blank_cursor.h", - "SDL2/src/events/default_cursor.h", - "SDL2/src/events/scancodes_windows.h", - "SDL2/src/events/SDL_clipboardevents_c.h", - "SDL2/src/events/SDL_displayevents_c.h", - "SDL2/src/events/SDL_dropevents_c.h", - "SDL2/src/events/SDL_events_c.h", - "SDL2/src/events/SDL_gesture_c.h", - "SDL2/src/events/SDL_keyboard_c.h", - "SDL2/src/events/SDL_mouse_c.h", - "SDL2/src/events/SDL_touch_c.h", - "SDL2/src/events/SDL_windowevents_c.h", - "SDL2/src/haptic/SDL_haptic_c.h", - "SDL2/src/haptic/SDL_syshaptic.h", - "SDL2/src/haptic/windows/SDL_dinputhaptic_c.h", - "SDL2/src/haptic/windows/SDL_windowshaptic_c.h", - "SDL2/src/haptic/windows/SDL_xinputhaptic_c.h", - "SDL2/src/hidapi/hidapi/hidapi.h", - "SDL2/src/hidapi/SDL_hidapi_c.h", - "SDL2/src/joystick/controller_type.h", - "SDL2/src/joystick/hidapi/SDL_hidapijoystick_c.h", - "SDL2/src/joystick/hidapi/SDL_hidapi_rumble.h", - "SDL2/src/joystick/SDL_gamecontrollerdb.h", - "SDL2/src/joystick/SDL_joystick_c.h", - "SDL2/src/joystick/SDL_steam_virtual_gamepad.h", - "SDL2/src/joystick/SDL_sysjoystick.h", - "SDL2/src/joystick/usb_ids.h", - "SDL2/src/joystick/virtual/SDL_virtualjoystick_c.h", - "SDL2/src/joystick/windows/SDL_dinputjoystick_c.h", - "SDL2/src/joystick/windows/SDL_rawinputjoystick_c.h", - "SDL2/src/joystick/windows/SDL_windowsjoystick_c.h", - "SDL2/src/joystick/windows/SDL_xinputjoystick_c.h", - "SDL2/src/libm/math_libm.h", - "SDL2/src/libm/math_private.h", - "SDL2/src/locale/SDL_syslocale.h", - "SDL2/src/misc/SDL_sysurl.h", - "SDL2/src/power/SDL_syspower.h", - "SDL2/src/render/direct3d11/SDL_shaders_d3d11.h", - "SDL2/src/render/direct3d12/SDL_shaders_d3d12.h", - "SDL2/src/render/direct3d/SDL_shaders_d3d.h", - "SDL2/src/render/opengles2/SDL_gles2funcs.h", - "SDL2/src/render/opengles2/SDL_shaders_gles2.h", - "SDL2/src/render/opengl/SDL_glfuncs.h", - "SDL2/src/render/opengl/SDL_shaders_gl.h", - "SDL2/src/render/SDL_d3dmath.h", - "SDL2/src/render/SDL_sysrender.h", - "SDL2/src/render/SDL_yuv_sw_c.h", - "SDL2/src/render/software/SDL_blendfillrect.h", - "SDL2/src/render/software/SDL_blendline.h", - "SDL2/src/render/software/SDL_blendpoint.h", - "SDL2/src/render/software/SDL_draw.h", - "SDL2/src/render/software/SDL_drawline.h", - "SDL2/src/render/software/SDL_drawpoint.h", - "SDL2/src/render/software/SDL_render_sw_c.h", - "SDL2/src/render/software/SDL_rotate.h", - "SDL2/src/render/software/SDL_triangle.h", - "SDL2/src/SDL_assert_c.h", - "SDL2/src/SDL_dataqueue.h", - "SDL2/src/SDL_error_c.h", - "SDL2/src/SDL_guid.c", - "SDL2/src/SDL_hints_c.h", - "SDL2/src/SDL_internal.h", - "SDL2/src/SDL_list.h", - "SDL2/src/SDL_log_c.h", - "SDL2/src/sensor/dummy/SDL_dummysensor.h", - "SDL2/src/sensor/SDL_sensor_c.h", - "SDL2/src/sensor/SDL_syssensor.h", - "SDL2/src/sensor/windows/SDL_windowssensor.h", - "SDL2/src/thread/SDL_systhread.h", - "SDL2/src/thread/SDL_thread_c.h", - "SDL2/src/thread/generic/SDL_syscond_c.h", - "SDL2/src/thread/windows/SDL_sysmutex_c.h", - "SDL2/src/thread/windows/SDL_systhread_c.h", - "SDL2/src/timer/SDL_timer_c.h", - "SDL2/src/video/dummy/SDL_nullevents_c.h", - "SDL2/src/video/dummy/SDL_nullframebuffer_c.h", - "SDL2/src/video/dummy/SDL_nullvideo.h", - "SDL2/src/video/khronos/vulkan/vk_icd.h", - "SDL2/src/video/khronos/vulkan/vk_layer.h", - "SDL2/src/video/khronos/vulkan/vk_platform.h", - "SDL2/src/video/khronos/vulkan/vk_sdk_platform.h", - "SDL2/src/video/khronos/vulkan/vulkan.h", - "SDL2/src/video/khronos/vulkan/vulkan_android.h", - "SDL2/src/video/khronos/vulkan/vulkan_beta.h", - "SDL2/src/video/khronos/vulkan/vulkan_core.h", - "SDL2/src/video/khronos/vulkan/vulkan_directfb.h", - "SDL2/src/video/khronos/vulkan/vulkan_fuchsia.h", - "SDL2/src/video/khronos/vulkan/vulkan_ggp.h", - "SDL2/src/video/khronos/vulkan/vulkan_ios.h", - "SDL2/src/video/khronos/vulkan/vulkan_macos.h", - "SDL2/src/video/khronos/vulkan/vulkan_metal.h", - "SDL2/src/video/khronos/vulkan/vulkan_vi.h", - "SDL2/src/video/khronos/vulkan/vulkan_wayland.h", - "SDL2/src/video/khronos/vulkan/vulkan_win32.h", - "SDL2/src/video/khronos/vulkan/vulkan_xcb.h", - "SDL2/src/video/khronos/vulkan/vulkan_xlib.h", - "SDL2/src/video/khronos/vulkan/vulkan_xlib_xrandr.h", - "SDL2/src/video/SDL_blit.h", - "SDL2/src/video/SDL_blit_auto.h", - "SDL2/src/video/SDL_blit_copy.h", - "SDL2/src/video/SDL_blit_slow.h", - "SDL2/src/video/SDL_egl_c.h", - "SDL2/src/video/SDL_pixels_c.h", - "SDL2/src/video/SDL_rect_c.h", - "SDL2/src/video/SDL_RLEaccel_c.h", - "SDL2/src/video/SDL_shape_internals.h", - "SDL2/src/video/SDL_sysvideo.h", - "SDL2/src/video/SDL_vulkan_internal.h", - "SDL2/src/video/SDL_yuv_c.h", - "SDL2/src/video/windows/SDL_msctf.h", - "SDL2/src/video/windows/SDL_vkeys.h", - "SDL2/src/video/windows/SDL_windowsclipboard.h", - "SDL2/src/video/windows/SDL_windowsevents.h", - "SDL2/src/video/windows/SDL_windowsframebuffer.h", - "SDL2/src/video/windows/SDL_windowskeyboard.h", - "SDL2/src/video/windows/SDL_windowsmessagebox.h", - "SDL2/src/video/windows/SDL_windowsmodes.h", - "SDL2/src/video/windows/SDL_windowsmouse.h", - "SDL2/src/video/windows/SDL_windowsopengl.h", - "SDL2/src/video/windows/SDL_windowsopengles.h", - "SDL2/src/video/windows/SDL_windowsshape.h", - "SDL2/src/video/windows/SDL_windowsvideo.h", - "SDL2/src/video/windows/SDL_windowsvulkan.h", - "SDL2/src/video/windows/SDL_windowswindow.h", - "SDL2/src/video/windows/wmmsg.h", - "SDL2/src/video/yuv2rgb/yuv_rgb.h", - "SDL2/src/video/yuv2rgb/yuv_rgb_common.h", - "SDL2/src/video/yuv2rgb/yuv_rgb_internal.h", - "SDL2/src/video/yuv2rgb/yuv_rgb_lsx.h", - "SDL2/src/video/yuv2rgb/yuv_rgb_lsx_func.h", - "SDL2/src/video/yuv2rgb/yuv_rgb_sse.h", - "SDL2/src/video/yuv2rgb/yuv_rgb_sse_func.h", - "SDL2/src/video/yuv2rgb/yuv_rgb_std.h", - "SDL2/src/video/yuv2rgb/yuv_rgb_std_func.h", - - "SDL2/src/atomic/SDL_atomic.c", - "SDL2/src/atomic/SDL_spinlock.c", - "SDL2/src/audio/directsound/SDL_directsound.c", - "SDL2/src/audio/disk/SDL_diskaudio.c", - "SDL2/src/audio/dummy/SDL_dummyaudio.c", - "SDL2/src/audio/SDL_audio.c", - "SDL2/src/audio/SDL_audiocvt.c", - "SDL2/src/audio/SDL_audiodev.c", - "SDL2/src/audio/SDL_audiotypecvt.c", - "SDL2/src/audio/SDL_mixer.c", - "SDL2/src/audio/SDL_wave.c", - "SDL2/src/audio/winmm/SDL_winmm.c", - "SDL2/src/audio/wasapi/SDL_wasapi.c", - "SDL2/src/audio/wasapi/SDL_wasapi_win32.c", - "SDL2/src/core/windows/SDL_hid.c", - "SDL2/src/core/windows/SDL_immdevice.c", - "SDL2/src/core/windows/SDL_windows.c", - "SDL2/src/core/windows/SDL_xinput.c", - "SDL2/src/cpuinfo/SDL_cpuinfo.c", - "SDL2/src/dynapi/SDL_dynapi.c", - "SDL2/src/events/SDL_clipboardevents.c", - "SDL2/src/events/SDL_displayevents.c", - "SDL2/src/events/SDL_dropevents.c", - "SDL2/src/events/SDL_events.c", - "SDL2/src/events/SDL_gesture.c", - "SDL2/src/events/SDL_keyboard.c", - "SDL2/src/events/SDL_mouse.c", - "SDL2/src/events/SDL_quit.c", - "SDL2/src/events/SDL_touch.c", - "SDL2/src/events/SDL_windowevents.c", - "SDL2/src/file/SDL_rwops.c", - "SDL2/src/filesystem/windows/SDL_sysfilesystem.c", - "SDL2/src/haptic/dummy/SDL_syshaptic.c", - "SDL2/src/haptic/SDL_haptic.c", - "SDL2/src/haptic/windows/SDL_dinputhaptic.c", - "SDL2/src/haptic/windows/SDL_windowshaptic.c", - "SDL2/src/haptic/windows/SDL_xinputhaptic.c", - "SDL2/src/hidapi/SDL_hidapi.c", - "SDL2/src/joystick/controller_type.c", - "SDL2/src/joystick/dummy/SDL_sysjoystick.c", - "SDL2/src/joystick/hidapi/SDL_hidapijoystick.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_combined.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_gamecube.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_luna.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_ps3.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_ps4.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_ps5.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_rumble.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_shield.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_stadia.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_steam.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_steamdeck.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_switch.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_wii.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_xbox360.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_xbox360w.c", - "SDL2/src/joystick/hidapi/SDL_hidapi_xboxone.c", - "SDL2/src/joystick/SDL_gamecontroller.c", - "SDL2/src/joystick/SDL_joystick.c", - "SDL2/src/joystick/SDL_steam_virtual_gamepad.c", - "SDL2/src/joystick/virtual/SDL_virtualjoystick.c", - "SDL2/src/joystick/windows/SDL_dinputjoystick.c", - "SDL2/src/joystick/windows/SDL_rawinputjoystick.c", - "SDL2/src/joystick/windows/SDL_windowsjoystick.c", - "SDL2/src/joystick/windows/SDL_windows_gaming_input.c", - "SDL2/src/joystick/windows/SDL_xinputjoystick.c", - "SDL2/src/libm/e_atan2.c", - "SDL2/src/libm/e_exp.c", - "SDL2/src/libm/e_fmod.c", - "SDL2/src/libm/e_log.c", - "SDL2/src/libm/e_log10.c", - "SDL2/src/libm/e_pow.c", - "SDL2/src/libm/e_rem_pio2.c", - "SDL2/src/libm/e_sqrt.c", - "SDL2/src/libm/k_cos.c", - "SDL2/src/libm/k_rem_pio2.c", - "SDL2/src/libm/k_sin.c", - "SDL2/src/libm/k_tan.c", - "SDL2/src/libm/s_atan.c", - "SDL2/src/libm/s_copysign.c", - "SDL2/src/libm/s_cos.c", - "SDL2/src/libm/s_fabs.c", - "SDL2/src/libm/s_floor.c", - "SDL2/src/libm/s_scalbn.c", - "SDL2/src/libm/s_sin.c", - "SDL2/src/libm/s_tan.c", - "SDL2/src/loadso/windows/SDL_sysloadso.c", - "SDL2/src/locale/SDL_locale.c", - "SDL2/src/locale/windows/SDL_syslocale.c", - "SDL2/src/misc/SDL_url.c", - "SDL2/src/misc/windows/SDL_sysurl.c", - "SDL2/src/power/SDL_power.c", - "SDL2/src/power/windows/SDL_syspower.c", - "SDL2/src/render/direct3d11/SDL_shaders_d3d11.c", - "SDL2/src/render/direct3d12/SDL_render_d3d12.c", - "SDL2/src/render/direct3d12/SDL_shaders_d3d12.c", - "SDL2/src/render/direct3d/SDL_render_d3d.c", - "SDL2/src/render/direct3d11/SDL_render_d3d11.c", - "SDL2/src/render/direct3d/SDL_shaders_d3d.c", - "SDL2/src/render/opengl/SDL_render_gl.c", - "SDL2/src/render/opengl/SDL_shaders_gl.c", - "SDL2/src/render/opengles2/SDL_render_gles2.c", - "SDL2/src/render/opengles2/SDL_shaders_gles2.c", - "SDL2/src/render/SDL_d3dmath.c", - "SDL2/src/render/SDL_render.c", - "SDL2/src/render/SDL_yuv_sw.c", - "SDL2/src/render/software/SDL_blendfillrect.c", - "SDL2/src/render/software/SDL_blendline.c", - "SDL2/src/render/software/SDL_blendpoint.c", - "SDL2/src/render/software/SDL_drawline.c", - "SDL2/src/render/software/SDL_drawpoint.c", - "SDL2/src/render/software/SDL_render_sw.c", - "SDL2/src/render/software/SDL_rotate.c", - "SDL2/src/render/software/SDL_triangle.c", - "SDL2/src/SDL.c", - "SDL2/src/SDL_assert.c", - "SDL2/src/SDL_dataqueue.c", - "SDL2/src/SDL_list.c", - "SDL2/src/SDL_error.c", - "SDL2/src/SDL_hints.c", - "SDL2/src/SDL_log.c", - "SDL2/src/SDL_utils.c", - "SDL2/src/sensor/dummy/SDL_dummysensor.c", - "SDL2/src/sensor/SDL_sensor.c", - "SDL2/src/sensor/windows/SDL_windowssensor.c", - "SDL2/src/stdlib/SDL_crc16.c", - "SDL2/src/stdlib/SDL_crc32.c", - "SDL2/src/stdlib/SDL_getenv.c", - "SDL2/src/stdlib/SDL_iconv.c", - "SDL2/src/stdlib/SDL_malloc.c", - "SDL2/src/stdlib/SDL_mslibc.c", - "SDL2/src/stdlib/SDL_qsort.c", - "SDL2/src/stdlib/SDL_stdlib.c", - "SDL2/src/stdlib/SDL_string.c", - "SDL2/src/stdlib/SDL_strtokr.c", - "SDL2/src/thread/generic/SDL_syscond.c", - "SDL2/src/thread/SDL_thread.c", - "SDL2/src/thread/windows/SDL_syscond_cv.c", - "SDL2/src/thread/windows/SDL_sysmutex.c", - "SDL2/src/thread/windows/SDL_syssem.c", - "SDL2/src/thread/windows/SDL_systhread.c", - "SDL2/src/thread/windows/SDL_systls.c", - "SDL2/src/timer/SDL_timer.c", - "SDL2/src/timer/windows/SDL_systimer.c", - "SDL2/src/video/dummy/SDL_nullevents.c", - "SDL2/src/video/dummy/SDL_nullframebuffer.c", - "SDL2/src/video/dummy/SDL_nullvideo.c", - "SDL2/src/video/SDL_blit.c", - "SDL2/src/video/SDL_blit_0.c", - "SDL2/src/video/SDL_blit_1.c", - "SDL2/src/video/SDL_blit_A.c", - "SDL2/src/video/SDL_blit_auto.c", - "SDL2/src/video/SDL_blit_copy.c", - "SDL2/src/video/SDL_blit_N.c", - "SDL2/src/video/SDL_blit_slow.c", - "SDL2/src/video/SDL_bmp.c", - "SDL2/src/video/SDL_clipboard.c", - "SDL2/src/video/SDL_egl.c", - "SDL2/src/video/SDL_fillrect.c", - "SDL2/src/video/SDL_pixels.c", - "SDL2/src/video/SDL_rect.c", - "SDL2/src/video/SDL_RLEaccel.c", - "SDL2/src/video/SDL_shape.c", - "SDL2/src/video/SDL_stretch.c", - "SDL2/src/video/SDL_surface.c", - "SDL2/src/video/SDL_video.c", - "SDL2/src/video/SDL_vulkan_utils.c", - "SDL2/src/video/SDL_yuv.c", - "SDL2/src/video/windows/SDL_windowsclipboard.c", - "SDL2/src/video/windows/SDL_windowsevents.c", - "SDL2/src/video/windows/SDL_windowsframebuffer.c", - "SDL2/src/video/windows/SDL_windowskeyboard.c", - "SDL2/src/video/windows/SDL_windowsmessagebox.c", - "SDL2/src/video/windows/SDL_windowsmodes.c", - "SDL2/src/video/windows/SDL_windowsmouse.c", - "SDL2/src/video/windows/SDL_windowsopengl.c", - "SDL2/src/video/windows/SDL_windowsopengles.c", - "SDL2/src/video/windows/SDL_windowsshape.c", - "SDL2/src/video/windows/SDL_windowsvideo.c", - "SDL2/src/video/windows/SDL_windowsvulkan.c", - "SDL2/src/video/windows/SDL_windowswindow.c", - "SDL2/src/video/yuv2rgb/yuv_rgb_lsx.c", - "SDL2/src/video/yuv2rgb/yuv_rgb_sse.c", - "SDL2/src/video/yuv2rgb/yuv_rgb_std.c", - }) diff --git a/third_party/SDL2.lua b/third_party/SDL2.lua deleted file mode 100644 index da0456f8b..000000000 --- a/third_party/SDL2.lua +++ /dev/null @@ -1,94 +0,0 @@ --- --- On Linux we build against the system version (libsdl2-dev for building), --- since SDL2 is our robust API there like DirectX is on Windows. --- - -local sdl2_sys_includedirs = {} -local sdl2_sys_libdirs = {} -local third_party_path = os.getcwd() -local sdl2_config = os.getenv("SDL2_CONFIG") or "sdl2-config" - -if os.istarget("windows") then - -- build ourselves - include("SDL2-static.lua") -else - -- use system libraries - if os.istarget("macosx") then - local target_arch = os.targetarch() or "" - local option_arch = _OPTIONS and _OPTIONS["arch"] or "" - local want_x86 = - _OPTIONS and _OPTIONS["mac-x86_64"] or - target_arch == "x86_64" or target_arch == "x64" or - option_arch == "x86_64" or option_arch == "x64" - local want_arm = target_arch == "arm64" or option_arch == "arm64" - if want_x86 and os.isfile("/usr/local/bin/sdl2-config") then - sdl2_config = "/usr/local/bin/sdl2-config" - elseif want_arm and os.isfile("/opt/homebrew/bin/sdl2-config") then - sdl2_config = "/opt/homebrew/bin/sdl2-config" - end - end - local result, code, what = os.outputof(sdl2_config .. " --cflags") - if result then - print("SDL2: sdl2-config --cflags returned: " .. result) - for inc in string.gmatch(result, "-I([%S]+)") do - table.insert(sdl2_sys_includedirs, inc) - print("SDL2: Added include dir: " .. inc) - end - if #sdl2_sys_includedirs == 0 then - print("SDL2: Warning - no include directories found in sdl2-config output") - end - else - error("Failed to run 'sdl2-config'. Are libsdl2 development files installed?") - end - local libs, libs_code, libs_what = os.outputof(sdl2_config .. " --libs") - if libs then - for libdir in string.gmatch(libs, "-L([%S]+)") do - table.insert(sdl2_sys_libdirs, libdir) - end - else - error("Failed to run 'sdl2-config --libs'. Are libsdl2 development files installed?") - end -end - -if os.istarget("macosx") then - local target_arch = os.targetarch() or "" - local option_arch = _OPTIONS and _OPTIONS["arch"] or "" - local want_x86 = - _OPTIONS and _OPTIONS["mac-x86_64"] or - target_arch == "x86_64" or target_arch == "x64" or - option_arch == "x86_64" or option_arch == "x64" - local want_arm = target_arch == "arm64" or option_arch == "arm64" - if want_x86 and os.isdir("/usr/local/opt/sdl2/lib") then - table.insert(sdl2_sys_libdirs, "/usr/local/opt/sdl2/lib") - elseif want_arm and os.isdir("/opt/homebrew/opt/sdl2/lib") then - table.insert(sdl2_sys_libdirs, "/opt/homebrew/opt/sdl2/lib") - end -end - --- --- Call this function in project scope to include the SDL2 headers. --- -function sdl2_include() - filter("platforms:Windows") - includedirs({ - path.getrelative(".", third_party_path) .. "/SDL2/include", - }) - filter("platforms:Linux or Mac") - includedirs(sdl2_sys_includedirs) - libdirs(sdl2_sys_libdirs) - filter({}) - - -- For Linux, also add SDL2 includes outside of filter for cmake compatibility - -- The premake-cmake module doesn't properly handle filtered include directories - if os.istarget("linux") then - includedirs(sdl2_sys_includedirs) - libdirs(sdl2_sys_libdirs) - -- Also add common fallback path for cases where sdl2-config doesn't return -I flags - if #sdl2_sys_includedirs == 0 then - includedirs({"/usr/include/SDL2"}) - print("SDL2: Using fallback include path /usr/include/SDL2") - else - print("SDL2: Added includes for Linux cmake: " .. table.concat(sdl2_sys_includedirs, ", ")) - end - end -end diff --git a/third_party/aes_128.lua b/third_party/aes_128.lua deleted file mode 100644 index d53f66eaa..000000000 --- a/third_party/aes_128.lua +++ /dev/null @@ -1,11 +0,0 @@ -group("third_party") -project("aes_128") - uuid("b50458bf-dd83-4c1a-8cad-61f5fbbfd720") - kind("StaticLib") - language("C") - includedirs({ - "aes_128", - }) - files({ - "aes_128/unroll/aes.c", - }) diff --git a/third_party/asio.lua b/third_party/asio.lua deleted file mode 100644 index 72e9fc0b7..000000000 --- a/third_party/asio.lua +++ /dev/null @@ -1,26 +0,0 @@ -group("third_party") -project("asio") - uuid("a5f06be0-9c7d-4e8f-b2a1-3d4c5e6f7890") - kind("Utility") - language("C++") - - includedirs({ - "third_party/asio/include", - }) - - defines({ - "ASIO_STANDALONE", - "ASIO_NO_DEPRECATED", - }) - - filter("platforms:Windows") - defines({ - "_WIN32_WINNT=0x0A00", -- Windows 10+ - }) - filter({}) - - files({ - "third_party/asio/include/asio.hpp", - }) - - warnings("Off") diff --git a/third_party/capstone.lua b/third_party/capstone.lua deleted file mode 100644 index f2f25681e..000000000 --- a/third_party/capstone.lua +++ /dev/null @@ -1,73 +0,0 @@ -group("third_party") -project("capstone") - uuid("b3a89f7e-bb02-4945-ae75-219caed6afa2") - kind("StaticLib") - language("C") - defines({ - "CAPSTONE_DIET_NO", - "CAPSTONE_USE_SYS_DYN_MEM", - "_LIB", - }) - filter("architecture:x86_64") - defines({ - "CAPSTONE_HAS_X86", - "CAPSTONE_X86_ATT_DISABLE", - "CAPSTONE_X86_REDUCE_NO", - }) - files({ - "capstone/arch/X86/*.c", - "capstone/arch/X86/*.h", - "capstone/arch/X86/*.inc", - }) - force_compile_as_c({ - "capstone/arch/X86/**.c", - }) - filter("architecture:ARM64") - defines({ - "CAPSTONE_HAS_AARCH64", - "CAPSTONE_HAS_ARM64", - }) - files({ - "capstone/arch/AArch64/*.c", - "capstone/arch/AArch64/*.h", - "capstone/arch/AArch64/*.inc", - }) - force_compile_as_c({ - "capstone/arch/AArch64/**.c", - }) - filter({}) - includedirs({ - "capstone", - "capstone/include", - }) - externalincludedirs({ - "capstone/include", - }) - files({ - "capstone/cs.c", - "capstone/cs_priv.h", - "capstone/LEB128.h", - "capstone/MathExtras.h", - "capstone/MCDisassembler.h", - "capstone/MCFixedLenDisassembler.h", - "capstone/MCInst.c", - "capstone/MCInst.h", - "capstone/MCInstPrinter.c", - "capstone/MCInstPrinter.h", - "capstone/MCInstrDesc.c", - "capstone/MCInstrDesc.h", - "capstone/MCRegisterInfo.c", - "capstone/MCRegisterInfo.h", - "capstone/SStream.c", - "capstone/SStream.h", - "capstone/utils.c", - "capstone/utils.h", - "capstone/Mapping.c", - }) - force_compile_as_c({ - "capstone/**.c", - }) - removefiles({ - "capstone/arch/X86/X86ATTInstPrinter.c", - "capstone/arch/X86/*reduce.inc", - }) diff --git a/third_party/cxxopts.lua b/third_party/cxxopts.lua deleted file mode 100644 index a54899457..000000000 --- a/third_party/cxxopts.lua +++ /dev/null @@ -1,14 +0,0 @@ -group("third_party") -project("cxxopts") - uuid("8b68cbe8-2da4-4f28-be14-9352eafa3168") - if os.istarget("android") then - -- ndk-build only supports StaticLib and SharedLib. - kind("StaticLib") - else - kind("Utility") - end - language("C++") - files({ - "cxxopts/include/cxxopts.hpp", - }) - warnings("Off") diff --git a/third_party/discord-rpc.lua b/third_party/discord-rpc.lua deleted file mode 100644 index 538030907..000000000 --- a/third_party/discord-rpc.lua +++ /dev/null @@ -1,65 +0,0 @@ -group("third_party") -project("discord-rpc") - uuid("012f6131-efc0-4abd-852d-a33640732d4c") - kind("StaticLib") - language("C++") - includedirs({ - "discord-rpc/include", - "rapidjson/include" - }) - - -- Common files for all platforms - files({ - "discord-rpc/src/connection.h", - "discord-rpc/src/discord_rpc.cpp", - "discord-rpc/src/msg_queue.h", - "discord-rpc/src/rpc_connection.cpp", - "discord-rpc/src/rpc_connection.h", - "discord-rpc/src/serialization.cpp", - "discord-rpc/src/serialization.h" - }) - - -- x86_64 uses SSE4.2, ARM64 uses NEON for rapidjson SIMD - filter("architecture:x86_64") - defines({ "RAPIDJSON_SSE42" }) - filter("architecture:ARM64") - defines({ "RAPIDJSON_NEON" }) - filter({}) - - -- Platform-specific connection implementations - -- For premake-cmake compatibility, we use os.istarget() which is evaluated at - -- premake generation time. This ensures the correct files are included in cmake. - if os.istarget("linux") then - files({ - "discord-rpc/src/connection_unix.cpp", - "discord-rpc/src/discord_register_linux.cpp" - }) - elseif os.istarget("macosx") then - files({ - "discord-rpc/src/connection_unix.cpp", - "discord-rpc/src/discord_register_osx.m" - }) - elseif os.istarget("windows") then - files({ - "discord-rpc/src/connection_win.cpp", - "discord-rpc/src/discord_register_win.cpp" - }) - end - - -- Also add system filter for generators that handle platforms differently - filter("system:linux") - files({ - "discord-rpc/src/connection_unix.cpp", - "discord-rpc/src/discord_register_linux.cpp" - }) - filter("system:macosx") - files({ - "discord-rpc/src/connection_unix.cpp", - "discord-rpc/src/discord_register_osx.m" - }) - filter("system:windows") - files({ - "discord-rpc/src/connection_win.cpp", - "discord-rpc/src/discord_register_win.cpp" - }) - filter({}) diff --git a/third_party/dxbc.lua b/third_party/dxbc.lua deleted file mode 100644 index 83f48eb1a..000000000 --- a/third_party/dxbc.lua +++ /dev/null @@ -1,11 +0,0 @@ -group("third_party") -project("dxbc") - uuid("c96688ca-51ca-406e-aeef-068734a67abe") - kind("StaticLib") - language("C++") - includedirs({ - "dxbc", - }) - files({ - "dxbc/DXBCChecksum.cpp", - }) diff --git a/third_party/ffmpeg-xenia/libavcodec/premake5.lua b/third_party/ffmpeg-xenia/libavcodec/premake5.lua deleted file mode 100644 index 8c922d4d8..000000000 --- a/third_party/ffmpeg-xenia/libavcodec/premake5.lua +++ /dev/null @@ -1,156 +0,0 @@ -project("libavcodec") - uuid("9DB2830C-D326-48ED-B4CC-08EA6A1B7272") - kind("StaticLib") - language("C") - ffmpeg_common() - - filter("files:not ../../FFmpeg/libavcodec/wmaprodec.c") - warnings "Off" - filter({}) - - links({ - "libavutil", - }) - - -- Needed for files in subdirectories (e.g. bsf/null.c) that include - -- headers relative to libavcodec/. - includedirs({ - "../../FFmpeg/libavcodec", - }) - - -- libavcodec/Makefile: - -- HEADERS: - files({ - "../../FFmpeg/libavcodec/ac3_parser.h", - "../../FFmpeg/libavcodec/adts_parser.h", - "../../FFmpeg/libavcodec/avcodec.h", - "../../FFmpeg/libavcodec/avdct.h", - "../../FFmpeg/libavcodec/bsf.h", - "../../FFmpeg/libavcodec/codec.h", - "../../FFmpeg/libavcodec/codec_desc.h", - "../../FFmpeg/libavcodec/codec_id.h", - "../../FFmpeg/libavcodec/codec_par.h", - "../../FFmpeg/libavcodec/d3d11va.h", - "../../FFmpeg/libavcodec/dirac.h", - "../../FFmpeg/libavcodec/dv_profile.h", - "../../FFmpeg/libavcodec/dxva2.h", - "../../FFmpeg/libavcodec/jni.h", - "../../FFmpeg/libavcodec/mediacodec.h", - "../../FFmpeg/libavcodec/packet.h", - "../../FFmpeg/libavcodec/qsv.h", - "../../FFmpeg/libavcodec/vdpau.h", - "../../FFmpeg/libavcodec/version.h", - "../../FFmpeg/libavcodec/videotoolbox.h", - "../../FFmpeg/libavcodec/vorbis_parser.h", - }) - -- OBJS: - files({ - "../../FFmpeg/libavcodec/ac3_parser.c", - "../../FFmpeg/libavcodec/adts_parser.c", - "../../FFmpeg/libavcodec/allcodecs.c", - "../../FFmpeg/libavcodec/avcodec.c", - "../../FFmpeg/libavcodec/avdct.c", - "../../FFmpeg/libavcodec/packet.c", - "../../FFmpeg/libavcodec/bitstream.c", - "../../FFmpeg/libavcodec/bitstream_filters.c", - "../../FFmpeg/libavcodec/bsf.c", - "../../FFmpeg/libavcodec/codec_desc.c", - "../../FFmpeg/libavcodec/codec_par.c", - "../../FFmpeg/libavcodec/d3d11va.c", - "../../FFmpeg/libavcodec/decode.c", - "../../FFmpeg/libavcodec/dirac.c", - "../../FFmpeg/libavcodec/dv_profile.c", - "../../FFmpeg/libavcodec/encode.c", - "../../FFmpeg/libavcodec/imgconvert.c", - "../../FFmpeg/libavcodec/jni.c", - "../../FFmpeg/libavcodec/mathtables.c", - "../../FFmpeg/libavcodec/mediacodec.c", - "../../FFmpeg/libavcodec/mpeg12framerate.c", - "../../FFmpeg/libavcodec/options.c", - "../../FFmpeg/libavcodec/parser.c", - "../../FFmpeg/libavcodec/parsers.c", - "../../FFmpeg/libavcodec/profiles.c", - "../../FFmpeg/libavcodec/qsv_api.c", - "../../FFmpeg/libavcodec/raw.c", - "../../FFmpeg/libavcodec/utils.c", - "../../FFmpeg/libavcodec/vorbis_parser.c", - "../../FFmpeg/libavcodec/xiph.c", - "../../FFmpeg/libavcodec/dct32_fixed.c", - "../../FFmpeg/libavcodec/dct32_float.c", - "../../FFmpeg/libavcodec/faandct.c", - "../../FFmpeg/libavcodec/faanidct.c", - "../../FFmpeg/libavcodec/fdctdsp.c", - "../../FFmpeg/libavcodec/jfdctfst.c", - "../../FFmpeg/libavcodec/jfdctint.c", - "../../FFmpeg/libavcodec/idctdsp.c", - "../../FFmpeg/libavcodec/simple_idct.c", - "../../FFmpeg/libavcodec/jrevdct.c", - "../../FFmpeg/libavcodec/mpegaudio.c", - "../../FFmpeg/libavcodec/mpegaudiodec_common.c", - "../../FFmpeg/libavcodec/mpegaudiodsp.c", - "../../FFmpeg/libavcodec/mpegaudiodsp_data.c", - "../../FFmpeg/libavcodec/mpegaudiodsp_fixed.c", - "../../FFmpeg/libavcodec/mpegaudiodsp_float.c", - "../../FFmpeg/libavcodec/mpegaudiodecheader.c", - "../../FFmpeg/libavcodec/mpegaudiodata.c", - "../../FFmpeg/libavcodec/sinewin.c", - "../../FFmpeg/libavcodec/wma_freqs.c", - "../../FFmpeg/libavcodec/mpegaudiodec_fixed.c", - "../../FFmpeg/libavcodec/mpegaudiodec_float.c", - "../../FFmpeg/libavcodec/wmaprodec.c", - "../../FFmpeg/libavcodec/wma.c", - "../../FFmpeg/libavcodec/wma_common.c", - "../../FFmpeg/libavcodec/wmadec.c", - "../../FFmpeg/libavcodec/aactab.c", - "../../FFmpeg/libavcodec/mpegaudio_parser.c", - "../../FFmpeg/libavcodec/pthread.c", - "../../FFmpeg/libavcodec/pthread_slice.c", - "../../FFmpeg/libavcodec/pthread_frame.c", - "../../FFmpeg/libavcodec/get_buffer.c", - "../../FFmpeg/libavcodec/vlc.c", - "../../FFmpeg/libavcodec/threadprogress.c", - "../../FFmpeg/libavcodec/bsf/null.c", - "../../FFmpeg/libavcodec/exif.c", - "../../FFmpeg/libavcodec/mpegaudiotabs.c", - "../../FFmpeg/libavcodec/tiff_common.c", - }) - filter({"platforms:Windows"}) - files({ - "../../FFmpeg/libavcodec/file_open.c", - }) - filter({}) - - -- libavcodec/aarch64/Makefile: - -- OBJS: - filter({"platforms:Android-ARM64"}) - files({ - "../../FFmpeg/libavcodec/aarch64/idctdsp_init_aarch64.c", - "../../FFmpeg/libavcodec/aarch64/mpegaudiodsp_init.c", - }) - filter({}) - -- NEON-OBJS: - filter({"platforms:Android-ARM64"}) - files({ - "../../FFmpeg/libavcodec/aarch64/fft_neon.S", - "../../FFmpeg/libavcodec/aarch64/simple_idct_neon.S", - "../../FFmpeg/libavcodec/aarch64/mdct_neon.S", - "../../FFmpeg/libavcodec/aarch64/mpegaudiodsp_neon.S", - }) - filter({}) - - -- libavcodec/x86/Makefile: - -- OBJS: - filter({"platforms:Android-x86_64 or platforms:Linux or platforms:Windows"}) - files({ - "../../FFmpeg/libavcodec/x86/constants.c", - "../../FFmpeg/libavcodec/x86/fdctdsp_init.c", - "../../FFmpeg/libavcodec/x86/idctdsp_init.c", - "../../FFmpeg/libavcodec/x86/mpegaudiodsp.c", - }) - filter({}) - -- MMX-OBJS: - filter({"platforms:Android-x86_64 or platforms:Linux or platforms:Windows"}) - files({ - "../../FFmpeg/libavcodec/x86/fdct.c", - }) - filter({}) diff --git a/third_party/ffmpeg-xenia/libavformat/premake5.lua b/third_party/ffmpeg-xenia/libavformat/premake5.lua deleted file mode 100644 index 489034d34..000000000 --- a/third_party/ffmpeg-xenia/libavformat/premake5.lua +++ /dev/null @@ -1,61 +0,0 @@ -project("libavformat") - uuid("CEF2E128-AA08-4A36-8045-0AA68A556364") - kind("StaticLib") - language("C") - ffmpeg_common() - - filter("files:not wmaprodec.c") - warnings "Off" - filter({}) - - links({ - "libavutil", - "libavcodec", - }) - - -- libavformat/Makefile: - -- HEADERS: - files({ - "../../FFmpeg/libavformat/avformat.h", - "../../FFmpeg/libavformat/avio.h", - "../../FFmpeg/libavformat/version.h", - }) - -- OBJS: - files({ - "../../FFmpeg/libavformat/allformats.c", - "../../FFmpeg/libavformat/avio.c", - "../../FFmpeg/libavformat/aviobuf.c", - "../../FFmpeg/libavformat/dump.c", - "../../FFmpeg/libavformat/format.c", - "../../FFmpeg/libavformat/id3v1.c", - "../../FFmpeg/libavformat/id3v2.c", - "../../FFmpeg/libavformat/metadata.c", - "../../FFmpeg/libavformat/mux.c", - "../../FFmpeg/libavformat/options.c", - "../../FFmpeg/libavformat/os_support.c", - "../../FFmpeg/libavformat/protocols.c", - "../../FFmpeg/libavformat/riff.c", - "../../FFmpeg/libavformat/sdp.c", - "../../FFmpeg/libavformat/url.c", - "../../FFmpeg/libavformat/utils.c", - "../../FFmpeg/libavformat/riffdec.c", - "../../FFmpeg/libavformat/asfdec_f.c", - "../../FFmpeg/libavformat/asf.c", - "../../FFmpeg/libavformat/asfcrypt.c", - "../../FFmpeg/libavformat/avlanguage.c", - "../../FFmpeg/libavformat/mp3dec.c", - "../../FFmpeg/libavformat/replaygain.c", - "../../FFmpeg/libavformat/file.c", - "../../FFmpeg/libavformat/demux.c", - "../../FFmpeg/libavformat/avformat.c", - "../../FFmpeg/libavformat/seek.c", - "../../FFmpeg/libavformat/demux_utils.c", - "../../FFmpeg/libavformat/urldecode.c", - "../../FFmpeg/libavformat/asf_tags.c", - "../../FFmpeg/libavformat/to_upper4.c", - }) - filter({"platforms:Windows"}) - files({ - "../../FFmpeg/libavformat/file_open.c", - }) - filter({}) diff --git a/third_party/ffmpeg-xenia/libavutil/premake5.lua b/third_party/ffmpeg-xenia/libavutil/premake5.lua deleted file mode 100644 index 009797019..000000000 --- a/third_party/ffmpeg-xenia/libavutil/premake5.lua +++ /dev/null @@ -1,225 +0,0 @@ -project("libavutil") - uuid("19216035-F781-4F15-B009-213B7E3A18AC") - kind("StaticLib") - language("C") - ffmpeg_common() - - filter("files:not wmaprodec.c") - warnings "Off" - filter({}) - - -- libavutil/Makefile: - -- HEADERS: - files({ - "../../FFmpeg/libavutil/adler32.h", - "../../FFmpeg/libavutil/aes.h", - "../../FFmpeg/libavutil/aes_ctr.h", - "../../FFmpeg/libavutil/attributes.h", - "../../FFmpeg/libavutil/audio_fifo.h", - "../../FFmpeg/libavutil/avassert.h", - "../../FFmpeg/libavutil/avstring.h", - "../../FFmpeg/libavutil/avutil.h", - "../../FFmpeg/libavutil/base64.h", - "../../FFmpeg/libavutil/blowfish.h", - "../../FFmpeg/libavutil/bprint.h", - "../../FFmpeg/libavutil/bswap.h", - "../../FFmpeg/libavutil/buffer.h", - "../../FFmpeg/libavutil/cast5.h", - "../../FFmpeg/libavutil/camellia.h", - "../../FFmpeg/libavutil/channel_layout.h", - "../../FFmpeg/libavutil/common.h", - "../../FFmpeg/libavutil/cpu.h", - "../../FFmpeg/libavutil/crc.h", - "../../FFmpeg/libavutil/des.h", - "../../FFmpeg/libavutil/dict.h", - "../../FFmpeg/libavutil/display.h", - "../../FFmpeg/libavutil/dovi_meta.h", - "../../FFmpeg/libavutil/downmix_info.h", - "../../FFmpeg/libavutil/encryption_info.h", - "../../FFmpeg/libavutil/error.h", - "../../FFmpeg/libavutil/eval.h", - "../../FFmpeg/libavutil/fifo.h", - "../../FFmpeg/libavutil/file.h", - "../../FFmpeg/libavutil/frame.h", - "../../FFmpeg/libavutil/hash.h", - "../../FFmpeg/libavutil/hdr_dynamic_metadata.h", - "../../FFmpeg/libavutil/hmac.h", - "../../FFmpeg/libavutil/hwcontext.h", - "../../FFmpeg/libavutil/hwcontext_cuda.h", - "../../FFmpeg/libavutil/hwcontext_d3d11va.h", - "../../FFmpeg/libavutil/hwcontext_drm.h", - "../../FFmpeg/libavutil/hwcontext_dxva2.h", - "../../FFmpeg/libavutil/hwcontext_qsv.h", - "../../FFmpeg/libavutil/hwcontext_mediacodec.h", - "../../FFmpeg/libavutil/hwcontext_opencl.h", - "../../FFmpeg/libavutil/hwcontext_vaapi.h", - "../../FFmpeg/libavutil/hwcontext_videotoolbox.h", - "../../FFmpeg/libavutil/hwcontext_vdpau.h", - "../../FFmpeg/libavutil/hwcontext_vulkan.h", - "../../FFmpeg/libavutil/imgutils.h", - "../../FFmpeg/libavutil/intfloat.h", - "../../FFmpeg/libavutil/intreadwrite.h", - "../../FFmpeg/libavutil/lfg.h", - "../../FFmpeg/libavutil/log.h", - "../../FFmpeg/libavutil/macros.h", - "../../FFmpeg/libavutil/mathematics.h", - "../../FFmpeg/libavutil/mastering_display_metadata.h", - "../../FFmpeg/libavutil/md5.h", - "../../FFmpeg/libavutil/mem.h", - "../../FFmpeg/libavutil/motion_vector.h", - "../../FFmpeg/libavutil/murmur3.h", - "../../FFmpeg/libavutil/opt.h", - "../../FFmpeg/libavutil/parseutils.h", - "../../FFmpeg/libavutil/pixdesc.h", - "../../FFmpeg/libavutil/pixelutils.h", - "../../FFmpeg/libavutil/pixfmt.h", - "../../FFmpeg/libavutil/random_seed.h", - "../../FFmpeg/libavutil/rc4.h", - "../../FFmpeg/libavutil/rational.h", - "../../FFmpeg/libavutil/replaygain.h", - "../../FFmpeg/libavutil/ripemd.h", - "../../FFmpeg/libavutil/samplefmt.h", - "../../FFmpeg/libavutil/sha.h", - "../../FFmpeg/libavutil/sha512.h", - "../../FFmpeg/libavutil/spherical.h", - "../../FFmpeg/libavutil/stereo3d.h", - "../../FFmpeg/libavutil/threadmessage.h", - "../../FFmpeg/libavutil/time.h", - "../../FFmpeg/libavutil/timecode.h", - "../../FFmpeg/libavutil/timestamp.h", - "../../FFmpeg/libavutil/tree.h", - "../../FFmpeg/libavutil/twofish.h", - "../../FFmpeg/libavutil/version.h", - "../../FFmpeg/libavutil/video_enc_params.h", - "../../FFmpeg/libavutil/xtea.h", - "../../FFmpeg/libavutil/tea.h", - "../../FFmpeg/libavutil/tx.h", - "../../FFmpeg/libavutil/film_grain_params.h", - }) - -- ARCH_HEADERS: - files({ - "../../FFmpeg/libavutil/bswap.h", - "../../FFmpeg/libavutil/intmath.h", - "../../FFmpeg/libavutil/intreadwrite.h", - "../../FFmpeg/libavutil/timer.h", - }) - -- BUILT_HEADERS (local xenia-specific copies): - files({ - "avconfig.h", - "ffversion.h", - }) - -- OBJS: - files({ - "../../FFmpeg/libavutil/adler32.c", - "../../FFmpeg/libavutil/aes.c", - "../../FFmpeg/libavutil/aes_ctr.c", - "../../FFmpeg/libavutil/audio_fifo.c", - "../../FFmpeg/libavutil/avstring.c", - "../../FFmpeg/libavutil/avsscanf.c", - "../../FFmpeg/libavutil/base64.c", - "../../FFmpeg/libavutil/blowfish.c", - "../../FFmpeg/libavutil/bprint.c", - "../../FFmpeg/libavutil/buffer.c", - "../../FFmpeg/libavutil/cast5.c", - "../../FFmpeg/libavutil/camellia.c", - "../../FFmpeg/libavutil/channel_layout.c", - "../../FFmpeg/libavutil/csp.c", - "../../FFmpeg/libavutil/cpu.c", - "../../FFmpeg/libavutil/crc.c", - "../../FFmpeg/libavutil/des.c", - "../../FFmpeg/libavutil/dict.c", - "../../FFmpeg/libavutil/display.c", - "../../FFmpeg/libavutil/dovi_meta.c", - "../../FFmpeg/libavutil/downmix_info.c", - "../../FFmpeg/libavutil/encryption_info.c", - "../../FFmpeg/libavutil/error.c", - "../../FFmpeg/libavutil/eval.c", - "../../FFmpeg/libavutil/fifo.c", - "../../FFmpeg/libavutil/file.c", - "../../FFmpeg/libavutil/file_open.c", - "../../FFmpeg/libavutil/float_dsp.c", - "../../FFmpeg/libavutil/fixed_dsp.c", - "../../FFmpeg/libavutil/frame.c", - "../../FFmpeg/libavutil/hash.c", - "../../FFmpeg/libavutil/hdr_dynamic_metadata.c", - "../../FFmpeg/libavutil/hmac.c", - "../../FFmpeg/libavutil/hwcontext.c", - "../../FFmpeg/libavutil/imgutils.c", - "../../FFmpeg/libavutil/integer.c", - "../../FFmpeg/libavutil/intmath.c", - "../../FFmpeg/libavutil/lfg.c", - "../../FFmpeg/libavutil/lls.c", - "../../FFmpeg/libavutil/log.c", - "../../FFmpeg/libavutil/log2_tab.c", - "../../FFmpeg/libavutil/mathematics.c", - "../../FFmpeg/libavutil/mastering_display_metadata.c", - "../../FFmpeg/libavutil/md5.c", - "../../FFmpeg/libavutil/mem.c", - "../../FFmpeg/libavutil/murmur3.c", - "../../FFmpeg/libavutil/opt.c", - "../../FFmpeg/libavutil/parseutils.c", - "../../FFmpeg/libavutil/pixdesc.c", - "../../FFmpeg/libavutil/pixelutils.c", - "../../FFmpeg/libavutil/random_seed.c", - "../../FFmpeg/libavutil/rational.c", - "../../FFmpeg/libavutil/reverse.c", - "../../FFmpeg/libavutil/rc4.c", - "../../FFmpeg/libavutil/ripemd.c", - "../../FFmpeg/libavutil/samplefmt.c", - "../../FFmpeg/libavutil/sha.c", - "../../FFmpeg/libavutil/sha512.c", - "../../FFmpeg/libavutil/slicethread.c", - "../../FFmpeg/libavutil/spherical.c", - "../../FFmpeg/libavutil/stereo3d.c", - "../../FFmpeg/libavutil/threadmessage.c", - "../../FFmpeg/libavutil/time.c", - "../../FFmpeg/libavutil/timecode.c", - "../../FFmpeg/libavutil/tree.c", - "../../FFmpeg/libavutil/twofish.c", - "../../FFmpeg/libavutil/utils.c", - "../../FFmpeg/libavutil/xga_font_data.c", - "../../FFmpeg/libavutil/xtea.c", - "../../FFmpeg/libavutil/tea.c", - "../../FFmpeg/libavutil/tx.c", - "../../FFmpeg/libavutil/tx_float.c", - "../../FFmpeg/libavutil/tx_double.c", - "../../FFmpeg/libavutil/tx_int32.c", - "../../FFmpeg/libavutil/video_enc_params.c", - "../../FFmpeg/libavutil/film_grain_params.c", - "../../FFmpeg/libavutil/side_data.c", - "../../FFmpeg/libavutil/refstruct.c", - "../../FFmpeg/libavutil/container_fifo.c", - "../../FFmpeg/libavutil/float_scalarproduct.c", - "../../FFmpeg/libavutil/timecode_internal.c", - "../../FFmpeg/libavutil/iamf.c", - "../../FFmpeg/libavutil/timestamp.c", - }) - - -- libavutil/aarch64/Makefile: - -- OBJS: - filter({"platforms:Android-ARM64"}) - files({ - "../../FFmpeg/libavutil/aarch64/cpu.c", - "../../FFmpeg/libavutil/aarch64/float_dsp_init.c", - "../../FFmpeg/libavutil/aarch64/tx_float_init.c", - }) - filter({}) - -- NEON-OBJS: - filter({"platforms:Android-ARM64"}) - files({ - "../../FFmpeg/libavutil/aarch64/float_dsp_neon.S", - }) - filter({}) - - -- libavutil/x86/Makefile: - -- OBJS: - filter({"platforms:Android-x86_64 or platforms:Linux or platforms:Windows"}) - files({ - "../../FFmpeg/libavutil/x86/cpu.c", - "../../FFmpeg/libavutil/x86/fixed_dsp_init.c", - "../../FFmpeg/libavutil/x86/float_dsp_init.c", - "../../FFmpeg/libavutil/x86/imgutils_init.c", - "../../FFmpeg/libavutil/x86/lls_init.c", - "../../FFmpeg/libavutil/x86/tx_float_init.c", - }) - filter({}) diff --git a/third_party/ffmpeg-xenia/premake5.lua b/third_party/ffmpeg-xenia/premake5.lua deleted file mode 100644 index dd5c773bb..000000000 --- a/third_party/ffmpeg-xenia/premake5.lua +++ /dev/null @@ -1,42 +0,0 @@ -group("third_party") - --- --- Call this function in subproject scope to set the needed include --- dirs and defines. --- -function ffmpeg_common() - defines({ - "HAVE_AV_CONFIG_H", - "_USE_MATH_DEFINES", -- For M_PI/etc - }) - - -- Paths are relative to the calling script (sub-library premake files), - -- which are one level deeper (e.g. libavcodec/premake5.lua). - includedirs({ - "..", -- ffmpeg-xenia/ (config.h, avconfig.h, ffversion.h) - "../../FFmpeg", -- FFmpeg source headers - }) - filter({"platforms:Windows", "configurations:Debug or configurations:Checked"}) - optimize("Size") -- dead code elimination is mandatory - removebuildoptions({ - "/RTCsu", -- '/O1' and '/RTCs' command-line options are incompatible - }) - filter({"platforms:Windows", "configurations:Release"}) - linktimeoptimization("Off") - filter("platforms:Windows") - includedirs({ - "../../FFmpeg/compat/atomics/win32", - }) - links({ - "bcrypt", - }) - filter("platforms:Linux") - includedirs({ - "../../FFmpeg/compat/atomics/gcc", - }) - filter({}) -end - -include("libavcodec/premake5.lua") -include("libavformat/premake5.lua") -include("libavutil/premake5.lua") diff --git a/third_party/fmt.lua b/third_party/fmt.lua deleted file mode 100644 index 1be2a91bf..000000000 --- a/third_party/fmt.lua +++ /dev/null @@ -1,13 +0,0 @@ -group("third_party") -project("fmt") - uuid("b9ff4b2c-b438-42a9-971e-e0c19a711a13") - kind("StaticLib") - language("C++") - - includedirs({ - "fmt/include", - }) - files({ - "fmt/src/format.cc", - "fmt/src/os.cc" - }) diff --git a/third_party/glslang-spirv.lua b/third_party/glslang-spirv.lua deleted file mode 100644 index 80811444b..000000000 --- a/third_party/glslang-spirv.lua +++ /dev/null @@ -1,20 +0,0 @@ -group("third_party") -project("glslang-spirv") - uuid("1cc8f45e-91e2-4daf-a55e-666bf8b5e6b2") - kind("StaticLib") - language("C++") - - includedirs({ - "glslang", - }) - - files({ - "glslang/SPIRV/*.cpp", - "glslang/SPIRV/*.h", - "glslang/SPIRV/*.hpp11", - "glslang/glslang/Include/visibility.h", - }) - - removefiles({ - "glslang/SPIRV/GlslangToSpv.cpp", - }) diff --git a/third_party/imgui.lua b/third_party/imgui.lua deleted file mode 100644 index 410f93579..000000000 --- a/third_party/imgui.lua +++ /dev/null @@ -1,19 +0,0 @@ -group("third_party") -project("imgui") - uuid("ed9271c4-b0a1-42ef-8403-067b11bf49d0") - kind("StaticLib") - language("C++") - includedirs({ - "imgui", - --"imgui/misc/freetype", - --"freetype/include", - "stb", - }) - files({ - "imgui/imgui.cpp", - "imgui/imgui_demo.cpp", - "imgui/imgui_draw.cpp", - "imgui/imgui_tables.cpp", - "imgui/imgui_widgets.cpp", - --"imgui/misc/freetype/imgui_freetype.cpp", - }) diff --git a/third_party/libusb.lua b/third_party/libusb.lua deleted file mode 100644 index d053b8cb6..000000000 --- a/third_party/libusb.lua +++ /dev/null @@ -1,47 +0,0 @@ -group("third_party") -project("libusb") - uuid("5f8b5485-fde5-4a42-8a13-8545fcf6d25b") - kind("StaticLib") - language("C") - includedirs({ - "libusb/libusb", - }) - - files({ - "libusb/libusb/core.c", - "libusb/libusb/descriptor.c", - "libusb/libusb/hotplug.c", - "libusb/libusb/io.c", - "libusb/libusb/strerror.c", - "libusb/libusb/sync.c", - }) - - filter({"platforms:Windows"}) - includedirs({ - "libusb/msvc", - }) - files({ - "libusb/libusb/os/events_windows.c", - "libusb/libusb/os/events_windows.h", - "libusb/libusb/os/threads_windows.c", - "libusb/libusb/os/threads_windows.h", - "libusb/libusb/os/windows_common.c", - "libusb/libusb/os/windows_common.h", - "libusb/libusb/os/windows_usbdk.c", - "libusb/libusb/os/windows_usbdk.h", - "libusb/libusb/os/windows_winusb.c", - "libusb/libusb/os/windows_winusb.h" - }) - - filter({"platforms:Linux"}) - files({ - "libusb/libusb/config.h", - "libusb/libusb/os/events_posix.c", - "libusb/libusb/os/events_posix.h", - "libusb/libusb/os/threads_posix.c", - "libusb/libusb/os/threads_posix.h", - "libusb/libusb/os/linux_netlink.c", - "libusb/libusb/os/linux_udev.c", - "libusb/libusb/os/linux_usbfs.c", - "libusb/libusb/os/linux_usbfs.h" - }) diff --git a/third_party/metal-cpp.lua b/third_party/metal-cpp.lua deleted file mode 100644 index 50bf89b2c..000000000 --- a/third_party/metal-cpp.lua +++ /dev/null @@ -1,21 +0,0 @@ -if not os.istarget("macosx") then - return -end - -group("third_party") -project("metal-cpp") - uuid("11c84c8d-bfa2-4b14-b832-4e85e9ca8e3b") - kind("None") -- Header-only library - language("C++") - defines({ - "METAL_CPP_AVAILABLE=1", - }) - includedirs({ - "metal-cpp", - }) - files({ - "metal-cpp/Foundation/Foundation.hpp", - "metal-cpp/Metal/Metal.hpp", - "metal-cpp/MetalFX/MetalFX.hpp", - "metal-cpp/QuartzCore/QuartzCore.hpp", - }) diff --git a/third_party/metal-shader-converter.lua b/third_party/metal-shader-converter.lua deleted file mode 100644 index d762e9015..000000000 --- a/third_party/metal-shader-converter.lua +++ /dev/null @@ -1,30 +0,0 @@ -if not os.istarget("macosx") then - return -end - -group("third_party") -project("metal-shader-converter") - uuid("b1b2c3d4-e5f6-7890-abcd-ef1234567890") - kind("StaticLib") - language("C++") - defines({ - "_LIB", - }) - includedirs({ - "metal-shader-converter/include", - }) - files({ - "metal-shader-converter/include/metal_irconverter.h", - "metal-shader-converter/include/metal_irconverter_runtime.h", - }) - -- Link against the Metal Shader Converter dynamic library - libdirs({ - "metal-shader-converter/lib", - }) - links({ - "metalirconverter", - }) - links({ - "Metal.framework", - "MetalKit.framework", - }) diff --git a/third_party/miniaudio.lua b/third_party/miniaudio.lua deleted file mode 100644 index 8ef445a87..000000000 --- a/third_party/miniaudio.lua +++ /dev/null @@ -1,14 +0,0 @@ -group("third_party") -project("miniaudio") - uuid("d8f3a2b1-c4e5-4f6a-8b9c-0d1e2f3a4b5c") - if os.istarget("android") then - -- ndk-build only supports StaticLib and SharedLib. - kind("StaticLib") - else - kind("Utility") - end - language("C") - files({ - "miniaudio/miniaudio.h", - }) - warnings("Off") diff --git a/third_party/mspack.lua b/third_party/mspack.lua deleted file mode 100644 index 862ad71d0..000000000 --- a/third_party/mspack.lua +++ /dev/null @@ -1,19 +0,0 @@ -group("third_party") -project("mspack") - uuid("0881692A-75A1-4E7B-87D8-BB9108CEDEA4") - kind("StaticLib") - language("C++") - links({ - "xenia-base", - }) - defines({ - "HAVE_CONFIG_H", - }) - includedirs({ - "mspack", - }) - files({ - "mspack/logging.cc", - "mspack/lzxd.c", - "mspack/system.c", - }) diff --git a/third_party/premake-androidndk b/third_party/premake-androidndk deleted file mode 160000 index 35a695541..000000000 --- a/third_party/premake-androidndk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 35a6955410a34840c9d091f071c46cd3e5280fb7 diff --git a/third_party/premake-cmake b/third_party/premake-cmake deleted file mode 160000 index db70344d7..000000000 --- a/third_party/premake-cmake +++ /dev/null @@ -1 +0,0 @@ -Subproject commit db70344d70d6d5cd62094b28258ecbea5c19ebb2 diff --git a/third_party/premake-core b/third_party/premake-core deleted file mode 160000 index ba2c383c0..000000000 --- a/third_party/premake-core +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ba2c383c0456aa75d1b93faf62f4aec2691f23b2 diff --git a/third_party/premake-export-compile-commands b/third_party/premake-export-compile-commands deleted file mode 160000 index 59e3e55df..000000000 --- a/third_party/premake-export-compile-commands +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 59e3e55df8dd87eea70556f50d172a17f1c4b6d0 diff --git a/third_party/pugixml.lua b/third_party/pugixml.lua deleted file mode 100644 index 4b7f97a1b..000000000 --- a/third_party/pugixml.lua +++ /dev/null @@ -1,8 +0,0 @@ -group("third_party") -project("pugixml") - uuid("d1089e5e-46ae-48c9-bee6-d38c674c8f61") - kind("StaticLib") - language("C++") - files({ - "pugixml/src/pugixml.cpp", - }) diff --git a/third_party/snappy.lua b/third_party/snappy.lua deleted file mode 100644 index d72f96f40..000000000 --- a/third_party/snappy.lua +++ /dev/null @@ -1,25 +0,0 @@ -group("third_party") -project("snappy") - uuid("bb143d61-3fd4-44c2-8b7e-04cc538ba2c7") - kind("StaticLib") - language("C++") - - files({ - "snappy/snappy-internal.h", - "snappy/snappy-sinksource.cc", - "snappy/snappy-sinksource.h", - "snappy/snappy-stubs-internal.cc", - "snappy/snappy-stubs-internal.h", - "snappy/snappy-stubs-public.h", - "snappy/snappy.cc", - "snappy/snappy.h", - }) - - -- Disable AVX requirement to prevent BMI2 instructions from being baked in at compile time - -- This allows Snappy to work on CPUs without BMI2 support (e.g., Sandy Bridge, Ivy Bridge) - local snappy_dir = path.getabsolute("snappy") - if not os.isfile(path.join(snappy_dir, "snappy-stubs-public.h")) then - prebuildcommands({ - "cmake -DSNAPPY_BUILD_TESTS=OFF -DSNAPPY_BUILD_BENCHMARKS=OFF "..snappy_dir.." -B"..snappy_dir - }) - end diff --git a/third_party/tomlplusplus.lua b/third_party/tomlplusplus.lua deleted file mode 100644 index 25860b01c..000000000 --- a/third_party/tomlplusplus.lua +++ /dev/null @@ -1,13 +0,0 @@ -group("third_party") -project("tomlplusplus") - uuid("1e86cc51-3f8b-476d-9249-3b200424846b") - if os.istarget("android") then - -- ndk-build only supports StaticLib and SharedLib. - kind("StaticLib") - else - kind("Utility") - end - language("C++") - files({ - "tomlplusplus/include/toml++/toml.hpp" - }) diff --git a/third_party/xxhash.lua b/third_party/xxhash.lua deleted file mode 100644 index a6bb1f873..000000000 --- a/third_party/xxhash.lua +++ /dev/null @@ -1,11 +0,0 @@ -group("third_party") -project("xxhash") - uuid("40d4ce21-5448-4399-9f98-589b7e1c23b1") - kind("StaticLib") - language("C") - includedirs({ - "xxhash", - }) - files({ - "xxhash/xxhash.c", - }) diff --git a/third_party/zarchive.lua b/third_party/zarchive.lua deleted file mode 100644 index 7856bd81f..000000000 --- a/third_party/zarchive.lua +++ /dev/null @@ -1,21 +0,0 @@ -group("third_party") -project("zarchive") - uuid("d32f03aa-f0c9-11ed-a05b-0242ac120003") - kind("StaticLib") - language("C++") - links({ - "zstd", - }) - includedirs({ - "zarchive/include", - "zstd/lib", - }) - files({ - "zarchive/include/zarchive/zarchivecommon.h", - "zarchive/include/zarchive/zarchivereader.h", - "zarchive/include/zarchive/zarchivewriter.h", - "zarchive/src/zarchivereader.cpp", - "zarchive/src/zarchivewriter.cpp", - "zarchive/src/sha_256.c", - "zarchive/src/sha_256.h", - }) diff --git a/third_party/zlib-ng.lua b/third_party/zlib-ng.lua deleted file mode 100644 index da85f15d5..000000000 --- a/third_party/zlib-ng.lua +++ /dev/null @@ -1,68 +0,0 @@ -group("third_party") -project("zlib-ng") - uuid("13d4073d-f1c9-47e3-a057-79b133596fc2") - kind("StaticLib") - language("C") - - defines({ - "WITH_GZFILEOP", - }) - - files({ - "zlib-ng/*.c", - "zlib-ng/arch/generic/*.c", - }) - filter("architecture:x86_64") - defines({ - "X86_FEATURES", - "X86_HAVE_XSAVE_INTRIN", - "X86_SSSE3", - "X86_SSE42", - }) - files({ - "zlib-ng/arch/x86/*.c", - }) - if os.istarget("windows") then - defines({ - "X86_SSE2", - "X86_AVX2", - "X86_AVX512", - "X86_AVX512VNNI", - "X86_PCLMULQDQ_CRC", - "X86_VPCLMULQDQ_CRC", - }) - else - removefiles({ - "zlib-ng/arch/x86/adler32_avx2.c", - "zlib-ng/arch/x86/adler32_avx512.c", - "zlib-ng/arch/x86/adler32_avx512_vnni.c", - "zlib-ng/arch/x86/chunkset_avx2.c", - "zlib-ng/arch/x86/compare256_avx2.c", - "zlib-ng/arch/x86/crc32_pclmulqdq.c", - "zlib-ng/arch/x86/crc32_vpclmulqdq.c", - "zlib-ng/arch/x86/slide_hash_avx2.c", - }) - end - filter({}) - - includedirs({ - "zlib-ng", - }) - - local zlibng_dir = path.getabsolute("zlib-ng") - local zlibng_h_src_files = { - path.join(zlibng_build_dir, "zlib-ng.h"), - path.join(zlibng_build_dir, "zconf-ng.h"), - path.join(zlibng_build_dir, "zlib_name_mangling-ng.h"), - path.join(zlibng_build_dir, "gzread.c"), - } - for i = 1,#zlibng_h_src_files,1 - do - if not os.isfile(path.join(zlibng_dir, zlibng_h_src_files[i])) then - zlibng_build = true - break - end - end - if zlibng_build then - os.execute("cmake -DZLIB_ENABLE_TESTS=OFF -DWITH_GTEST=OFF "..zlibng_dir.." -B"..zlibng_dir) - end diff --git a/third_party/zstd.lua b/third_party/zstd.lua deleted file mode 100644 index e26713288..000000000 --- a/third_party/zstd.lua +++ /dev/null @@ -1,19 +0,0 @@ -include("third_party/zstd/contrib/premake/zstd.lua") - -group("third_party") -project("zstd") - uuid("df336aac-f0c8-11ed-a05b-0242ac120003") - -- https://gitlab.kitware.com/cmake/cmake/-/issues/25744 - filter({"toolset:not msc"}) - defines({ - "ZSTD_DISABLE_ASM", - }) - filter({"toolset:msc"}) - defines({ - -- Override STATIC_BMI2=1 assumption on Windows - -- MSVC incorrectly assumes AVX2 implies BMI2, but Sandy Bridge has AVX2 without BMI2 - "STATIC_BMI2=0", - "DYNAMIC_BMI2=1", - }) - filter({}) - project_zstd("zstd/lib/") diff --git a/tools/build/bin/premake5.exe b/tools/build/bin/premake5.exe deleted file mode 100644 index 52ae09d3b71f7785a10aef11b01761a3a2ff682a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318400 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

`%%nXhGD-JnyhPF{wG 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

8g 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

`7EDs4=kzNz#j18}XKz#-iaFZRh8NO8y zR5bfBcCop&94P$>Qm_3HWV$o+J?oogr@Kp36hPM$gDMj3&t7iKw^~n@^0waQZ;}50 z|NqNXpu?Tc@wfB+|Nq}p`y=?8*b)^5{+7T0{{QFS#{dec31I=jFAVb8z^4uHwEi#2 z04;-Y?=Df%aq2#gyY}`1)!wD*pqkqrQgfF|HUIlpVg#wROL?3B{V!34)Yv7mActz- z2c7!F{J9h4==-JZpbKVR7K4@u#Qz7eyZw2zV^jp7XL0sAGtTS;mDduTfh^32yZw1U z>%l=QT*2GF&?cJ@YYM@^0lKcUL`A@_vqr^*`SWoX6^|1P3=CZyy#b7%G3th&ah;$G zpIt9>_^8NtyQnBIAMOlM(E!cafaF|MYk( zub_)RL6zR^QrYffZq_a;HvG+N{{H{pP@^Ir*BzpwQF`v>98e_>N;oBfAa9kZ2!Onn z1v(}ZbP7nX8`yJ)I|ErD9-GDzWAROwcxeaQ8K^ zOOhcHP*K=W%J~e2L@QAs=Ns+21Cckr6#KFX zED0%px_vpC-|%!hih#Pm49ykbU5y3}b!^NArr%I$7l zCr}>O>&El?dS@I*r(BntLd$_t?$-Y$(9@TgL7k&AiGVOrhI(;75mo{lgR|SW)&nI< z;Q9Y+!Qn3!f?8}YDiUs>@tzMg&!IsF+T{zLnnEs#Sz+M@^8Xti@LXsxc%&&Fd~Ygv zsuA@dZpc72=sNN4^DnMCfl60IX)CJr|9^KpbeP(o2eRWItRKsqYG)`%r|Td77SJ)E z-OOOSK?Cdu!$1Su;8iQ2`CEv6zMz8X{EJjH`<7~g>_^xKE^|@sgPv~JTOiOG`=hh; z3#g;@AJmw37wHC%%AYD$1KlX-%F*rmr_=QhMAdP~p-Yf-+v(3^eX8h9cez0K`Oa`2 z<4YN!A@MBs7t>-P^XE69OX|H@k2$ljgO=2Dcg8s!cjf^t%sKAN0V-t|f=}1wHOUEL z=yVq7^cFeh%*Fs(U=KRl!5!=%)CKk@HU9ta4*dh#nD6_A`B0~`Mz`yaEN13|oz(^z z3YAU_;m4g#KsmlMSf$fhr!!ch(_7}aGx(^q7e1MwBm$XUkBbM#J0kDow;|`9#I}Fn z`$?MLh;$zWPji4$e+5tXr%u-oowYwegN_W%2Mpj<0rXUNNW?IKA_i0uo&rr$AXS81 zAm<}hB{2Pr;G@jh__smp!rlOZPTw!aw>v}sw4UT|0bOLqFVE0mBc)oR+3m(*?Z#5X z4LUh_*94G{K#|lf*6qj9#Ujzc!u8*cqdWA^>oWdrE>eun&>O3|L;o}%Vd>(LYCTYD z)bLZ4zjX;Hc#+HkwJ$*n*TTTY@u8Td)$r4x)U3OfN4u7z1a!rb;{@B9V5!4p){m}f%@P*hn(29qw|KTrsW`kTW0=mgM z{KfhBfB!*C|C^8SguR#qTEPi+@$2JH^- z23^^}@C~%Z3$)-Dv@y!z-~*QKbJ`cO7+-8Z{_j6{YgF?QmNZ7UoY#`wwLHd`Ks(Q0 zSbzQhA2fXbIRoS|0r>JP&@s=@-Sbe2uzM3Bv(g|eW&18D2z@_6uV-xol^dqf~0;{~Xt z@j|f$n!ca>*pVX0!0>`0jimX+GDuVJ^otj^|NnO*%_nN8;+ju1Y^Z~rd*%je?}6(8 z3D7|jEm|P6Q0Ed63tb`8m!cpgpy|s>H0yS%U|6RBI@=Fv<_4OjK#f@+6%kOwhri`0 zXpn-v`G5gzKpJ!zS`!m|$h#aQ4<7RFbWs6KbVy_|I0R&|1iv`Z{qKLbkBUk6kM2XA zH7X9>Au2AA(=rtJ!w+&?HIOA0{@P;&%iRA-HfL8ps~0;u(Y zP}=;9rNj$t>T%Fb#$7oo@*quJXFt`IO5q7*qB?Hs|U|?W4-lCEMVhS)YbjGNJ^ad~VU8pQsD6^9&mT(`)gia}Vwiyz708BUw#BO;6t3!sh(c=5mI-+#~vct==3 zt@h3emiSH%=w*E1W^6P3sJm_#6^rf~6&p}9=5-G!&|!%!x)YR}1u}SEgHAOJeo3HT$aQB_&HyofN@{X{Cc4xD6=BTiAziECW@rhr+ zSs;yH??71h$MEi7ouxnKgRd}cU<6$rrN=s9NiYLgq&p8PvH~s=0~L{gid4xqzkyyJ zs`DCDOs6q`4j}FH{qxcjlonn81i%#h7rpSwgW+!Mhfn+ht{?crPl7h-eM{rlKT*cd zAI>VUG?)QAFL#Vx_Y;4_fwbc+b_Nv?&8{!*y1uw8qwcEuRq7tKGp_jmH!vr^T`8ZQa3{vLkEkU8>rvTFAqA23}jFwZ@`jZ28a`U5l-;^@FIc)C$N~i z!K^J`-R=4(pqIri!{T)iL%<8m|9}5CAK~fcVe2ma(dql=wKT*s7L|-YcR-;j@&E7t z?h~D^e?Tj(oq4((7;PL&wT!>Do~)DP-^OAd@Lv?PzNFh1RK0hwn7dhjta%>aeGs$& zulsTIVVlH~j~NcHK~rYBb!aIB)V_TJUOx$1Y2E#)`*L{q&lh50|NcW~{;tD|!R8+< z{Ou>07(nw|934&!;1g=!g#P>A4L_kk7j*IvoACkT+po>KFLa-Oan}4l_%_-K9tQBJ z1F!u5|6qMvK>8#asv*^ZGpIUn=4n0*n!43NZr$8z2PJ=wZaAF628R75uY(vs*FNiXG21Bdx9ntKV6cgSTwY|u1vzt$e;ep_Pw31WNF(TARQ_$w zjL>Eg|2A$=hwcDq@;Gp3#p@sjewXus0WTK*{rkVSM#TmcH~x&!_5NM#?x4Q7_RkW@ z@URzl?f?FVgSumZ0WUtp!)9Z_j_P(%(QyWiJ;s3w5~Ma37p9Nk4HHDG?nxVpzhglD zMl$3mR62~Ko3D!*(%^gDld*=8fg$Y03W#K}f|Ie++p*B}`e6@%^=6&+9u>+&alK^B#ahSxz1 zf!*g{ECG*^hG*#ozxWsj^0*Ahub?~w$xz|l4E*~T0)k&$2FrrZ;mJD2pa+_(h8*ts zVpA~K381Sqz$Y)Of_IRZbf0)p0p8IM+A9t})zkoV%PDAALF>sL-=Lf%(ES5pO%_9N_zQJ#i-;%egx*}kfYw_*hyl%~gL;AB{xj$>J#aDX4(bwWb2Psc zIQSE^Siq1i0Xc`NYE4G`U=8Esq|Nn!H>^}cuHb^6ujKSY>f`x&h zw?_rEb+fZZrH1)%r;kd3@g>l1fzA+>ik%FgO58`K#QFw*b2AI*x+&vt6B?{lOLVOd z7K!z`s1$&z$L^MY|GTGvO#xMpE-D3G+>k9Q6;3ZrSQr?b8?04Jb*(=ZJ%(wCz^8=~ z!qQs@7W~&>uUBfozs((%!<&z=fOcelztLO3$iI!nj`@2)_rL#0xA-#m)-j?O z4@%54K@HCD$6Qo&RJA{YrU!amR1AXyUa-foF&uL-v0`XG!o$Chzt?ep^AB_W_89Q= zSi_%Q@D$;LUMB|7U{m+y?oy8Kb1#krKvO$^Hz>7t`lv*7x~RmwhFl;M(|zJa(-Cmm z1Qk$kKxM9vN(AUq3G=Vcd2Dn>;BW^NA5T=8y+?gAFjKB~?V6_L&u z6@|_c6_wW-;9RBBed2`@!u%ePAuixmo}g{IpxdWpdP7undc7FCn4G}n+r^y>Z-N-Q zVnnoiOGLD_Kf>z6F2-I@#ts+0|1AefKZBNdb-0Kafl5x$&GQ{GBBmhcs=P@30dlUu z%iEypA7V0OeGtNY(89Z}6cO#-7!mF6&)OfM^2p|cgRVmv6pkG(B0AldU)1`8gORzE z2UKo-;umyLNq8;U8={iXed5K2L!i=&zhxUEsNNQEQAq$D1=8yRF2KOWR{-d~xR>CQ zlLTIZ&e{eU4GT&|OtUk0=yas+ZU{TV@^S)9(nTd8AQ;rG4d?-- z7@qDM4K*ry45h-L{2K5gs`=l4Py@302+QmE?$f=2jLA{h*dU{J&=yy*G%_kVXONAnRL(6-0!5S5DV z`^*=dK?P9vA@F4pA;p~CJ}M>P@k5A}L0*e3rPwsYN_}}fsu%*k1A*RcTVPcOH!@3?PhE=^z3=C{+Y>aG-Y-oT9#%Ew- zW@2PyWP=DWv9YkRg4j&pfl?>|8WQ^1ZQdo<@Y|q9yWzKGy_)d>w_ctG{(Xl#&Aa4! zSv;B#TPuZFKD6z>FSHteC&JSM=|HMh1j^sp#MTv{Z0(a`kfda^gA(J>vv)>odB9I6~zgdn3zRHMOnb|tZeL}9AK6xnC67C zMMb%|c|>_d`S=Ay1x0y4qCy}-SX2a>k|7kRKL9!pue+2dyfgGq_fJsTe9;D4lfc(~ zqxlF+r!PrbgwTD=pxSZFA_l09!FR}r#rcI`|`A&EU|C?$yle= z{F}K%)!Ltf-`}63H}HS!#ZuGmL&~myv`=)q3MilI6 zs2y?{)Ka+E?aR@@1#V?of2y->Jy0Ur?aDKOf6YOT4jy5rgD*I&uho2ft=Q}Kzc=iE zr>j7>D-ZK!uzYXO|AQ|$nsWshJGe^Ufv!8M6=5hbYyQVkXV~laqxC?EWMHo|N7ny< z7m|LUwlEK4Ic%`8*X;-M;bRW}|Mxol2QB#df{+3SI4HcI{MgX~YF{=4f!dcS>op+< zXrdpG2^kPeVP|0I1}$XH08K6+Eo5FHh_sLy#RSli4E!zH>L!3+QDW5&0ee<<)f-!uN) z{KKL9aQ8ia=VRYN#}A1#UjPlRNp#0@e7|9Rh`)a)E9hDeOCJ>p{`R%33=GzwYajX- zgG4#3&+#|UWMyDzy;RQ&zBmv%(ZytZARs)bJ4D4Ku(t;s2rn4H*-hXjXys}5VCaQJL3qFm^NN4}yDu~!;plb$-+c-^E~vr4 z?{WfM8+1ro|ELphu2IooDDjxUzveSXhYXX$!FL?i$7?<^?g2+SxETgY11>5i4WL8K zw*USAAKKRme6gbv90Op}pk3u&_y4{A|CtYg&FgjefAAeghXg2py??z1;ja1RAdMW5 z!1>U9`h}e*M_G1#b z-~az5Dl(wPCIngd?M3F;zdRC|7#X7mjO1B z2A$yqjrxOzcw3Y~D+&Lz)Qa`;fKxd*L0x_T>M!Rp!PB$xxA1@$simM44JyWZ-TyZq z;b1=0eaf;#MT6hvM6VkoI7z#MF5d!)mB@gmm^*z`MEK_24+eFs0$xn<1yw5|jB_Blr9?%B`7 zph5nC7bks?lNR%LXtDy^D}gOF-73bCnn0chm;In53#p~tn7_Z=^ZWmQY-UWuW(G+A ze~8|0PQ=AwsPjzBwo#w>QHr;H38~ z`~bh-r!;WM7sM!8fbqjAODiy95W9-=it7@ z{iFFMW994D3fc#Ii~ci%*!R)C>IrI+O@sNG=v&G-_m zs{Leq4P4cJGX7+O1e&@RPd&f~5>{)6uMVL$E)ItrA* z`cv)s?o-<5JV9>lKGq%jh2P~M|27tZ?ob|U*B_;VZl2bkY94hT?}nKflraaCB1=EK z5Kn`L5-5B?>+xg2=?T=kt>x&B2d^;%uXzD45=7frx*t?UftEVl2aWC{Ep?D*2d{bo z8wFZsh%mtrJnP#A(g;6^4YV>0GH(kvAF`Ap7o-eiem$D```JL_sE8!109}fKzLWw~ z1Nf-OfF{@YTjZG$%L@PHf*J?{-H_dSDy_GR6+pZ9zk}}emq7aytYcJU_}d>cF@P?92W`;=Z3F~m2G9x^1`9F%mfZ{t3~3X3LBnhzDjJ~7 zAklppL}`HXgu{zTpTPCEK{x11ErssW%!j^TY(BzceUQIB5mX!TNLc%T><9s!vB?z9 zeCq{+Ey%T?m4Pj#ph_`BMZgKpssvVJuf!wV)*>l<`39}mjSi=cxrK_!-piUMEbf zpjSldg}Mf0{RC+JApbT8*qQ8zgFE^Aet=pb=U?Qq{Qv(Fd}e)!ibVJMEYJv)1St4G z#vA}u4j(|fWXw!ZfTpo8b)N?vhWlcM8Io(Ld+P66P>G6q5biF<|Np_MzWe-(bD$>^UW_n*D7TkxeGe16?`}==rGtr0-d0Xlpegu z1$CE?K$g#eR%$`3C#)yb9E^vbP_r!_R>6Sd|3~v1$OTC7_DUU3w?Own(5YS5`JE1d zCMru)tgrJsodTZ?#ojI0?aA_5ISX{1EYFJw@QDj3^Mjxk8|ZQ!p4OA#e)FYb_V2fv zFEV_;32H|Obb7$<9t5}f5p4*V9gvAo#@E8VAu1d%(pQ0cf+bqu@&1 z;RsslAjk%`^0*tgOav_shBSjdAr{4IGVRa8u-}SE`wggK|Em?~{(s^?r2k{6 z;(rYLO^CGLfGYOCT8{4jb@oL1KN`3H1;C9kaG8rG{TY7Z7hnX>rU`&#IY2wR{dtP* zpr?A7fzNw104G&ZkkZ#WpsU(m*h8G^`}!0(+ZaH&K9H3An&T6{0IS84V1~P(?NjAE zVDmZdx~OoxxM0V|a90kRl)=fm8N7xcykHTUmCnC-5CxhMf}H+v{>7yzknhmS53KnK zw4?xBV7NgG4E5!ph7+j3&;fbRA9_{r!D3hNB9{_7=&EKkmw-=q0^J_w&eP4%iBX8a zU7T^}8mJ=@{^EWF$cf;52P44lMbvkYb@Jc^1Kkqc$9jVWtS`a}Jgwef1#6`H0$_U{ zKufGU!y#oZw7dmr`qW&D}(2xI{fK4;&a^<%se~Ard1vK=WPAko87kptz$`c&xA?Av`p#i3$&= zC8UOj0A})lgvXEOH{hKWwH)y9i0A3%=swmPC}4dV)MA6C5&l-tvhvcSPLL<3I>;L$&0|ztMz(SFQ_YU?nMw-pmb*zb8i4s_xTr2VgLST zguDYC#TfqLX$ZKe0u4}fpMRkq22c1T-#h{Z7 zQH;FigA^7V(B2xTSOFJG7Tx|lY5aNzK}$@lSV8N}SU&N`9Q?#D$O!SFBf1X}<;sZ= zc<{pW541fADpOF>;t6o21zO7nYut4$0EI<~IoKH-AlHYVOyk!(QO@>>Kk&e7)))B} zAfFI!ZaIRS0gm4vkn^WYIiR-|5qZAp1jubBtp`dLg{Pdih{gIwG2;B!ZZ{stnqyGPgj8>Cu!9ru;H(aE9&+%CgY%8{d{FT6w}95NfP+||+f4+V#yCK?F(`npFho1j z8ZC+hUOb-%GNYs#qCbsakJV#IFay{S$a$?C;AF%8VvQLa!)x^ytIfbM=Ar^>a=54n zyqEC4QX z3l2*}U*;2kBx}TyU|97H>eAo}h4IQW~z`UZawXs`f$g1Pm*n$YfR&>_<9^Dk^QK^N_Dbf52Z{qw>A%=rU7c}^12 z7UTu(-Twxus$R2qyZ(61WPG6YK=(O*7hevy?t`7K9M+%fR)beJzt;d?cEK+Ixm z5c!e}c&qTFACfQdyZ;Z^{WVoExBE}%zHrpvKNk{`RR13=FN`>eXskz@xU8yN@*=`Y#HaU$Ash5vbwf?*}CU>r>@5pu(}c zoJae#G-zY+g%>{!LD???+%@^cAL*hZ@xsiIje+?vwCM|N3k!#+h;)XrKr$w{js;i0 zpn~)`M)jK!^A0o^bj}YnTn1_rFowUl==1M?Mh}#8#0QcHVBtx0{=GdDoPU+TWg*9l z9s@Q8(4sx?CUF)>j2It48-rNx3$g4BxV(ZD+F?AP0$9NM6n`^lHV4wT<8J{isDSLX zvSBXG2939LpDWedwcuS4!;3m$eAkH8>wyzcT%A+gKfz1T%D>2bIat1{3n=TZYB^AchyO zjG-D>K#!FK z{6LoQv>qrGL);?+wi1+f;$jbjj$#5Q-W-sd4hj&Ncq>4vCxcYuPQ0MAj04^v5-&W3 zzV<*#p-}(8-TcNE>gJMAkn2j#cQw2R-G2T;8DyUy>fxep0w9kxgEq^^cb|Ll;5EX& z{{|To-h+1Vcyub30gpPA#HmI&4 zcVo7}>wo``JA)1qV(32K9WDU6+z=FZFP?+l%mTU(ZI3C)`5e8@65!>pp!R!U7}yit zAF~+4UhDx4M4xCr0$M#N-R;QI>H4SJ^-mad3hMub<|8cN!Vatj=5KdI9Kh}m1RvgQe5=4b z8UK`nSqy<;FMdI$4A9f+WQfV2^~_=6-M_kTz6b=Zq$}m<{tymX)qLEI#bCD+1N^%9 zPPWzqC6JqSA=j0GECgLX)_jB|AUxy5d(b5zKJKUvMy+o_xuKQ=_nA46g_Scv;~t>- zW`6Ko32ceP`4|2#{{8PRhjfKN^Vx_~cR&j(K_e;rEzuy&e4qi;Q^f@Cg|`DK1=+Kl z;XleQx#!P8MLg6Va90pCpaHuVo*h(uvF^?QU9f%rh4dfriEkqCQ5sN~buqUb;BNul z-_5`8L|{hDdzAe(kZp0s2O6pwwfUzU==ES^KHdGXH;fUqehqTgOh&@{AcjEgPya;? zz%309>tm(m!QC+`BEgXO==K4(-8vat50nN$qNCfO+npy2>25g4)o`HLf!z+*rw(o~ zcORPx+Aqzx12nsfbV@8@JPG+|;EX4r@}DXEMT0YVY7*1}1D&Vk0_K5xY3E;Tae>4; zdiu=qfMqjLP;z+yx~neig&Am>3cN1TWg0sXyezkxJ;U z)$k`U-{J5YX#4698iXmO`@q=H09n>Fm;}L+>UcoOaH9=X3B_1In zt_l``v_YcLYNK5a@H%q8BO)Rp!2zo8yL~x!3491*$N-gKFK$EjSHwaub%UHgvfS$7opN1AMy0MF$ZJ_oO5Cbf1#`l7J)Wq zGZa7${=>k)5dPw)9g?r0=@WEG13Z*}ID@se9w^BLhjIld?)`YWe`;GazZW?8pT)oN zKiHXBFlQczT*wD%{dK$XWHDtig~7^m4zMFZ$B}H5`uD%r9qPca7fnhaTO`1d02w&~ zI{;R58{5O9!2%Q`a1VsNut4$vD1Cx6mpgck7q|_62-bw*gLTb7i-f{?K%osz!l#N$ zAgQ;c5R`IDv%A9uy3d1}d!TrI@k0rz01D>;J1dK^n}J`z=>zzjx^RA{6QE?~&hz2L zX(y031VGE{Pl1*jSFkYfw_IdkU;y7K%=-^^wtjT%VepU_q^kNjv1Z&L%gIhD`cpXgCOJ1Q)~z<4dpg@fZTtdxWJEY!Nu(S}&DEH29q9w?E9+jjx9 z;twpxd;_Aq^)`PWsQK7j`-5SJ&4(a{{T3fU#~u9O-^Xr!qJ)QkpF5-V3I5i{p!$g_ z&f#yF4$9R(L6QDbyVM-&NlvIIU#sEsBEoaswxE6A{PGNe(BxEN3yDZbWYucGjKPv@ zkizKo0jRy*;9!A-XyAWQ1<<%AIFn*u@&C@&Cm`P5H}C)dKi>M{{r~@*BwXs> z{F|%P%X%-!wjyzeC7_*F8KCVX5Vc1*y1{lIW3k|ZDEQwBa$>*>WpEQ3zDE<(?13l< zc)v-Um zCg^P5|DsPIMOW+p(u6EV@NVImplnsk0lIwlhWq~#6`ud1U!aN(@V7hx9asV`V7o24 z-FU)b{S!AH0eJrewA&xF0|YUu^b&OXQ?I*7K-h~eL8#mLTeg8#-PUq|$EiUxcA$HY zK!=ZrwB9ah>jquEbXNd=a0&yc9{@f-%7&T0^%JOV2U4+H0K5eWwBbym+X1v;U!v1R zMFx5hfK2y^7nLm_3&9uWgn}%LQITl9T^ijTqrwx6D7sx#1cCz~DYy9u2V?=@xff^u zg0H>pWJFr#iZrSO>gadf{P*AZc5{u2z<>U!hhKuug#vHcD^bw_ZSMfx+yK7y33QeY zXhAdh&Y2e>PT>7PBEeaV0slqUfG!LF0lKS(u|~xq;DwmWzyHPunvcj>9|vt8k-q)? z_DfJX0}hju{K)%Kw88sQCV~RzLif2BYd(S+v9MbE+>19i{{08*nheqfYL4)?fKI6D z;%NA(Rm$Au!N|YwVDo`3%|Dd*+d(_{L8r2x1@Cm0I166>%+r1Dg&C-yaN{LtYg2cK z3QzaBEXEf_psg}DUKc0CpZ2?1BnVh(Pn6pCkBEUjfi81~eEL zT~r*Jk4V^pvRcU%knch2170vY|N9S4D4=xdq9Ou12piPOX+8b-|NobvprRS%e;H7t z9&H%VPXN>qY=-nc&b_#K9UQ0KphhBkj~Q`IW$W!yKJb=&H=fQ24v+!bwH)AT9h5a8 z?bjXGKqH8nX3!uGumf#F`4Geq9`-`T1k@@4hkT~#zyA|HopxeiKI6pj@U#=d`O{7e z3}>Af7|_pa2Jsm|1Ozj&FoW_lcs%!92B<069R?Z%eDPf3-+$1(%tu(doqm9hzI(w` zA_zLAkHz@XYwqr#56y=pUNeK}Di($k!EPaNggu0ua2gkTI70-~`u+kQcgr?KYJJ1! zH=u3IuopEJpv(g*ry=88O5Fn8=dzeyOhFh18j=K8`=I#<6KK0E?1d26U`Tr&KA#UN zf&{v&IGX>9mGE|RHB_=O7O^%T6nM>w+!#ficzXLaC#Zob@tUbyvNJ}72ceG%q)!2= z4>ZeC%F=E5S{}SYP2@#u1IXE+6>9J`Is%}y)Lac}4uj6y0=WdV6cseGbg)%y9Lx485o-XGuEi?zOwTJ=qR9bFHCsAiOL&% z;vpj_xqx=#JpmOm-NN7yOM;z84oVc?Z@pjw>G0raJy{|Qzm$^`p1?pCPxYS%6>@GO z-5kx8;1gmQ8!Esj#2zqs&AJ18%x3@xXe(qhs7dgPv6K}w_*e;Y`#}NggT>;AKp8{8_}_ozjKW|H9e>Ya&^{gz_F@9KCg2Ik$N(#U zXaqWp{e2JvEHNE0L`j<9Dh`~U!1Gn$^R+&9hNvingPVw;2=(KEO`U3==5OI-Vqoy> zzTD}fqSJlu#Uw6xRRY>*)eWyoxIkqm=(2|bF38at;N{Z3FA}++HH#Sdh?#&u(4D`a zYlkyHXC%EY04Fuj`AQOXpp=1<*bM%csF;8-M6JsU5r|>PJ7q0iD}a{*o_OJ23!0NG z<%TRta#67W?Ti(GEI<4NJ|+ruaM}M76@wQ&QQ)IZTK|`TQeyu(P{$5*c%qJT>q-7r zzW@LKxBlmE1zm^+9lXI?NzVi)Fdk^4f4K<61%*T!CuS7`>OgmcidfIrs8vkoB}lNn zFaYU-?{tKo5!vaZq5=Yl@g^aU+%K|?0c^0r)J|9_LM z3B^GSK>@-4MNfd6i3Y6)O0uD;59bgzXm1h5&|&-+@VFpKWTOoo%3J^|={`0SI&}D2 zB>2DR8BqJlA9S*8C*uy#NC4JBaIkk_0h6o?510%+L^^C)$HH@fd3|2d%#M<|BK%E?7?7s zvh_d~1OJqRfx$0K^g!m>KwIx%YalK={o`Ub!xy@q8XW(< z)dHP0DmJaROBHvl$PNOXYYAEt$C?3N@vV0Pv~G^S>oRBtNwS+Aq!eXm6fyi zn6>-#i?fW7`C{76reCWZ8%R=CQ&tk~fPz2H+4ASq+1KzG@+ws|hA&UV#bkKde z`@@T85B`HTi2!3I$1zm9w{K7yBIpx69Pj@Isx067(7s%@x;L-@x zjB?@;0FB8*#^b}g9Ywk;q1z^o7bk*exJ#nKx(hg(pYeBJYktLABGLScsf4H7QJ}kJ z!wb;PWS(w@ZU>IntRPAPG>$6T2|3K0k$~yaK?;BpjspFg*d`eX#NIIlz=v=fw!m?8$&JB z?gk&nZ^K@y*ewJOM3GMRPJb5uZBA^R?htc9*&S5P9d`$MyUj@fqz1I_6siVv7HV&mf%W-f z5$IS{w;%ZE4?iC3^F?pE-9#XF#?9rMHW9;O3c8Q z+Drr;lyePqUKw~!0ajw2e_?k5JjVdpwZXvbq5_#@_yD@~LZGt*w22~=m4V?k=e|E5 zf*3#o*1t=HvzUWln1B!c1+|G=96+YKgYFQOVCJy)=P9m)POg+e<~nTHN^`<8SU!Rl z82WO6niC@3A3%$?j_`mxRUl)#IhlP_B*3TGgBw{)-TvSU@7;NlH=qT#$5EYBoOQjs$?mV3V9IwT? z&%c=U3KXQM3$Z|RT>_xGC7cJm8jGv@{EHxvvEW^>-RCnTJ_a$oNZr~yQnzK>^0Kl+mUmko0k4pFX7b%*Mb_Arq)c9r#xV`~R+k?hoKue>0 zD+R276`MEy2iFAp-R_Y3MyZNsDuYC7P#U7G7q#?mIu-E0IzsC z_hJQTfsh|+iHGQW@b|q1CG>MI5)VR$zo5l9_R8UOHpn7y z5Ap*vp@EjBoO|&Uv?2$m7wSOs9E%S8`wvRDVJ|8mXD5UEQc%Aj!UWP316Nt#u|UxF z!tQe~Oh7BuKtoH~peD(6VX{d*mcS7>1(fn! zR20B54OS1@Tg2?5B4G{N>?K^v(#;5M8K}HC2fj@StTz#=x6=hYo1zi$zeGhM{Dlqp z%o=bS@B*oD69FCF)eX8ArBQ`QHICBf%OLAwShJ4+CT)L(PA{46DJn-mtw9$R0g$5wy3fD3W&_%v0y-7>c8L(AY7+ph`vB!Gcb*R* zBe5FQdb^YdbSwtw(1{3+*An1iJIhA|yZYbu{`-$ywt?Ho|4UR9!d`SsK}RbWselVJ z(Dc@Hm4E*;plLE&3Z5ndWFTo0(zAn*kn*ni4d{SjaI}Kf+Ja)W`G5jSq{5neJTHEN z@390&>NHSE5Te2XDkDL2an^1;#pU2GM@a#+OTt!~7L>&p2D*~%g}lJO|F2nJ>;O%1 zf>xQ8vOyLmfrnv@9uf?O_j~^R?>?Tz`29ja*o#BpsO9N(XM`AnxB~u!6k@|-k20#C zL%ZLA)|Y{*_Sl#I|KYgb4%B@FU)|-%Q_K(X4+rSZyL12kL;EMpfiDCl;r$cX_!{WM zGSGD?mtTDO^!Gn_+?}P{;F%HXl5$$08QUO<{Dod|MVAfokoc&Jk+E? z=iv#2y?D(B(g7Mjm4{EJK(uACy|^a{jr^rb|NdtjfRsX&5=dSS?S2F9KY|D2!n2sV z&%FTOTmxDt-|Yrn{d5yN_1%12!1@Qj)BVm^j_zoV=EwHUzu8KJn}4g7fTrO@yL~wh zK4M`Oe9a9~b-tUkJ7glHkqs(xzy&0vtc(VY3qVpAxc>@1e~t&;6^H+U7axKaMehQY zUESxhSYE6HP1XB}fSRsxkW2NzrOcsjPEdjQo8Rd;D13g1@wb3#hUOn>{4L8s+4`VC z_aW=kpfO|zj%JWFXxR@~dJ3pw`Q3d8q_svx0Ho+5sBr6M=(X9=&D0&v(<{@_?8NfF zRJ7NL!;-0#FN+~dqWj#7&+kCt&H);ha_9N)0J@2>*O9}Lv4s7&BM&I~bi4C(3w(3p za43;&KEPppp;WBfPoSaFma&|-TL|1EW__`5HYnf1W|3}ugzQtfA@=Wo2AIPf_Tsb{ zQfwi@O90&01s$7l+(m_BMsW~ms$BpS(%t?7-Q_&po*FL>9Q*el+?!+Tb_b7Lxbt*c z9CzUG0OiVZp6+YCe&DX1=Ytnh5la1ey1|30Hf;Q@;0f?jo^G~okyee8AcodUrL3KS zkbcjiy98VR@jF2?C!pIcS`Sq4L)Iulmn^!n=CVt6qv3i*OG z_Z&zL2BjHTd888z938meoAP_Rz}G99CKCAy<~WpmiO%#su}?L5b?Pi;4m$ z%zBFiUaNHf234p~VF{4%E>NKlQUi+5eINsRS-3#k3qeOJbk?ZwSUdCZH}f&V@BCs0 zRZ$Kc-QFV25BT}pKvhaN<9<+skoj2m_3mOG>tiT)FdBo02i}5KX`FuX5H!?}bi}6O zj(`8Vy+y$Kx*3^WR74=Ut(uR625D9JTeg5Sf@B0h_rq^S+eBmtT5W8-fHU8kM} z8ow-2Q3-zG1!~mFf-cM0S@6nDlFq`!rKzxV%g_rK=zOsxm9 za{ia7c<{UY`wu=P^nCM4mgXZGtp~b`dH7wGvb@W4}ShuMo`cf!v+dYzX*Pf7%0eMLfeu@*~oJSsG4y`+LCwr zMd>#1_;LowxfwThe)t~@9R~&tm%K=40F@OyyZ(F(V(32oBI6b)Vo}@A!91WF@F1hn zp#581-KSqDfD8qXPIsTqxN$d#;f3Cxzt9W8K*neN3kEePK!f2+!8UMM--k4j#oof3 zHK1F3L8BG$jE`?%r`s92P}Q3!>u+#3XhcfF8g%U^zW@_xP#0uX*1x}?v2P7f>*i7k z=+G>g){~_y#wU$0b-Rmvb5LR`Ve57f>2#L>FL82D>2%L9KF}E+(dl0RYdwQ{C!pg| z?LZTaAu0;pr?c2z7z#sMBEc_?3Bw9KSbmoQEnKbT04*VwXg(}p9nVuN4;|VQhYjuV z!H4$Px}{$;b>HuHE&w$ryPYFi50nZc2ADu&OD``mFfiDHazKg2E{0D*4Bh8noChr) zLhFhny3PE3^FamY`4=5q{{4SB8N~JnrBjLSavo5D0*ZT3VF633jt5~$6=WZH;Epl) zMfGcV)PVat&ODuH^Q`fleG*eoRW`NlKgPBf6bwvx4U<0$wb%0{bG1>Hqa^S?FwC!2iq5M_8a!FQCIORWd*;-vj=Oz5!3?fjb7B zpbIOY_pR-a`4j}Y_)h`4zPU@#N}yD#2dcirnzsT!-kmI7$j|UnZLRd`29}%tf|Nj4nFNy)x)`<2Bq5&)gzVGbRL(C>DH4V6@Kc$DxP-v*6-fa>91Z-v(i-I6;&H7`u;HGlU#5F3=s zc7p0>P?hYXB4F*t1FmTKoqlw?bAT3!{a`7v0No|QV*LNL8E6sGi~5tGU_=D#{tY0$ z2v}dYkBUGy1M@*}r{+huee-dFQbSNEGB6+P_T#ZWSgZ_b=*xU_;NUM4Lq4_zrg(3AyI<#+x?#d`3(>w;p?5Sp|)IFTcJ z6wAC~_>0H9(0Rr17dLnj1qNvUZEzUqCfx2{-5e(i~(UUwm*eA%Juu@;P4mh&%yj%44;D-y3f7n0L@I}A6#->2Wt2?pZE_R zGYSq1fAJY?CJ+276L9JP=O57e9PlOH;N0WK({0h~4w~b0y3kz3;Zd62E!29cBvJc3 zxbO+mJ+b6ML>GL02HL7U&?-mx`nu){@CfLo*G%AX8|{PL z=bB##9Q?r&@B*|y2Q++rpaOhf(f_a)){wAl{=rfz3)*t#%?%rd`}p+l|174k7c>8X zLR%*6g~PwU|DnMIr@;9MwB83?)j$R+KxG4eb0ngf?gwfs!kfnqAYPn6b2WIk-nkbm z*Zlk6T_=!Llf{w6@V}g;oBjU<&>jE*aGGvCS*mXdJ{yF;1yrel%j>YU|NeKg!*xK_ zgRb5F2i^VD=->vFc~tz=PQKIYEC(c#Y8?d;IW-dXJc8tQ?y&5RF#;w7!qovqV7 zq0`+Ut#?UvH%p3?0W(di!14K}IUxu)CUPbXvd`4_s@;1aMKG=RMW)K3A` z7ofYW!Tm<2?l7KSCjrnh%I_rtonbuPpkrUaEkW>BTd>986pR>L$>#j`e-~&}visZ% z?E7IsS8Ij-`~N?SF@xc|69b6*4csV#1TgaG066`3`*MVJ7m9QT@@R`SzY;k3izThO zGKZmztJ_h)+M}k#;kEHGM-IkrHf=|RZ*EFVoo+HEtl+KaPRHFqH3UPqBhSG{EZT>5 zfzo~_+lzGPfB!S~+zMg{e9>d^?|;S%FtgDDK3)?D%5&i1E^rM1+H?jR!1Um66$B+1 zPEhQE)~H*5EM?y%^Ers&bvXYvM~>zf3?=rU1kT9c+Q`7buuJ805W|bobNB|Y`1?Vp zU4cUrd^kaOph&NyiS>mNqg@7&BE=N1{`x{By^cKH=d_ucUkI!O7l#JBEIJ1PEKpcDoq#plq7L6;R-vvkSrgS}Zj? zftG8)voAF4sD_KzSw(mTE$~-$2(h zQL{c}yNgtxvQxD_m0pKYpK7cC*QX98p!)Q*JaP5uWHxwx+JO`UVcj2t{+DrNlza|i z_;2=t7c?Ks*L*|(Jf`*{&H*{DK(PP{zc&Ki2RlRmfO=dNES;`jx?MS150oT;$J4vb zTfdd+^t%2C_+QS`?auMPTmVwqfezeo=`Q`z`mMya+m*wwJM@oRr+KG8i}f*nw+~_e z%UOb6@V;ba=nnk@Isx64gZY}KIb%7C_OZ^;Kb@`|rAwjBqHfyPFi8s%yMy`g8iPrnd@C<1XnclQRoa6JVIWzgkspxqAL+|36B1F~3* zFLhT6beCJaV7vYAf0w^a_l<7X9}N$g13J7}dxHgzIkSj#`#W@Ucl&jYZ= z^Y?*Gc#i?!pMZBm#5@|67ps4bVF5+x+qj-DRMoe1$+mrp%wS7+>u9 z3yK>T6|v?cEX_Ye_}k|(Ffj0MYv5pT2HpGo;lC5ZaX0WnCdlp@9~F__5EbDp#urUc zo#LQqWjpQ$&fTw*KqiAu(9Gfh-wy{q#!9C72+JpaL69O)H{rD{RFOg!#|vxF&KMUJ z70?*5kBUksTc;oFOxo9?AayTR{{8>IlMS}P$&I7CL`A3hut4*BM*dda|DYZWxJrBR z5i}a$qoM$=&0ZMW{`=1_&tUxDiNXHA6GP&ECx&(Zofz8wJ24#o54vBEm5G@Z1+Xx~ z`@fL$SwXXD-8aE8t^m4d^+i8u2N5U%cE_m5bo!_W^g4rM+n&E2bPYszp+GMSXr!6} z65nMk-E99abpL2R0uyijU+UO;pv2a4A0)!LK{XS|oN&e$hnD>N57XYw79Re;j0LK> z^*?{hL(q&B#BfG89^-G|v6>2#UJn!SAY6n@>+QP4=HDzuPQA|mds*78f0naYA1pTM zKCH^jz|c_1>d}1Sk3;uq?Gw$%Sgb$R{OomPp4t3}xtE9O;7_K54_OYrWHLVRd3Cps zij4K=S~1x8UpM1%mJOiBiJSH3noq_DK;!$Zx9dFN@`k-Otsr^O6>Qy{FM1CB11GEFe1^Kn7VKuGtUG@h^-)!x}y+0+84%wT2dS zu>1!)kFNVx_fK$afQC~QUNC~LXYf%G0HqxBUPo9={04=oo4~<`Oo8B>Qvk|!3f&C< zFMzHr6KK6u8VtI0rk4lo?ADVdE}#SBEGIx>!Tt9ZaclmT?8&gKu!~ZnuOx?XABGs;2|g%6#+&Mp3Y#K&SHhuZ~T3ApaSD$_qA?k zn_f?z<1UO}KtTX0PrlV9g9g+g^-Hl$_j%?|FIay4{|}BEiB7ie^Dk0C8}htuKv4s^ zY(ylBrPD40 zHq163VX>@Hk*JgCc6R9YQIY92`SGIv=l}oioov=MDiSp>pb4q_+=~}i5KUSg%YXl0 zT)zU2ND)ZdlC*@TEm-{tD&N8B>r?m77uG-j|L=73XgyHM*6qsC>E;1;heG%H7ZZQ{ z|KIJR0@@U#04np`RKT%Wg%Ac6qMdFU-RH9yUnKv47OcG?;KH@TjSVdBjUmns7B@x` z2N~bt#sM~78f1Kk3P`9MlvpHsonR?_6DXlX3iPso&Uk^AIp8`*1zN|bfNKoYI;IJv z$wx(^H-Pbl{{nF85W%ctVj!wS7`=JALG@jj2>8m+PB()WUEjeIechn-k@tQ;V;vMv zh2Q`G2NjH*@yavmY zk06Ou29l&_%?Fi}VD+FJDS<6ngGwx@nIMB0J$Q^yc7{20#__b?uH)}^b2!cdT5!wY zXnnfoBWQFAy!SeZMrnV<{5sX18W6 z6=*)r(tMDm`5jB~`{sXtN_4x}tr$!7n*aSRQR;GMv~pxDRc!wEuSB%Voyp3PsT6ek za|uV6JF}G|GrSQ7S|@(`MfO*eIdzbGK>39yEMvpxAckGF*Mk_kKfVb44{=0@3Ojf& zXDY-|-RBx=RM><0TNN2WTWEVjRJdPwAxkmvw}RG#WIOn=BW@%h5P{{a~ZUqBlj zkHhtyfARVvSRJVB17Yxbg79we**YBE1t#6>-3}_P2TIv@N(EXX+{v6FmM7l4$m;yBxIvxlz&@x`2)U>f)0TlP$?kt_|93`Us0`3aO-N8cq zg6;zGanX^nhkL^%UW7dV_rDV+(Cx}&?aor72TFnECIK(hL4N7J+0 zaNG?n-hG^3&`lsdF7oh;BhUW*?{pIYEzyWPybGlJ#X`{P5>WboBhl^3(d}u_>G~!N z)GY1()O^CB)AdWQ>zjb?3omv?GB7kBVL9$50NP1-+)V^bv4O@|I^8(HF^zB`*gTP7 zkSn`?!Q7dN>P{(;I|ca#;O+#u@-@c`1&AB@w>h(P`x$`U@T1rDLqPY1&e#txjG)eN zhd9F>;tY1MGeDPHgB#5dpB?`TPD>zHf!!n1?Pw4j*6I5ryt~q+o1?o>q0{vR|9%IJ z&d?9Nkv6@73Z1@xx_y5*G#@nS41Lq-`^EZLokBNf#*HsQ3>p9H85pv7g1UuY_@4ot zzWfGs_8aqSW{@(YT7_PovV#wqx|w@DdE8*_3Tva9cip8wnva>hX6`Qi(jEJvJM<6# zerJtd9*1rxo9@sLogy9Gu7A1$Sic=&Dbert{qW6^mAOQ%o2}acvP*%x`(pQr7qV6V z{=XIg?M-+D+M95wJM>S76D$9AXN~R?4r!gv8r|V6-G{WDRUA5fU)X}`fO_j*e~w-! zCTqqz>27hT5B~qJ&teMf=6lh58kEKaI@!DZS-RP~LtmtIig^5Yhjl!`%6EZ`=|25p z;ch>~^r}Wtngo(m$36?!MU>`X(&ATbO^F zvv#i+Pq(21s9Wv(q0{vXxP#2!4%*(>>&($x<p~K~qn@A3$Nu{+hYd^@p`#t#CK{ah4CDI?c`6u;x>5HOFh_?%E%q!^2(w@Ne_h zZnop-c5vXIa;PKZ1WPwaELgkS!=cNKqr3DCs2T$W|2A*!ZYPIMlM`KD;GH41-`rT4 zOUywfgb6IvWxB6*pLnsn;@|%+Z|z=3#tvs~{%r@LO)*e3K(~lEv37ZD$H&1{fD<3s zH@iT?0o|ux6#oXNK}h-0eY5*hc;O){ogAGWpu4ssV-NFh3)X6W z#aN-=&D`y+!hEW`!lv7q103$XJRZ>bME?DZy(|vaChaB3%`cgnUolp`?PdlAL3b@j zcYuTOf!32HT$Uz>O4J>!57vC^_Gan6mcspi1*Fgk z`U#3~u>U}ljkh{Oe{_fPXvcDZY9pr3+CSap2F*WsOPrd2@Rfk>ZwD>%^^Im=XuVyR z!@sRgr(3L-N1lJ16NmMQI_}1wpmbE5)8WOz5U109J-GYa3ju$S>sVe}_c}8g|8E7I z>F)U>{Kd{tuyFH##yUm*ZGJkv;s3ksm{0LVlAVY3-+Ht_d!q#F2bezSGR{j_xFR(z{7OG zJj~ZRLw|HR@pQQU?{?+r3jJ>tz|$T2qbQ-vR?X zXFdLHq5oe5fI85nknLds-L60W7jQtQs~NrqG5jwxdC|84RQ!Re*mEx?eTT=F2xz?V zL-4^zES;`zKt76a>Gb^)*6qo|9Ly6ATI}vEV|}nztlO&l!@*}P%*7Ixb|r!i&Bp|+ z57vA!J^&5Bt~efxD4sH*?jV+K-!J^z4hOtg3-%C8cj$+1-#1||_JPwW%BDwH#(>h` z@Z|u7?ypYYKfUf8-SI5F!Hm`dbu!)J-JT{H7GGgil0d+VeMdq50Tt)`-JiQ%Ihen7 zvV81yX6zR4_T}mH`NYxf`v;`WpvzOM!{-wZNL--P=Mzh(I}7?uAH)G*`@!{h_bu?* zX{BGf-3+?@T$&H^fNq?1;OP$F=nVa19mvAp3z{|P{&nyptl*MJOIN=aD<3Ry@> z$w2Bd1cr5g0%d46@Fm^c4Haw*yF9)IF_g3J$^j=bj^+ab0YU%EOa<9T}Bc{*z!bjH5u4(I4C=V-QO05v~cKR}j^HdOO6^p0Bnty?g*$n;B87}b})K2y=0F9@zOg#94Pxt?SMuz4e|4Vorm=A$y zmhKC$pZqTc-P~a14T>I?UUwdl!LA<~s`(f?OMgK3dAh#Y#d1H0q1(gc1>=@~|2tjp zbVIUKfJ^fs2~e5nDbVSAquYz6)AvhnBx7gnlinzf?%F5T*4?!a>a@Crx;;=5dGL#y zpdq+W(5NG5oSUiFoukwB$7|-!(jVPS-LZELJ_H%nDZ>cjeL3#J0jixCK(=yqI~a61 zXmz+q@^qgD$=>LU;b7_Zebepwq|=F|+tH;vK!Q2+%L{hUm~HHfZr=~x%$1q5%j$5M(Z3TN?pplYPIR*|`>TK}Xa4;x9-uZ6d$)&8 zx4S^6%R~;a+VU%)04n{_9s8y`^hJlePPexUXaj?zOtTdOe+zi1imf{eRKqtP;OTUI zVjaQ4-#Y`8Pfmk9^#&9l23<}(%pWb>c*>L;s(2Yn#Jj^-y3g}(I}q?9z=wgMJM;yp z$L{+ERO-6%bi4lO7U&H9(CuW;U;z&!`KTzshDAM~CF{GEwuyNh}fz3LkFn1Sxd0=nj)WcD4lE*`U+j zL?F%vua|{8TLF)=MPSZ0LUQ)P9=NkXR}`y&oeuRn%-KvJ*Fc;tqV1z119r9r*x3@@ z-ZIe8=I3v}1R9Qa)9DTq0Iz!kWkVGa;{yjDu^fEJV(FqH5ywyv*P)tHnL`g2pnRhw~ zIkUtOWHM4p=mt#-hB<&7*XhR7?ab2YXaL#+4qA52-hKYX$_~)lEO4{7`}~X7dtihA z=U?b6A~(gs1r(?~@#F_+R45J7J_-})ZTbUhX8w>Z=i}ej5Fi7d`1Fu*X6QcG_)Cb9 zfuV%`MX5Oh!|Tg0^2`|+zymlFoMfCCbYz@CeQZV)z<|VKICBPMA7noKSNF$ed(K{W z0Z<3a_fMzmk5bKU25WbbQq}I8&;g%rNGC1;eXPf))Ah%Thn}Er6?=E=pHdZ2y#>-+ za*ThQvsSl1hxLgX{=n|*-KSsd@&UIuUatZ3Wc(NyUM~aEpq)l&Z}GS* zq?5SP4eTJaPNFlY)k>(7*nRGW_G?hL0~~iC0u-L$^T0vdvVOsw4hc4lAu{gXFo_qx zE`fcW#QF>`#dQn%~%f zD$bwXw?LDIjrHK+%kFXm&|a15Y;28M&rIJ?htf9Q6WIQWc%yMW{1Gq&b)T;11RxH&U0bh)Sqceum)#=C4m-a7vx z=Ox%%pr`|5nE${-8r`?TcX5N%)fsf32cyeI%=xFamhbpqA=t)|Qj3@DMz z-zv(;zyOKTX&1n0j9;FixlW*#zXc@IT%#hvz~9mXnz#q;pE&9T{874Qer4pQvH}=daT(&cDrH#}P89QN|A$)ZlME%EZ9X;l=UK9kg~sf`6O4 zPWO3_fEO1)sqY92XfFfEd(AZ}Hb$lL-61Ll-RHB6{+FoObO&*~=!yVkKMq*Hb-M{P z|A;Oz?LKD<8r3cVMX^K{!;8(r3=IEWR6tXVNqhRKC^;SeIM|1y8pd3xDez&@N!e2o}}? zhZhpCwqOScfV{@Q-?9djR$NphK*K^6pkX1c)&nKnU`L&QVdTlc0P#D>=O7I7eNQ;p z_peL3*+BypE-DI*DvkgD*E95rG=c+?tMQ@zf&c#xK49ZM*vW(=0zjJ$AQA9d0L38t z2GHIbPRIU_(;6l!JwCCLpP%;$lctBIvI^mc7yWe zFODK>h%rTyu=N-unSbyRUwpTNfw9PjUY-q&j~EWrGZ+d&iX~9pZGEC7y1UL~S2Y6z z189}_e;>FNLf z-TqLCRFDMJB+sWvMFgmPcmrB&_0jltIH;TB`k~vRv-V3zJbQDUfF^&7FeuZxNp!mY z==Edi4ddvoQvi>C3V;R%LZ5W{zR;Bf)!E_AFSz+z{Xxmh9y|l(`lFixG+f2l$y6fC zFTma%`lkEbadwa#Xg=iy)ARrTyKDbAzYYWq2b_Cx2r_xmeXi3@;KkEtP)Uz%$YIzyjyGjy_dyFTdt(P#m35NM)|;Wz_`+3orRWb{jM&=R=NKi%hE zXo4K(`=UGa38;1K`r{?2`O;lxz!0a^db>ok+l_;No1d2UX=Xnal>RmwsK4z7>Tk0& zzh*4G-tGDU)Z2Gw>#qIK6|dE8&c7{Ohkx5)<_rAW+(4xxH>7kdmh1@QV2Fp8>`T6a zSIsX1Z7hJr=hUsxmKHevLO|oyouO|)5!fAO(&_r4GxSflM7M)NueVIMC1@h(c#VsL z_3=8D?qHLQ8Q>wh|I7?oEP>s=e_lv{cF*{JX+8oP(CTzHv9_!gho$dsXOrVBplgj8 z+^sEZK6ama0lIIs+uNl32dG~ipwMYE@xOyYS1@>@Nb8$BD|3koXjcGyn&^7>i5K7E z|NVc>3!0yROcQlDvv#}k^oFkKtXp&?9QegGg zv2?Td#z|l;xOl*40JNS0$3N)U^%CzamR$!RVOF;Vlu=l~6S$L}{QuuwXV4ob@eedW z;;z;0uflwy+noa%X)YfBKph6?C`oS}OQ*|3mhN*eZh=nH1Z9O*&@sO#rEdvF3kc$x z?K2u;cO62Bhf~;A-26qgx(Yt2uL6pD2S4)fZQEc!O#*(AbPSsJ3Nt z0+rMtAMSV$Uo6q>%F}($n!O|fR1R@6GB5Zp z{O|uR4M<7#^1=WAyEGx}yP$&rVTty^rhor;fed;bF@0;OMY`!XDS&};XtEQaon zpmX0}OyU8%50roTTR}SuVL^tY@d>TLs!u?|zRmzVfh}Xlz|d^XUMkk@%|WmM01GNx zNZkW!m_V!ks}5ktfYMqP!;A0S;MN*wB^>D3ah{jqpu*xfwABeObU$o_W>RoV3_^hX z`^Ey=*zAn`(d{k(o_EnGiE92)UE*P@3Qi)R{k+}o65Z!IU7tYbggRZ{^twI)O?aQM z0z2lo>m6{b3o>(b-1Q7-im21|%FBJACQ#^^7YyJ2|9=UZ)+EqCeB68>m)yy#lJ#?Hm5T_Gzv?!&mBtEDWpb z-E_Lq>UuHI><>m`3shx*!rM&;WH)~+Xdx{D2SZ!b6OMtM-0ga%x0<6{9@I)H0ku-{ zL94MrEBjCR&%N~M8;;l(m@28M3mAO8+_vd15Hgk(}j zNG4_E1?3Dj&}B~^7N8YxE))NB#OXj=0j?a~=Rr#`!n?~&!1*cQ#jJIp{0GiY=U?=K zINj9}zcrnmf#JoCNB{r7u57FZui@zQ z<^UCg&I-q!!F+x}XMxwey}=UQr(e83^6!7Avp^ODctZCe2RPX_R|{zJw?1HFV1Swc z8ewq8ZOAH!A>G~v-Pd0DS}`zyHiEyA{KINd&xje&t*-hlyDU-55is4)hQC}bEr zL+pL|{{R1%5o`<$&32rn9NlgL)@~vtmf-bb|13eG?4?RjQDsoypxY1Hy9X^Ky8}u< zM_68Sg4NsEF))D7=sx}8@rVEayWBu4lPtQ=ceruAcmyhG>^Rdp-N3W3Y|vR)H}02r zSc&!PzQf=EYpe!$KzqF<_*;390!k1RR3Rz~o!Ej)p!;I?=@&JiW6QuwAY%sJ;B_i4 zDh8l42|GhnG(f`!E-F6YlEXzM07~0{%8nQLW(*9SE-Egd-a1?NiQa%8&A-_A+pQTH z82+nFtub+CIL^k-z`(E*M7-1lEiw$_=sth&k$Ced))yO17#KR;I9|>IMa*_Lj$S_w z{{5gMk`%fxe0Nb%0QJ7Q4|e)M1`SJ|4BJ!H4 z`(Q&IHwXXrOQi~3Zd_LGT19-IE}M&r2t$F;@=j= zb?_1A4DJgDAMtU6?(h>e0k6B2=w#dpt|a+-!#F_WYrT;_IzgSqgU!F$_}f99BoMbZ z^2dLbxid_h8Jd6amMV7paX|bHT8d%N&C&t3_}~jR{%r?3-8fz=H~-)(mF#Bk_TvC| z9Xg<02T)FDeBIOhlf85TB!Tg_^nn7+jRRyoXn1{_yB5e9mQ4ITg`lV?QIU8V4^k4N zA^@@TC1}vGTL>P?-o{{`D1eT6I?e|64C6~yP^Gb*2_(k9{{(0-w)+Gu$U&>>OQk`9 z4Pt>qnim$*T%ZwuNGP8yRfdK#`#*mj{_TDoy>6gRtO6*m`L~1T23~^&K;aAxVgCIG zyU#;HIYdR_#d;&K+eBdQdR+i=QS(pUQmJk(h<9K?2n{`^*A}1v?>^Z4ldn{vo4p$} zC)Ue@5`vwK5c6Iub%UZRMn$0c2Yab#Hy5HjcZZbcI6L&a;2nBUAJiiNoS7Lxng0k& zvmJYH7)Li3C>}a}R8&eOpympI!p!i+-{t^n zy^BIx@BGcapfPiHP$YB&a5T8q^Dhp9%B~O<6;M=ia$f)~Z9e#jgInO>Bev#K zJTHn285o*tR4mx}TW5n(fRBm;#3B5x-Js~*2J$3-Pdy_8!#{tWm*pTeNSPGW3Hz@y zbqhR`zT^R^K+2zjhT!}O3Cx$EqrmtFE|;oc%cc1S;PfK_abhRq>m*SAlflS;(8S}$ z@md>{^%QYrJ$S;A24z99Za=~;K==?4XgL6=1>mmJeGQamzym<%&A>I-{}L6@I;_(# z^uK{SEXWm7TlG&wV;VHOa@yLNr6jDo7*?I1UIwquPruj);y|nONqw;D{Pc@$%m4k~ z^#oL%uUQT{S^`>~&j$&EMv=Ntzi7S+ZDqfxy!!wDgjhpohB_T*1`b_kh8`VfhOb7> z(EDVNE|6hiVj%#S3CLr;qK1H;fstlNn{Zy&nc=>!GsAaXX9i|{2;Q&f%mBjX`pyh) z`pyhl`pyi#1`zyT-J6P4<{COPv>8FLy^%8m2!q@229WmqC&)@fcayaL z4tZ&o0eSrG7HkX*-Tnf-j(2TAm;9Ai@^5R1um-nBT&$fTClS6DFuwho2Yig>Yu4SM z4O&ReUDpqwb-TF6kmv0Nw|KL7zy(+VsMq0d0IIDo|1bRz_JZFLls-9L_JYQ299wNc zXWQ_%mw`)Yn(^ zbo%kU1T6{pUoHW5lg|}!mUs!e-2+`SXm>GG^Xn{hNzi!}FiBr@Nl+lcBn`U#4Z0Z{ zD%ctLTduJ%FznK0Xkd6@qQk&|u8R-UAaLVA3SD<_GZSS=^y_5E@VxUbaL~RE0ej=< zi~s*$dlJwI?S^ndbb@xmU+X@f#qc8I9ViSqpl!xkpdkQvf#w6ZZGVAUM(w|tK?`9T zN^HULA!F;zV0`-}=$tihl6cw006nqtC1?Z_oIYMx?gq8bUKi~KMbYc*-JocAow6HL zHNTGC4I06G9kv^^GV-L6rDzArK|78+0o2YtG%E9rWOK^){B+hLRu#YgZ2bK3C9~JYs=4{$8-PX~L$7q7coC|{z|id`(){B;e~SsIUJHHE{Odn|>rYS=yS{j-01~_Qq7TzN zZ>;9Ag3S{En+Kky4SfPO?;Y5@CoeC6I%(Hl_!(ii?>A@>Upy$&b-I3e$qTX<+@k=U z0tdQsi>LVoV+nirwHKE#_3rbKYW-Pc~M!c;dMa+wxrYcV(szyY`woQ=CTfCI31 z4k!S9e{?f;M;LUoOvb$?s!ZgCh8n0?VBr^Vy}~cZ_L;xV^+_84H8+8mNg&rl4S}tX z#cP(pi#w_e3?PG=kFcPcB?dAp_D8qtlituP-KVWxUzFIrn5P5keqUiPRqu9vV(t2Z zzoie91wd1%zIUuo)CdHE6~8Fc2fOgKAcT9}06g250MX4;8q+P@?R%%w_XlX%5KBk% z1A80UQuk&%_EKp?r7i%PLIgM0ymh)`@4RO2j{VUcWYF!$aqyvdH_I%@X#R;#o>|?l zcc3i{H;&hd5Gzv*7#RMSe&}_*vP+hMfgu32(`Ny=fyndPuGjZU_vOH_?h`NOf?EKf z<5o2PmwxE>{n6`sB_OOfnD<37RIwmJ@ddCD2k5fP-=h4jp!MpnS$B(ql9s#4&j0@z z7~a%$dQ=%$Z@YnKQ#5P*|8bGX$GCGfXvg zX4r4)%<#h0nc=UQGXn$X-~o)BOd!WFg9uI*5XlN6K$wl4lVgH|xidqIxif>Axif>R zxif=~xif>GxiiBQb7zJ{=FSZ6=FSYs=FSXR=FSWo%$*swn>#avnmaSpn>#b~nmaSB zGTXzt8VVeZTzXzk3vz$hvz%ETWJhpIV*lpp=AZ_8ykZs}2Aa4m?GXk2g1!HJ#VFIP8 zqgKugZ!Mh}K3O?4I9fO}Ote5#%LE3@ERdmFFbQt|i5zqN#}L+CXwc=R)#3W5+YLO2 z;2;Aku%T>$PS+pDT>pZuB?7PF|Iq2i^Wy!T|Npzsy_j+3|9|kR7RdU-<~ISL!w$l` zfA+d@bh>`%W@vuF(fosnzx@N~Ucq_+ol=bUIvrgGMx5 zzqEeiZvlHz=b=swNwa*X@Ji!3DuhHh^DZNWNDpz~s^FO>1ade*NP7#KPNIsQ58bi12$`*QGa zcgSNt2;Nr2-+v1<>g~wbeLkQ!bjyn+pdsrcEU&{M%QQeYC!&TSt|qqi25*Y`>wsC}~g9Jq1U?QhT>`T@Lf0lNIA)AbIhGC1z~0yL0w-1Q2m zb@rkLREHgb?O*ElH|Pz$^1@sd)JrhvKGYrhA>c(MijrL_pdAidXM&Evgm(K@fH?jJ zyFjDTkQ!p!@&Er}D?X}@!v}L==?S#I<6~#&AJ9fT@NI@}ES;{Pg+`?*&`A`~kS*%= zHt^aVyY=A76X=R1{#MZ5dZ-T220k29aL$mm1B?*OuT7vjaM*Ec9oUX;KNIju>=#vS zptHdLm;UJvbLl?!zw}4*A)eqDQ_h2e8M5{A$2oYH8oZUI``nAxV^B|n@*`yYI;{I6 zXn|rl)ON6Y4Y1CxfxQ|Gb%rzOh)RnrhVFBqv9L~Okr$Gm!28Z^dPBggGe9d-8Jd4E z^1B=att4|%v3N0Emx1A!i;5a!m$O!fi;4<#8r&^fK;Yau~aXV87_n2U-TLzg?qUK8l# zCD>ja7zbpp!7&#VQwGqnrY7cIZ| zBFDfG4m$P{yb|&B3l|v%hHh`r3>Rp1p!LC0f6!UBo!%nN|NoanbO(c1=d*TJOT6~( zX6^Q1iCVhPyf9LTZw92wSq`o(uCkZa(X)~4&IrrlI)PMhXfg-#6 z+>6VH|3fD~PacM*T~LJrOTUoyXPqG`Jl*96-Ejh)aU#cDRP-46x4D6$S_e_bfYKYh zl5tVdIOd|F3$A8BMGs? z4et$;=yVf#Q7Z|K$?kJ6l+VHokznv{uHf$LFZjT^dAiTNU_nTOj>mw^!Wn~R;XtRE z1-uZM42o}%PrJ{*U$>>`^Eyi|MW*#cxUXJ z{h+ao?qY)mH!V;b1h#tQJigTw{yiPr-@G^+vDj4bTGOY6Av; zt=5wz#@#p5CUm=V@Ne@6t(L*LI|aI0CiYFYFHg4}|F$q4=8NFXf*0ywErDLpghxj> z2ZNtZ_v!9xgJZ7Oz-6NA6<8@K)9HE!#un&wy>QI+D!4p!J<;oWqSKw{Me=2EX~=UL z+$3WKQEmdDimdia_qlLT+Hn*Ir=8|n0frK;Zr2yQ>J9(vUmJIa@^qgA4cv$R00rtP z%@;c)85p|R!27{Cx*aS!LpuI+yZ&fCz;y5d8?RQw|9Z&!6G;Y!UVp~!IsxnRrNRNA z1X?EoT3;dtw&t~PAUIhDf)$rafCNDY%Y$~Aam05!Sj0tx4SpJX7*eF1e$lZ1|Nm~- zHpu3Q;Kc@@^aiRApKaDiaGzH_Tc~jS=_ra zKuXTP@JEtK2FY;kDuKwDBFT6j{Qn<3Nak?x|9?pHYAq;DA_j)A4YNV>{+(rrybroJ zXw56oDm8=N5b%jqFYYQZFf`W-=0l+esFREuMYq%j_&?=-1P@&5Hh^`*RF6|6PB8mbis}c$xVB|Nq810nk(%ba6jqxgy9}{P5+9NM_wx40aPpyF{<+ zi2z7;|8@)1+GPPBI@oOWP$%t0^AV12OVBFn=0nVo60i)mM$ob&oCCBe;aqp< zljZ||vls$`UrhK3G6f#R;EAGhFQRt;|Gx|5!0vM|{C59GEEWyyg`Vg627Gw@&ttCN z7`tzE`x|un{^)Yl>Tvzi?FjGKzJaj?I$b{;bNvcBGqlt7MX&3NPDdWpjD@Rb^>7h5 z>qA%9^S6RdxPs~QmjInu;`;~dc1-DW_ZM9OgA$>VeN4neh2htHKFMb_?HxwZDYJ%H^rWJ~w?7f(SPXbWLy5h!1P*2$fJaku;5 z|6SmSIsf9|&j0^+tpVkO^DmBq#6fyrtlkN2Ie=P+ko_#6@*KQ=AH9E5ho^s2ybzqw zz=am*x_jrRpv1w_SSJ8l(aYbe#DuoK9<#d!ZDDIdOzL(MumyD{OJZ!9Kns3DyZu1L zw#JK21xRm*p*LOv(lJqi)x3}n5oC#_1E|dj?GU*mIz;X~-7YGiO8`d z1W#I=33O)YKL6t8A$S7mc9-alhqRx-{igHBnL(ZZ7s~{}6WJgi^EChbU*g>S<9{hz zr;iHHYm4p+;1%ug@pe4>nM+hahqq<&f!YF~g_`S6f!iz*pwhujz!o%xU&3w+Y73QG zb{m8DUU$QspezX5d>x`90_xUwpMO!z#{gQc4?aKZ{QnXafftETbKM2HFaIx5;psl# z=`QlZ8zKs;CqRj%``ioB?f?HzxDepXa1V+Z7#P5VV{n2I&SGL>fTUdz32Kjk)|ZEO z{{$Uo6Z+@4>mN`Mfi~Baet97a+S%+b0P%x3zdS>4=%4QMFW8WTOWyRxD}eo4THXjQ zynEe2!x`P6V?a;}Yt zv{)bXx;_An)487nHwr%-`2WAV^vi3uUVoNO-ye+H-9TGeLA_`0?l5rgnX9u7-YW$ytK^q=A=H09_aX+eDi#_&-M$~JPn4K~ z3L((ZmVw>pUu3r-6+>|#4zw6D%0m=GVeQbBxZUSpSZzfva6s_|DsNoCqfMZ7<>B3K zCf#)`h&gV1Hqcz0K=Xm4wogH`IqkbxL2a0Z6;a?^QV|6jjbHNb|I1&Xi+8WT`1$w$ z|CjF|Y~OeP|G#|1%E0hKc*#G|SSYCd7oGv?BZF54cb|KqwG~uQalG6E(GmUg|Noa8 zAnfxW{{Mfugq2{y1s>ojnghod9UDbt#^0Z972CM{q+z3{qN6f@lSc!$x{Rw{AiQ@4Dj*_*)ku zI|H=$m50DclP$zhaMSVJi}i z2JOvpZ~>ps1U`y@8MHOR8N4;(T|986))LgWvc-uaAmE_vJv)phfu(aJV)f;b4f@YQ4?ha)F6~ z0lGhy*#7a$IfN^4a6ZVI2?>{TFA_HW|KAz{J4d2s+l?Tc+lHW1RqKex1KHjJ657v3(~fi}Q5J4w5Cg+&uNNXhpfb^2>$QCrC{2LQ>)Z$_xQ%90nkFg zUY^Eo#^wi4n@^~Mu8VfpYCiq{HH-0W;{(0Hj0YdEfp(>x=f2Qe$Y>j;p?L9L}v7okO~rY@qAuxjW+=jyr>v zD={2%W@9|=EC8CX1x;aquK#ia4NE`I z3~EhpQ2|Y3yqK8{%6uNXWNrq54y)^QQHkkx1$BT@vRIBgK#qxV0Q>eh=u8#{hVB*> z&@Sd~507qFQ1e{{bk;?uk4jGWc~~~o=rH3Z_kaJp*|HQs_Yi{*`~aVy4$%QQ zKOKBIckdK%C}_K=$S}Hr`g$>)9H4u|x?NOajyrIGj>qY3Q335R40zEGsuv-i@9hDH zLGuxo<1L^qHK4Ob{~vEr0nIXj`VYrlR0=@r-ay+udtFotx(HP!QHpILqP{s z3WWEv2zR>v@cwER))}?>yjkZmpNI7{^0iu z{h@vN;3IL+24+}yA(X=lH0^#FJaEnO;y)8;2@-hm5mNqz9BJ#zp?wOxSijd~La*ch znZ}2-57~l_-Kv-DW@|k7?>{5M!H0aR|LqwVxKG4)^2J5Q9tQ1vI|7=%{#FGUJp_+m zfG>;bJ`~>lv-#iu602?j(7|5pod)q>E#R63&!k~k_xTs;pf(w35#3ZhJoUMXF~HY#u}0Cz(2i( zf4UDfKd^7u@gO&dfuV+_Td?~hSj0vddUH;#LF+HOnL%!|+0gtC+_sQ&1<* zrta^}|NoaxfTdM$j$Poiw5kG@mOxGfouAx&GrYT&qqm;1`Pcsv^MlXX!n&Ee&x1DB z^GxV9nE(lWLq4d(C!l!QiTMI3`JIc4hg`D^_Ah+B1Ze&+Orl#3HZ2W0T%p@dpx0Z( z0Xjd{e1ylEu}-l&*dXJ8q zy(PNc1RNmxEU@XD2GeH&8l&*G=nfNz?{?tmWSI!E-Gi~y4|;kDs5}8JKCk8IzS;O6 zJX;`g@Hq$fb#RVmjE{?seX05X|9>!->4hAK`5ZKVa9*$bL-+L;yr5Ikx{t*{JP*x3 zR_vv$-9a3$nVV1j2VE`%T3E^2T?P_3_uu+jo$~iXpuJn5lQSH(tS{6s|MS%Oehe(6 z$G^={%lgA>MJS&e!iOlq)CIqW2o#lI3<`hHc!LOH|DgnE1%-9Dhe@}C188$t_X*Il ziWfq@|NeJ__BIJX?nNvW2c47;IyWKgg_sv8+(Gr0K=+B}N)F*ti*7^fVwqaQZeNb> zYoL3#!*#lyIE)=RR@j$H1R9@wvH3ITmNb^u10|f@$6#p=a#oW>Z@fUaF=%GfMMYp{ zCnIPDgahJ6Piy8n`R;HXkj)tq-yvy$IZGh;#Rc#{uRy1}jEWcRs)4_PL3yMykB zaXaq90ovEfU~OFU7PKd-`!MJ_@CPi+?mCcL^*|kp{|++W9620H%)8uKSFn^AbPIy7 z!PWrT)a?nm8=LRNDusXl;Wbc~r;Q5e#vQH`9saEGanO~d;E;t7pzwX80NU0a$^kwy z`$K2w1Mo=PgMj0%FF>+z%cCmVnJeFo5G$KDy~&d|+{pu({mX&cok z&?0U(4#)~(kR)gq761MV-6x>ggde_QD}A023aU8!W38yElflb~IUFmcH8eOB;d ze$ak8{_O|BTf?B+7B9a@K(`4J3Fx~K!OaBFMnsTfK#>6QH@2;au>DXVb$imB8IGkn zGdxanW|)!=!M^Fv3?K|iIS>+(en8`Zpz~Hsf4n&T@Bja9?q0|L%|E#L+d;e4|EshL zWI8i|4tPG7#n^rQ1qbBDiq2||XL(3MSHGia|HLog%mLW}|A}AF^-1@+R{Y|hVB3Z(4|sr#w?puLG`*J z%O(uf!62p9ze@N)%_~r0+GMpK_GMpK@Gn^ToWjHf% zWTN678O{u0pgPW_o3XpV06abnYNH5s`%FV^1u%E>OoKK8WV%_VVXN_u86Su{3~q_U z!RmTY41?nrbl(N&tkqlHKVNV|N`c;Dfo5y&Qhrdpfc8O~d;<;Huyl)A2aE8x2!Lj4 z&L4OE0d9)BegRQ00{{R2-+G`_s5@As`}_-MFps|lG$aW!iM9E}|JPdG&?92I&%>H& z)j$6KM>NyUe*OQy8{ACmE(Pr@e#QnmZ01_GyFlY9X3&6xyT}XAAE4=XfyQ&p3=IsO z{vx2Y2%WA!UKoPJOaFBH3v{}E>GTJ$0JDUiBg@)ZF7a9iGTcI-vH1&f$pq*y*>ZvI z^Z!dZI?F}6gGIt#JOEum5-b23>plO!^b6?D)E8&K;lk5fEYR)B5r3Qw6cTaAoxywk zJDs5!0I7uyYFz*7{`jH=l*sKt=MwlM?MlRPE&;4qlz|kB-Pb_{DELSMTS#nyu2ATP zm6VnF;F1y)yP)zdy!%)8%@-n2`_!Qau4#aFOF+)C6M>v#_X#}b0?I|8@&SD6nm?$~ z3_fceo@Bu3MF-SA1eKcLoi8QkFSda)ksV?my%wklMA=6_1$2bf5ti2ipxAox?H~9g zwfbNG|97)_H2+}bZwH->_g|$oCfAwaxa$j0-}SgFX#F$8Yyab}FF?II7~j6zo#VLc z1CS7?g#em_zH!|31E`1oTJ3)sPxtx%WgIVj5^9v6C7SNr@pq)x~%`X`FTR~TIbwzP^Uw{NROuzXDPia9nd$(A(gF&~*1W3nGn!oh`sAb_V(D(@4LpufPoEaZD_)2gmXe8Cr zl>@ZE_&oQ87nz^`|HmvRgFhpelS@Cq%1Nj%L0jTed*gMw#k$Wy6CM{d;W7Q=?iK^L zEVx5C4nE>*JoVU~f#C%c$QtP6HKI6v16ut2q51cJ{ua<#>7edmMEB=zcndl72Pl2^ z#_KqM3TAdtGPZR6Qzq2y`UjkKiW9r#JDfRs<8}VQlJbikpo^-&S57vAcDLvM|NsAG z2&iab@4f~)P6khb9Nc~WMdo{O)e{fuwtyO^piu_!H2@Q`kP13z1cS=gPu)LXsDR39 zw&nx>ntyPXEAnq^_)-9#L3mLB+IZM~{>5idap%VIS{PI>@qv#hIsZZrQk(|#hJmUu zhxh;ggU)Xc2c0eqx`E7H1T@2{32_f}w<)OT<(FqzRN%}orNEhCd4V&ic>|dpXFPKT z=AJ2_ij57FXkDxyXj=zp z!OIbrPKf<0!P`q&pcmbM?1%atM1jlanBeYMj<9ghAz;n|oxVS;okjRtmw=8XUR|E-U{JvPoB=w8=by)KJg2<-gqtgiC@5x1H9H1WXz3j-#guCE&QRDRE|K{w2)cvI4Y~qx3}cFXj@LZa0qRAHw`CCm0wQ zRQPRJ_*=op*zs97vXrv%Z!2Vf&D>qc(|k~%H+07fJI{ard;J)#50*wZ*B)T*E!|PN zzq|IqCw>98<~QI<;KNL$1?_caYd*qpH}=CPegWSPY5aNzL3c$}DW&o2 z^DbBt%upopiC=)VV@WVW8o&O*GA?lQ={0M2?E~Wjpp7->K$lnl7v^sPZ7=C9z0v%i zxx^dhV9*X|h=W06mfc_n3xFNW+gHR;uuXWb`c@YXKazZ(}&v)N=;R#~<{^|Y!8r$f;_JZ^M|NjS{b2cAg z;r`uy^Wbwn?%E&S*I#^k3%ZC9+OO+o?hY1+kLv~<(IgPv=`!&TsN{i;m%QPDtmg(_ zybT)v3h%DuXgm*UGBjJV@Vi!Wbf124`P+Z+U`qGt?rWW{e_l)mWoFPV0W95znqLU; zw}6(dfy#p-5RnUV&>C>9@4o&b8DwcO%r!8-`@TWcf~Q~12Q9?)1vOc_UH`<#bvkk! zX9T$loO~cj1e`uV<9nqX-G@3|e}G31nEBfw$ECCyR5~+c>?jRl2?i1!e{oPt#*V$$ zU8`HTR0vTWGk^!r{B=N`OYo^l2PC;Kyr_Kr|9>YlWIUmpy*pe0oa%T$i4Gbx-AL!W zct8$ga;SujPxQv?fClVD5j&wF75|AEP{j`)xR8D!2(ky%&IL`ff$nWT4?2xL3^Ygo zq7@X9;7X_ZC1Q0OTr=y7E3c4p$4k&UK+v#9ZyX2z{uA97KqJ1Vzq|ecWr0#5P`ks@ z^-m2aq{Yj>T^KwBA_X1-xda*l0UfEszg@WdCioa;dm)U#cb&y;20+0=h#Y){E8A!7p=@=Q%ewXGW zEH7O_dSOla!-?Q|>&0cx3?S@U?#!^K%$XquM3*}=+$wiwm|FqC!4=L7AiTZ8nc+}{ zGsEo)XNI#C&I~ikL3@8ele3^L+{{d%900xFtCXYr)(-jB*MXp2re*)XzcW5?@E1$> zC#Qq&<_!bh{n^?R}AVVCW8a=sw7NpgZIc zPwS;px$fE zVg7c|4G-O=U#!aw$~a!;ftp>VU%HPSe83X0aKk4LhECT9p!>=}>mor76DtnT22+`C z*%ctU*f-w}GV-@%gHDBU=jn7k^6el~i8@GKH8becgCEBkBpDbOptH~aFN3ZoKk*-0 z_5@@x>=FZ=`DO!(z1#=}2GCXoj?U62pk2aNpv7C4y3f5>lE}c&{DY;`{=XU6fd6GY zU^?vo3*73ls1D!R3-MVgfjZW7atp`e^{u_X_-e^9;^1lFL*8kEQU^Bb@ zRgSxZ4jW}?J;~qF23mu--H|2D+Kr{OraSaW_lIuIZlUIPEJea;6S^6#nMwsfce5Ts zT+eFQ#c0J;st&rIRjtdB(aMRjR0?!Gt7MlWla&)wDKBW^i>J$x*~*EzgvI#4YgTZh zrn~e>>wywUOdmEM0V(3>EZ2al`_k#I14>}fL-%Rslg%|Jco<5(x?Nvbx_;nq2kpx(;6w~8x&3Gj(ub8`l8&ih}F9EOR?4e(jVX;Z$8e$ z-|~c&f#Eni=wz7Y6aSC9gN92Ops55jT2}hz|FzebyIs$8m!5dNtJ^=I^<+t4Zy;kA zqhrf~(x2L=dL4NK{)avQr5~2g(hsfQN;Sadeg$=mOMe_^=L4leh`A73;i+(E%=aLM zUiX048r}S;Msh%m>~sZfplSV9vUX?A_aKJui*EVs!C-u{`N#i^itj-T{4NIrI$e+a7Zm_25a@LM(|VxP<-e%PXAg#MhUViu zC7j3ELDgobJInvlBmYJBfEBWY{TH3`$%CQ!2um2)!SLXMJ3ND-fq^05zbMBSu(E*v zq6ffQIa2y8P?Rug!_D^T&2hi3y-yh5e zxSGr|XmE3J!)+>E_xi45gyo9xSaVOIW`#GJ;Np1s#jS z@S6R&>jjYY-32VI-}qbWK`B`xD*_g^pmO0SBk1115+i;AW`037egS6z&}vD30cQn% zK{o|{0cQh#K{o?_0cQt(K{tob{B_O&pd)DlUV|kf#&J-`0(4>( z$i~hBmTuP%pfeI&!5b7^Ux0k%`r?1-o$m8NFZ#h(ae&%y9WqP|4B+tM?sk3B?ZNWm zvN;1o@PE;s&mIgjK?Pjx1%^(yfX=WG{+3H154b)tzTF+b(R!&=C8+rg=+=qzSsedM z@BA;l@q%5RfuZ|G^AQD5m>vR!>1EJ<_48pbe3?OO^T9T1L%hu1efq_8Sq27>>p@xJ z2)N)s(|nDgv-F5{>5FoH{w7eP!P@l;e^V)_1rYlO>aOlm(Alz}?!uYw^TGd1U;Hoq z@?y6#$OcfU-Fk_?$CZ(Rp&n#i6X;M*s6NopgzFWMZ~0qKGB7ZNy=(-zG4xMwJkO5r z{}~v%&!s842?S?=nrAO|nS%@jnbGkbobm2}4oU`jbAc}dL-&d1BOKhP_*-s+Eg1cowCWFmtJy2o{Qw}XwK&?yAb%(Vd zkS)FjN~3U#yWK$()gl34GoU5!ao0VdEYThNA&dFHdGLQxlaC$@tp`fIq2_b+y7Pc$ zw~sS`nzEf9EWvPp1^)*dU%Q8)L^z}6dJw~Z^Z%kUU>|XGy0aiW+zyNX8S`g?aC;EU^A3;0& zptc+cgWGc{p!tQ~&;_97gQZ`(&w+aM#l8#-tp_UgdtJYDp9|;>{qTY@5R{Nvz-bJ0 zrW&YZVDEPQf@+WN0?>LHhvpLur6S#~OPWtQbh<7vKG5mAAg$B&%4?RiZr3Z_u^ipO zBA}Tz*5+UTN_o>-50r55Z@D&I2&tsG&8>WUoPBwsYC^&LLQ_-s`=Ny5>c3GJl(Dbx_ysy zI%{-#>wwzL;Igedl&9ApbjM<+>l<+1Pg8Uj2n40Z(=QGfg941B)Ab1`yB-IvIqwd= zlGb{uB&OS21hh|yv-#&g{#MX#4F2thtPk?HfEFz@|KKQ50EaSY$nZEjXsIGb10ahb zAZ+J?d(I5u|1Wlf?m`5$!BdzR7+y1V{{!9fc|D8ag}no$fMMzM{m^={#JxLM1k}t0 zoe9?Mx&RVfB^=$ZJGfo=TECU5bo+jI(E`#}`-Q*d0H~-u|Dps% zWB14I+CT6x1(&ZcK>hsxr93ZYF@Zvn1$3%U=z{KZFK&5(66Q|O#9z1T2Y!!(ovt6O zOTUyr*7JiZ!&s0NcCG)xtJ|x^85mxhHrEL-l!$b@v1Bo2F@WIzGLA4%3m$Y)dKN24 zB#Qwe7WQ8h)QWFDBGdgHWEwvs1A}$xm(r!6yDwZnfTHpbr~)hH34>H`VCQ}Sb*J8h zb(@09ZcujTX+2P>f|M)yTaJNRThRN-k@Gw#1vfuPY5tMI-#P)*-+n028!XX$lA(mR z+x0}Z@0m`fPA`_%TtWXu*MQ3m7XIz7SGs-obUKT4yI$yYRsdxVXM=9n58AFTW_Eg; zfYNBN4yb}E0acG4pkrP`d3xP>0w4)f9dz_9Xxyd3)YA1ysT|1dA3(u>tr=3axcvYB zA71=`%1vHKI}}X|E_zxNM3GIHf1GK30#pD=PhT!g49`K;wG48{ip+CYqegBkz zuDRywKGyh;L4kpxjCBWy3JmCN{c->Q|18FU|DtO^Z9Yf}E(!f#`U4^r4wi$K`qsxw zCA)q9Xn$|M%}~0&h^6&g=}P#pB{YmVx?KfY50pg4#~o(?RSBIQpfCnI@_*@{|Ds>O zbtS3=dH4$=WS770lQ#4O(944|_bp-CUf)1ZPAib4KYP+(wqF*%x*0aT2F7R#OM zjQ#PV$QqPRD|KN7=#SoNo)>!|w`{fkFX8TX{n3e8e8zHsk}C8#C^pbCw=kA0#w>;m zP`I@oC>88&eRBW*|A4^%mzs}=bpLoQ)w>rY5FQu+5|QZs(R!)Iv!1W@f01+RrJAIA zme&6zF~Q*wZK#1-G6fM5KbjAK8r|@qJN^G9s72EJ|6eIbuR9Bwo^{d7uo!)_R~+EsG@}i=)@|L%{zsj&3&= zP?i&Ey;PH3&(eCJC>3-@mG6hwDcycN%|DsTL;tJvR&+Zv7#}b``PzRcsMq@1t=IQW zAZYsd#ES+mP&*ZLhiJF&i`V*DELjX$9KF6D0{@qB1V9a!XuVXwvWBPiKoJMjaQ2;` z9+dHc*4rhlo!p(yETF9(OvblC;aprl4fG_AvaVBxl(VS5%aI?ETErR}+ z{xQDv;)g4!M1~DSLo))D0=FkXsznMqxk|A4}{1 zQaO-@i0;$J*+4zoPB)ept;otjx54^(I9MMn^6hox>U8~a@Bvf6|1zKdqDww`Kw99f zCrdRzhH%1-2!~YzAluDQjC1|b>E_Yt=hN-y((UHcY17et{J)z^r#ZBAJnjyft!Fsy z4(h-%9CrsNqt18{XxAMYP*4gSULwI^;aN=Gzq&tWF@(d~(x3`NsN0q2I0Gn};C>JP z4{mpWM|et&K+A#8y*SPe86^T0jKbmYhBbT^xwDQ1&JF-+Isak{XvFG9^AV2L+a*#U zp>r=9kxY^5KK(*blmX-#P+J;2-~x4jH*=?(18B*pH&3UVL8qSy`1%TwPB)8AKO6Af zpemhpETHDdB2X#dtpFM{0$stA)?CRV#@`CsYLUg4(epis;lJU3(GYNz#?yMBw5;1% zp_`%GgRk2`sMGfi_}qgp43Hu!OW-&tzcKW>g67BG1pF6G07c!8<|90y`4Mi2s%8s@ zQiE>LU_uFNg9SsWN_VgfC~^6*WHAK%FP3=G2i|NA>R54F*8V7EY4(#~>~@m~?sStu zL^o{i9UMd8_%R5E)M}s!uTX*T?pmJaL$9=tclv%|J~Xq_^+sptgVsy+Y>;B7(LTVN zm90dv+f@QI1_wF{|2P9^(id8fz+)2JjE5i+9ILbYBCDgH}-ec(D|;Y3+zW_Xki5#+-?Pq1Rok z)Aa@aHh0mP{7VjT9DKmh=?XeMQZIc9dB=>FC1`eP>Z3D7oB z-zUPqW`g?vr@Gx_W-_{d5I$vnzDS6_{WPeJ<@&+e^$CAF=q90V-#3=N5BPgFgTzAx z>Nzb#Z}2xQ1@R7XA1smS_T>rAVrV`n_F|SZ$juy`ZVI5_0beoeCe!Wv!}?&2fc8OV zR}Sbg7p?-YeY$JEgdcYWXQ2P0PariosGTN*$R*+b5mh^XD`aTvOLv{je^@rLKF;3? zs>-_EB>2M*bo+74>T8`%0 z8=$f3+A9qFZJ>GOtO#h)a{`nDPnHC|xCJ^FhK>1ucj%YkEQU@V&=IxWd;$MU1-f~D zzK{X6bB_psT8*IoI%t8TD^K%r#_lklZa)st=wK~Jrz?;3p`xkf>efGt`d=${gA6-& zoCVYuV0bYbwdi@!U3h!$;I%4YuC|HX* zx{q~N^Kc*MZxI9CHOUML+bi7+-2oxp9s%74J3~LT{^xIsV*(GAedBKl0gb7<-T)1T zxnAk?{Q^1<#`i~O=$lU02i+&SnZY-nKk4RS?5+&yE)1}){ZP&e86;)vEdA11`=Q%e zW@h&d&?Msx@EC1969YpLr)BIH{`L}(*^U;i2TEA@w>z-#Z$B`T*-=9{P>1&*w`nlCX}Un~+VXSH_yQO4DM3Upqh?;FrK?GJ0;8~p8tAk#Rk5A(OHgA9wkki`%N zALalJzqGyvO$?TDbYJf6E%^^_%LcsA1D`DgIp&%fq|fyQ=n_1JZX5QrZg;*kYu6_J z)^<>)a2K(5?ci^%2D2rsU3>Uj^TBKxYu5?&h8J8F?T`gjJWfGN77%j8y~Pf#XkkS+5)sPyE}ABckGI8*CpMh3%Y&hScWT< zidgzn4MWEBe1`>{7-f;)eSsM&5?txkit`E9H?|?`3 z9ze&>gLy!sde{E`|8MQg!QXTiw6w_e3+TKc-yhm1q(eV6{`&v_e?5N_Xpv(%XY{aa4mx%K=X%T;aL&g zKcVFeWSG6wu(yD32k0i)<{dZ6gBTb~c_0pgREuDX`CBf7nrsH3nju2oH2-6~l2ikP8@&yFsp~ zbu)m-K`yFwbAa$XAe0M)@_|qRAgc9$sX(V4^j-l_;T0KsIQ+k;4Y&os(h2G>JnBC8 zVy7jjnGcE>w&M(-23@@I0npYpa3F!}W1a3$@RE?&4`JcWzrVZFp7}yYqpRsfogX^YiS{m_P)sgnS~T3ouyw|zm-CD zLfr|sI2c}81%vfvF@{0_Xg)5&{O>gzzdS>C=@;$eov}}vkG%tJHe)G@?sfYc zkQEUALduU7+}7o3Jz3(G20Q2L66&Mh1o&uIAc54E)XfpmM78O7lNy z{`QNY+-I{Dlyn*RTMmQDgW4M}4}r>ylO;R4L*Iao^6hs0(ObzF7!dfs^b2Urr~$O5 z@B^ru>-q!Kj!^(Dalc)X3$m(SzJ?8CO}TitFX$BcfbPpL62ME4Svp<+bcXW4gs;8u zga})P^3*HVuv)tQDV74QrMw54s5sFX%Jag43zXn~ygUG!9XQr~;)Oa?U_EG^LimC1 zd!UT_05sL<`=B$Fr_=Y(%PIf<|2O{M{7<@Es2Sof#!?PQlIjFqGuL{cgsIb@`}B+3 zpn35F@sRuG;Qd8#S_To|^eh5uU-E>5kL+Ro)ax#0eXLBe+f@YAKw7{EY8WDwPw-U6 zzs;Q+(U|+fzs;SiGxWzyM$n;=?wo?5KW28H;NRxX!N24bM`tL{%!3a(m``-O@(3TY z^!>u$YRt&MVCnjUzf}voDA1iBVHOYnHg~?x&_6R7U3t1)c?3iM@Go)w18Fq!bjO0E zd1o?%mKO>i;$L!uqto>d|2B7?nFk+pFyG+c<}NH4`e$bMDgGq~p?dhYxeGxJ6Gjyl z#4aq*UCJ|)`9rtspUzSq;Zv;#%Cm|%8h?Wd@A8D!ljSi*9N;w(_2og#pM_7fo-Fr* zi#TZ4eqgTU=srHv`cx4gfBWWt|NmQm;BQ|Ix<|b9N4KvCXrAXX2e=v9dZ5G+wB|BG zqSHeL8cX1iFVTV&2ge;)q#2OHmu{n6{r(dqi* z#Zz@q53ThQfBSt#28JRYh~xR&FM>`SKVZ>(3AFy8{V+(5+ZNyQK5LrG+0VCeKu%7JQ#Y1g-yfjhIR?5h!}SMG zukVi+yVO8I1(GQJ(0%L0YBdH1>kp-c*0)M?LDI9;7#Kj3p%JYd^^NZYToVU02&Ewt~tTMP|6No)lwqg ze3*y7#f+JO;W#tsN+RO}$02<_c=5;6>${@)6h~k{c=x#%Qr4h?5;PhG(fAiMQo#&r zIbvuG73e^#Qc1?;C%M8Mu1+(|Vvp^?#`f zXpHt=STJOG{y?cf_qi8Ne~{*YxE>3`)wN374zgADV05FqG(| zHP_x@;BN)B?OMN;%C`P5+0}jSI6G*pxwD+*#pmBh#$_o$o6^wm1F7x-sfK#{#ZeU1 zB9P+nxHGs{2tBn19-^QKXE^Q*N|6l5Vc`pkA#L75bsKOy7Yt=~%Wn(KIA z3xj?X8J4p(*KshEX@XX7)c%01FFSwmAqz9#ixALVMaLPNFEd!j@f5u*XSJ^5D0=kY ztlJh8-~X?7$0>lEf4fBVzw!U;phbDbJYYH)Ooo9;Xody31BPMl3D43%??Q^91q4(# zXfpmVw<}L6S9dK>C)-QV0=MqNpp}l0I08*?g1Tm?2@_uUArfYHEe~`})Q{HxMRw&Z zt+z`ox!w)LBoNucR-`3p!KMsPr45?ALwQQ zui$cY0I%07W$NY#&j79a=)U&i6lmZ8G`Y&(!3Zvizkr8Ux_y7}yI$xF{la{sJM;y3 zAmfE~C{NM4a#rhDj-ut=v0o7L$*l(}VJ#{KP|>mjRDiLA`iPLl7KjlC+YO)vR-o~# z2i>7>v=4y}wK>@7`=s0VgY>~p*B1*xQ>d*c%N2@Pn}7W;mjv~l%7sBI9ymZ3VnLRz zfkt}5vRJYhGv=wkT8VFCZIhaG&)0nUX2AhqR!jkVyQEavETeZs%}z-!hW5G^-0ND}UKQW2B%HE%~>jIl0^SM)MH? zNU`t85*7ds&Me0NhM;;vAPh$b0DUSMX%G!GB^&wzTJV4~EI7Y%bRPt*feePMpAPFS z0QH%|OZdMrFm<0R(d-T2=nVbynz^&|Pj`hy_qo>pC8Gb$|6l%J&h!6r`2WkG?KMYu zKvw|RF_f@=W8f%J>aMV9{a+%THsOCcPq#T(73gTpf34q2--3o2JUE&y!D?Ab#JUR{ zTECU>gO(YCS5bqPmcmZ;Ha>71wCaoDxFe{I&2ZciQd~Lmh%k#Vq;)z99EaR9-{~mP z=_u3bsL<)C(dnqu>1fdDXwvCu(dlT@>FChu=#tjy=yBZ9hk;>RW2a+4r(+0YQ)_7V zo5nYD7#KinCj@rrfmRc?-tG+jvQG}Q%-ZDx=;X3e&@P(J+C8lYN_d(pSQyILigGLs ziZZ%=ITnI?WT0p~S;EpS_}U>TthYA+KzDz6UYvTmoLDd!n1knz2L)+~wtO2?lEf4LU)~Zsc`q&4*ZCT=@6@{|?X` zR;TNg*4w2r{M)=3dyAO(w;$kNe}aD-Q}?wr<`bY(H_p9g>;7bXp!-x>r#sJXkPiNB zo{aqA2l%%ihA8bU{R1k8Hyn4}0qVg)^rdyW^YL%>0&1!wbtfKJynASP?`L;2AC=+%%1sVr|X94@Q%}tPhTO1!~TJ2M}>mU9l=Ri*4-{v3ynqhPOBm4;@#J|mf|KLLokkDb_PcuP6 zU=u*&AO0G`pE}ER__sv}@o#ew#WYC-qz%a=VVFtakVQ6*fBWH1e*@u9pktECP58HY ziGxGiNemK>{M)=FJ6%7(g4ao+`H)m+=!G=q6QDae__rVIbiGre#UFkEdK!T7Nl+Xe z=#D+oU3%cSy9;QHH?7m(qtoB#C1@%D6#o#zx?L~uZ)1Sl!rbZl05r}B_9NI)F8tfP zSRsyKfhbGsbob!j=Ecds%?T7@%qRG_Ik7`DY;%G{R<9FZr|X4If1fTdF8*y!yfeE$ zbl(C8@@I~N&p7zEIjBL#kc4mXFZm4Os~&vDF_ZZN|F(m|w`PLG4nE@mjWXR4zSSN2 zptC%nGd`p{_5=U+1I(^J__tqTzQDizG-%M};&FG#(6>8e=-VAU*xea=r1e0F9ym{G z6tP$e6vOfgXao^uRskumfR`?$wcdu5cKj_jnLs;ddR;GAmU8gB9P4y_((A|=@c$CH zN6=aNr}bMYY%ow6)WragiFX!&<{vuCEuh&KG?*C*TAbDbx~!qwfPed`z_9 zurhRqegGY!;roPt`yu9I-KBpz8Tq%L>ORJN?ieG3^~Yjf&}2FDF$M+D8i~){r6S$F zf5NgDUc6TY)zW`DT|fN43^AiK+ybT14CM?y8wU798h1v3v}v%>lx4_ zDrnTH`_N0!Mach4zwmEA6aX3l54{04Lx6w#DeHs$%~dEpb?{I!VvUw2Vw?dqPOb+Z zX8|Z!cmoKG0eEW+$jH2l3LZkAa$pr6SwJRA)_<;z$bel`?UHT>i)DQ)=4RZ`IKld~kd>)>(M zAE2=sl?OHlO4)aTjDIcDbx`Gl&4W^Q(A+=6Yu<*3KN^01D2)K`@&>KVbbY~mihuh7 z>l4K;-L8MYZej+lT^H$eebL3jsB*xjp;W8e^@XGLsj~Oou78*hb%(wI9RR?;{SbKk znt%Ht@aC02FJnNx71s~P9XLSs)9XS|W83vfrw2##Pv+9d;|?64#mL>@BnRm_^S9W7 z#vE%o7$^>2CAC^h4`` z(hTt0Y(x};6WXaj&@d$^q1|ad0!e7aYe2nU&>kz)B*x$31gcq}TTVc}C}u-=6;wS! zy$Z1hbSV-0ad&VBwA=SV8Yr0uf->$UP{s}A;CBJ-cIDrGFaXhO0-_54K#k? z#sUe#PIm`{v%x|0p!H-)E<9+;O+Z2O06l2BLmzbeJ^^LR2qjRqe1eiK9YEP~BP&X_ z+=$4QpaIgBM$oj&p_iaJXSC3I01vI1|4W~MeT*7f@R3J`)^8=+oo0Scw#kfIP8 zSgqemcp)j_I3yWBr4b$mWj;_=d;w1OARag?p6Lc<#V_CuF>m;rLAz`qSrOD*>hygB zo3HBj{Q=F7oDDx4_?tj$nHzrc^0$CSe;YuTY=TZC1?A0hP~JR)o;MXx^QIsqZ}PY9 z`1AiiG=F~Sc6|fQpZv`WK&Pj;egQj{+4Tq5m2aSVl)tqJEc*tOPhWStegWmv7Y?1S zpd!!G^-D1yIG?`hcKz}aw4%1#_e{6z4QSrvgyzlHe4xC<+5D4{zjXu1ICqPkr3DNO z-QhN!u78XVv|cKaOSAOiC>8qd#KOSLz)-^3dVs(4Gy?;JL$^@trP4>;u7A42ZFZI> zGca_zTXegF3JS13MSgh(ELuYuk+nA08~pEdcPM28?Vl@AZm!q(4`S;ul!$lx2XwoK zfM(BIO+cfL2l!icm_ZvIZHzCqo-EM;otK%`T*<)*+Poyd0L`ziS6UreN;q3D@po=u zWMFXW=4?G#dIOXTgg`@%Y@ln?F^UQP?Ot5n2f?{Y7gVAJ@pQVr03~U8&{3p6Soxd8 z{{R2qV8zJa3OZ7ef14Kz|28LPSbKm8#$aqd#0qA2hQ8?z{R7%}@T2t-XxPe$#rR~m zP{51ZpxI^cD1h}r{#NjmU+9Z&-#5*NerGXcF}?UL2O91KbwFAVfZ7r*3;uzQ*@Eql z1dWRShwqR41I{Ylu0LK@fu;%(o>&Z;N`!l2DromI$P+#Ppq^+3DJS0(Vkn+416hXR z2{Uw0h!N$94}bsv=ilzg)qSD+Q)lUw?otuZSS$Ff5#KNT+b@6$Jzqu!hSwZB*RXmr zbozdQER+WAxB!j9y)Fl(rcz!|QabMX2GmsoZJB!mY8ZkO7H@OC4#RQRA21p45~t?+ zfd3#pA)te(U^3tnsEiLBcfA6tO&aT6zeWpppT^;sMpY?46|o-Da;Xy7|D38Ge_8kg?%T z*DIi7x$MA+6Wp6+>HgmOzw{O8tn5-yeqib}>UO=-`mJ<9ckP~TUr?&RVR6W;DolY@PhlKizc>(3L8!|4aCh2Mj>> zvK@!4SHU)h2p*V#65#O(mu^=M(3I{cM+A&7z4)#Sy4=;l_)@3qgBPzr9N!0^eV;#>_*+5On}T+= zae#^=B~Xp+djrz6=5!Y51?_kG)9uQk3R(mV%6_v!yB-geT672N^m=P_Gj{qu>2!V5 zdZ}Ekh_(60|8n_mZ-ZWE1JEKm2Nuw>I?#@lQt%R}HfB)a9c>f6YOG?n51+2ReNBLAVm#hYr5r=x{vLd`n` zq9r<9Pxrc>>F_H6no1ZdOGPsUP_<{wP_EieE5|G)G9cLs(uMQ?%Edb=RZV1eeJ zOr;8-A;w@xo%x~yca2i_d(dO5JrkINObjrBMP+q1zR!!xwI&{yYx>7pBvcpW1Xdc zIykyP<@^V5Bp&PVV1#oex{q~uFm?NW=^^t!g+O=doeoFVZr2YW zYaQ8o9oaiw|A1Ck{sDQj+dH5fY*$GK2dK5u?HmHO&J|>tcL0Pd(CzvMWSetHw|4+2 z)pYtk0C%1qbT~3~JBM^QGJ{g3BTKh)$iWu^9geKMj%?lDAqQVdKuv}2S^fapItI=X zy`aSUq}%rmIA6W#cKu`R`liIb*LM&9_6ywyGeFI&z%=a(;MU%Yh2Z-`IG}sKJ1x3@ zbh|$2=IC|+^^dw;pMa`Aj_v>!aQ0+nV6X)(;wrTU57X*FVzpSU^-{SKI0Y0-e|O~o z^=L}?KtWK>Q^eL>9q_*xbdmuVc!mHJJXb*Ljk|e4gZiDWZ%U0?5A4uoU|=X^;ot7e z10SEgxDccOG7fzKq8fBDN9>Po*Eh&I_;BcO{Sn5$Jwl-IG3ZEj{%wareU{H23=jiF zL1uSDl!#!L^!?H8DADaH16ipZ(CPc;zvz-L9t_vj@JJNSSljoC>c zjrm|&w--m+!3V5q%uYOM2OqMfF?+G_Z~xHEbn!>p!H2Bi5ucj~yZ)En0gthRozi^7 zrTboY=^e;8IamnIq1_P*2)&@ObLcoaSS^ST9ZLuE55ATN3+|Q$c@nf6`APE;1JL+Q zH%F)MlX4?SRB7{XI~W!KmWB_?U+#8&a_|MzBoHU;;0uX>*K%RtTV(%V#zl9#K4?Co z0JGu&rWFs6t$2WJ#RHR85d z!0yL$WKll65|j~2xYN2Fxzd^su%t0x05{?vr*(!tIPUrc)ST-+-}=8qDXly7$#+Lc zw**7^voz2^it7_**9Y))i0&ZJVxrm`4E(L2>$pJ2G&wjRR&C?<1St8sAmSX=hagE0 zoRZxUJ_tEb;y_L;%|{$SLeN+SI~FayfHo>NSA;Nhdjxd)(j+!PQ5pNA+uNe`WQj0n z)pr=EL175r0^j<-L?CPzD2BSvzv$%xS6 zOBL5$dIx282exI>mj}H1ne#X!c#9=?4K%dp-|cz@$~uD#!0jg&+Sn88ZQG=i+JoUn&V%70U@({o7f=0&jvEUpmIl*!m3=E^eUy zoLImMZXHMnT%UKV;5IFcsqQjjztRtM|g`6@gL$~i2 z?eE}%KD<}N_{Cl}28QtN53tQY67Xq%m>(d= zJ_f3L`L`Vm_of;d85e)Vr!k+1OY7u@U#$R+GSJEC;mx2GSbVTes^IPEhr9V&PnIfl zyRifY27)$>f~LnrS})aS)v&Z4C{BSi>JGoy16pHzpc14RG;#_R25lS%ZyN_~KH~Uq z_Wwfnt>z=3&9=AeHEUQ}{}(HF^SxjI-6{;*F#G#|34FsW)Rg$+ZlHs_8H^9afszW? zy`c5}AUA`ZT;A=<16iGz+wIE%u8Yc(TMv|ij)Y-py;Kt3Y{$^;#?l?fk;MpV!@2SV z1O^3{^863|(|klE4!mCFzZsYZ+6QX__L^SvkAJ0H;GPxAE?)4)1c)B+a13}yFZTtA z2-s~P0vuo6x5B%Bw%#rkha7QX8h@NYh=GA2t}}qe_&{{*Vfb<$=w=0Jh&oC!1Kx|F`jUj;gdY}sCIAl9Q>;IBtSt5|~0kk0IK*?g%o{ah z&~XRwY9iwU#+RUJxVx06*^Ys~)dFz z0a60G=LmEJhC=fRh7#p&7ZnFzW_3fX)kW>2^`kuyzwD z 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�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

    R#F7YW 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⁣U+6vIUm_-VZ@h;@vDrl25 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

    RK+a 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 z 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 + +FXC directly produces the .h file — no post-processing needed. +""" + +import os +import subprocess +import sys +from glob import glob + + +DXBC_STAGES = ["vs", "hs", "ds", "gs", "ps", "cs"] + + +def find_fxc(): + """Find FXC via FXC_PATH env or Windows SDK search.""" + fxc = os.environ.get("FXC_PATH") + if fxc: + return fxc + + # Search Windows Kits. + program_files_x86 = os.environ.get("ProgramFiles(x86)", "") + candidates = glob(os.path.join( + program_files_x86, "Windows Kits", "10", "bin", "*", "x64", "fxc.exe")) + if candidates: + return candidates[-1] # Highest version is last + + return None + + +def parse_stage(filename): + """Extract the 2-char shader stage from filename like 'foo.cs.xesl'.""" + basename = os.path.splitext(filename)[0] # 'foo.cs' + identifier = basename.replace(".", "_") # 'foo_cs' + stage_key = identifier[-2:] + if stage_key not in DXBC_STAGES: + return None + return stage_key + + +def main(): + if len(sys.argv) != 3: + print(f"Usage: {sys.argv[0]} ", file=sys.stderr) + return 1 + + input_path = sys.argv[1] + output_path = sys.argv[2] + + src_name = os.path.basename(input_path) + src_dir = os.path.dirname(input_path) + + stage = parse_stage(src_name) + if stage is None: + print(f"ERROR: cannot determine shader stage from: {src_name}", file=sys.stderr) + return 1 + + identifier = os.path.splitext(src_name)[0].replace(".", "_") + + fxc = find_fxc() + if not fxc: + print("ERROR: could not find fxc! Set FXC_PATH environment variable " + "or install Windows SDK.", file=sys.stderr) + return 1 + + # Create output directory if needed. + os.makedirs(os.path.dirname(output_path), exist_ok=True) + + is_dxc = "dxc" in os.path.basename(fxc).lower() + + # Start with base command — use wine on non-Windows platforms. + if sys.platform != "win32": + compiler_args = ["wine", fxc] + else: + compiler_args = [fxc] + + if is_dxc: + # DXC only supports SM 6.0+. + compiler_args.extend([ + "-T", f"{stage}_6_0", + "-HV", "2017", + "-D", "SHADING_LANGUAGE_HLSL_XE=1", + "-I", src_dir, + "-Fh", output_path, + "-Vn", identifier, + "-nologo", + input_path, + ]) + else: + # FXC uses traditional syntax. + compiler_args.extend([ + "/D", "SHADING_LANGUAGE_HLSL_XE=1", + "/I", src_dir, + "/Fh", output_path, + "/T", f"{stage}_5_1", + "/Vn", identifier, + "/O3", + "/Qstrip_reflect", + "/Qstrip_debug", + "/Qstrip_priv", + "/Gfp", + "/nologo", + input_path, + ]) + + result = subprocess.run(compiler_args, stdout=subprocess.DEVNULL, + stderr=subprocess.PIPE) + if result.returncode != 0: + print(f"ERROR: failed to compile DXBC shader: {src_name}", file=sys.stderr) + if result.stderr: + sys.stderr.buffer.write(result.stderr) + return 1 + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/build/compile_shader_spirv.py b/tools/build/compile_shader_spirv.py new file mode 100644 index 000000000..2f7eb262c --- /dev/null +++ b/tools/build/compile_shader_spirv.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python3 + +"""Compiles a single shader to SPIR-V and generates a C header. + +Usage: compile_shader_spirv.py + +Pipeline: + 1. glslangValidator -> unoptimized .spv + 2. spirv-opt -> optimized .spv + 3. spirv-dis -> disassembly .txt + 4. Generate .h with disassembly comment + uint32_t array +""" + +import os +import struct +import subprocess +import sys + + +SPIRV_STAGES = { + "vs": "vert", "hs": "tesc", "ds": "tese", + "gs": "geom", "ps": "frag", "cs": "comp", +} + +XESL_WRAPPER = ( + "#version 460\n" + "#extension GL_EXT_control_flow_attributes : require\n" + "#extension GL_EXT_samplerless_texture_functions : require\n" + "#extension GL_GOOGLE_include_directive : require\n" + "#include \"%s\"\n" +) + + +def find_vulkan_tools(): + """Find Vulkan SDK tools via VULKAN_SDK env or PATH.""" + vulkan_sdk = os.environ.get("VULKAN_SDK") + if vulkan_sdk: + bin_dir = os.path.join(vulkan_sdk, "bin") + if os.path.isdir(bin_dir): + return ( + os.path.join(bin_dir, "glslangValidator"), + os.path.join(bin_dir, "spirv-opt"), + os.path.join(bin_dir, "spirv-dis"), + ) + + # Fall back to PATH + return ("glslangValidator", "spirv-opt", "spirv-dis") + + +def parse_stage(filename): + """Extract the 2-char shader stage from filename like 'foo.cs.xesl'.""" + basename = os.path.splitext(filename)[0] # 'foo.cs' + identifier = basename.replace(".", "_") # 'foo_cs' + stage_key = identifier[-2:] + if stage_key not in SPIRV_STAGES: + return None, None + return stage_key, SPIRV_STAGES[stage_key] + + +def main(): + if len(sys.argv) != 3: + print(f"Usage: {sys.argv[0]} ", file=sys.stderr) + return 1 + + input_path = sys.argv[1] + output_path = sys.argv[2] + + src_name = os.path.basename(input_path) + src_dir = os.path.dirname(input_path) + src_is_xesl = src_name.endswith(".xesl") + + stage_key, spirv_stage = parse_stage(src_name) + if spirv_stage is None: + print(f"ERROR: cannot determine shader stage from: {src_name}", file=sys.stderr) + return 1 + + # Compute identifier (matches what Lua does: basename with dots -> underscores) + identifier = os.path.splitext(src_name)[0].replace(".", "_") + + glslang, spirv_opt, spirv_dis = find_vulkan_tools() + + # Create output directory if needed. + os.makedirs(os.path.dirname(output_path), exist_ok=True) + + # Temp file paths next to output. + base = os.path.splitext(output_path)[0] + glslang_spv = base + ".glslang.spv" + opt_spv = base + ".spv" + dis_txt = base + ".txt" + + try: + # Step 1: glslangValidator + glslang_args = [ + glslang, + "--stdin" if src_is_xesl else input_path, + "-DSHADING_LANGUAGE_GLSL_XE=1", + "-S", spirv_stage, + "-o", glslang_spv, + "-V", + ] + if src_is_xesl: + glslang_args.append(f"-I{src_dir}") + + stdin_data = (XESL_WRAPPER % src_name) if src_is_xesl else None + result = subprocess.run(glslang_args, input=stdin_data, text=True, + stdout=subprocess.DEVNULL, stderr=subprocess.PIPE) + if result.returncode != 0: + print(f"ERROR: glslangValidator failed for {src_name}", file=sys.stderr) + if result.stderr: + sys.stderr.write(result.stderr) + return 1 + + # Step 2: spirv-opt + result = subprocess.run([ + spirv_opt, "-O", "-O", "--canonicalize-ids", + glslang_spv, "-o", opt_spv, + ], stdout=subprocess.DEVNULL, stderr=subprocess.PIPE) + if result.returncode != 0: + print(f"ERROR: spirv-opt failed for {src_name}", file=sys.stderr) + if result.stderr: + sys.stderr.write(result.stderr) + return 1 + + # Step 3: spirv-dis + result = subprocess.run([spirv_dis, "-o", dis_txt, opt_spv], + stdout=subprocess.DEVNULL, stderr=subprocess.PIPE) + if result.returncode != 0: + print(f"ERROR: spirv-dis failed for {src_name}", file=sys.stderr) + if result.stderr: + sys.stderr.write(result.stderr) + return 1 + + # Step 4: Generate header + with open(output_path, "w") as out: + out.write("// Generated with `xb buildshaders`.\n#if 0\n") + with open(dis_txt, "r") as dis_file: + dis_data = dis_file.read() + if dis_data: + out.write(dis_data) + if dis_data[-1] != "\n": + out.write("\n") + out.write("#endif\n\nconst uint32_t %s[] = {" % identifier) + with open(opt_spv, "rb") as spv_file: + index = 0 + while True: + word = spv_file.read(4) + if len(word) == 0: + break + if len(word) != 4: + print("ERROR: SPIR-V binary is misaligned", file=sys.stderr) + return 1 + if index % 6 == 0: + out.write("\n ") + else: + out.write(" ") + index += 1 + value = struct.unpack(" 0: - # Map internal version to year version: 17->2022, 18->2026, etc. - internal_version = int(vswhere[0].get("catalog", {}).get("productLineVersion", 17)) - version_map = {17: 2022, 18: 2026} - version = version_map.get(internal_version, 2022) - install_path = vswhere[0].get("installationPath", None) - - vsdevcmd_path = os.path.join(install_path, "Common7", "Tools", "VsDevCmd.bat") - if os.access(vsdevcmd_path, os.X_OK): - env_tool_args = [vsdevcmd_path, "-arch=amd64", "-host_arch=amd64", "&&", "set"] - else: - vcvars_path = os.path.join(install_path, "VC", "Auxiliary", "Build", "vcvarsall.bat") - env_tool_args = [vcvars_path, "x64", "&&", "set"] - - if not version: - return None - - import_subprocess_environment(env_tool_args) - os.environ["VSVERSION"] = f"{version}" - return version - - -def import_subprocess_environment(args): - popen = subprocess.Popen( - args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) - variables, _ = popen.communicate() - envvars_to_save = ( - "devenvdir", - "include", - "lib", - "libpath", - "path", - "pathext", - "systemroot", - "temp", - "tmp", - "vcinstalldir", - "windowssdkdir", - ) - for line in variables.splitlines(): - for envvar in envvars_to_save: - if f"{envvar}=" in line.lower(): - var, setting = line.split("=", 1) - if envvar == "path": - setting = f"{os.path.dirname(sys.executable)}{os.pathsep}{setting}" - os.environ[var.upper()] = setting - break - -if __name__ == "__main__": - main() diff --git a/tools/build/premake5.lua b/tools/build/premake5.lua deleted file mode 100644 index 87cd820f7..000000000 --- a/tools/build/premake5.lua +++ /dev/null @@ -1,10 +0,0 @@ -require("vstudio") - -include("scripts/apu_deps.lua") -include("scripts/build_paths.lua") -include("scripts/force_compile_as_c.lua") -include("scripts/force_compile_as_cc.lua") -include("scripts/pkg_config.lua") -include("scripts/platform_files.lua") -include("scripts/single_library.lua") -include("scripts/test_suite.lua") diff --git a/tools/build/scripts/apu_deps.lua b/tools/build/scripts/apu_deps.lua deleted file mode 100644 index 0396a7367..000000000 --- a/tools/build/scripts/apu_deps.lua +++ /dev/null @@ -1,11 +0,0 @@ --- Helper function to add APU transitive dependencies --- Call this after linking to xenia-apu to ensure all transitive dependencies are included --- On Linux, xenia-apu's AudioMediaPlayer directly instantiates SDLAudioDriver, --- so consumers must link xenia-apu-sdl (which in turn brings in xenia-helper-sdl and SDL2) -function apu_transitive_deps() - filter("platforms:Linux") - links({ - "xenia-apu-sdl", -- Contains SDLAudioDriver used by AudioMediaPlayer - }) - filter({}) -end diff --git a/tools/build/scripts/build_paths.lua b/tools/build/scripts/build_paths.lua deleted file mode 100644 index 5daa73a3f..000000000 --- a/tools/build/scripts/build_paths.lua +++ /dev/null @@ -1,16 +0,0 @@ -build_root = "build" -build_bin = build_root .. "/bin/%{cfg.platform}/%{cfg.buildcfg}" -build_gen = build_root .. "/gen/%{cfg.platform}/%{cfg.buildcfg}" -build_obj = build_root .. "/obj/%{cfg.platform}/%{cfg.buildcfg}" - -build_tools = "tools/build" -build_scripts = build_tools .. "/scripts" -build_tools_src = build_tools .. "/src" - -if os.istarget("android") then - platform_suffix = "android" -elseif os.istarget("windows") then - platform_suffix = "win" -else - platform_suffix = "posix" -end diff --git a/tools/build/scripts/force_compile_as_c.lua b/tools/build/scripts/force_compile_as_c.lua deleted file mode 100644 index 30de988e9..000000000 --- a/tools/build/scripts/force_compile_as_c.lua +++ /dev/null @@ -1,32 +0,0 @@ -if premake.override then - local forced_c_files = {} - - -- Forces all of the given .c and .cc files to be compiled as if they were C. - function force_compile_as_c(files) - for _, val in ipairs(files) do - for _, fname in ipairs(os.matchfiles(val)) do - table.insert(forced_c_files, path.getabsolute(fname)) - end - end - end - - -- for gmake - premake.override(path, "iscfile", function(base, fname) - if table.contains(forced_c_files, fname) then - return true - else - return base(fname) - end - end) - -- for msvc - premake.override(premake.vstudio.vc2010, "additionalCompileOptions", function(base, cfg, condition) - if cfg.abspath and table.contains(forced_c_files, cfg.abspath) then - if condition == nil or condition == '' then - _p(3,'CompileAsC') - else - _p(3,'CompileAsC', condition) - end - end - return base(cfg, condition) - end) -end diff --git a/tools/build/scripts/force_compile_as_cc.lua b/tools/build/scripts/force_compile_as_cc.lua deleted file mode 100644 index c7a15cef0..000000000 --- a/tools/build/scripts/force_compile_as_cc.lua +++ /dev/null @@ -1,32 +0,0 @@ -if premake.override then - local forced_cc_files = {} - - -- Forces all of the given .c files to be compiled as if they were C++. - function force_compile_as_cc(files) - for _, val in ipairs(files) do - for _, fname in ipairs(os.matchfiles(val)) do - table.insert(forced_cc_files, path.getabsolute(fname)) - end - end - end - - -- for gmake - premake.override(path, "iscfile", function(base, fname) - if table.contains(forced_cc_files, fname) then - return false - else - return base(fname) - end - end) - -- for msvc - premake.override(premake.vstudio.vc2010, "additionalCompileOptions", function(base, cfg, condition) - if cfg.abspath and table.contains(forced_cc_files, cfg.abspath) then - if condition == nil or condition == '' then - _p(3,'CompileAsCpp') - else - _p(3,'CompileAsCpp', condition) - end - end - return base(cfg, condition) - end) -end diff --git a/tools/build/scripts/pkg_config.lua b/tools/build/scripts/pkg_config.lua deleted file mode 100644 index bc83ae1c0..000000000 --- a/tools/build/scripts/pkg_config.lua +++ /dev/null @@ -1,45 +0,0 @@ --- Helper methods to use the system pkg-config utility - -pkg_config = {} - -local function pkg_config_call(lib, what) - local result, code = os.outputof("pkg-config --"..what.." "..lib) - if result then - return result - else - error("Failed to run 'pkg-config' for library '"..lib.."'. Are the development files installed?") - end -end - -function pkg_config.cflags(lib) - if not os.istarget("linux") then - return - end - buildoptions({ - pkg_config_call(lib, "cflags"), - }) -end - -function pkg_config.lflags(lib) - if not os.istarget("linux") then - return - end - linkoptions({ - pkg_config_call(lib, "libs-only-L"), - pkg_config_call(lib, "libs-only-other"), - }) - -- We can't just drop the stdout of the `--libs` command in - -- linkoptions because library order matters - local output = pkg_config_call(lib, "libs-only-l") - for k, flag in next, string.explode(output, " ") do - -- remove "-l" - if flag ~= "" then - links(string.sub(flag, 3)) - end - end -end - -function pkg_config.all(lib) - pkg_config.cflags(lib) - pkg_config.lflags(lib) -end diff --git a/tools/build/scripts/platform_files.lua b/tools/build/scripts/platform_files.lua deleted file mode 100644 index 1e243731e..000000000 --- a/tools/build/scripts/platform_files.lua +++ /dev/null @@ -1,71 +0,0 @@ -include("build_paths.lua") -include("util.lua") - -local function match_platform_files(base_path, base_match) - files({ - base_path.."/"..base_match..".h", - base_path.."/"..base_match..".c", - base_path.."/"..base_match..".cc", - base_path.."/"..base_match..".cpp", - base_path.."/"..base_match..".inc", - }) - removefiles({ - base_path.."/".."**_main.cc", - base_path.."/".."**_test.cc", - base_path.."/".."**_posix.h", - base_path.."/".."**_posix.cc", - base_path.."/".."**_linux.h", - base_path.."/".."**_linux.cc", - base_path.."/".."**_gnulinux.h", - base_path.."/".."**_gnulinux.cc", - base_path.."/".."**_x11.h", - base_path.."/".."**_x11.cc", - base_path.."/".."**_gtk.h", - base_path.."/".."**_gtk.cc", - base_path.."/".."**_android.h", - base_path.."/".."**_android.cc", - base_path.."/".."**_mac.h", - base_path.."/".."**_mac.cc", - base_path.."/".."**_win.h", - base_path.."/".."**_win.cc", - }) - filter("platforms:Windows") - files({ - base_path.."/"..base_match.."_win.h", - base_path.."/"..base_match.."_win.cc", - }) - filter("platforms:Linux or Android-*") - files({ - base_path.."/"..base_match.."_posix.h", - base_path.."/"..base_match.."_posix.cc", - base_path.."/"..base_match.."_linux.h", - base_path.."/"..base_match.."_linux.cc", - }) - filter("platforms:Linux") - files({ - base_path.."/"..base_match.."_gnulinux.h", - base_path.."/"..base_match.."_gnulinux.cc", - base_path.."/"..base_match.."_x11.h", - base_path.."/"..base_match.."_x11.cc", - base_path.."/"..base_match.."_gtk.h", - base_path.."/"..base_match.."_gtk.cc", - }) - filter("platforms:Android-*") - files({ - base_path.."/"..base_match.."_android.h", - base_path.."/"..base_match.."_android.cc", - }) - filter({}) -end - --- Adds all .h and .cc files in the current path that match the current platform --- suffix (_win, etc). -function local_platform_files(base_path) - match_platform_files(base_path or ".", "*") -end - --- Adds all .h and .cc files in the current path and all subpaths that match --- the current platform suffix (_win, etc). -function recursive_platform_files(base_path) - match_platform_files(base_path or ".", "**") -end diff --git a/tools/build/scripts/single_library.lua b/tools/build/scripts/single_library.lua deleted file mode 100644 index 2cbeee6f2..000000000 --- a/tools/build/scripts/single_library.lua +++ /dev/null @@ -1,19 +0,0 @@ -SINGLE_LIBRARY_PLATFORM_PATTERNS = { - "Android-*", -}; - -SINGLE_LIBRARY_FILTER = - "platforms:" .. table.concat(SINGLE_LIBRARY_PLATFORM_PATTERNS, " or "); -NOT_SINGLE_LIBRARY_FILTER = table.translate( - SINGLE_LIBRARY_PLATFORM_PATTERNS, - function(pattern) - return "platforms:not " .. pattern; - end); - -function single_library_windowed_app_kind() - filter(SINGLE_LIBRARY_FILTER); - kind("StaticLib"); - filter(NOT_SINGLE_LIBRARY_FILTER); - kind("WindowedApp"); - filter({}); -end diff --git a/tools/build/scripts/test_suite.lua b/tools/build/scripts/test_suite.lua deleted file mode 100644 index 2ef600995..000000000 --- a/tools/build/scripts/test_suite.lua +++ /dev/null @@ -1,99 +0,0 @@ -include("build_paths.lua") -include("util.lua") - -newoption({ - trigger = "test-suite-mode", - description = "Whether to merge all tests in a test_suite into a single project", - value = "MODE", - allowed = { - { "individual", "One binary per test." }, - { "combined", "One binary per test suite (default)." }, - }, -}) - -local function combined_test_suite(test_suite_name, project_root, base_path, config) - group("tests") - project(test_suite_name) - kind("ConsoleApp") - language("C++") - includedirs(merge_arrays(config["includedirs"], { - project_root.."/"..build_tools, - project_root.."/"..build_tools_src, - project_root.."/"..build_tools.."/third_party/catch/include", - })) - libdirs(merge_arrays(config["libdirs"], { - project_root.."/"..build_bin, - })) - links(config["links"]) - if config.filtered_links ~= nil then - for _, filtered_links in ipairs(config.filtered_links) do - filter(filtered_links.filter) - links(filtered_links.links) - end - filter({}) - end - defines({ - "XE_TEST_SUITE_NAME=\""..test_suite_name.."\"", - }) - files({ - project_root.."/"..build_tools_src.."/test_suite_main.cc", - project_root.."/src/xenia/base/console_app_main_"..platform_suffix..".cc", - base_path.."/**_test.cc", - }) - filter("toolset:msc") - -- Edit and Continue in MSVC can cause the __LINE__ macro to produce - -- invalid values, which breaks the usability of Catch2 output on - -- failed tests. - editAndContinue("Off") -end - -local function split_test_suite(test_suite_name, project_root, base_path, config) - local test_paths = os.matchfiles(base_path.."/**_test.cc") - for _, file_path in pairs(test_paths) do - local test_name = file_path:match("(.*).cc") - group("tests/"..test_suite_name) - project(test_suite_name.."-"..test_name) - kind("ConsoleApp") - language("C++") - includedirs(merge_arrays(config["includedirs"], { - project_root.."/"..build_tools, - project_root.."/"..build_tools_src, - project_root.."/"..build_tools.."/third_party/catch/include", - })) - libdirs(merge_arrays(config["libdirs"], { - project_root.."/"..build_bin, - })) - links(config["links"]) - if config.filtered_links ~= nil then - for _, filtered_links in ipairs(config.filtered_links) do - filter(filtered_links.filter) - links(filtered_links.links) - end - filter({}) - end - files({ - project_root.."/"..build_tools_src.."/test_suite_main.cc", - file_path, - }) - filter("toolset:msc") - -- Edit and Continue in MSVC can cause the __LINE__ macro to produce - -- invalid values, which breaks the usability of Catch2 output on - -- failed tests. - editAndContinue("Off") - end -end - --- Defines a test suite binary. --- Can either be a single binary with all tests or one binary per test based on --- the --test-suite-mode= option. -function test_suite( - test_suite_name, -- Project or group name for the entire suite. - project_root, -- Project root path (with build_tools/ under it). - base_path, -- Base source path to search for _test.cc files. - config) -- Include/lib directories and links for binaries. - if _OPTIONS["test-suite-mode"] == "individual" then - split_test_suite(test_suite_name, project_root, base_path, config) - else - combined_test_suite(test_suite_name, project_root, base_path, config) - end -end diff --git a/tools/build/scripts/util.lua b/tools/build/scripts/util.lua deleted file mode 100644 index c220d46de..000000000 --- a/tools/build/scripts/util.lua +++ /dev/null @@ -1,50 +0,0 @@ --- Prints a table and all of its contents. -function print_r(t) - local print_r_cache={} - local function sub_print_r(t, indent) - if (print_r_cache[tostring(t)]) then - print(indent.."*"..tostring(t)) - else - print_r_cache[tostring(t)]=true - if (type(t)=="table") then - for pos,val in pairs(t) do - if (type(val)=="table") then - print(indent.."["..pos.."] => "..tostring(t).." {") - sub_print_r(val,indent..string.rep(" ",string.len(pos)+8)) - print(indent..string.rep(" ",string.len(pos)+6).."}") - elseif (type(val)=="string") then - print(indent.."["..pos..'] => "'..val..'"') - else - print(indent.."["..pos.."] => "..tostring(val)) - end - end - else - print(indent..tostring(t)) - end - end - end - if (type(t)=="table") then - print(tostring(t).." {") - sub_print_r(t," ") - print("}") - else - sub_print_r(t," ") - end - print() -end - --- Merges two tables and returns the resulting table. -function merge_tables(t1, t2) - local result = {} - for k,v in pairs(t1 or {}) do result[k] = v end - for k,v in pairs(t2 or {}) do result[k] = v end - return result -end - --- Merges to arrays and returns the resulting array. -function merge_arrays(t1, t2) - local result = {} - for k,v in pairs(t1 or {}) do result[#result + 1] = v end - for k,v in pairs(t2 or {}) do result[#result + 1] = v end - return result -end diff --git a/xenia-build.py b/xenia-build.py index a52ddd48c..fbf296566 100755 --- a/xenia-build.py +++ b/xenia-build.py @@ -6,7 +6,6 @@ Run with --help or no arguments for possible commands. """ -from datetime import datetime from multiprocessing import Pool from functools import partial from argparse import ArgumentParser @@ -298,138 +297,6 @@ def setup_qt(): return False -def get_dir_newest_mtime(directory): - """Get the newest modification time in a directory tree (files and dirs). - - Checks both files and directories to catch deletions/additions. - """ - newest = 0 - try: - for root, dirs, files in os.walk(directory): - # Skip bytecode subdirectories when scanning source - dirs[:] = [d for d in dirs if d != "bytecode"] - # Check directory mtime (changes when files added/removed) - mtime = os.path.getmtime(root) - if mtime > newest: - newest = mtime - for name in files: - mtime = os.path.getmtime(os.path.join(root, name)) - if mtime > newest: - newest = mtime - except OSError: - pass - return newest - - -def get_dir_oldest_mtime(directory): - """Get the oldest modification time in a directory tree (files and dirs). - - Checks both files and directories to catch deletions/additions. - """ - oldest = float('inf') - try: - for root, dirs, files in os.walk(directory): - # Check directory mtime - mtime = os.path.getmtime(root) - if mtime < oldest: - oldest = mtime - for name in files: - mtime = os.path.getmtime(os.path.join(root, name)) - if mtime < oldest: - oldest = mtime - except OSError: - pass - return oldest - - -def generate_moc_files(): - """Generates Qt MOC files for all headers containing Q_OBJECT. - - Returns: - True if MOC generation succeeded or was skipped, False on error. - """ - qt_dir = os.environ.get("QT_DIR") - if not qt_dir: - return True # Qt not available, skip MOC generation - - # Find moc executable - if sys.platform == "win32": - moc_path = os.path.join(qt_dir, "bin", "moc.exe") - else: - moc_path = os.path.join(qt_dir, "libexec", "moc") - if not os.path.exists(moc_path): - moc_path = os.path.join(qt_dir, "bin", "moc") - - if not os.path.exists(moc_path): - print_warning(f"moc not found at {moc_path}") - return False - - # Find all Qt headers with Q_OBJECT - ui_dir = os.path.join("src", "xenia", "ui") - qt_headers = [] - for filename in os.listdir(ui_dir): - if filename.endswith("_qt.h"): - header_path = os.path.join(ui_dir, filename) - with open(header_path, "r", encoding="utf-8", errors="ignore") as f: - content = f.read() - if "Q_OBJECT" in content: - qt_headers.append(header_path) - - if not qt_headers: - return True - - # Remove orphaned moc files (source was deleted) - expected_moc_files = set() - for header_path in qt_headers: - header_name = os.path.basename(header_path) - moc_name = "moc_" + header_name[:-2] + ".cc" - expected_moc_files.add(moc_name) - - for filename in os.listdir(ui_dir): - if filename.startswith("moc_") and filename.endswith(".cc"): - if filename not in expected_moc_files: - orphan_path = os.path.join(ui_dir, filename) - print(f"- removing orphaned {filename}...") - os.remove(orphan_path) - - # Generate MOC files (only if source is newer) - any_errors = False - generated_count = 0 - for header_path in qt_headers: - header_name = os.path.basename(header_path) - moc_name = "moc_" + header_name[:-2] + ".cc" # Replace .h with .cc - moc_path_out = os.path.join(os.path.dirname(header_path), moc_name) - - # Skip if moc file exists and is newer than source - if os.path.exists(moc_path_out): - if os.path.getmtime(moc_path_out) >= os.path.getmtime(header_path): - continue - - # Build include paths for MOC - include_args = [ - f"-I{os.path.join(qt_dir, 'include')}", - f"-I{os.path.join(qt_dir, 'include', 'QtCore')}", - f"-I{os.path.join(qt_dir, 'include', 'QtGui')}", - f"-I{os.path.join(qt_dir, 'include', 'QtWidgets')}", - "-Isrc", - ] - - cmd = [moc_path] + include_args + ["-o", moc_path_out, header_path] - - result = subprocess.call(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.PIPE) - if result != 0: - print_error(f"Failed to generate {moc_name}") - any_errors = True - else: - print(f"- generated {moc_name}") - generated_count += 1 - - if generated_count == 0 and not any_errors: - print("MOC files are up-to-date, skipping generation.") - - return not any_errors - - def main(): # Add self to the root search path. sys.path.insert(0, self_path) @@ -578,10 +445,15 @@ def shell_call(command, throw_on_error=True, stdout_path=None, stderr_path=None, return result -def generate_version_h(): - """Generates a build/version.h file that contains current git info. +def generate_version_h(build_dir="build"): + """Writes /version.h with the current branch/commit/PR info. + The file is included by source files via `#include "version.h"`; the + relevant build directory is added to the project include path by the + root CMakeLists.txt, so different build trees (build/, build-vs/, ...) + each get their own copy. """ - header_file = "build/version.h" + os.makedirs(build_dir, exist_ok=True) + header_file = os.path.join(build_dir, "version.h") pr_number = None if git_is_repository(): @@ -595,7 +467,7 @@ def generate_version_h(): commit_short = ":(" # header - contents_new = f"""// Autogenerated by `xb premake`. + contents_new = f"""// Autogenerated by xenia-build.py. #ifndef GENERATED_VERSION_H_ #define GENERATED_VERSION_H_ #define XE_BUILD_BRANCH "{branch_name}" @@ -624,49 +496,6 @@ def generate_version_h(): f.write(contents_new) -def generate_source_class(path): - header_path = f"{path}.h" - source_path = f"{path}.cc" - - if os.path.isfile(header_path) or os.path.isfile(source_path): - print_error("Target file already exists") - return 1 - - if generate_source_file(header_path) > 0: - return 1 - if generate_source_file(source_path) > 0: - # remove header if source file generation failed - os.remove(os.path.join(source_root, header_path)) - return 1 - - return 0 - -def generate_source_file(path): - """Generates a source file at the specified path containing copyright notice - """ - copyright = f"""/** - ****************************************************************************** - * Xenia : Xbox 360 Emulator Research Project * - ****************************************************************************** - * Copyright {datetime.now().year} Ben Vanik. All rights reserved. * - * Released under the BSD license - see LICENSE in the root for more details. * - ****************************************************************************** - */""" - - if os.path.isfile(path): - print_error("Target file already exists") - return 1 - try: - with open(path, "w") as f: - f.write(copyright) - except Exception as e: - print_error(f"Could not write to file [path {path}]") - return 1 - - return 0 - - - def git_get_head_info(): """Queries the current branch and commit checksum from git. @@ -853,88 +682,43 @@ def get_clang_format_binary(): sys.exit(1) -def get_premake_target_os(target_os_override=None): - """Gets the target --os to pass to premake, either for the current platform - or for the user-specified cross-compilation target. +def run_cmake_configure(cc=None, generator=None, build_tests=False, + disable_lto=False): + """Runs `cmake` to (re)configure build/ from the source root. - Args: - target_os_override: override specified by the user for cross-compilation, - or None to target the host platform. - - Returns: - Target --os to pass to premake. If a return value of this function valid - for the current configuration is passed to it again, the same value will - be returned. - """ - if sys.platform == "darwin": - target_os = "macosx" - elif sys.platform == "win32": - target_os = "windows" - elif host_linux_platform_is_android: - target_os = "android" - else: - target_os = "linux" - if target_os_override and target_os_override != target_os: - if target_os_override == "android": - target_os = target_os_override - else: - print_error( - "cross-compilation is only supported for Android target") - sys.exit(1) - return target_os - - -def run_premake(target_os, action, cc=None): - """Runs premake on the main project with the given format. - - Args: - target_os: target --os to pass to premake. - action: action to perform. + Uses Ninja Multi-Config by default on all platforms. On Linux the + C/C++ compilers come from get_cc() / the CC env var; on Windows the + detected Visual Studio toolchain wins. build_tests toggles + -DXENIA_BUILD_TESTS=ON; disable_lto toggles -DXENIA_ENABLE_LTO=OFF + (faster Release link, at the cost of LTO's whole-program opts). """ + if not generator: + generator = "Ninja Multi-Config" args = [ - sys.executable, - os.path.join("tools", "build", "premake.py"), - "--file=premake5.lua", - f"--os={target_os}", - "--test-suite-mode=combined", - "--verbose", - action, + "cmake", + "-S", ".", + "-B", "build", + "-G", generator, ] - if not cc: - cc = get_cc(cc=cc) - - if cc: - args.insert(4, f"--cc={cc}") - + if sys.platform != "win32": + if not cc: + cc = get_cc(cc=cc) + c_compiler = cc or os.environ.get("CC", "clang") + cxx_compiler = (cc + "++") if cc else os.environ.get("CXX", "clang++") + args += [ + f"-DCMAKE_C_COMPILER={c_compiler}", + f"-DCMAKE_CXX_COMPILER={cxx_compiler}", + ] + if build_tests: + args += ["-DXENIA_BUILD_TESTS=ON"] + if disable_lto: + args += ["-DXENIA_ENABLE_LTO=OFF"] ret = subprocess.call(args) - if ret == 0: generate_version_h() - return ret -def run_platform_premake(target_os_override=None, cc=None, devenv=None): - """Runs all gyp configurations. - """ - target_os = get_premake_target_os(target_os_override) - if not devenv: - if target_os == "macosx": - devenv = "xcode4" - elif target_os == "windows": - vs_version = os.getenv("VSVERSION", VSVERSION_MINIMUM) - if vs_version == "2026": # Still no vs2026 target, force 2022 - vs_version = "2022" - devenv = f"vs{vs_version}" - elif target_os == "android": - devenv = "androidndk" - else: - devenv = "cmake" - if not cc: - cc = get_cc(cc=cc) - return run_premake(target_os=target_os, action=devenv, cc=cc) - - def get_build_bin_path(args): """Returns the path of the bin/ path with build results based on the configuration specified in the parsed arguments. @@ -954,64 +738,6 @@ def get_build_bin_path(args): return os.path.join(self_path, "build", "bin", platform.capitalize(), args["config"].capitalize()) -def run_windeployqt(bin_path, config): - """Runs windeployqt to copy Qt DLLs to the build output directory. - - Args: - bin_path: Path to the directory containing the built executable. - config: Build configuration (debug, checked, or release). - - Returns: - True if windeployqt succeeded or was not needed, False on error. - """ - if sys.platform != "win32": - return True - - qt_dir = os.environ.get("QT_DIR") - if not qt_dir: - # Qt not configured, skip - return True - - windeployqt_path = os.path.join(qt_dir, "bin", "windeployqt.exe") - if not os.path.exists(windeployqt_path): - print_warning(f"windeployqt not found at {windeployqt_path}") - return True - - # Find the xenia executable - exe_path = os.path.join(bin_path, "xenia_edge.exe") - if not os.path.exists(exe_path): - # Executable not found, might not be building xenia-app - return True - - print(f"\n- deploying Qt dependencies to {bin_path}...") - - # Determine if we need debug or release Qt DLLs - # Debug and Checked builds need debug Qt DLLs - deploy_args = [ - windeployqt_path, - "--no-translations", # Don't copy translation files - "--no-system-d3d-compiler", # Don't copy D3D compiler - "--no-opengl-sw", # Don't copy software OpenGL renderer - "--no-compiler-runtime", # Don't copy vc_redist.x64.exe (25MB) - ] - - if config.lower() in ["debug", "checked", "valgrind"]: - deploy_args.append("--debug") - else: - deploy_args.append("--release") - - deploy_args.append(exe_path) - - result = subprocess.call(deploy_args) - - if result == 0: - print(" Qt dependencies deployed successfully") - return True - else: - print_warning(f"windeployqt failed with exit code {result}") - return False - - def create_clion_workspace(): """Creates some basic workspace information inside the .idea directory for first start. """ @@ -1062,22 +788,14 @@ def discover_commands(subparsers): commands = { "setup": SetupCommand(subparsers), "fetchdata": FetchDataCommand(subparsers), - "pull": PullCommand(subparsers), - "premake": PremakeCommand(subparsers), "build": BuildCommand(subparsers), - "buildshaders": BuildShadersCommand(subparsers), "devenv": DevenvCommand(subparsers), "gentests": GenTestsCommand(subparsers), "test": TestCommand(subparsers), - "gputest": GpuTestCommand(subparsers), "clean": CleanCommand(subparsers), - "nuke": NukeCommand(subparsers), - "cleangenerated": CleanGeneratedCommand(subparsers), "lint": LintCommand(subparsers), "format": FormatCommand(subparsers), - "style": StyleCommand(subparsers), "tidy": TidyCommand(subparsers), - "stub": StubCommand(subparsers), } return commands @@ -1129,14 +847,10 @@ class SetupCommand(Command): name="setup", help_short="Setup the build environment.", *args, **kwargs) - self.parser.add_argument( - "--target_os", default=None, - help="Target OS passed to premake, for cross-compilation") def execute(self, args, pass_args, cwd): print("Setting up the build environment...\n") - # Setup submodules. print("- git submodule init / update...") if git_is_repository(): git_submodule_update() @@ -1144,8 +858,8 @@ class SetupCommand(Command): else: print_warning("Git not available or not a repository. Dependencies may be missing.") - print("\n- running premake...") - ret = run_platform_premake(target_os_override=args["target_os"]) + print("\n- running cmake configure...") + ret = run_cmake_configure() print_status(ResultStatus.SUCCESS if not ret else ResultStatus.FAILURE) return ret @@ -1174,86 +888,6 @@ class FetchDataCommand(Command): return 0 -class PullCommand(Command): - """'pull' command. - """ - - def __init__(self, subparsers, *args, **kwargs): - super(PullCommand, self).__init__( - subparsers, - name="pull", - help_short="Pulls the repo and all dependencies and rebases changes.", - *args, **kwargs) - self.parser.add_argument( - "--merge", action="store_true", - help=f"Merges on {default_branch} instead of rebasing.") - self.parser.add_argument( - "--target_os", default=None, - help="Target OS passed to premake, for cross-compilation") - - def execute(self, args, pass_args, cwd): - print("Pulling...\n") - - print(f"- switching to {default_branch}...") - shell_call([ - "git", - "checkout", - default_branch, - ]) - print("") - - print("- pulling self...") - if args["merge"]: - shell_call([ - "git", - "pull", - ]) - else: - shell_call([ - "git", - "pull", - "--rebase", - ]) - - print("\n- pulling dependencies...") - git_submodule_update() - print("") - - print("- running premake...") - if run_platform_premake(target_os_override=args["target_os"]) == 0: - print_status(ResultStatus.SUCCESS) - - return 0 - - -class PremakeCommand(Command): - """'premake' command. - """ - - def __init__(self, subparsers, *args, **kwargs): - super(PremakeCommand, self).__init__( - subparsers, - name="premake", - help_short="Runs premake to update all projects.", - *args, **kwargs) - self.parser.add_argument( - "--cc", choices=["clang", "gcc", "msc"], default=None, help="Compiler toolchain passed to premake") - self.parser.add_argument( - "--devenv", default=None, help="Development environment") - self.parser.add_argument( - "--target_os", default=None, - help="Target OS passed to premake, for cross-compilation") - - def execute(self, args, pass_args, cwd): - # Update premake. If no binary found, it will be built from source. - print("Running premake...\n") - ret = run_platform_premake(target_os_override=args["target_os"], - cc=args["cc"], devenv=args["devenv"]) - print_status(ResultStatus.SUCCESS if not ret else ResultStatus.FAILURE) - - return ret - - class BaseBuildCommand(Command): """Base command for things that require building. """ @@ -1263,7 +897,8 @@ class BaseBuildCommand(Command): subparsers, *args, **kwargs) self.parser.add_argument( - "--cc", choices=["clang", "gcc", "msc"], default=None, help="Compiler toolchain passed to premake") + "--cc", choices=["clang", "gcc", "msc"], default=None, + help="Compiler toolchain.") self.parser.add_argument( "--config", choices=["checked", "debug", "release", "valgrind"], default="debug", type=str.lower, help="Chooses the build configuration.") @@ -1274,11 +909,20 @@ class BaseBuildCommand(Command): "--force", action="store_true", help="Forces a full rebuild.") self.parser.add_argument( - "--no_premake", action="store_true", - help="Skips running premake before building.") + "--no_configure", action="store_true", + help="Skips the cmake configure step before building.") + self.parser.add_argument( + "--build-tests", dest="build_tests", action="store_true", + default=False, + help="Enables building test suites (sets -DXENIA_BUILD_TESTS=ON).") + self.parser.add_argument( + "--disable-lto", dest="disable_lto", action="store_true", + default=False, + help="Disables link-time optimization for Release builds " + "(sets -DXENIA_ENABLE_LTO=OFF). Much faster Release link " + "at the cost of whole-program opts.") def execute(self, args, pass_args, cwd): - # Check Vulkan SDK availability if not os.environ.get("VULKAN_SDK"): print_error("Vulkan SDK not found!" "\nPlease install Vulkan SDK from:" @@ -1286,89 +930,31 @@ class BaseBuildCommand(Command): f"\nSee: https://github.com/has207/xenia-edge/blob/{default_branch}/docs/building.md") return 1 - if not args["no_premake"]: - print("- running premake...") - run_platform_premake(cc=args["cc"]) + if not args["no_configure"]: + print("- running cmake configure...") + run_cmake_configure( + cc=args["cc"], + build_tests=args["build_tests"], + disable_lto=args["disable_lto"], + ) print("") print("- building (%s):%s..." % ( "all" if not len(args["target"]) else ", ".join(args["target"]), args["config"])) - if sys.platform == "win32": - if not vs_version: - print_error("Visual Studio is not installed.") - result = 1 - else: - targets = None - if args["target"]: - # Build each project file directly to avoid MSBuild trying to - # run the target on every project in the solution - result = 0 - # Convert config name to match project configuration names - # e.g., "debug" -> "Debug Windows" - config_name = f"{args['config'].capitalize()} Windows" - for target in args["target"]: - project_file = f"build/{target}.vcxproj" - if not os.path.exists(project_file): - print_error(f"Project file {project_file} does not exist") - result = 1 - break - - target_arg = "/t:Rebuild" if args["force"] else "/t:Build" - result = subprocess.call([ - "msbuild", - project_file, - "/nologo", - "/m", - "/v:m", - target_arg, - f"/p:Configuration={config_name}", - "/p:Platform=x64", - ] + pass_args) - if result != 0: - break - else: - # Build entire solution - targets = "/t:Rebuild" if args["force"] else None - result = subprocess.call([ - "msbuild", - "build/xenia.sln", - "/nologo", - "/m", - "/v:m", - f"/p:Configuration={args['config']}", - ] + ([targets] if targets else []) + pass_args) - elif sys.platform == "darwin": - schemes = args["target"] or ["xenia-app"] - nested_args = [["-scheme", scheme] for scheme in schemes] - scheme_args = [arg for pair in nested_args for arg in pair] - result = subprocess.call([ - "xcodebuild", - "-workspace", - "build/xenia.xcworkspace", - "-configuration", - args["config"] - ] + scheme_args + pass_args, env=dict(os.environ)) - else: - result = subprocess.call([ - "cmake", - "-Sbuild", - f"-Bbuild/build_{args['config']}", - f"-DCMAKE_BUILD_TYPE={args['config'].title()}", - f"-DCMAKE_C_COMPILER={os.environ.get('CC', 'clang')}", - f"-DCMAKE_CXX_COMPILER={os.environ.get('CXX', 'clang++')}", - "-GNinja" - ] + pass_args, env=dict(os.environ)) - print("") - if result != 0: - print_error("cmake failed with one or more errors.") - return result - result = subprocess.call([ - "ninja", - f"-Cbuild/build_{args['config']}", - ] + pass_args, env=dict(os.environ)) - if result != 0: - print_error("ninja failed with one or more errors.") + config = args["config"].title() + cmake_args = [ + "cmake", "--build", "build", + "--config", config, + ] + if args["force"]: + cmake_args.append("--clean-first") + if args["target"]: + cmake_args.append("--target") + cmake_args.extend(args["target"]) + result = subprocess.call(cmake_args + pass_args, env=dict(os.environ)) + if result != 0: + print_error("cmake build failed with one or more errors.") return result @@ -1385,320 +971,11 @@ class BuildCommand(BaseBuildCommand): def execute(self, args, pass_args, cwd): print(f"Building {args['config']}...\n") - - # Generate MOC files before building - if not generate_moc_files(): - print_error("MOC generation failed") - return 1 - - # Generate shader bytecode before building - shader_result = build_shaders() - if shader_result != 0: - print_error("Shader generation failed") - return shader_result - result = super(BuildCommand, self).execute(args, pass_args, cwd) - - if not result: - # Run windeployqt to copy Qt DLLs - bin_path = get_build_bin_path(args) - run_windeployqt(bin_path, args["config"]) - print_status(ResultStatus.SUCCESS if not result else ResultStatus.FAILURE) - return result -class BuildShadersCommand(Command): - """'buildshaders' command. - """ - - def __init__(self, subparsers, *args, **kwargs): - super(BuildShadersCommand, self).__init__( - subparsers, - name="buildshaders", - help_short="Generates shader binaries for inclusion in C++ files.", - help_long=""" - Generates the shader binaries under src/*/shaders/bytecode/. - Run after modifying any .hs/vs/ds/gs/ps/cs.glsl/hlsl/xesl files. - Direct3D shaders can be built only on a Windows host. - """, - *args, **kwargs) - self.parser.add_argument( - "--target", action="append", choices=["dxbc", "spirv"], default=[], - help="Builds only the given target(s).") - - def execute(self, args, pass_args, cwd): - return build_shaders(args["target"]) - - -def build_shaders(targets=None): - """Builds shader bytecode. Called by BuildShadersCommand and BuildCommand. - - Args: - targets: List of targets ("dxbc", "spirv"), or None/empty for all. - - Returns: - 0 on success, non-zero on error. - """ - # Check if shaders need rebuilding by comparing source vs generated timestamps - gpu_shaders = "src/xenia/gpu/shaders" - ui_shaders = "src/xenia/ui/shaders" - # DXBC directories only on Windows, SPIR-V everywhere - bytecode_dirs = [ - "src/xenia/gpu/shaders/bytecode/vulkan_spirv", - "src/xenia/ui/shaders/bytecode/vulkan_spirv", - ] - if sys.platform == "win32": - bytecode_dirs.extend([ - "src/xenia/gpu/shaders/bytecode/d3d12_5_1", - "src/xenia/ui/shaders/bytecode/d3d12_5_1", - ]) - - newest_source = max(get_dir_newest_mtime(gpu_shaders), - get_dir_newest_mtime(ui_shaders)) - oldest_generated = min((get_dir_oldest_mtime(d) for d in bytecode_dirs), - default=0) - - # If oldest_generated is inf, bytecode doesn't exist - need to generate - if oldest_generated != float('inf') and newest_source <= oldest_generated: - print("Shaders are up-to-date, skipping generation.") - return 0 - - # Clean old bytecode before regenerating to remove stale files from deleted sources - clean_shader_bytecode() - - src_paths = [os.path.join(root, name) - for root, dirs, files in os.walk("src") - for name in files - if (name.endswith(".glsl") or - name.endswith(".hlsl") or - name.endswith(".xesl"))] - if targets is None: - targets = [] - all_targets = len(targets) == 0 - - # XeSL ("Xenia Shading Language") means shader files that can be - # compiled as multiple languages from a single file. Whenever possible, - # this is achieved without the involvement of the build script, using - # just conditionals, macros and functions in shaders, however, in some - # cases, that's necessary (such as to prepend `#version` in GLSL, as - # well as to enable `#include` in GLSL, to include `xesl.xesli` itself, - # without writing the same `#if` / `#extension` / `#endif` in every - # shader). Also, not all shading languages provide a built-in - # preprocessor definition for identification of them, so - # `SHADING_LANGUAGE_*_XE` is also defined via the build arguments. - # `SHADING_LANGUAGE_*_XE` is set regardless of whether the file is XeSL - # or a raw source file in a specific language, as XeSL headers may be - # used in language-specific sources. - - # Direct3D DXBC (Windows only). - if (all_targets or "dxbc" in targets) and sys.platform == "win32": - print("Building Direct3D 12 Shader Model 5.1 DXBC shaders...") - - # Get the FXC path. - fxc = os.environ.get("FXC_PATH") - if not fxc: - # Fall back to searching Windows Kits - fxc = glob(os.path.join(os.environ.get("ProgramFiles(x86)", ""), - "Windows Kits", "10", "bin", "*", "x64", "fxc.exe")) - if not fxc: - print_error("could not find fxc! Set FXC_PATH environment variable or install Windows SDK.") - return 1 - fxc = fxc[-1] # Highest version is last - else: - print(f"Using FXC from environment variable: {fxc}") - - # Build DXBC. - dxbc_stages = ["vs", "hs", "ds", "gs", "ps", "cs"] - for src_path in src_paths: - src_name = os.path.basename(src_path) - if ((not src_name.endswith(".hlsl") and - not src_name.endswith(".xesl")) or - len(src_name) <= 8 or src_name[-8] != "."): - continue - dxbc_identifier = src_name[:-5].replace(".", "_") - dxbc_stage = dxbc_identifier[-2:] - if dxbc_stage not in dxbc_stages: - continue - print(f"- {src_path} > d3d12_5_1") - dxbc_dir_path = os.path.join(os.path.dirname(src_path), - "bytecode/d3d12_5_1") - os.makedirs(dxbc_dir_path, exist_ok=True) - dxbc_file_path_base = os.path.join(dxbc_dir_path, dxbc_identifier) - # Not enabling treating warnings as errors (/WX) because it - # overrides #pragma warning, and the FXAA shader triggers a - # bug in FXC causing an uninitialized variable warning if - # early exit from a function is done. - # FXC writes errors and warnings to stderr, not stdout, but - # stdout receives generic status messages that only add - # clutter in this case. - # Check if using DXC or FXC based on executable name - is_dxc = "dxc" in fxc.lower() - - # Start with base command - use wine on non-Windows platforms - if sys.platform != "win32": - compiler_args = ["wine", fxc] - else: - compiler_args = [fxc] - - src_dir = os.path.dirname(src_path) - if is_dxc: - # DXC only supports SM 6.0+, cannot compile SM 5.1 - print_warning("DXC doesn't support SM 5.1, using SM 6.0") - compiler_args.extend([ - "-T", f"{dxbc_stage}_6_0", - "-HV", "2017", - "-D", "SHADING_LANGUAGE_HLSL_XE=1", - "-I", src_dir, - "-Fh", f"{dxbc_file_path_base}.h", - "-Vn", dxbc_identifier, - "-nologo", - src_path, - ]) - else: - # FXC uses traditional syntax - compiler_args.extend([ - "/D", "SHADING_LANGUAGE_HLSL_XE=1", - "/I", src_dir, - "/Fh", f"{dxbc_file_path_base}.h", - "/T", f"{dxbc_stage}_5_1", - "/Vn", dxbc_identifier, - "/O3", - "/Qstrip_reflect", - "/Qstrip_debug", - "/Qstrip_priv", - "/all_resources_bound", - "/Gfp", - "/nologo", - src_path, - ]) - if subprocess.call(compiler_args, stdout=subprocess.DEVNULL) != 0: - print_error(f"failed to compile DXBC shader: {src_path}") - return 1 - - # Vulkan SPIR-V. - if all_targets or "spirv" in targets: - print("Building Vulkan SPIR-V shaders...") - - # Get the SPIR-V tool paths. - vulkan_sdk_path = os.environ.get("VULKAN_SDK") - if not vulkan_sdk_path: - print_error("VULKAN_SDK environment variable is not set") - if sys.platform == "win32": - print("Please install Vulkan SDK from:") - print("https://sdk.lunarg.com/sdk/download/latest/windows/vulkan-sdk.exe") - else: - print("Please install Vulkan SDK and set VULKAN_SDK environment variable") - return 1 - if not os.path.exists(vulkan_sdk_path): - print_error(f"could not find the Vulkan SDK at {vulkan_sdk_path}") - return 1 - vulkan_bin_path = os.path.join(vulkan_sdk_path, "bin") - if not os.path.exists(vulkan_bin_path): - print_error("could not find the Vulkan SDK binaries") - return 1 - glslang = os.path.join(vulkan_bin_path, "glslangValidator") - if not has_bin(glslang): - print_error("could not find glslangValidator") - return 1 - spirv_opt = os.path.join(vulkan_bin_path, "spirv-opt") - if not has_bin(spirv_opt): - print_error("could not find spirv-opt") - return 1 - spirv_dis = os.path.join(vulkan_bin_path, "spirv-dis") - if not has_bin(spirv_dis): - print_error("could not find spirv-dis") - return 1 - - # Build SPIR-V. - spirv_stages = { - "vs": "vert", "hs": "tesc", "ds": "tese", - "gs": "geom", "ps": "frag", "cs": "comp", - } - spirv_xesl_wrapper = ( - "#version 460\n" - "#extension GL_EXT_control_flow_attributes : require\n" - "#extension GL_EXT_samplerless_texture_functions : require\n" - "#extension GL_GOOGLE_include_directive : require\n" - "#include \"%s\"\n" - ) - for src_path in src_paths: - src_name = os.path.basename(src_path) - src_is_xesl = src_name.endswith(".xesl") - if ((not src_is_xesl and not src_name.endswith(".glsl")) or - len(src_name) <= 8 or src_name[-8] != "."): - continue - spirv_identifier = src_name[:-5].replace(".", "_") - spirv_stage = spirv_stages.get(spirv_identifier[-2:], None) - if spirv_stage is None: - continue - print(f"- {src_path} > vulkan_spirv") - src_dir = os.path.dirname(src_path) - spirv_dir_path = os.path.join(src_dir, "bytecode/vulkan_spirv") - os.makedirs(spirv_dir_path, exist_ok=True) - spirv_file_path_base = os.path.join(spirv_dir_path, spirv_identifier) - spirv_glslang_file_path = f"{spirv_file_path_base}.glslang.spv" - - glslang_arguments = [glslang, - "--stdin" if src_is_xesl else src_path, - "-DSHADING_LANGUAGE_GLSL_XE=1", - "-S", spirv_stage, - "-o", spirv_glslang_file_path, - "-V"] - if src_is_xesl: - glslang_arguments.append(f"-I{src_dir}") - if subprocess.run( - glslang_arguments, - input=(spirv_xesl_wrapper % src_name) if src_is_xesl else None, - text=True).returncode != 0: - print_error("failed to build a SPIR-V shader") - return 1 - - spirv_file_path = f"{spirv_file_path_base}.spv" - if subprocess.call([spirv_opt, "-O", "-O", "--canonicalize-ids", - spirv_glslang_file_path, "-o", spirv_file_path]) != 0: - print_error("failed to optimize a SPIR-V shader") - return 1 - os.remove(spirv_glslang_file_path) - - spirv_dis_file_path = f"{spirv_file_path_base}.txt" - if subprocess.call([spirv_dis, "-o", spirv_dis_file_path, - spirv_file_path]) != 0: - print_error("failed to disassemble a SPIR-V shader") - return 1 - - # Generate the header from the disassembly and the binary. - with open(f"{spirv_file_path_base}.h", "w") as out_file: - out_file.write("// Generated with `xb buildshaders`.\n#if 0\n") - with open(spirv_dis_file_path, "r") as spirv_dis_file: - spirv_dis_data = spirv_dis_file.read() - if len(spirv_dis_data) > 0: - out_file.write(spirv_dis_data) - if spirv_dis_data[-1] != "\n": - out_file.write("\n") - out_file.write("#endif\n\nconst uint32_t %s[] = {" % spirv_identifier) - with open(spirv_file_path, "rb") as spirv_file: - index = 0 - c = spirv_file.read(4) - while len(c) != 0: - if len(c) != 4: - print_error("a SPIR-V shader is misaligned") - return 1 - if index % 6 == 0: - out_file.write("\n ") - else: - out_file.write(" ") - index += 1 - out_file.write("0x%08X," % int.from_bytes(c, sys.byteorder)) - c = spirv_file.read(4) - out_file.write("\n};\n") - os.remove(spirv_dis_file_path) - os.remove(spirv_file_path) - - return 0 - - class TestCommand(BaseBuildCommand): """'test' command. """ @@ -1956,86 +1233,6 @@ class GenTestsCommand(Command): return 0 -class GpuTestCommand(BaseBuildCommand): - """'gputest' command. - """ - - def __init__(self, subparsers, *args, **kwargs): - super(GpuTestCommand, self).__init__( - subparsers, - name="gputest", - help_short="Runs automated GPU diff tests against reference imagery.", - help_long=""" - To pass arguments to the test executables separate them with `--`. - """, - *args, **kwargs) - self.parser.add_argument( - "--no_build", action="store_true", - help="Don't build before running tests.") - self.parser.add_argument( - "--update_reference_files", action="store_true", - help="Update all reference imagery.") - self.parser.add_argument( - "--generate_missing_reference_files", action="store_true", - help="Create reference files for new traces.") - - def execute(self, args, pass_args, cwd): - print("Testing...\n") - - # The test executables that will be built and run. - test_targets = args["target"] or [ - "xenia-gpu-vulkan-trace-dump", - ] - args["target"] = test_targets - - # Build all targets (if desired). - if not args["no_build"]: - result = super(GpuTestCommand, self).execute(args, [], cwd) - if result: - print("Failed to build, aborting test run.") - return result - - # Ensure all targets exist before we run. - test_executables = [ - get_bin(os.path.join(get_build_bin_path(args), test_target)) - for test_target in test_targets] - for i in range(0, len(test_targets)): - if test_executables[i] is None: - print_error(f"Unable to find {test_targets[i]} - build it.") - return 1 - - output_path = os.path.join(self_path, "build", "gputest") - if os.path.isdir(output_path): - rmtree(output_path) - os.makedirs(output_path) - print(f"Running tests and outputting to {output_path}...") - - reference_trace_root = os.path.join(self_path, "testdata", - "reference-gpu-traces") - - # Run tests. - any_failed = False - result = shell_call([ - sys.executable, - os.path.join(self_path, "tools", "gpu-trace-diff.py"), - f"--executable={test_executables[0]}", - f"--trace_path={os.path.join(reference_trace_root, 'traces')}", - f"--output_path={output_path}", - f"--reference_path={os.path.join(reference_trace_root, 'references')}", - ] + (["--generate_missing_reference_files"] if args["generate_missing_reference_files"] else []) + - (["--update_reference_files"] if args["update_reference_files"] else []) + - pass_args, - throw_on_error=False) - if result: - any_failed = True - - if any_failed: - print_error("one or more tests failed.") - result = 1 - print(f"Check {output_path}/results.html for more details.") - return result - - class CleanCommand(Command): """'clean' command. """ @@ -2046,18 +1243,13 @@ class CleanCommand(Command): name="clean", help_short="Removes intermediate files and build outputs.", *args, **kwargs) - self.parser.add_argument( - "--target_os", default=None, - help="Target OS passed to premake, for cross-compilation") def execute(self, args, pass_args, cwd): print("Cleaning build artifacts...\n" - "- premake clean...") - run_premake(get_premake_target_os(args["target_os"]), "clean") - - # Also clean generated files + "- cmake clean...") + if os.path.isdir("build"): + subprocess.call(["cmake", "--build", "build", "--target", "clean"]) clean_generated_files() - print_status(ResultStatus.SUCCESS) return 0 @@ -2093,62 +1285,6 @@ def clean_generated_files(): clean_moc_files() -class NukeCommand(Command): - """'nuke' command. - """ - - def __init__(self, subparsers, *args, **kwargs): - super(NukeCommand, self).__init__( - subparsers, - name="nuke", - help_short="Removes all build/ output.", - *args, **kwargs) - self.parser.add_argument( - "--target_os", default=None, - help="Target OS passed to premake, for cross-compilation") - - def execute(self, args, pass_args, cwd): - print("Cleaning build artifacts...\n" - "- removing build/...") - if os.path.isdir("build/"): - rmtree("build/") - - # Clean generated files - clean_generated_files() - - print(f"\n- git reset to {default_branch}...") - shell_call([ - "git", - "reset", - "--hard", - default_branch, - ]) - - print("\n- running premake...") - run_platform_premake(target_os_override=args["target_os"]) - - print_status(ResultStatus.SUCCESS) - return 0 - - -class CleanGeneratedCommand(Command): - """'cleangenerated' command. - """ - - def __init__(self, subparsers, *args, **kwargs): - super(CleanGeneratedCommand, self).__init__( - subparsers, - name="cleangenerated", - help_short="Removes generated shader bytecode and MOC files.", - *args, **kwargs) - - def execute(self, args, pass_args, cwd): - print("Cleaning generated files...") - clean_generated_files() - print("\nSuccess!") - return 0 - - # Generated files that should be excluded from linting/formatting GENERATED_FILES = [ "src/xenia/ui/ui_resources_qrc.cpp", # Qt resource file @@ -2341,37 +1477,6 @@ class FormatCommand(Command): # TODO(benvanik): merge into linter, or as lint --anal? -class StyleCommand(Command): - """'style' command. - """ - - def __init__(self, subparsers, *args, **kwargs): - super(StyleCommand, self).__init__( - subparsers, - name="style", - help_short="Runs the style checker on all code.", - *args, **kwargs) - - def execute(self, args, pass_args, cwd): - all_files = [file_path for file_path in find_xenia_source_files() - if not file_path.endswith("_test.cc")] - print(f"- cpplint [{len(all_files)} files]") - ret = shell_call([ - sys.executable, - "third_party/cpplint/cpplint.py", - "--output=vs7", - #"--linelength=80", - "--filter=-build/c++11,+build/include_alpha", - "--root=src", - ] + all_files, throw_on_error=False) - if ret: - print_error("1+ cpplint calls failed.") - return 1 - else: - print("\nStyle linting completed successfully.") - return 0 - - # TODO(benvanik): merge into linter, or as lint --anal? class TidyCommand(Command): """'tidy' command. @@ -2386,15 +1491,17 @@ class TidyCommand(Command): self.parser.add_argument( "--fix", action="store_true", help="Applies suggested fixes, where possible.") - self.parser.add_argument( - "--target_os", default=None, - help="Target OS passed to premake, for cross-compilation") def execute(self, args, pass_args, cwd): - # Run premake to generate our compile_commands.json file for clang to use. - # TODO(benvanik): only do linux? whatever clang-tidy is ok with. - run_premake(get_premake_target_os(args["target_os"]), - "export-compile-commands") + # clang-tidy needs a compile_commands.json; CMake emits one when + # CMAKE_EXPORT_COMPILE_COMMANDS is on. + ret = subprocess.call([ + "cmake", "-S", ".", "-B", "build", + "-G", "Ninja Multi-Config", + "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON", + ]) + if ret != 0: + return ret if sys.platform == "darwin": platform_name = "darwin" @@ -2437,59 +1544,6 @@ class TidyCommand(Command): print("\nTidy completed successfully.") return 0 -class StubCommand(Command): - """'stub' command. - """ - - def __init__(self, subparsers, *args, **kwargs): - super(StubCommand, self).__init__( - subparsers, - name="stub", - help_short="Create new file(s) in the xenia source tree and run premake", - *args, **kwargs) - self.parser.add_argument( - "--file", default=None, - help="Generate a source file at the provided location in the source tree") - self.parser.add_argument( - "--class", default=None, - help="Generate a class pair (.cc/.h) at the provided location in the source tree") - self.parser.add_argument( - "--target_os", default=None, - help="Target OS passed to premake, for cross-compilation") - - def execute(self, args, pass_args, cwd): - root = os.path.dirname(os.path.realpath(__file__)) - source_root = os.path.join(root, os.path.normpath("src/xenia")) - - if args["class"]: - path = os.path.normpath(os.path.join(source_root, args["class"])) - target_dir = os.path.dirname(path) - class_name = os.path.basename(path) - - status = generate_source_class(path) - if status > 0: - return status - - print(f"Created class '{class_name}' at {target_dir}") - - elif args["file"]: - path = os.path.normpath(os.path.join(source_root, args["file"])) - target_dir = os.path.dirname(path) - file_name = os.path.basename(path) - - status = generate_source_file(path) - if status > 0: - return status - - print(f"Created file '{file_name}' at {target_dir}") - - else: - print_error("Please specify a file/class to generate") - return 1 - - run_platform_premake(target_os_override=args["target_os"]) - return 0 - class DevenvCommand(Command): """'devenv' command. """ @@ -2502,57 +1556,53 @@ class DevenvCommand(Command): *args, **kwargs) def execute(self, args, pass_args, cwd): - devenv = None - show_reload_prompt = False if sys.platform == "win32": - if not vs_version: - print_error("Visual Studio is not installed."); - return 1 - print("Launching Visual Studio...") - elif sys.platform == "darwin": - print("Launching Xcode...") - devenv = "xcode4" - elif has_bin("clion") or has_bin("clion.sh"): + return self._launch_visual_studio() + # Non-Windows: CLion is the only IDE we know how to launch + # automatically. macOS falls through to the manual-open message + # (the Xcode generator isn't supported). + if has_bin("clion") or has_bin("clion.sh"): print("Launching CLion...") show_reload_prompt = create_clion_workspace() - devenv = "cmake" - else: - print("Launching CodeLite...") - devenv = "codelite" - - print("\n- running premake...") - run_platform_premake(devenv=devenv) - - print("\n- launching devenv...") - if show_reload_prompt: - print_box("Please run \"File ⇒ ↺ Reload CMake Project\" from inside the IDE!") - if sys.platform == "win32": - shell_call([ - "devenv", - "build\\xenia.sln", - ]) - elif sys.platform == "darwin": - shell_call([ - "xed", - "build/xenia.xcworkspace", - ]) - elif has_bin("clion"): - shell_call([ - "clion", - ".", - ]) - elif has_bin("clion.sh"): - shell_call([ - "clion.sh", - ".", - ]) - else: - shell_call([ - "codelite", - "build/xenia.workspace", - ]) - print("") + if run_cmake_configure() != 0: + return 1 + if show_reload_prompt: + print_box("Please run \"File ⇒ ↺ Reload CMake Project\" from inside the IDE!") + bin_name = "clion" if has_bin("clion") else "clion.sh" + shell_call([bin_name, "."]) + return 0 + print("No supported IDE found. Open the project root in your IDE.") + print("CMakeLists.txt and CMakePresets.json are in the project root.") + return 0 + def _launch_visual_studio(self): + """Configures a VS build tree under build-vs/ and launches devenv.""" + if not vs_version: + print_error("Visual Studio is not installed.") + return 1 + # Kept separate from build/ (Ninja Multi-Config) because CMake + # refuses to change generators on an existing tree — mixing the + # two workflows in one dir would force a full wipe each time. + vs_build_dir = "build-vs" + print(f"Configuring Visual Studio build tree in {vs_build_dir}...") + # -A x64 without -G lets CMake pick whichever VS generator matches + # the installed toolchain (VS 2022, 2026, ...). + ret = subprocess.call([ + "cmake", "-S", ".", "-B", vs_build_dir, "-A", "x64", + ]) + if ret != 0: + print_error("cmake configure failed for the VS build tree") + return ret + generate_version_h(vs_build_dir) + # VS 2026+ emits xenia.slnx; older VS emits xenia.sln. + sln_path = os.path.join(vs_build_dir, "xenia.slnx") + if not os.path.exists(sln_path): + sln_path = os.path.join(vs_build_dir, "xenia.sln") + if not os.path.exists(sln_path): + print_error("cmake configured successfully but no .sln/.slnx was produced") + return 1 + print(f"\n- launching devenv on {sln_path}...") + shell_call(["devenv", sln_path]) return 0

!Z85J@VlNm?xJD> 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