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]}