]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
build: cleaner way to not alter CFLAGS/CPPFLAGS/LDFLAGS
authorVincent Bernat <vincent@bernat.im>
Wed, 13 May 2015 06:21:09 +0000 (08:21 +0200)
committerVincent Bernat <vincent@bernat.im>
Wed, 13 May 2015 06:36:05 +0000 (08:36 +0200)
configure.ac
m4/ax_cflags_gcc_option.m4
m4/ax_ld_check_flag.m4
m4/os.m4

index 8265d570c159093dcad76a59f2c4b2fb28b4ba88..eac2c65dae7a4524fdb56b02e0ec82d616e1c381 100644 (file)
@@ -67,26 +67,26 @@ DX_PS_FEATURE(OFF)
 DX_INIT_DOXYGEN([lldpd], [doxygen.cfg], [doxygen])
 
 # Check some compiler flags
-AX_CFLAGS_GCC_OPTION([-fdiagnostics-show-option])
-AX_CFLAGS_GCC_OPTION([-fdiagnostics-color=auto])
-AX_CFLAGS_GCC_OPTION([-pipe])
-AX_CFLAGS_GCC_OPTION([-Wall])
-AX_CFLAGS_GCC_OPTION([-W])
-AX_CFLAGS_GCC_OPTION([-Wextra])
-AX_CFLAGS_GCC_OPTION([-Wformat])
-AX_CFLAGS_GCC_OPTION([-Wformat-security])
-AX_CFLAGS_GCC_OPTION([-Wfatal-errors])
-AX_CFLAGS_GCC_OPTION([-Wcast-align])
-AX_CFLAGS_GCC_OPTION([-Winline])
-AX_CFLAGS_GCC_OPTION([-fstack-protector])
-AX_CFLAGS_GCC_OPTION([-fstack-protector-strong])
-AX_CFLAGS_GCC_OPTION([-fno-omit-frame-pointer])
-AX_CFLAGS_GCC_OPTION([-D_FORTIFY_SOURCE=2], [CPPFLAGS])
-AX_CFLAGS_GCC_OPTION([-Wno-unused-parameter])
-AX_CFLAGS_GCC_OPTION([-Wno-missing-field-initializers])
-AX_CFLAGS_GCC_OPTION([-Wno-sign-compare]) dnl Should be fixed later
-AX_LDFLAGS_OPTION([-Wl,-z,relro])
-AX_LDFLAGS_OPTION([-Wl,-z,now])
+AX_CFLAGS_GCC_OPTION([-fdiagnostics-show-option], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-fdiagnostics-color=auto], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-pipe], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-Wall], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-W], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-Wextra], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-Wformat], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-Wformat-security], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-Wfatal-errors], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-Wcast-align], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-Winline], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-fstack-protector], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-fstack-protector-strong], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-fno-omit-frame-pointer], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-D_FORTIFY_SOURCE=2], [LLDP_CPPFLAGS])
+AX_CFLAGS_GCC_OPTION([-Wno-unused-parameter], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-Wno-missing-field-initializers], [LLDP_CFLAGS])
+AX_CFLAGS_GCC_OPTION([-Wno-sign-compare], [LLDP_CFLAGS]) dnl Should be fixed later
+AX_LDFLAGS_OPTION([-Wl,-z,relro], [LLDP_LDFLAGS])
+AX_LDFLAGS_OPTION([-Wl,-z,now], [LLDP_LDFLAGS])
 
 # OS
 lldp_CHECK_OS
