]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
build-sys: don't set CFLAGS and LDFLAGS
authorLucas De Marchi <lucas.demarchi@profusion.mobi>
Sat, 17 Mar 2012 18:12:44 +0000 (15:12 -0300)
committerLucas De Marchi <lucas.demarchi@profusion.mobi>
Mon, 19 Mar 2012 04:17:05 +0000 (01:17 -0300)
These variables are supposed to be set by user. What we can do in
configure is to set another variable and AC_SUBST() it. Then in
Makefile.am we assign it to AM_{CFLAGS,LDFLAGS}. This way user can
always override their values, in configure or make phase.

Reference: http://www.gnu.org/software/automake/manual/html_node/Flag-Variables-Ordering.html

Makefile.am
configure.ac
m4/attributes.m4

index b2a46fac59266574791d0378dcbfa8e87bc89322..68d2bd1f00b0e398d2b7310d1cfafcc8ac52f9ec 100644 (file)
@@ -14,14 +14,8 @@ AM_CPPFLAGS = \
        -DLIBEXECDIR=\""$(libexecdir)"\" \
        ${zlib_CFLAGS}
 
-AM_CFLAGS = \
-       -fvisibility=hidden \
-       -ffunction-sections \
-       -fdata-sections
-
-AM_LDFLAGS = \
-       -Wl,--gc-sections \
-       -Wl,--as-needed
+AM_CFLAGS = $(WARNINGFLAGS)
+AM_LDFLAGS = $(GCLDFLAGS)
 
 SED_PROCESS = \
        $(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(SED) \
index 72df628d820209aeab3f5080f196cae50a9f778a..21d7f2281a143453b8fcb13920ac77d32cfe67e7 100644 (file)
@@ -113,54 +113,56 @@ AM_CONDITIONAL([ENABLE_GTK_DOC], false)])
 # Default CFLAGS and LDFLAGS
 #####################################################################
 
-CC_CHECK_CFLAGS_APPEND([ \
-                       -pipe \
-                       -DANOTHER_BRICK_IN_THE \
-                       -Wall \
-                       -W \
-                       -Wextra \
-                       -Wno-inline \
-                       -Wvla \
-                       -Wundef \
-                       -Wformat=2 \
-                       -Wlogical-op \
-                       -Wsign-compare \
-                       -Wformat-security \
-                       -Wmissing-include-dirs \
-                       -Wformat-nonliteral \
-                       -Wold-style-definition \
-                       -Wpointer-arith \
-                       -Winit-self \
-                       -Wdeclaration-after-statement \
-                       -Wfloat-equal \
-                       -Wmissing-prototypes \
-                       -Wstrict-prototypes \
-                       -Wredundant-decls \
-                       -Wmissing-declarations \
-                       -Wmissing-noreturn \
-                       -Wshadow \
-                       -Wendif-labels \
-                       -Wstrict-aliasing=2 \
-                       -Wwrite-strings \
-                       -Wno-long-long \
-                       -Wno-overlength-strings \
-                       -Wno-unused-parameter \
-                       -Wno-missing-field-initializers \
-                       -Wno-unused-result \
-                       -Wnested-externs \
-                       -Wchar-subscripts \
-                       -Wtype-limits \
-                       -Wuninitialized \
-                       -fno-common \
-                       -fdiagnostics-show-option \
-                       -fvisibility=hidden \
-                       -ffunction-sections \
-                       -fdata-sections])
-
-CC_CHECK_LDFLAGS_APPEND([ \
-                        -Wl,--as-needed \
-                        -Wl,--gc-sections])
-
+CC_CHECK_FLAGS_APPEND(with_cflags, [CFLAGS], [\
+                      -pipe \
+                      -DANOTHER_BRICK_IN_THE \
+                      -Wall \
+                      -W \
+                      -Wextra \
+                      -Wno-inline \
+                      -Wvla \
+                      -Wundef \
+                      -Wformat=2 \
+                      -Wlogical-op \
+                      -Wsign-compare \
+                      -Wformat-security \
+                      -Wmissing-include-dirs \
+                      -Wformat-nonliteral \
+                      -Wold-style-definition \
+                      -Wpointer-arith \
+                      -Winit-self \
+                      -Wdeclaration-after-statement \
+                      -Wfloat-equal \
+                      -Wmissing-prototypes \
+                      -Wstrict-prototypes \
+                      -Wredundant-decls \
+                      -Wmissing-declarations \
+                      -Wmissing-noreturn \
+                      -Wshadow \
+                      -Wendif-labels \
+                      -Wstrict-aliasing=2 \
+                      -Wwrite-strings \
+                      -Wno-long-long \
+                      -Wno-overlength-strings \
+                      -Wno-unused-parameter \
+                      -Wno-missing-field-initializers \
+                      -Wno-unused-result \
+                      -Wnested-externs \
+                      -Wchar-subscripts \
+                      -Wtype-limits \
+                      -Wuninitialized \
+                      -fno-common \
+                      -fdiagnostics-show-option \
+                      -fvisibility=hidden \
+                      -ffunction-sections \
+                      -fdata-sections])
+AC_SUBST([WARNINGFLAGS], $with_cflags)
+
+
+CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [ \
+                      -Wl,--as-needed \
+                      -Wl,--gc-sections])
+AC_SUBST([GCLDFLAGS], $with_ldflags)
 
 #####################################################################
 # Generate files from *.in
