@@ -182,10 +182,6 @@ AC_ARG_ENABLE(readcmd,
182
182
[ do not include readtags command during install] ) ] ,
183
183
[ ] , [ enable_readcmd=yes] )
184
184
185
- # AC_ARG_WITH(perl-regex,
186
- # [AS_HELP_STRING([--with-perl-regex],
187
- # [use Perl pcre interface, if available])])
188
-
189
185
AC_ARG_ENABLE ( etags ,
190
186
[ AS_HELP_STRING ( [ --enable-etags] ,
191
187
[ enable the installation of links for etags] ) ] )
@@ -224,6 +220,10 @@ AC_ARG_ENABLE([static],
224
220
[ AS_HELP_STRING ( [ --enable-static] ,
225
221
[ enable static linking (mainly for MinGW)] ) ] )
226
222
223
+ AC_ARG_ENABLE ( [ lto] ,
224
+ [ AS_HELP_STRING ( [ --enable-lto] ,
225
+ [ enable link time optimization] ) ] )
226
+
227
227
AC_ARG_PROGRAM
228
228
229
229
# Process configuration options
@@ -264,7 +264,9 @@ AC_PROG_CC_C99
264
264
# Typically, this is immediately after AC_PROG_CC, ...
265
265
gl_EARLY
266
266
267
+ AC_ARG_VAR ( RANLIB ,[ ranlib command or path] )
267
268
AC_PROG_RANLIB
269
+ PRETTY_ARG_VAR([ AR] , [ ar command or path] , [ ar] )
268
270
AC_C_BIGENDIAN
269
271
270
272
if test "$cross_compiling" = "yes"; then
@@ -324,15 +326,9 @@ AC_SUBST([LDFLAGS_FOR_BUILD])
324
326
AC_SUBST ( [ BUILD_OBJEXT] )
325
327
AC_SUBST ( [ BUILD_EXEEXT] )
326
328
327
- AC_ARG_VAR ( AR ,[ ar command or path] )
328
- AC_ARG_VAR ( RANLIB ,[ ranlib command or path] )
329
329
AC_ARG_VAR ( WINDRES ,[ windres command or path, used with mingw-w64] )
330
330
AC_SUBST ( [ WINDRES] )
331
331
332
- if test "x${AR}" = "x" ; then
333
- AR=ar
334
- fi
335
-
336
332
if test "x${WINDRES}" = "x" ; then
337
333
WINDRES=windres
338
334
fi
@@ -576,6 +572,53 @@ PRETTY_ARG_VAR([EXTRA_CFLAGS], [extra C compiler flags],
576
572
PRETTY_ARG_VAR([ WARNING_CFLAGS] , [ C compiler warning flags] ,
577
573
[ -Wall] )
578
574
575
+ PRETTY_ARG_VAR([ EXTRA_LDFLAGS] , [ extra linker flags] ,
576
+ [ ] )
577
+
578
+ dnl ref. https://stackoverflow.com/questions/40374061/autoconf-recipe-to-use-gcc-ar-and-gcc-ranlib
579
+ use_lto=no
580
+ enable_debugging
581
+ AS_IF ( [ test "x$cross_compiling" != "xyes" -a "x$enable_lto" != "xno"] ,[
582
+ AX_CHECK_COMPILE_FLAG ( - flto ,[ use_lto=yes] ) ] )
583
+ AS_VAR_IF ( [ use_lto] , [ yes] , [
584
+ AS_CASE ( $CC ,
585
+ [ gcc|*/gcc] , [ AC_CHECK_PROGS ( [ LTO_AR] , [ gcc-ar ar] , [ :] ) ] ,
586
+ [ clang|*/clang] , [ AC_CHECK_PROGS ( [ LTO_AR] , [ clang-ar ar] , [ :] ) ] ,
587
+ [ use_lto=no] )
588
+ AC_MSG_CHECKING ( [ the wrapper for ar working with $CC -flto] )
589
+ AS_VAR_IF ( [ LTO_AR] , [ :] , AC_MSG_ERROR ( [ could not find AR tool working with -flto.] ) )
590
+ AS_VAR_IF ( [ use_lto] , [ yes] ,
591
+ [ AS_CASE ( $LTO_AR ,
592
+ [ *-ar] ,[ AC_MSG_RESULT ( [ $LTO_AR] ) ] ,
593
+ [ use_lto=no
594
+ AC_MSG_RESULT ( [ no suitable AR tool is found; truning off LTO] ) ] ) ] ,
595
+ [ AC_MSG_RESULT ( [ no suitable AR tool is found; truning off LTO] ) ] )
596
+ ] )
597
+ AS_VAR_IF ( [ use_lto] , [ yes] , [
598
+ AS_CASE ( $CC ,
599
+ [ gcc|*/gcc] , [ AC_CHECK_PROGS ( [ LTO_RANLIB] , [ gcc-ranlib ranlib] , [ :] ) ] ,
600
+ [ clang|*/clang] , [ AC_CHECK_PROGS ( [ LTO_RANLIB] , [ clang-ranlib ranlib] , [ :] ) ] ,
601
+ [ use_lto=no] )
602
+ AC_MSG_CHECKING ( [ the wrapper for ranlib working with $CC -flto] )
603
+ AS_VAR_IF ( [ LTO_RANLIB] , [ :] , AC_MSG_ERROR ( [ could not find RANLIB tool working with -flto.] ) )
604
+ AS_VAR_IF ( [ use_lto] , [ yes] ,
605
+ [ AS_CASE ( $LTO_RANLIB ,
606
+ [ *-ranlib] ,[ AC_MSG_RESULT ( [ $LTO_RANLIB] ) ] ,
607
+ [ use_lto=no
608
+ AC_MSG_RESULT ( [ no suitable ranlib tool is found; truning off LTO] ) ] ) ] ,
609
+ [ AC_MSG_RESULT ( [ no suitable ranlib is found; truning off LTO] ) ] )
610
+ ] )
611
+ AS_VAR_IF ( [ use_lto] , [ yes] , [
612
+ AR="$LTO_AR"
613
+ RANLIB="$LTO_RANLIB"
614
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -flto"
615
+ EXTRA_LDFLAGS="$EXTRA_LDFLAGS -flto"
616
+ ] ,[
617
+ AS_VAR_IF ( [ enable_lto] , [ yes] , [
618
+ AC_MSG_ERROR ( [ though --enable-lto is specified, the fto feature is not available nor usable.] )
619
+ ] )
620
+ ] )
621
+
579
622
# Checks for function availability
580
623
# -----------------------------------
581
624
0 commit comments