]> gitweb.factorcode.org Git - factor.git/commitdiff
Support Link Time Optimization (off by default) clean-linux-x86-32 clean-linux-x86-64 clean-macosx-x86-64 clean-windows-x86-64 main master
authornomennescio <nomennescio@factorcode.org>
Sun, 5 May 2024 22:29:40 +0000 (23:29 +0100)
committernomennescio <nomennescio@factorcode.org>
Sun, 5 May 2024 22:29:40 +0000 (23:29 +0100)
Enable with $ LTO=1 ./build.sh
Should potentially improve performance

GNUmakefile
build.sh

index 965df0a07c15c5edcecd5cc0225b626903eb23f7..577a38b2a9a325660c32ddfc2770da55462ab603 100644 (file)
@@ -45,6 +45,7 @@ ifdef CONFIG
                CFLAGS += -g -DFACTOR_DEBUG
        else
                CFLAGS += -O3
+               CFLAGS += $(CC_OPT)
        endif
 
        ifneq ($(REPRODUCIBLE), 0)
@@ -185,6 +186,7 @@ help:
        @echo "DEBUG=1  compile VM with debugging information"
        @echo "REPRODUCIBLE=1  compile VM without timestamp"
        @echo "SITE_CFLAGS=...  additional optimization flags"
+       @echo "LTO=1  compile VM with Link Time Optimization"
        @echo "X11=1  force link with X11 libraries instead of Cocoa (only on Mac OS X)"
 
 ALL = factor factor-ffi-test factor-lib
index 2bff2659bfcc5e108475c1c43213e690cd3391cb..c40f0c3ad1be56fdd4127116eef32dc989b1ca74 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -141,12 +141,14 @@ set_cc() {
         if test_programs_installed x86_64-w64-mingw32-gcc x86_64-w64-mingw32-g++; then
             [ -z "$CC" ] && CC=x86_64-w64-mingw32-gcc
             [ -z "$CXX" ] && CXX=x86_64-w64-mingw32-g++
+            [ -z "$CC_OPT" ] && [ "$LTO" -eq "1" ] && CC_OPT="-flto=auto"
             return
         fi
 
         if test_programs_installed i686-w64-mingw32-gcc i686-w64-mingw32-g++; then
             [ -z "$CC" ] && CC=i686-w64-mingw32-gcc
             [ -z "$CXX" ] && CXX=i686-w64-mingw32-g++
+            [ -z "$CC_OPT" ] && [ "$LTO" -eq "1" ] && CC_OPT="-flto=auto"
             return
         fi
     fi
@@ -154,6 +156,7 @@ set_cc() {
     if test_programs_installed clang clang++ ; then
         [ -z "$CC" ] && CC=clang
         [ -z "$CXX" ] && CXX=clang++
+        [ -z "$CC_OPT" ] && [ "$LTO" -eq "1" ] && CC_OPT="-flto"
         return
     fi
 
@@ -161,6 +164,7 @@ set_cc() {
     if test_programs_installed gcc g++ ; then
         [ -z "$CC" ] && CC=gcc
         [ -z "$CXX" ] && CXX=g++
+        [ -z "$CC_OPT" ] && [ "$LTO" -eq "1" ] && CC_OPT="-flto=auto"
         return
     fi
 
@@ -373,6 +377,8 @@ echo_build_info() {
     $ECHO "DOWNLOADER_NAME=$DOWNLOADER_NAME"
     $ECHO "CC=$CC"
     $ECHO "CXX=$CXX"
+    $ECHO "LTO=$LTO"
+    $ECHO "CC_OPT=$CC_OPT"
     $ECHO "MAKE=$MAKE"
 }
 
@@ -528,7 +534,7 @@ make_clean() {
 
 make_factor() {
     $ECHO "Building factor with $NUM_CORES cores"
-    invoke_make "CC=$CC" "CXX=$CXX" "$MAKE_TARGET" "-j$NUM_CORES"
+    invoke_make "CC=$CC" "CXX=$CXX" "CC_OPT=$CC_OPT" "$MAKE_TARGET" "-j$NUM_CORES"
 }
 
 make_clean_factor() {