@@ -191,8 +193,8 @@ AC_MSG_RESULT([
        bindir:                 ${bindir}
 
        compiler:               ${CC}
-       cflags:                 ${CFLAGS}
-       ldflags:                ${LDFLAGS}
+       cflags:                 ${with_cflags} ${CFLAGS}
+       ldflags:                ${with_ldflags} ${LDFLAGS}
 
        tools:                  ${enable_tools}
        logging:                ${enable_logging}
index 20d05e4bde8869db5022da1b1bebe9480dd03dbb..c80ae62ede635d3b1fccc22fd69f30c9f7f04250 100644 (file)
@@ -1,6 +1,7 @@
 dnl Macros to check the presence of generic (non-typed) symbols.
 dnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com>
 dnl Copyright (c) 2006-2008 xine project
+dnl Copyright (c) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com>
 dnl
 dnl This program is free software; you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
@@ -32,58 +33,34 @@ dnl distribute a modified version of the Autoconf Macro, you may extend
 dnl this special exception to the GPL to apply to your modified version as
 dnl well.
 
-dnl Check if the flag is supported by compiler
-dnl CC_CHECK_CFLAGS_SILENT([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
-
-AC_DEFUN([CC_CHECK_CFLAGS_SILENT], [
-  AC_CACHE_VAL(AS_TR_SH([cc_cv_cflags_$1]),
-    [ac_save_CFLAGS="$CFLAGS"
-     CFLAGS="$CFLAGS $1"
-     AC_COMPILE_IFELSE([AC_LANG_SOURCE([int a;])],
-       [eval "AS_TR_SH([cc_cv_cflags_$1])='yes'"],
-       [eval "AS_TR_SH([cc_cv_cflags_$1])='no'"])
-     CFLAGS="$ac_save_CFLAGS"
-    ])
-
-  AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
-    [$2], [$3])
+dnl Check if flag in a envvar is supported by compiler and append
+dnl "backup" variable
+dnl CC_CHECK_FLAG_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG])
+AC_DEFUN([CC_CHECK_FLAG_APPEND], [
+  AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2],
+                 AS_TR_SH([cc_cv_$2_$3]),
+                [eval "AS_TR_SH([cc_save_$2])='${$2}'"
+                 eval "AS_TR_SH([$2])='$3'"
+                 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int a = 0; int main(void) { return a; } ])],
+                                    [eval "AS_TR_SH([cc_cv_$2_$3])='yes'"],
+                                    [eval "AS_TR_SH([cc_cv_$2_$3])='no'"])
+                 eval "AS_TR_SH([$2])='$cc_save_$2'"])
+
+  AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes],
+        [eval "$1='${$1} $3'"])
 ])
 
-dnl Check if the flag is supported by compiler (cacheable)
-dnl CC_CHECK_CFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
-
-AC_DEFUN([CC_CHECK_CFLAGS], [
-  AC_CACHE_CHECK([if $CC supports $1 flag],
-    AS_TR_SH([cc_cv_cflags_$1]),
-    CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here!
-  )
-
-  AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
-    [$2], [$3])
+dnl CC_CHECK_FLAGS_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG1 FLAG2])
+AC_DEFUN([CC_CHECK_FLAGS_APPEND], [
+  for flag in $3; do
+    CC_CHECK_FLAG_APPEND($1, $2, $flag)
+  done
 ])
 
-dnl CC_CHECK_CFLAG_APPEND(FLAG, [action-if-found], [action-if-not-found])
-dnl Check for CFLAG and appends them to CFLAGS if supported
-AC_DEFUN([CC_CHECK_CFLAG_APPEND], [
-  AC_CACHE_CHECK([if $CC supports $1 flag],
-    AS_TR_SH([cc_cv_cflags_$1]),
-    CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here!
-  )
-
-  AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
-    [CFLAGS="$CFLAGS $1"; DEBUG_CFLAGS="$DEBUG_CFLAGS $1"; $2], [$3])
-])
 
-dnl CC_CHECK_CFLAGS_APPEND([FLAG1 FLAG2], [action-if-found], [action-if-not])
-AC_DEFUN([CC_CHECK_CFLAGS_APPEND], [
-  for flag in $1; do
-    CC_CHECK_CFLAG_APPEND($flag, [$2], [$3])
-  done
-])
 
 dnl Check if the flag is supported by linker
 dnl CC_CHECK_LDFLAGS_SILENT([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
-
 AC_DEFUN([CC_CHECK_LDFLAGS_SILENT], [
   AC_CACHE_VAL(AS_TR_SH([cc_cv_ldflags_$1]),
     [ac_save_LDFLAGS="$LDFLAGS"
@@ -111,25 +88,6 @@ AC_DEFUN([CC_CHECK_LDFLAGS], [
     [$2], [$3])
 ])
 
-dnl CC_CHECK_LDFLAG_APPEND(FLAG, [action-if-found], [action-if-not-found])
-dnl Check for LDFLAG and appends them to LDFLAGS if supported
-AC_DEFUN([CC_CHECK_LDFLAG_APPEND], [
-  AC_CACHE_CHECK([if $CC supports $1 flag],
-    AS_TR_SH([cc_cv_ldflags_$1]),
-    CC_CHECK_LDFLAGS_SILENT([$1]) dnl Don't execute actions here!
-  )
-
-  AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
-    [LDFLAGS="$LDFLAGS $1"; DEBUG_LDFLAGS="$DEBUG_LDFLAGS $1"; $2], [$3])
-])
-
-dnl CC_CHECK_LDFLAGS_APPEND([FLAG1 FLAG2], [action-if-found], [action-if-not])
-AC_DEFUN([CC_CHECK_LDFLAGS_APPEND], [
-  for flag in $1; do
-    CC_CHECK_LDFLAG_APPEND($flag, [$2], [$3])
-  done
-])
-
 dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
 dnl the current linker to avoid undefined references in a shared object.
 AC_DEFUN([CC_NOUNDEFINED], [