summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
AgeCommit message (Collapse)Author
2025-02-22cmake: Optimize Android VVL download logicZephyron
Improve the Vulkan Validation Layer (VVL) download logic for Android by checking for the final library file instead of just the zip archive. This prevents unnecessary re-downloads and extractions when the library is already in place. The check now looks for libVkLayer_khronos_validation.so in the final destination path before attempting to download and extract the archive.
2025-02-21Add license verification for Android appZephyron
Implements a LicenseVerifier class to ensure app integrity and license compliance: - Verifies the app's package name matches the official release - Validates app signature against official release signature - Allows debug and EA (Early Access) builds - Shows violation dialog and exits if verification fails - Enforces GPLv3 license compliance for modified versions This helps prevent unauthorized modified versions from being distributed without source code, as required by the GPLv3 license.
2025-02-16build: upgrade fmt and SDL2Zephyron
Update fmt library to version 11.0.2 and make necessary adjustments: - Replace fmt/format.h includes with fmt/ranges.h - Add const qualifiers to formatter::format functions - Update CMake to require fmt version 11 Additional dependency updates: - Update SDL2 bundled version from 2.28.2 to 2.32.0 - Update catch2 to version 3.8.0 - Update vcpkg baseline to c82f74667287d3dc386bce81e44964370c91a289
2025-02-13revert f45f339ef9f02610d79890c12844742a4541361eZephyron
revert deps: update SDL2 and FFmpeg versions Update bundled dependencies to their latest stable versions: - SDL2: 2.28.2 -> 2.30.12 - FFmpeg: 6.0 -> 6.1.2 Also add citron copyright header to FFmpeg CMakeLists.txt
2025-02-12deps: update SDL2 and FFmpeg versionsZephyron
Update bundled dependencies to their latest stable versions: - SDL2: 2.28.2 -> 2.30.12 - FFmpeg: 6.0 -> 6.1.2 Also add citron copyright header to FFmpeg CMakeLists.txt
2025-02-11build: Update NASM and clang-format versions, fix download URLsZephyron
- Update NASM version from 2.16.01 to 2.16.03 - Change NASM download URL to use official nasm.us source - Update clang-format version from 15 to 18 - Update compatibility list and clang-format download URLs to use citron-emu.org Thanks to Mangax for suggesting these updates.
2025-02-10cmake: update Qt configuration and externals URLZephyron
- Simplify Qt version selection to always use 6.8.2 instead of conditional versions - Update bundled externals URL to use git.citron-emu.org/Citron - Update MSVC toolchain references from 2019 to 2022 for Qt paths This change streamlines Qt version management and updates the infrastructure to use newer MSVC toolchain paths.
2025-02-09cmake: Use Qt 6.7.3 for MSVC buildsZephyron
Forces Qt 6.7.3 for MSVC builds while keeping 6.8.2 for other platforms. This fixes Windows compilation issues with newer Qt versions.
2025-02-09Update Qt and Vulkan Headers versionsZephyron
- Update VulkanHeaders requirement from 1.4.304.1 to 1.4.307 - Update Qt download version from 6.7.3 to 6.8.2
2025-02-09Downgrade Qt version from 6.8.2 to 6.7.3Zephyron
- Changes the downloaded Qt version from 6.8.2 to 6.7.3 when not using system Qt. - This rolls back to a more stable release version of Qt.
2025-02-08build: update dependencies and relax version requirementsZephyron
- Update Vulkan validation layers to 1.4.304.1 - Update Qt to 6.8.2 - Remove strict version requirements for various dependencies - Update Vulkan-Headers, VulkanMemoryAllocator, and vcpkg submodules - Reorganize discord-rpc compile options This change makes the build system more flexible by removing unnecessary version constraints while ensuring compatibility with newer versions of key dependencies.
2025-02-02fix: compilation errors with Qt and Discord RPCZephyron
- Downgrade Qt version from 6.8.1 to 6.7.3 as 6.8.1 is not yet widely available - Add USE_DISCORD_PRESENCE check around discord-rpc compile options to prevent build errors when Discord integration is disabled
2025-02-01build: update Qt to 6.8.1 and add permissive flag for discord-rpcZephyron
Updates the Qt dependency from 6.7.3 to 6.8.1 when downloading Qt. Adds -fpermissive compile flag for discord-rpc target to fix build issues.
2025-01-27deps: Update Vulkan dependencies and remove fmt version constraintZephyron
- Update Vulkan-Headers to e43027a (1.4.306) - Update Vulkan-Utility-Libraries to 8ec8482 - Update vcpkg to 2b8927f - Remove version constraint for fmt package requirement - Update VulkanHeaders version requirement to 1.4.306 This updates several external dependencies to their latest versions and removes the specific version requirement for fmt while maintaining the REQUIRED flag. The Vulkan-Headers version requirement is updated to match the new submodule version.
2025-01-18Add QT Network packagevampiric_x
2025-01-17Remove x86-64 ISA compatibility flags and toolchainZephyron
Remove the x86-64 instruction set architecture (ISA) compatibility flags and associated toolchain file that were setting CPU architecture compatibility levels. This simplifies the build system by removing the custom ISA flag handling and x86-64-v2 option. Changes: - Remove x86-64 ISA flags configuration block from CMakeLists.txt - Delete unused x86-64-toolchain.cmake file - Remove CITRON_USE_X86_64_V2 option
2025-01-16build: update vulkan headers to 1.4.304 and vcpkg baselineZephyron
Update VulkanHeaders minimum required version from 1.3.274 to 1.4.304 and update vcpkg baseline to latest version to ensure compatibility with newer Vulkan features. Changes: - VulkanHeaders: 1.3.274 -> 1.4.304 - vcpkg baseline: c82f74667 -> 7adc2e4d4
2025-01-15fix: Implement SetGestureOutputRanges to handle unimplemented function errorZephyron
- Added the SetGestureOutputRanges function to the IHidServer class to address the unimplemented function '92' error. - This fix was discovered through log analysis, which showed a critical assertion failure in the HID service for an unknown function '92'. - The log indicated a userspace panic and backtrace, pointing to the need for implementing this function to prevent execution breaks. - Updated CMakeLists.txt to remove specific version requirements for several packages, enhancing flexibility. - Updated subproject commit references for VulkanMemoryAllocator and vcpkg. - REF: https://switchbrew.org/wiki/HID_services#ActivateGesture
2025-01-15feat: Improve thermal display and build systemZephyron
- Replace emoji thermal indicators with modern progress bar UI - Switch temperature source to battery sensor for better accuracy - Adjust temperature thresholds (30°C-45°C range) - Add automatic Vulkan Validation Layer download for Android - Downgrade Java/Kotlin target to 17 for wider compatibility The thermal display now shows a visual progress bar with percentage instead of emojis, making it easier to gauge system temperature at a glance. Temperature reading now comes from the battery sensor which is more reliable across devices. Build system improvements include automated VVL binary downloads and installation for Android builds when CITRON_DOWNLOAD_ANDROID_VVL is enabled. Java target downgraded to 17 to ensure compatibility with current Android toolchain.
2025-01-14Revert incorrect copyright attribution for non-contributed filesZephyron
- In commit b3facaa6bb30cdc39f2b7d632fef1e3bfeee7785, the copyright header was updated to include "Citron Homebrew Project" across multiple files, regardless of whether any contributions were made. - This commit removes the incorrect attribution and reverts the copyright header to its previous state. - Copyright attribution should only be added when meaningful contributions have been made to the file. - This commit ensures proper compliance with copyright standards and maintains correct attribution to the respective contributors. - Special thanks to Tachi for pointing out the need for these corrections and ensuring that proper attribution practices are followed.
2025-01-13CMake: Enforce x86-64-v2 ISA level across all dependenciesZephyron
Expand ISA level enforcement to ensure all components, including vcpkg dependencies, are built with x86-64-v2 instruction set. This addresses remaining compatibility issues where dependencies were potentially being built with higher ISA levels. Changes: - Add dedicated x86-64-v2 toolchain file for vcpkg - Set ISA flags for both main project and dependencies - Ensure proper quoting of compiler flags - Configure vcpkg to use consistent toolchain settings The fix requires cleaning both build and vcpkg directories before rebuilding: rm -rf build/ rm -rf vcpkg_installed/ Credits to Alex&Indie for the original ISA compatibility fix. Fixes remaining instances of Linux Compilation
2025-01-13CMake: Force x86-64-v2 instruction set for better compatibilityZephyron
Enforce x86-64-v2 instruction set level to prevent compatibility issues on systems that default to higher ISA levels (v3/v4). This fixes crashes reported on certain Linux distributions like CachyOS that force higher instruction set levels by default. The fix: - Sets -march=x86-64-v2 for both C and CXX flags - Adds compile options to ensure system defaults don't override - Explicitly disables v3 and v4 instruction sets - Only applies to x86_64 architectures Credits to Alex&Indie for identifying the ISA level compatibility issue. Fixes: Linux Compilation.
2025-01-13Android: Update dependencies and improve UI feedbackZephyron
- Update Kotlin and various AndroidX dependencies to stable versions - Add temperature monitoring with color-coded display in emulation - Add FPS color indication (red to green based on performance) - Add legal disclaimer page to initial setup - Remove x86_64 ABI filter to focus on arm64-v8a - Adjust thermal and FPS update intervals for consistency - Clean up redundant dependency declarations The temperature display now shows both Celsius and Fahrenheit with color coding based on safe operating ranges [WIP]. FPS counter provides visual feedback through colors, making performance issues more immediately apparent to users.
2025-01-12ui(QT): QT 6.7.3 Implementationvampiric_x
2025-01-09feat: make LLVM Demangle optional via CMake flagZephyron
Added new CMake option CITRON_USE_LLVM_DEMANGLE (default: ON) to control whether the project uses LLVM's Demangle component. This allows building without LLVM dependencies when demangling support is not needed. Co-authored-by: reg_server
2025-01-03CMake(SDL+QT): Remove Hard Coded Version RequirementZephyron
2024-12-31chore: update project references and add Citron copyrightZephyron
- Replaced all references to the old project name with Citron. - Added Citron copyright information alongside existing notices in all files.
2024-02-02cmake: use vulkan-headers config fileAlexandre Bouvier
2024-01-30cmake: prefer system oaknut libraryAlexandre Bouvier
2024-01-22Add Vulkan-Utility-Libraries dependencyMike Lothian
2023-12-20externals: update Vulkan-Headers to v1.3.274Jan Beich
2023-12-17android: add oboe audio sinkLiam
2023-11-30cmake: prefer system gamemode libraryAlexandre Bouvier
2023-11-30Merge pull request #12074 from GPUCode/yuwu-on-the-metalliamwhite
Implement Native Code Execution (NCE)
2023-11-26qt: add cpu_backend configurationamazingfate
2023-11-26cmake: prefer system simpleini libraryAlexandre Bouvier
2023-11-21config: Unify config handling under frontend_commont895
Replaces every way of handling config for each frontend with SimpleIni. frontend_common's Config class is at the center where it saves and loads all of the cross-platform settings and provides a set of pure virtual functions for platform specific settings. As a result of making config handling platform specific, several parts had to be moved to each platform's own config class or to other parts. Default keys were put in platform specific config classes and translatable strings for Qt were moved to shared_translation. Default hotkeys, default_theme, window geometry, and qt metatypes were moved to uisettings. Additionally, to reduce dependence on Qt, QStrings were converted to std::strings where applicable.
2023-10-29Merge pull request #11689 from liamwhite/breakpadliamwhite
qt: implement automatic crash dump support
2023-10-25cmake: prefer system stb headersAlexandre Bouvier
2023-10-14qt: add network components when using discordNguyen Marc
2023-10-13android: Allow ANDROID_STLCharles Lombardo
2023-10-13externals: Update LLVM to 17.0.2Charles Lombardo
Matches android ndk
2023-10-13android: Update ndk to 26.1.10909125Charles Lombardo
The new ndk uses LLVM 17.0.2 so we can remove the LLVM download and libc++ options for the android builds
2023-10-08qt: implement automatic crash dump supportLiam
2023-09-18cmake: prefer system renderdoc headerAlexandre Bouvier
2023-09-12Merge pull request #11447 from xcfrg/portable-compile-outliamwhite
common: add a compile time option to allow disabling portable mode
2023-09-08cmake: Add option to fetch validation layer binary on androidGPUCode
2023-09-06add a compile time option to allow disabling portable modexcfrg
2023-08-27externals: Update SDL to 2.28.2german77
2023-08-22Add macos moltenvk bundle, Add copy moltevk dylib scriptFeng Chen