mirror of
https://git.citron-emu.org/citron/emulator
synced 2025-12-24 04:33:44 +00:00
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>
33 lines
798 B
CMake
33 lines
798 B
CMake
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
add_library(network STATIC
|
|
announce_multiplayer_session.cpp
|
|
announce_multiplayer_session.h
|
|
network.cpp
|
|
network.h
|
|
packet.cpp
|
|
packet.h
|
|
precompiled_headers.h
|
|
room.cpp
|
|
room.h
|
|
room_member.cpp
|
|
room_member.h
|
|
verify_user.cpp
|
|
verify_user.h
|
|
)
|
|
|
|
create_target_directory_groups(network)
|
|
|
|
target_link_libraries(network PRIVATE common enet::enet Boost::headers)
|
|
if (ENABLE_WEB_SERVICE)
|
|
target_compile_definitions(network PRIVATE -DENABLE_WEB_SERVICE)
|
|
target_link_libraries(network PRIVATE web_service)
|
|
endif()
|
|
|
|
if (CITRON_USE_PRECOMPILED_HEADERS)
|
|
target_precompile_headers(network PRIVATE precompiled_headers.h)
|
|
endif()
|
|
|
|
citron_configure_lto(network)
|