1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/boards/native/Makefile.include

186 lines
4.7 KiB
Makefile
Raw Normal View History

export NATIVEINCLUDES += -DNATIVE_INCLUDES
export NATIVEINCLUDES += -I$(RIOTBOARD)/$(BOARD)/include/
export NATIVEINCLUDES += -I$(RIOTBASE)/core/include/
export NATIVEINCLUDES += -I$(RIOTBASE)/drivers/include/
2013-03-19 22:02:22 +01:00
export CPU = native
export ELF = $(BINDIR)/$(APPLICATION).elf
2013-03-19 22:02:22 +01:00
USEMODULE += native-drivers
2014-02-01 13:16:58 +01:00
# toolchain:
export PREFIX =
export CC ?= $(PREFIX)gcc
export CXX ?= $(PREFIX)g++
ifeq ($(LTO),1)
export AR = $(PREFIX)gcc-ar
else
export AR = $(PREFIX)ar
endif
export AS ?= $(PREFIX)as
export LINK ?= $(PREFIX)gcc
export SIZE ?= $(PREFIX)size
2014-11-13 16:00:52 +01:00
ifneq ($(shell uname -s),Darwin)
export OBJCOPY ?= $(PREFIX)objcopy
else
ifeq (0,$(shell which gobjcopy 2>&1 > /dev/null ; echo $$?))
export OBJCOPY ?= gobjcopy
2014-11-13 16:00:52 +01:00
export OFLAGS ?= -O ihex
else
# If gobjcopy is not available, just create an empty file. The hexfile
# is not used for native anyways.
export OBJCOPY ?= touch
export OFLAGS =
endif
2014-11-13 16:00:52 +01:00
endif
2013-03-19 22:02:22 +01:00
ifeq ($(shell uname -s),Darwin)
export DEBUGGER ?= lldb
else
export DEBUGGER ?= gdb
endif
export TERMPROG ?= $(ELF)
2014-02-01 13:16:58 +01:00
export FLASHER = true
2013-12-02 11:00:43 +01:00
export VALGRIND ?= valgrind
2014-03-14 12:56:44 +01:00
export CGANNOTATE ?= cg_annotate
export GPROF ?= gprof
2013-03-19 22:02:22 +01:00
# basic cflags:
2016-09-06 00:16:40 +02:00
export CFLAGS += -Wall -Wextra -pedantic -std=gnu99
2014-08-29 18:30:37 +02:00
ifeq ($(shell uname -m),x86_64)
export CFLAGS += -m32
endif
ifneq (,$(filter -DDEVELHELP,$(CFLAGS)))
export CFLAGS += -fstack-protector-all
endif
ifeq ($(shell uname -s),FreeBSD)
ifeq ($(shell uname -m),amd64)
export CFLAGS += -m32 -DCOMPAT_32BIT -B/usr/lib32
endif
endif
ifeq ($(shell uname -s),Darwin)
export CFLAGS += -Wno-deprecated-declarations
endif
# unwanted (CXXUWFLAGS) and extra (CXXEXFLAGS) flags for c++
export CXXUWFLAGS +=
export CXXEXFLAGS +=
2014-08-29 18:30:37 +02:00
ifeq ($(shell uname -m),x86_64)
export LINKFLAGS += -m32
2014-08-29 18:30:37 +02:00
endif
ifeq ($(shell uname -s),FreeBSD)
ifeq ($(shell uname -m),amd64)
export LINKFLAGS += -m32 -DCOMPAT_32BIT -L/usr/lib32 -B/usr/lib32
endif
export LINKFLAGS += -L $(BINDIR)
else
export LINKFLAGS += -ldl
endif
# clean up unused functions
export CFLAGS += -ffunction-sections -fdata-sections
ifeq ($(shell uname -s),Darwin)
export LINKFLAGS += -Wl,-dead_strip
else
export LINKFLAGS += -Wl,--gc-sections
endif
export LINKFLAGS += -ffunction-sections
# set the tap interface for term/valgrind
ifneq (,$(filter netdev_default gnrc_netdev_default,$(USEMODULE)))
export PORT ?= tap0
else
export PORT =
endif
2015-02-20 14:44:16 +01:00
export TERMFLAGS := $(PORT) $(TERMFLAGS)
2014-02-01 13:16:58 +01:00
export ASFLAGS =
2016-10-25 09:31:40 +02:00
ifeq ($(shell basename $(DEBUGGER)),lldb)
export DEBUGGER_FLAGS = -- $(ELF) $(TERMFLAGS)
else
2016-04-22 12:00:10 +02:00
export DEBUGGER_FLAGS = -q --args $(ELF) $(TERMFLAGS)
2016-10-25 09:31:40 +02:00
endif
term-valgrind: export VALGRIND_FLAGS ?= \
2016-06-01 22:33:33 +02:00
--leak-check=full \
--track-origins=yes \
--fullpath-after=$(RIOTBASE)/ \
--read-var-info=yes
debug-valgrind-server: export VALGRIND_FLAGS ?= --vgdb=yes --vgdb-error=0 -v \
--leak-check=full --track-origins=yes --fullpath-after=${RIOTBASE} \
--read-var-info=yes
term-cachegrind: export CACHEGRIND_FLAGS += --tool=cachegrind
term-gprof: export TERMPROG = GMON_OUT_PREFIX=gmon.out $(ELF)
all-valgrind: export CFLAGS += -DHAVE_VALGRIND_H -g
all-valgrind: export NATIVEINCLUDES += $(shell pkg-config valgrind --cflags)
all-debug: export CFLAGS += -g
all-cachegrind: export CFLAGS += -g
all-gprof: export CFLAGS += -pg
all-gprof: export LINKFLAGS += -pg
all-asan: export CFLAGS += -fsanitize=address -fno-omit-frame-pointer -g
all-asan: export CFLAGS += -DNATIVE_IN_CALLOC
all-asan: export LINKFLAGS += -fsanitize=address -fno-omit-frame-pointer -g
export INCLUDES += $(NATIVEINCLUDES)
2016-11-18 13:40:47 +01:00
export CFLAGS += -DDEBUG_ASSERT_VERBOSE
# workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52624
ifneq ($(shell gcc --version | head -1 | grep -E ' (4.6|4.7)'),)
export CFLAGS += -DHAVE_NO_BUILTIN_BSWAP16
endif
# backward compatability with glibc <= 2.17 for native
ifeq ($(CPU),native)
ifeq ($(shell uname -s),Linux)
ifeq ($(shell ldd --version | awk '/^ldd/{if ($$NF < 2.17) {print "yes"} else {print "no"} }'),yes)
LINKFLAGS += -lrt
endif
endif
endif
# clumsy way to enable building native on osx:
BUILDOSXNATIVE = 0
ifeq ($(CPU),native)
ifeq ($(shell uname -s),Darwin)
BUILDOSXNATIVE = 1
endif
endif
2013-12-02 11:00:43 +01:00
all: # do not override first target
2014-04-22 16:53:08 +02:00
all-debug: all
all-gprof: all
all-asan: all
2013-12-02 11:00:43 +01:00
all-valgrind: all
all-cachegrind: all
term-valgrind:
2013-12-02 11:00:43 +01:00
$(VALGRIND) $(VALGRIND_FLAGS) $(ELF) $(PORT)
debug-valgrind-server:
$(VALGRIND) $(VALGRIND_FLAGS) $(ELF) $(PORT)
debug-valgrind:
$(eval VALGRIND_PID ?= $(shell pgrep -n memcheck-x86-li -u ${USER} | cut -d" " -f1))
$(eval DEBUGGER_FLAGS := -ex "target remote | vgdb --pid=${VALGRIND_PID}" $(DEBUGGER_FLAGS))
$(DEBUGGER) $(DEBUGGER_FLAGS)
term-cachegrind:
$(VALGRIND) $(CACHEGRIND_FLAGS) $(ELF) $(PORT)
term-gprof: term
eval-gprof:
2014-03-14 12:56:44 +01:00
$(GPROF) $(ELF) $(shell ls -rt gmon.out* | tail -1)
eval-cachegrind:
2014-03-14 12:56:44 +01:00
$(CGANNOTATE) $(shell ls -rt cachegrind.out* | tail -1)
export UNDEF += $(BINDIR)/cpu/startup.o