Remove kludge for c++.
authorlottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Mon, 20 Dec 2010 12:10:41 +0000 (12:10 +0000)
committerlottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Mon, 20 Dec 2010 12:10:41 +0000 (12:10 +0000)
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

bertos/config.mk
bertos/rules.mk
examples/demo/demo.mk

index 38a8a5d75e63c6860c458b0233ed32af8a10f6a7..1d75dc0b48b3b4a603b92e21e3fe51d0449331e8 100644 (file)
@@ -82,12 +82,14 @@ WARNFLAGS = \
 C_WARNFLAGS = \
        -Wmissing-prototypes -Wstrict-prototypes
 
 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) \
 # 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) \
 
 # Default C++ compiler flags
 CXXFLAGS = $(OPTCFLAGS) $(DEBUGCFLAGS) $(WARNFLAGS) \
index 8ec098ae375aeb22f446c65de59676a2e3f86a05..6b858474124b85b6cbdbf5a991af093e369e438d 100644 (file)
@@ -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)
 
 $(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 $$@)
 # 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
 
 # Compile: instructions to create assembler and/or object files from C++ source
 $$($(1)_CXXOBJ) : $$(OBJDIR)/$(1)/%.o : %.cpp
index 1e687b5bb10a3c4cf5892d66dfc5adb6979f779c..b9ded303b5459801e54ff593bfe1c272638f45b3 100644 (file)
@@ -67,6 +67,10 @@ demo_CSRC = \
 demo_CPPASRC = \
        bertos/emul/switch_ctx_emul.S
 
 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
 # 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