@@ -568,6 +568,49 @@ PRETTY_ARG_VAR([EXTRA_CFLAGS], [extra C compiler flags],
568
568
PRETTY_ARG_VAR([ WARNING_CFLAGS] , [ C compiler warning flags] ,
569
569
[ -Wall] )
570
570
571
+ PRETTY_ARG_VAR([ EXTRA_LDFLAGS] , [ extra linker flags] ,
572
+ [ ] )
573
+
574
+ dnl Enable LTO unless debugging is enabled.
575
+ dnl ref. https://stackoverflow.com/questions/40374061/autoconf-recipe-to-use-gcc-ar-and-gcc-ranlib
576
+ use_lto=no
577
+ AS_IF ( test "x$cross_compiling" != "xyes" ],[
578
+ AX_CHECK_COMPILE_FLAG ( - flto ,[ use_lto=yes] ) ] )
579
+ AS_VAR_IF ( [ use_lto] , [ yes] , [
580
+ AS_CASE ( $CC ,
581
+ [ gcc|*/gcc] , [ AC_CHECK_PROGS ( [ LTO_AR] , [ gcc-ar ar] , [ :] ) ] ,
582
+ [ clang|*/clang] , [ AC_CHECK_PROGS ( [ LTO_AR] , [ clang-ar ar] , [ :] ) ] ,
583
+ [ use_lto=no] )
584
+ AC_MSG_CHECKING ( [ the wrapper for ar working with $CC -flto] )
585
+ AS_VAR_IF ( [ LTO_AR] , [ :] , AC_MSG_ERROR ( [ could not find AR tool working with -flto.] ) )
586
+ AS_VAR_IF ( [ use_lto] , [ yes] ,
587
+ [ AS_CASE ( $LTO_AR ,
588
+ [ *-ar] ,[ AC_MSG_RESULT ( [ $LTO_AR] ) ] ,
589
+ [ use_lto=no
590
+ AC_MSG_RESULT ( [ no suitable AR tool is found; truning off LTO] ) ] ) ] ,
591
+ [ AC_MSG_RESULT ( [ no suitable AR tool is found; truning off LTO] ) ] )
592
+ ] )
593
+ AS_VAR_IF ( [ use_lto] , [ yes] , [
594
+ AS_CASE ( $CC ,
595
+ [ gcc|*/gcc] , [ AC_CHECK_PROGS ( [ LTO_RANLIB] , [ gcc-ranlib ranlib] , [ :] ) ] ,
596
+ [ clang|*/clang] , [ AC_CHECK_PROGS ( [ LTO_RANLIB] , [ clang-ranlib ranlib] , [ :] ) ] ,
597
+ [ use_lto=no] )
598
+ AC_MSG_CHECKING ( [ the wrapper for ranlib working with $CC -flto] )
599
+ AS_VAR_IF ( [ LTO_RANLIB] , [ :] , AC_MSG_ERROR ( [ could not find RANLIB tool working with -flto.] ) )
600
+ AS_VAR_IF ( [ use_lto] , [ yes] ,
601
+ [ AS_CASE ( $LTO_RANLIB ,
602
+ [ *-ranlib] ,[ AC_MSG_RESULT ( [ $LTO_RANLIB] ) ] ,
603
+ [ use_lto=no
604
+ AC_MSG_RESULT ( [ no suitable ranlib tool is found; truning off LTO] ) ] ) ] ,
605
+ [ AC_MSG_RESULT ( [ no suitable ranlib is found; truning off LTO] ) ] )
606
+ ] )
607
+ AS_VAR_IF ( [ use_lto] , [ yes] , [
608
+ AR="$LTO_AR"
609
+ RANLIB="$LTO_RANLIB"
610
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -flto"
611
+ EXTRA_LDFLAGS="$EXTRA_LDFLAGS -flto"
612
+ ] )
613
+
571
614
# Checks for function availability
572
615
# -----------------------------------
573
616
0 commit comments