- Add CITRON_BUILD_TYPE CMake variable (Stable/Nightly)
- Refactor GenerateSCMRev to use build type instead of repo parsing
- Update window title to display build type (Nightly/Stable)
- Improve fullscreen exit hotkey using dedicated QAction
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Firmware Installation:
- Add OnInstallFirmwareFromZip() to install firmware from ZIP archives
- Implement ExtractZipToDirectory() with libarchive (primary) and PowerShell fallback (Windows)
- Add user dialog to choose between folder or ZIP installation
- Validate NCA files at ZIP root before installation
- Automatic cleanup of temporary extraction directory
Android Vulkan Validation Layers:
- Update from sdk-1.3.261.1 to vulkan-sdk-1.4.328.1
- Fix extraction path for new VVL archive structure
- Add file existence checks and improved error messages
Benefits:
- Users can install firmware directly from ZIP files
- No manual extraction required
- Better debugging on newer Android devices
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Implements two-stage PGO build system with CMake integration and
automated build scripts for Windows, Linux, and macOS. Supports
MSVC, GCC, and Clang compilers.
PGO enables runtime profiling-based optimizations for improved
emulator performance. Includes helper scripts to streamline the
build workflow and resolve platform-specific issues.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Fix LTO linking issues on CachyOS with GCC 15.x
- Add LTO support to all core library targets (input_common, frontend_common,
network, shader_recompiler, web_service) that were missing LTO configuration
- Create citron_configure_lto() helper function for consistent LTO handling
- Implement CachyOS-specific detection via /etc/os-release and kernel version
- Apply conservative LTO flags (-flto=auto -ffat-lto-objects) only for
CachyOS + GCC 15+ to resolve linking errors with newer toolchains
- Other distributions continue using aggressive LTO settings for maximum performance
- Disable LTO on executable targets to prevent main function optimization issues
This resolves "undefined symbol" errors when building with -DCITRON_ENABLE_LTO=ON
on CachyOS while maintaining optimal LTO performance on other distributions.
Fixes linking errors including:
- Core::Frontend::EmuWindow symbols
- Core::System methods
- Settings::values
- Common logging functions
Tested on CachyOS with GCC 15.1.1 + LLD 20.1.8
Signed-off-by: Boss.sfc <boss.sfc@citron-emu.org>
- Add complete OpenAL sink implementation with robust error handling
- Support for device enumeration using ALC extensions
- Implement dummy streams for graceful degradation when OpenAL fails
- Add proper audio threading and buffer management
- Include comprehensive logging and diagnostic information
- Add stream limits and retry mechanisms for stability
Additional changes:
- Add ENABLE_OPENAL CMake option and OpenAL dependency management
- Include openal-soft in vcpkg dependencies
- Add OpenAL to audio engine settings enum
The OpenAL backend provides an alternative audio solution alongside
existing Cubeb and SDL2 backends, with enhanced device compatibility
and improved error recovery mechanisms.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Check if libVkLayer_khronos_validation.so exists before downloading
- Skip extraction if android-binaries directory already exists
- Reduces redundant downloads and extractions during CMake reconfiguration
- Maintains backward compatibility with existing build process
Signed-off-by: Zephyron <zephyron@citron-emu.org>
1. Update NASM from 2.16.01 to 2.16.03 and use the official nasm.us download URL
2. Update clang-format from version 15 to version 20
3. Change all repository URLs from yuzu-mirror GitHub to Citron's self-hosted Git server
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- In `CMakeModules/DownloadExternals.cmake`:
- The `package_base_url` for bundled externals is changed from `citron-emu` to `yuzu-mirror`.
- In `CMakeLists.txt`:
- The `NASM_DOWNLOAD_URL` is updated to `yuzu-mirror`.
- The download URL for the compatibility list is changed from `api.citron-emu.org` to `api.yuzu-citron-emu.org`.
- The download URL for `clang-format` on Windows is updated to `yuzu-mirror`.
- Copyright years and project names are updated in both files.
Signed-off-by: Zephyron <zephyron@citron-emu.org>