@@ -282,12 +282,9 @@ lldp_ARG_ENABLE([oldies], [compatibility with Linux kernel older than 2.6.18], [
 
 #######################
 # Output results
-AC_SUBST([LLDP_CFLAGS], [$CFLAGS])
-AC_SUBST([LLDP_CPPFLAGS], [$CPPFLAGS])
-AC_SUBST([LLDP_LDFLAGS], [$LDFLAGS])
-CFLAGS=
-CPPFLAGS=
-LDFLAGS=
+AC_SUBST([LLDP_CFLAGS])
+AC_SUBST([LLDP_CPPFLAGS])
+AC_SUBST([LLDP_LDFLAGS])
 AM_CONDITIONAL([HAVE_CHECK], [test x"$have_check" = x"yes"])
 AM_CONDITIONAL([USE_SNMP], [test x"$with_snmp" = x"yes"])
 AM_CONDITIONAL([USE_XML], [test x"$with_xml" = x"yes"])
@@ -309,8 +306,8 @@ cat <<EOF
  $PACKAGE_NAME version $PACKAGE_VERSION
   OS.............: $os
   Prefix.........: $prefix
-  C Compiler.....: $CC $LLDP_CFLAGS $LLDP_CPPFLAGS
-  Linker.........: $LD $LLDP_LDFLAGS $LIBS
+  C Compiler.....: $CC $LLDP_CFLAGS $LLDP_CPPFLAGS $CFLAGS $CPPFLAGS
+  Linker.........: $LD $LLDP_LDFLAGS $LDFLAGS $LIBS
   Libevent.......: $libevent
   Readline.......: ${ax_cv_lib_readline}
  Optional features:
index c01daefabeecef5016df6f0ac461f9f0c2bfa11f..54c9f6e365c384de5c3d31311942498b27d50223 100644 (file)
@@ -28,9 +28,6 @@
 #     - $3 action-if-found : add value to shellvariable
 #     - $4 action-if-not-found : nothing
 #
-#   Note: in earlier versions, $1-$2 were swapped. We try to detect the
-#   situation and accept a $2=~/-/ as being the old option-to-check-for.
-#
 #   There are other variants that emerged from the original macro variant
 #   which did just test an option to be possibly added. However, some
 #   compilers accept an option silently, or possibly for just another option
 #   also understood by compilers who just want to be compatible with gcc
 #   even when not being made from gcc sources.
 #
+#   This version has been modified by Vincent Bernat <bernat@luffy.cx>
+#   to ensure that the shell variable the option is added to is
+#   prepended to the test variable (like a regular CFLAGS).
+#
 #   See also: AX_CFLAGS_SUN_OPTION, AX_CFLAGS_HPUX_OPTION,
 #   AX_CFLAGS_AIX_OPTION, and AX_CFLAGS_IRIX_OPTION.
 #
 #   modified version of the Autoconf Macro, you may extend this special
 #   exception to the GPL to apply to your modified version as well.
 
-AC_DEFUN([AX_CFLAGS_GCC_OPTION_OLD], [dnl
-AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl
-AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_gcc_option_$2])dnl
-AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)],
-VAR,[AS_VAR_SET([VAR], ["no, unknown"])
- AC_LANG_SAVE
- AC_LANG_C
- ac_save_[]FLAGS="$[]FLAGS"
-for ac_arg dnl
-in "-pedantic -Werror % m4_ifval($2,$2,-option)"  dnl   GCC
-   "-pedantic % m4_ifval($2,$2,-option) %% no, obsolete"  dnl new GCC
-   #
-do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
-   AC_TRY_COMPILE([],[return 0;],
-   [AS_VAR_SET([VAR],[`echo $ac_arg | sed -e 's,.*% *,,'`]) ; break])
-done
- FLAGS="$ac_save_[]FLAGS"
- AC_LANG_RESTORE
-])
-AS_VAR_COPY([ac_res], [VAR])
-case ".${ac_res}" in
-     .ok|.ok,*) m4_ifvaln($3,$3) ;;
-   .|.no|.no,*) m4_ifvaln($4,$4) ;;
-   *) m4_ifvaln($3,$3,[
-   if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " ${ac_res} " 2>&1 >/dev/null
-   then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain ${ac_res}])
-   else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) ${ac_res}"])
-                      m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) ${ac_res}"
-   fi ]) ;;
-esac
-AS_VAR_POPDEF([VAR])dnl
-AS_VAR_POPDEF([FLAGS])dnl
-])
-
-
-dnl the only difference - the LANG selection... and the default FLAGS
-
-AC_DEFUN([AX_CXXFLAGS_GCC_OPTION_OLD], [dnl
-AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl
-AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_gcc_option_$2])dnl
-AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)],
-VAR,[AS_VAR_SET([VAR],["no, unknown"])
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- ac_save_[]FLAGS="$[]FLAGS"
-for ac_arg dnl
-in "-pedantic -Werror % m4_ifval($2,$2,-option)"  dnl   GCC
-   "-pedantic % m4_ifval($2,$2,-option) %% no, obsolete"  dnl new GCC
-   #
-do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
-   AC_TRY_COMPILE([],[return 0;],
-   [AS_VAR_SET([VAR],[`echo $ac_arg | sed -e 's,.*% *,,'`]) ; break])
-done
- FLAGS="$ac_save_[]FLAGS"
- AC_LANG_RESTORE
-])
-AS_VAR_COPY([ac_res], [VAR])
-case ".${ac_res}" in
-     .ok|.ok,*) m4_ifvaln($3,$3) ;;
-   .|.no|.no,*) m4_ifvaln($4,$4) ;;
-   *) m4_ifvaln($3,$3,[
-   if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " ${VAR} " 2>&1 >/dev/null
-   then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain ${ac_res}])
-   else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) ${ac_res}"])
-                      m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) ${ac_res}"
-   fi ]) ;;
-esac
-AS_VAR_POPDEF([VAR])dnl
-AS_VAR_POPDEF([FLAGS])dnl
-])
-
 dnl -------------------------------------------------------------------------
 
