From 629af3be48aa4b10752558d7d31222d045cdc126 Mon Sep 17 00:00:00 2001 From: lighta Date: Fri, 19 Dec 2014 16:22:58 -0500 Subject: [PATCH] Fix GCC 4.9 plugin needed to handle lto object --- 3rdparty/libconfig/Makefile.in | 2 +- 3rdparty/mt19937ar/Makefile.in | 2 +- configure | 74 +++++++++++++++++++++++++++++----- configure.in | 51 +++++++++++++++++++---- src/common/Makefile.in | 4 +- 5 files changed, 111 insertions(+), 22 deletions(-) diff --git a/3rdparty/libconfig/Makefile.in b/3rdparty/libconfig/Makefile.in index 1772eaeaeb..5b127786f0 100644 --- a/3rdparty/libconfig/Makefile.in +++ b/3rdparty/libconfig/Makefile.in @@ -30,7 +30,7 @@ obj: obj/%.o: %.c $(LIBCONFIG_H) @echo " CC $<" - @@CC@ @CFLAGS@ @DEFS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< + @@CC@ @CFLAGS_AR@ @DEFS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< libconfig: obj $(LIBCONFIG_DIR_OBJ) $(LIBCONFIG_AR) diff --git a/3rdparty/mt19937ar/Makefile.in b/3rdparty/mt19937ar/Makefile.in index 8a7b646694..9afddc81cb 100644 --- a/3rdparty/mt19937ar/Makefile.in +++ b/3rdparty/mt19937ar/Makefile.in @@ -23,4 +23,4 @@ help: %.o: %.c $(MT19937AR_H) @echo " CC $<" - @@CC@ @CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< + @@CC@ @CFLAGS_AR@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< diff --git a/configure b/configure index 1e6d7e668e..124848c73b 100755 --- a/configure +++ b/configure @@ -623,6 +623,7 @@ ac_includes_default="\ ac_subst_vars='LTLIBOBJS LIBOBJS +CFLAGS_AR DLLEXT PCRE_CFLAGS PCRE_LIBS @@ -4946,15 +4947,17 @@ fi # LTO Support test # if test "$enable_lto" != "no" ; then + OPT_LTO_AR="" + OPT_LTO="" OLD_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -flto" + CFLAGS="$CFLAGS -flto -fuse-linker-plugin -ffat-lto-objects" OLD_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -flto" + LDFLAGS="$LDFLAGS -flto -fuse-linker-plugin -ffat-lto-objects" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -flto" >&5 -$as_echo_n "checking whether $CC supports -flto... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -ffat-lto-objects" >&5 +$as_echo_n "checking whether $CC supports -ffat-lto-objects... " >&6; } if test "$cross_compiling" = yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: guessing no" >&5 @@ -4974,19 +4977,60 @@ if ac_fn_c_try_run "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } + OPT_LTO_AR="-ffat-lto-objects" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - CFLAGS="$OLD_CFLAGS" - LDFLAGS="$OLD_LDFLAGS" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi + CFLAGS="$OLD_CFLAGS" + LDFLAGS="$OLD_LDFLAGS" + + CFLAGS="$CFLAGS -flto -fuse-linker-plugin" + LDFLAGS="$LDFLAGS -flto -fuse-linker-plugin" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -flto -fuse-linker-plugin" >&5 +$as_echo_n "checking whether $CC supports -flto -fuse-linker-plugin... " >&6; } + if test "$cross_compiling" = yes; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: guessing no" >&5 +$as_echo "guessing no" >&6; } + + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + int main(int argc, char **argv){ + return 0; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + OPT_LTO_AR="-flto -fuse-linker-plugin $OPT_LTO_AR" + OPT_LTO="-flto -fuse-linker-plugin" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + CFLAGS="$OLD_CFLAGS" + LDFLAGS="$OLD_LDFLAGS" fi @@ -7337,10 +7381,20 @@ else $as_echo "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: Configure finish, CPPFLAGS= $CPPFLAGS" >&5 -$as_echo "$as_me: Configure finish, CPPFLAGS= $CPPFLAGS" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: LDFLAGS=$LDFLAGS" >&5 -$as_echo "$as_me: LDFLAGS=$LDFLAGS" >&6;} +CFLAGS="$OPT_LTO $CFLAGS" +CFLAGS_AR="$OPT_LTO_AR $CFLAGS" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: Configure finish" >&5 +$as_echo "$as_me: Configure finish" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: CPPFLAGS= $CPPFLAGS" >&5 +$as_echo "$as_me: CPPFLAGS= $CPPFLAGS" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: CFLAGS= $CFLAGS" >&5 +$as_echo "$as_me: CFLAGS= $CFLAGS" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: CFLAGS_AR= $CFLAGS_AR" >&5 +$as_echo "$as_me: CFLAGS_AR= $CFLAGS_AR" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: LDFLAGS= $LDFLAGS" >&5 +$as_echo "$as_me: LDFLAGS= $LDFLAGS" >&6;} #AC_MSG_NOTICE([PROD_WARN= $PROD_WARN]) #AC_MSG_NOTICE([EXTRA_WARN= $EXTRA_WARN]) { $as_echo "$as_me:${as_lineno-$LINENO}: output name = $output_login, $output_char, $output_map" >&5 diff --git a/configure.in b/configure.in index ee81fa369f..5bb500c609 100644 --- a/configure.in +++ b/configure.in @@ -523,14 +523,16 @@ AC_RUN_IFELSE( # LTO Support test # if test "$enable_lto" != "no" ; then - + OPT_LTO_AR="" + OPT_LTO="" + OLD_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -flto" + CFLAGS="$CFLAGS -flto -fuse-linker-plugin -ffat-lto-objects" OLD_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -flto" + LDFLAGS="$LDFLAGS -flto -fuse-linker-plugin -ffat-lto-objects" - AC_MSG_CHECKING([whether $CC supports -flto]) + AC_MSG_CHECKING([whether $CC supports -ffat-lto-objects]) AC_RUN_IFELSE( [AC_LANG_SOURCE([ int main(int argc, char **argv){ @@ -539,16 +541,42 @@ if test "$enable_lto" != "no" ; then ])], [ AC_MSG_RESULT([yes]) + OPT_LTO_AR="-ffat-lto-objects" ], [ AC_MSG_RESULT([no]) - CFLAGS="$OLD_CFLAGS" - LDFLAGS="$OLD_LDFLAGS" ], [ AC_MSG_RESULT([guessing no]) ] ) + CFLAGS="$OLD_CFLAGS" + LDFLAGS="$OLD_LDFLAGS" + + CFLAGS="$CFLAGS -flto -fuse-linker-plugin" + LDFLAGS="$LDFLAGS -flto -fuse-linker-plugin" + + AC_MSG_CHECKING([whether $CC supports -flto -fuse-linker-plugin]) + AC_RUN_IFELSE( + [AC_LANG_SOURCE([ + int main(int argc, char **argv){ + return 0; + } + ])], + [ + AC_MSG_RESULT([yes]) + OPT_LTO_AR="-flto -fuse-linker-plugin $OPT_LTO_AR" + OPT_LTO="-flto -fuse-linker-plugin" + ], + [ + AC_MSG_RESULT([no]) + ], + [ + AC_MSG_RESULT([guessing no]) + ] + ) + CFLAGS="$OLD_CFLAGS" + LDFLAGS="$OLD_LDFLAGS" fi @@ -1234,8 +1262,15 @@ else AC_MSG_RESULT([no]) fi -AC_MSG_NOTICE([Configure finish, CPPFLAGS= $CPPFLAGS]) -AC_MSG_NOTICE([LDFLAGS=$LDFLAGS]) +CFLAGS="$OPT_LTO $CFLAGS" +CFLAGS_AR="$OPT_LTO_AR $CFLAGS" +AC_SUBST([CFLAGS_AR]) + +AC_MSG_NOTICE([Configure finish]) +AC_MSG_NOTICE([CPPFLAGS= $CPPFLAGS]) +AC_MSG_NOTICE([CFLAGS= $CFLAGS]) +AC_MSG_NOTICE([CFLAGS_AR= $CFLAGS_AR]) +AC_MSG_NOTICE([LDFLAGS= $LDFLAGS]) #AC_MSG_NOTICE([PROD_WARN= $PROD_WARN]) #AC_MSG_NOTICE([EXTRA_WARN= $EXTRA_WARN]) AC_MSG_NOTICE([output name = $output_login, $output_char, $output_map]) diff --git a/src/common/Makefile.in b/src/common/Makefile.in index 61ea90db3e..a3f10e69cb 100644 --- a/src/common/Makefile.in +++ b/src/common/Makefile.in @@ -61,11 +61,11 @@ common: obj $(COMMON_DIR_OBJ) $(MT19937AR_OBJ) $(LIBCONFIG_AR) $(COMMON_AR) obj/%.o: %.c $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) @echo " CC $<" - @@CC@ @CFLAGS@ $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< + @@CC@ @CFLAGS_AR@ $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< obj/mini%.o: %.c $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) @echo " CC $<" - @@CC@ @CFLAGS@ $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) @MYSQL_CFLAGS@ -DMINICORE @CPPFLAGS@ -c $(OUTPUT_OPTION) $< + @@CC@ @CFLAGS_AR@ $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) @MYSQL_CFLAGS@ -DMINICORE @CPPFLAGS@ -c $(OUTPUT_OPTION) $< # missing object files $(MT19937AR_OBJ):