From e80898ed2d2738adbeb35db8ccbb6956c986f30f Mon Sep 17 00:00:00 2001 From: Rosalie Wanders Date: Thu, 4 Dec 2025 16:27:35 +0100 Subject: [PATCH] cmake: remove USE_LTO option and disable USE_IPO for 3rdParty projects --- CMakeLists.txt | 13 ------------- Source/3rdParty/CMakeLists.txt | 21 +++++++++++---------- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b3d4e5b2..76855577 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,6 @@ option(KCA_DRAG_DROP "Enables drag and drop using KCoreAddons" OFF) # https:/ option(NETPLAY "Enables netplay" ON) option(VRU "Enables VRU support in RMG-Input" ON) option(USE_CCACHE "Enables usage of ccache when ccache has been found" ON) -option(USE_LTO "Enables building with LTO/IPO when compiler supports it" ON) option(NO_ASM "Disables the usage of assembly in the mupen64plus-core" OFF) option(USE_ANGRYLION "Enables building angrylion-rdp-plus which uses a non-GPL compliant license" OFF) @@ -43,18 +42,6 @@ if (USE_CCACHE) endif(CCACHE_FOUND) endif(USE_CCACHE) -if (USE_LTO) - include(CheckIPOSupported) - check_ipo_supported(RESULT ENABLE_IPO) - - # ensure we don't enable LTO on Debug builds - if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - if(ENABLE_IPO) - set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) - endif(ENABLE_IPO) - endif() -endif(USE_LTO) - if (NOT PORTABLE_INSTALL AND WIN32) message(WARNING "Not-Portable build not supported on windows, re-enabling PORTABLE_INSTALL!") set(PORTABLE_INSTALL ON) diff --git a/Source/3rdParty/CMakeLists.txt b/Source/3rdParty/CMakeLists.txt index b66cc0be..bf90718a 100644 --- a/Source/3rdParty/CMakeLists.txt +++ b/Source/3rdParty/CMakeLists.txt @@ -38,11 +38,7 @@ else() endif() if ("${CMAKE_C_FLAGS}" STREQUAL "") - if (USE_LTO) - set(MAKE_OPTFLAGS "-O3 -flto") - else(USE_LTO) - set(MAKE_OPTFLAGS "-O3") - endif(USE_LTO) + set(MAKE_OPTFLAGS "-O3") else() set(MAKE_OPTFLAGS "${CMAKE_C_FLAGS}") endif() @@ -62,10 +58,15 @@ set(SDL3NET_DIR ${CMAKE_CURRENT_SOURCE_DIR}/SDL_net) set(SDL3NET_SOURCES ${SDL3NET_DIR}/src/SDL_net.c ) +find_package(PkgConfig REQUIRED) +pkg_check_modules(SDL3 REQUIRED sdl3) add_library(SDL3_net STATIC ${SDL3NET_SOURCES}) target_include_directories(SDL3_net PRIVATE ${SDL3NET_DIR}/include) set(SDL3NET_CFLAGS "-DUSE_SDL3NET -I${SDL3NET_DIR}/include") -set(SDL3NET_LDLIBS "$") +# for some reason MingW needs SDL3 to be linked after SDL3_net, +# else we get a lot of missing symbol errors, should be harmless +# on other platforms +set(SDL3NET_LDLIBS "$ -l${SDL3_LIBRARIES}") if (WIN32) set(SDL3NET_LDLIBS "${SDL3NET_LDLIBS} -liphlpapi -lws2_32") endif (WIN32) @@ -140,7 +141,7 @@ ExternalProject_Add(mupen64plus-rsp-parallel BUILD_IN_SOURCE False BUILD_ALWAYS True - CMAKE_ARGS ${CMAKE_CONFIGURE_ARGS} + CMAKE_ARGS -DUSE_IPO=OFF ${CMAKE_CONFIGURE_ARGS} BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-rsp-parallel BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-rsp-parallel/mupen64plus-rsp-parallel.${SO_EXT} @@ -184,7 +185,7 @@ if (USE_ANGRYLION) BUILD_IN_SOURCE False BUILD_ALWAYS True - CMAKE_ARGS -DBUILD_MUPEN64PLUS=ON -DBUILD_PROJECT64=OFF -DUSE_QT5=OFF ${CMAKE_CONFIGURE_ARGS} + CMAKE_ARGS -DBUILD_MUPEN64PLUS=ON -DBUILD_PROJECT64=OFF -DUSE_QT5=OFF -DUSE_IPO=OFF ${CMAKE_CONFIGURE_ARGS} BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-video-angrylion-plus BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-video-angrylion-plus/mupen64plus-video-angrylion-plus.${SO_EXT} @@ -198,7 +199,7 @@ ExternalProject_Add(mupen64plus-video-GLideN64 BUILD_IN_SOURCE False BUILD_ALWAYS True - CMAKE_ARGS -DMUPENPLUSAPI=ON -DMUPENPLUSAPI_GLIDENUI=ON -DGLIDENUI_QT6=ON -DUSE_SYSTEM_LIBS=ON ${CMAKE_CONFIGURE_ARGS} + CMAKE_ARGS -DMUPENPLUSAPI=ON -DMUPENPLUSAPI_GLIDENUI=ON -DGLIDENUI_QT6=ON -DUSE_IPO=OFF -DUSE_SYSTEM_LIBS=ON ${CMAKE_CONFIGURE_ARGS} SOURCE_SUBDIR ./src/ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-video-GLideN64 @@ -213,7 +214,7 @@ ExternalProject_Add(mupen64plus-video-parallel BUILD_IN_SOURCE False BUILD_ALWAYS True - CMAKE_ARGS -DCONFIG_GUI=ON ${CMAKE_CONFIGURE_ARGS} + CMAKE_ARGS -DCONFIG_GUI=ON -DUSE_IPO=OFF ${CMAKE_CONFIGURE_ARGS} BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-video-parallel BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/mupen64plus-video-parallel/mupen64plus-video-parallel.${SO_EXT}