-AC_DEFUN([AX_CFLAGS_GCC_OPTION_NEW], [dnl
+AC_DEFUN([AX_CFLAGS_GCC_OPTION], [dnl
 AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl
 AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_gcc_option_$1])dnl
-AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)],
+AC_CACHE_CHECK([FLAGS for gcc m4_ifval($1,$1,-option)],
 VAR,[AS_VAR_SET([VAR],["no, unknown"])
  AC_LANG_SAVE
  AC_LANG_C
@@ -157,44 +87,7 @@ for ac_arg dnl
 in "-pedantic -Werror % m4_ifval($1,$1,-option)"  dnl   GCC
    "-pedantic % m4_ifval($1,$1,-option) %% no, obsolete"  dnl new GCC
    #
-do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
-   AC_TRY_COMPILE([],[return 0;],
-   [AS_VAR_SET([VAR],[`echo $ac_arg | sed -e 's,.*% *,,'`]) ; break])
-done
- FLAGS="$ac_save_[]FLAGS"
- AC_LANG_RESTORE
-])
-AS_VAR_COPY([ac_res], [VAR])
-case ".${ac_res}" in
-     .ok|.ok,*) m4_ifvaln($3,$3) ;;
-   .|.no|.no,*) m4_ifvaln($4,$4) ;;
-   *) m4_ifvaln($3,$3,[
-   if echo " $[]m4_ifval($2,$2,FLAGS) " | grep " ${ac_res} " 2>&1 >/dev/null
-   then AC_RUN_LOG([: m4_ifval($2,$2,FLAGS) does contain ${ac_res}])
-   else AC_RUN_LOG([: m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) ${ac_res}"])
-                      m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) ${ac_res}"
-   fi ]) ;;
-esac
-AS_VAR_POPDEF([VAR])dnl
-AS_VAR_POPDEF([FLAGS])dnl
-])
-
-
-dnl the only difference - the LANG selection... and the default FLAGS
-
-AC_DEFUN([AX_CXXFLAGS_GCC_OPTION_NEW], [dnl
-AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl
-AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_gcc_option_$1])dnl
-AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)],
-VAR,[AS_VAR_SET([VAR],["no, unknown"])
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- ac_save_[]FLAGS="$[]FLAGS"
-for ac_arg dnl
-in "-pedantic -Werror % m4_ifval($1,$1,-option)"  dnl   GCC
-   "-pedantic % m4_ifval($1,$1,-option) %% no, obsolete"  dnl new GCC
-   #
-do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
+do FLAGS="$ac_save_[]FLAGS $[]m4_ifval($2,$2,) "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
    AC_TRY_COMPILE([],[return 0;],
    [AS_VAR_SET([VAR],[`echo $ac_arg | sed -e 's,.*% *,,'`]) ; break])
 done
@@ -215,9 +108,3 @@ esac
 AS_VAR_POPDEF([VAR])dnl
 AS_VAR_POPDEF([FLAGS])dnl
 ])
-
-AC_DEFUN([AX_CFLAGS_GCC_OPTION],[ifelse(m4_bregexp([$2],[-]),-1,
-[AX_CFLAGS_GCC_OPTION_NEW($@)],[AX_CFLAGS_GCC_OPTION_OLD($@)])])
-
-AC_DEFUN([AX_CXXFLAGS_GCC_OPTION],[ifelse(m4_bregexp([$2],[-]),-1,
-[AX_CXXFLAGS_GCC_OPTION_NEW($@)],[AX_CXXFLAGS_GCC_OPTION_OLD($@)])])
index 2f560c68e4f341e6c76327458080db4d7b061a31..4d59c9d190798eb7a49a2532349d12adf2725cea 100644 (file)
@@ -4,26 +4,19 @@
 #
 # SYNOPSIS
 #
-#   AX_LD_CHECK_FLAG(FLAG-TO-CHECK,[PROLOGUE],[BODY],[ACTION-IF-SUCCESS],[ACTION-IF-FAILURE])
+#   AX_LDFLAGS_OPTION(FLAG-TO-CHECK,[VAR])
 #
 # DESCRIPTION
 #
-#   This macro tests if the C++ compiler supports the flag FLAG-TO-CHECK. If
-#   successfull execute ACTION-IF-SUCCESS otherwise ACTION-IF-FAILURE.
-#   PROLOGUE and BODY are optional and should be used as in AC_LANG_PROGRAM
-#   macro.
-#
-#   Example:
-#
-#     AX_LD_CHECK_FLAG([-Wl,-L/usr/lib],[],[],[
-#       ...
-#     ],[
-#       ...
-#     ])
+#   This macro tests if the C compiler supports the flag FLAG-TO-CHECK. If
+#   successfull add it to VAR.
 #
 #   This code is inspired from KDE_CHECK_COMPILER_FLAG macro. Thanks to
 #   Bogdan Drozdowski <bogdandr@op.pl> for testing and bug fixes.
 #
