From: lottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Date: Mon, 20 Dec 2010 12:10:41 +0000 (+0000)
Subject: Remove kludge for c++.
X-Git-Tag: 2.7.0~318
X-Git-Url: https://codewiz.org/gitweb?a=commitdiff_plain;h=8e59da179d7cb8a4ca7ef52bc0e9da450b7bcfdb;p=bertos.git

Remove kludge for c++.

The kludge removed warnings when compiling files with c++,
used only in the demo.
However, if the user uses a path to the compiler which
contains '++' somewhere (eg.
CodeSourcery/Sourcery_G++_Lite/bin/arm-none-eabi-"gcc"), the
C specific flags are removed.

This patch solves the issues by clearing out the C specific
flags only in the demo.


git-svn-id: https://src.develer.com/svnoss/bertos/trunk@4643 38d2e660-2303-0410-9eaa-f027e97ec537
---

diff --git a/bertos/config.mk b/bertos/config.mk
index 38a8a5d7..1d75dc0b 100644
--- a/bertos/config.mk
+++ b/bertos/config.mk
@@ -82,12 +82,14 @@ WARNFLAGS = \
 C_WARNFLAGS = \
 	-Wmissing-prototypes -Wstrict-prototypes
 
+C_COMPILER_STD = -std=gnu99
+
 # Default C preprocessor flags (for C, C++ and cpp+as)
 CPPFLAGS = $(INCDIR)
 
 # Default C compiler flags
 CFLAGS = $(OPTCFLAGS) $(DEBUGCFLAGS) $(WARNFLAGS) $(C_WARNFLAGS) \
-	$(DEP_FLAGS) $(LIST_FLAGS) -std=gnu99
+	$(DEP_FLAGS) $(LIST_FLAGS) $(C_COMPILER_STD)
 
 # Default C++ compiler flags
 CXXFLAGS = $(OPTCFLAGS) $(DEBUGCFLAGS) $(WARNFLAGS) \
diff --git a/bertos/rules.mk b/bertos/rules.mk
index 8ec098ae..6b858474 100644
--- a/bertos/rules.mk
+++ b/bertos/rules.mk
@@ -175,20 +175,11 @@ $(1)_OBJ    := $$($(1)_COBJ) $$($(1)_CXXOBJ) $$($(1)_PCOBJ) $$($(1)_AOBJ) $$($(1
 $(1)_SRC    := $$($(1)_CSRC) $$($(1)_CXXSRC) $$($(1)_PCSRC) $$($(1)_ASRC) $$($(1)_CPPASRC)
 OBJ         += $$($(1)_OBJ)
 
-# Sometimes $(CC) is actually set to a C++ compiler in disguise, and it
-# would whine if we passed it C-only flags.  Checking for the presence of
-# "++" in the name is a kludge that seems to work mostly.
-ifeq (++,$$(findstring ++,$$($(1)_CC)))
-        $(1)_REAL_CFLAGS = $$(CXXFLAGS)
-else
-	$(1)_REAL_CFLAGS = $$(CFLAGS)
-endif
-
 # Compile: instructions to create assembler and/or object files from C source
 $$($(1)_COBJ) : $$(OBJDIR)/$(1)/%.o : %.c
 	$L "$(1): Compiling $$< (C)"
 	@$$(MKDIR_P) $$(dir $$@)
-	$Q $$($(1)_CC) -c $$($(1)_REAL_CFLAGS) $$($(1)_CFLAGS) $$($(1)_CPPFLAGS) $$(CPPFLAGS) $$($$(*F)_CFLAGS) $$< -o $$@
+	$Q $$($(1)_CC) -c $$(CFLAGS) $$($(1)_CFLAGS) $$($(1)_CPPFLAGS) $$(CPPFLAGS) $$($$(*F)_CFLAGS) $$< -o $$@
 
 # Compile: instructions to create assembler and/or object files from C++ source
 $$($(1)_CXXOBJ) : $$(OBJDIR)/$(1)/%.o : %.cpp
diff --git a/examples/demo/demo.mk b/examples/demo/demo.mk
index 1e687b5b..b9ded303 100644
--- a/examples/demo/demo.mk
+++ b/examples/demo/demo.mk
@@ -67,6 +67,10 @@ demo_CSRC = \
 demo_CPPASRC = \
 	bertos/emul/switch_ctx_emul.S
 
+# Remove warnings generated by g++
+C_WARNFLAGS =
+C_COMPILER_STD =
+
 # FIXME: maybe this junk should go in emul/emul.mk?
 $(OBJDIR)/demo/bertos/emul/emulwin.o: bertos/emul/emulwin_moc.cpp
 $(OBJDIR)/demo/bertos/drv/lcd_gfx_qt.o: bertos/drv/lcd_gfx_qt_moc.cpp