Skip to content

Commit f7398f6

Browse files
author
Pham Huu Dang Nhat
committed
Changed RIOT/Makefile.include, Makefile.base, Makefile.cflags, and native/Makefile.include to compile C and C++ files.
1 parent 63c74fc commit f7398f6

File tree

4 files changed

+31
-3
lines changed

4 files changed

+31
-3
lines changed

Makefile.base

+16-1
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,19 @@ ASMOBJ += $(ASSMSRC:%.S=$(BINDIR)$(MODULE)/%.o)
3030
ifeq ($(strip $(SRC)),)
3131
SRC = $(wildcard *.c)
3232
endif
33-
OBJ = $(SRC:%.c=$(BINDIR)$(MODULE)/%.o)
33+
34+
ifeq ($(strip $(SRCXX)),)
35+
SRCXX = $(wildcard *.cpp)
36+
endif
37+
38+
OBJC = $(SRC:%.c=$(BINDIR)$(MODULE)/%.o)
39+
OBJCXX = $(SRCXX:%.cpp=$(BINDIR)$(MODULE)/%.o)
40+
41+
OBJ = $(OBJC)
42+
OBJ += $(OBJCXX)
43+
3444
DEP = $(SRC:%.c=$(BINDIR)$(MODULE)/%.d)
45+
DEP += $(SRCXX:%.cpp=$(BINDIR)$(MODULE)/%.d)
3546

3647
$(BINDIR)$(MODULE).a: $(OBJ) $(ASMOBJ) ${DIRS:%=ALL--%}
3748
@mkdir -p $(BINDIR)$(MODULE)
@@ -46,6 +57,10 @@ $(BINDIR)$(MODULE)/%.o: %.c
4657
@mkdir -p $(BINDIR)$(MODULE)
4758
$(AD)$(CC) $(CFLAGS) $(INCLUDES) -MD -MP -c -o $(BINDIR)$(MODULE)/$*.o $(abspath $*.c)
4859

60+
$(BINDIR)$(MODULE)/%.o: %.cpp
61+
@mkdir -p $(BINDIR)$(MODULE)
62+
$(AD)$(CXX) $(filter-out $(CXXUWFLAGS), $(CFLAGS)) $(CXXEXFLAGS) $(INCLUDES) -MD -MP -c -o $(BINDIR)$(MODULE)/$*.o $(abspath $*.cpp)
63+
4964
$(BINDIR)$(MODULE)/%.o: %.s
5065
@mkdir -p $(BINDIR)$(MODULE)
5166
$(AD)$(AS) $(ASFLAGS) $*.s -o $(BINDIR)$(MODULE)/$*.o

Makefile.cflags

+3
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,6 @@ ifeq ($(shell $(CC) -Wstrict-prototypes -Werror=strict-prototypes -Wold-style-de
2929
# duplicated parameters don't hurt
3030
CFLAGS += -Wstrict-prototypes -Werror=strict-prototypes -Wold-style-definition -Werror=old-style-definition
3131
endif
32+
33+
# Unwanted flags for c++
34+
CXXUWFLAGS += -std=gnu99 -std=c99 -Wstrict-prototypes -Wold-style-definition

Makefile.include

+7-2
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,19 @@ BASELIBS += $(USEPKG:%=${BINDIR}%.a)
9090
export ELFFILE ?= $(BINDIR)$(APPLICATION).elf
9191
export HEXFILE ?= $(ELFFILE:.elf=.hex)
9292

93+
# variables used to complie and link c++
94+
export CPPMIX ?= $(if $(wildcard *.cpp),1,)
95+
export CXXUWFLAGS
96+
export CXXEXFLAGS
97+
9398
## make script for your application. Build RIOT-base here!
9499
all: ..build-message $(USEPKG:%=${BINDIR}%.a) $(APPDEPS)
95100
$(AD)DIRS="$(DIRS)" "$(MAKE)" -C $(CURDIR) -f $(RIOTBASE)/Makefile.application
96101
ifeq (,$(RIOTNOLINK))
97102
ifeq ($(BUILDOSXNATIVE),1)
98-
$(AD)$(LINK) $(UNDEF) -o $(ELFFILE) $(BASELIBS) $(LINKFLAGS) -Wl,-no_pie
103+
$(AD)$(if $(CPPMIX),$(CXX),$(LINK)) $(UNDEF) -o $(ELFFILE) $(BASELIBS) $(LINKFLAGS) -Wl,-no_pie
99104
else
100-
$(AD)$(LINK) $(UNDEF) -o $(ELFFILE) -Wl,--start-group $(BASELIBS) -lm -Wl,--end-group -Wl,-Map=$(BINDIR)$(APPLICATION).map $(LINKFLAGS)
105+
$(AD)$(if $(CPPMIX),$(CXX),$(LINK)) $(UNDEF) -o $(ELFFILE) -Wl,--start-group $(BASELIBS) -lm -Wl,--end-group -Wl,-Map=$(BINDIR)$(APPLICATION).map $(LINKFLAGS)
101106
endif
102107
$(AD)$(SIZE) $(ELFFILE)
103108
$(AD)$(OBJCOPY) $(OFLAGS) $(ELFFILE) $(HEXFILE)

boards/native/Makefile.include

+5
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export ELF = $(BINDIR)$(APPLICATION).elf
1010
# toolchain:
1111
export PREFIX =
1212
export CC ?= $(PREFIX)gcc
13+
export CXX ?= $(PREFIX)g++
1314
export AR ?= $(PREFIX)ar
1415
export AS ?= $(PREFIX)as
1516
export LINK ?= $(PREFIX)gcc
@@ -31,6 +32,10 @@ export CFLAGS += -DCOMPAT_32BIT -L/usr/lib32 -B/usr/lib32
3132
endif
3233
endif
3334

35+
# unwanted (CXXUWFLAGS) and extra (CXXEXFLAGS) flags for c++
36+
export CXXUWFLAGS +=
37+
export CXXEXFLAGS +=
38+
3439
export LINKFLAGS += -m32
3540
ifeq ($(shell uname -s),FreeBSD)
3641
ifeq ($(shell uname -m),amd64)

0 commit comments

Comments
 (0)