Patchwork make sure compiler supports warning flags

login
register
mail settings
Submitter Mike Frysinger
Date Feb. 25, 2009, 11:38 p.m.
Message ID <1235605127-2024-1-git-send-email-vapier@gentoo.org>
Download mbox | patch
Permalink /patch/23734/
State Accepted, archived
Headers show

Comments

Mike Frysinger - Feb. 25, 2009, 11:38 p.m.
Some compilers (like gcc-3.3) don't support all the newer -W flags that we
are using.  So import the compiler check found in the kernel and test each
flag we add.  The := is important so we only do the compiler tests once
per `make` rather than every time we compile a file.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 common.mk |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)
Artem Bityutskiy - Feb. 26, 2009, 7:43 a.m.
On Wed, 2009-02-25 at 18:38 -0500, Mike Frysinger wrote:
> Some compilers (like gcc-3.3) don't support all the newer -W flags that we
> are using.  So import the compiler check found in the kernel and test each
> flag we add.  The := is important so we only do the compiler tests once
> per `make` rather than every time we compile a file.
> 
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>

Looks fine for me, but I cannot really review this, so lets wait a
little, and if there are no complaints I'll push it. Thanks!
Mike Frysinger - Feb. 26, 2009, 8:28 a.m.
On Thu, Feb 26, 2009 at 02:43, Artem Bityutskiy wrote:
> On Wed, 2009-02-25 at 18:38 -0500, Mike Frysinger wrote:
>> Some compilers (like gcc-3.3) don't support all the newer -W flags that we
>> are using.  So import the compiler check found in the kernel and test each
>> flag we add.  The := is important so we only do the compiler tests once
>> per `make` rather than every time we compile a file.
>>
>> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
>
> Looks fine for me, but I cannot really review this, so lets wait a
> little, and if there are no complaints I'll push it. Thanks!

that's good because i just realized i left stupid debugging echo in there :/
-mike

Patch

diff --git a/common.mk b/common.mk
index 0e8c62b..3ff5cad 100644
--- a/common.mk
+++ b/common.mk
@@ -1,8 +1,18 @@ 
 CC := $(CROSS)gcc
 AR := $(CROSS)ar
 RANLIB := $(CROSS)ranlib
+
+# Stolen from Linux build system
+try-run = $(shell set -e; ($(1)) >/dev/null 2>&1 && echo "$(2)" || echo "$(3)"; echo CHECK $(2) >/dev/stderr)
+cc-option = $(call try-run, $(CC) $(1) -c -xc /dev/null -o /dev/null,$(1),$(2))
+
 CFLAGS ?= -O2 -g
-CFLAGS += -Wall -Wextra -Wwrite-strings -Wno-sign-compare -D_FILE_OFFSET_BITS=64
+WFLAGS := -Wall \
+	$(call cc-option,-Wextra) \
+	$(call cc-option,-Wwrite-strings) \
+	$(call cc-option,-Wno-sign-compare)
+CFLAGS += $(WFLAGS)
+CPPFLAGS += -D_FILE_OFFSET_BITS=64
 
 DESTDIR ?= /usr/local
 PREFIX=/usr