diff --git a/configure b/configure
index 77e148cad37ea36e0957365c192ea12d6771b52c..dbc9ceb819495c771e70fc8731c3027e680cc7f4 100755
--- a/configure
+++ b/configure
@@ -513,15 +513,15 @@ append(){
 }
 
 add_cppflags(){
-    append CPPFLAGS "$@"
+    append CPPFLAGS $($filter_cppflags "$@")
 }
 
 add_cflags(){
-    append CFLAGS "$@"
+    append CFLAGS $($filter_cflags "$@")
 }
 
 add_asflags(){
-    append ASFLAGS "$@"
+    append ASFLAGS $($filter_asflags "$@")
 }
 
 add_ldflags(){
@@ -589,14 +589,16 @@ check_ld(){
 
 check_cppflags(){
     log check_cppflags "$@"
-    check_cc "$@" <<EOF && add_cppflags "$@"
+    set -- $($filter_cppflags "$@")
+    check_cc "$@" <<EOF && append CPPFLAGS "$@"
 int x;
 EOF
 }
 
 check_cflags(){
     log check_cflags "$@"
-    check_cc "$@" <<EOF && add_cflags "$@"
+    set -- $($filter_cflags "$@")
+    check_cc "$@" <<EOF && append CFLAGS "$@"
 int x;
 EOF
 }
@@ -1507,6 +1509,10 @@ test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc"
 : ${ld_default:=$cc}
 set_default as dep_cc ld
 
+: ${filter_cflags:=echo}
+: ${filter_cppflags:=echo}
+: ${filter_asflags:=echo}
+
 add_cflags $extra_cflags
 add_asflags $extra_cflags