From 8e59da179d7cb8a4ca7ef52bc0e9da450b7bcfdb Mon Sep 17 00:00:00 2001 From: lottaviano Date: Mon, 20 Dec 2010 12:10:41 +0000 Subject: [PATCH] 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 --- bertos/config.mk | 4 +++- bertos/rules.mk | 11 +---------- examples/demo/demo.mk | 4 ++++ 3 files changed, 8 insertions(+), 11 deletions(-) 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 -- 2.25.1