From 64c6a57a726489d2f5d8e399d7490f3cad28de56 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Tue, 23 Jun 2026 17:47:22 +0200 Subject: [PATCH] Add visible LTO indicator, and --lto build flag Signed-off-by: PanteraPolnocy --- indra/CMakeLists.txt | 8 ++++++++ indra/cmake/00-Common.cmake | 1 + indra/newview/llappviewer.cpp | 6 ++++++ scripts/configure_firestorm.sh | 15 ++++++++++++--- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt index 8d8d5d6de9..f834e187a3 100644 --- a/indra/CMakeLists.txt +++ b/indra/CMakeLists.txt @@ -117,6 +117,14 @@ endif (USE_AVX_OPTIMIZATION) add_subdirectory(cmake) +# LTO indicator +if (USE_LTO) + message(STATUS "Compiling with Link Time Optimization") +else (USE_LTO) + message(STATUS "Compiling without Link Time Optimization") +endif (USE_LTO) +# LTO indicator + # Tracy Profiler support if (USE_TRACY) message(STATUS "Compiling with Tracy profiler") diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 5e92f59964..6a3a5dfabf 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -54,6 +54,7 @@ endif() set(USE_LTO OFF CACHE BOOL "Enable Link Time Optimization") if(USE_LTO) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) + add_compile_definitions(USE_LTO) # LTO indicator endif() # Don't bother with a MinSizeRel or Debug builds. diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 28f974aa38..8e5b0e594a 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3976,6 +3976,12 @@ LLSD LLAppViewer::getViewerInfo() const info["SIMD"] = "SSE2"; #endif +// LTO indicator +#ifdef USE_LTO + info["SIMD"] = info["SIMD"].asString() + "-LTO"; +#endif +// + // FIRE-8273: Add Open-sim indicator to About floater #if defined OPENSIM info["BUILD_TYPE"] = LLTrans::getString("FSWithOpensim"); diff --git a/scripts/configure_firestorm.sh b/scripts/configure_firestorm.sh index 00f23493d5..caf9f6ba58 100755 --- a/scripts/configure_firestorm.sh +++ b/scripts/configure_firestorm.sh @@ -43,6 +43,7 @@ WANTS_AVX=$FALSE WANTS_AVX2=$FALSE WANTS_TESTBUILD=$FALSE WANTS_TRACY=$FALSE +WANTS_LTO=$FALSE WANTS_BUILD=$FALSE WANTS_CRASHREPORTING=$FALSE WANTS_CACHE=$FALSE @@ -85,6 +86,7 @@ showUsage() echo " --avx : Build with Advanced Vector Extensions" echo " --avx2 : Build with Advanced Vector Extensions 2" echo " --tracy : Build with Tracy Profiler support" + echo " --lto : Build with Link Time Optimization" echo " --crashreporting : Build with crash reporting enabled (Windows only)" echo " --testbuild : Create time-limited test build (build date + )" echo " --platform : Build for specified platform (darwin | windows | linux)" @@ -101,7 +103,7 @@ getArgs() # $* = the options passed in from main { if [ $# -gt 0 ]; then - while getoptex "clean build config version package velopack no-package fmodstudio openal ninja vscode compiler-cache jobs: platform: kdu opensim no-opensim singlegrid: havok avx avx2 tracy crashreporting testbuild: help chan: btype:" "$@" ; do + while getoptex "clean build config version package velopack no-package fmodstudio openal ninja vscode compiler-cache jobs: platform: kdu opensim no-opensim singlegrid: havok avx avx2 tracy lto crashreporting testbuild: help chan: btype:" "$@" ; do #ensure options are valid if [ -z "$OPTOPT" ] ; then @@ -132,6 +134,7 @@ getArgs() avx) WANTS_AVX=$TRUE;; avx2) WANTS_AVX2=$TRUE;; tracy) WANTS_TRACY=$TRUE;; + lto) WANTS_LTO=$TRUE;; crashreporting) WANTS_CRASHREPORTING=$TRUE;; testbuild) WANTS_TESTBUILD=$TRUE TESTBUILD_PERIOD="$OPTARG" @@ -326,6 +329,7 @@ echo -e " HAVOK: `b2a $WANTS_HAVOK`" | echo -e " AVX: `b2a $WANTS_AVX`" | tee -a "$LOG" echo -e " AVX2: `b2a $WANTS_AVX2`" | tee -a "$LOG" echo -e " TRACY: `b2a $WANTS_TRACY`" | tee -a "$LOG" +echo -e " LTO: `b2a $WANTS_LTO`" | tee -a "$LOG" echo -e " CRASHREPORTING: `b2a $WANTS_CRASHREPORTING`" | tee -a "$LOG" if [ $WANTS_TESTBUILD -eq $TRUE ] ; then echo -e " TESTBUILD: `b2a $WANTS_TESTBUILD` ($TESTBUILD_PERIOD days)" | tee -a "$LOG" @@ -497,7 +501,12 @@ if [ $WANTS_CONFIG -eq $TRUE ] ; then TRACY_PROFILER="-DUSE_TRACY:BOOL=ON" else TRACY_PROFILER="-DUSE_TRACY:BOOL=OFF" - fi + fi + if [ $WANTS_LTO -eq $TRUE ] ; then + LTO="-DUSE_LTO:BOOL=ON" + else + LTO="-DUSE_LTO:BOOL=OFF" + fi if [ $WANTS_TESTBUILD -eq $TRUE ] ; then TESTBUILD="-DTESTBUILD:BOOL=ON -DTESTBUILDPERIOD:STRING=$TESTBUILD_PERIOD" else @@ -597,7 +606,7 @@ if [ $WANTS_CONFIG -eq $TRUE ] ; then fi fi - cmake -G "$TARGET" $CMAKE_ARCH ../indra $CHANNEL ${GITHASH} $FMODSTUDIO $OPENAL $KDU $OPENSIM $SINGLEGRID $HAVOK $AVX_OPTIMIZATION $AVX2_OPTIMIZATION $TRACY_PROFILER $TESTBUILD $PACKAGE $VELOPACK \ + cmake -G "$TARGET" $CMAKE_ARCH ../indra $CHANNEL ${GITHASH} $FMODSTUDIO $OPENAL $KDU $OPENSIM $SINGLEGRID $HAVOK $AVX_OPTIMIZATION $AVX2_OPTIMIZATION $TRACY_PROFILER $LTO $TESTBUILD $PACKAGE $VELOPACK \ $UNATTENDED -DLL_TESTS:BOOL=OFF -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DCMAKE_BUILD_TYPE:STRING=$BTYPE $CACHE_OPT \ $CRASH_REPORTING -DVIEWER_SYMBOL_FILE:STRING="${VIEWER_SYMBOL_FILE:-}" $LL_ARGS_PASSTHRU ${VSCODE_FLAGS:-} | tee "$LOG" configure_status=${PIPESTATUS[0]}