+#   This version has been (heavily) modified by Vincent Bernat
+#   <bernat@luffy.cx> to match AX_CFLAGS_GCC_OPTION.
+#
 # LICENSE
 #
 #   Copyright (c) 2008 Francesco Salvestrini <salvestrini@users.sourceforge.net>
@@ -56,9 +49,8 @@
 
 #serial 6
 
-AC_DEFUN([AX_LD_CHECK_FLAG],[
+AC_DEFUN([AX_LDFLAGS_OPTION],[
   AC_PREREQ([2.61])
-  AC_REQUIRE([AC_PROG_CXX])
   AC_REQUIRE([AC_PROG_SED])
 
   flag=`echo "$1" | $SED 'y% .=/+-(){}<>:*,%_______________%'`
@@ -66,12 +58,13 @@ AC_DEFUN([AX_LD_CHECK_FLAG],[
   AC_CACHE_CHECK([whether the linker accepts the $1 flag],
     [ax_cv_ld_check_flag_$flag],[
 
-    #AC_LANG_PUSH([C])
+    AC_LANG_SAVE
+    AC_LANG_C
 
     save_LDFLAGS="$LDFLAGS"
-    LDFLAGS="$LDFLAGS $1"
+    LDFLAGS="$LDFLAGS $[]m4_ifval($2,$2,) $1"
     AC_LINK_IFELSE([
-      AC_LANG_PROGRAM([$2],[$3])
+      AC_LANG_PROGRAM([],[])
     ],[
       eval "ax_cv_ld_check_flag_$flag=yes"
     ],[
@@ -80,18 +73,11 @@ AC_DEFUN([AX_LD_CHECK_FLAG],[
 
     LDFLAGS="$save_LDFLAGS"
 
-    #AC_LANG_POP
+    AC_LANG_RESTORE
 
   ])
 
   AS_IF([eval "test \"`echo '$ax_cv_ld_check_flag_'$flag`\" = yes"],[
-    :
-    $4
-  ],[
-    :
-    $5
+    m4_ifval($2,$2,LDFLAGS)="$[]m4_ifval($2,$2,LDFLAGS) $1"
   ])
 ])
-
-AC_DEFUN([AX_LDFLAGS_OPTION],[
-  AX_LD_CHECK_FLAG([$1],[],[],[LDFLAGS="$LDFLAGS $1"])])
index 521d17939bc0caa6d1348ceb095806991da0a6da..feaa49a3df5584f340f5477b977da80a47c39fc0 100644 (file)
--- a/m4/os.m4
+++ b/m4/os.m4
@@ -35,16 +35,16 @@ AC_DEFUN([lldp_CHECK_OS], [
 # Enable some additional CFLAGS depending on the OS
 AC_DEFUN([lldp_CFLAGS_OS], [
   # Most of what we want can be enabled nowadays with _GNU_SOURCE
-  AX_CFLAGS_GCC_OPTION([-D_GNU_SOURCE], [CPPFLAGS])    dnl GNU systems (asprintf, ...)
+  AX_CFLAGS_GCC_OPTION([-D_GNU_SOURCE], [LLDP_CPPFLAGS])    dnl GNU systems (asprintf, ...)
 
   case $host_os in
      solaris*)
-       AX_CFLAGS_GCC_OPTION([-D__EXTENSIONS__], [CPPFLAGS]) dnl (CMSG_*)
-       AX_CFLAGS_GCC_OPTION([-D_XPG4_2], [CPPFLAGS])        dnl (CMSG_*)
+       AX_CFLAGS_GCC_OPTION([-D__EXTENSIONS__], [LLDP_CPPFLAGS]) dnl (CMSG_*)
+       AX_CFLAGS_GCC_OPTION([-D_XPG4_2], [LLDP_CPPFLAGS])        dnl (CMSG_*)
        ;;
      hpux*)
-       AX_CFLAGS_GCC_OPTION([-D_XOPEN_SOURCE=500], [CPPFLAGS])      dnl HP-UX
-       AX_CFLAGS_GCC_OPTION([-D_XOPEN_SOURCE_EXTENDED], [CPPFLAGS]) dnl HP-UX
+       AX_CFLAGS_GCC_OPTION([-D_XOPEN_SOURCE=500], [LLDP_CPPFLAGS])      dnl HP-UX
+       AX_CFLAGS_GCC_OPTION([-D_XOPEN_SOURCE_EXTENDED], [LLDP_CPPFLAGS]) dnl HP-UX
        ;;
   esac
 ])