mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
0c2cfe99e6
Adds a separate board for native64 instead of the `NATIVE_64BIT` workaround. The files in `boards/native64` are more or less dummy files and just include the `boards/native` logic (similar to `openlabs-kw41z-mini-256kib`). The main logic for native is in `makefiles/arch/native.inc.mk`, `cpu/native` and `boards/native`. The remaining changes concern the build system, and change native board checks to native CPU checks to cover both boards.
165 lines
4.1 KiB
Makefile
165 lines
4.1 KiB
Makefile
NATIVEINCLUDES += -DNATIVE_INCLUDES
|
|
NATIVEINCLUDES += -I$(RIOTBASE)/core/lib/include/
|
|
NATIVEINCLUDES += -I$(RIOTBASE)/core/include/
|
|
NATIVEINCLUDES += -I$(RIOTBASE)/sys/include/
|
|
NATIVEINCLUDES += -I$(RIOTBASE)/drivers/include/
|
|
|
|
ifeq ($(OS),Darwin)
|
|
DEBUGGER ?= lldb
|
|
else
|
|
DEBUGGER ?= gdb
|
|
endif
|
|
|
|
|
|
export VALGRIND ?= valgrind
|
|
export CGANNOTATE ?= cg_annotate
|
|
export GPROF ?= gprof
|
|
|
|
# basic cflags:
|
|
CFLAGS += -Wall -Wextra -pedantic $(CFLAGS_DBG) $(CFLAGS_OPT)
|
|
CFLAGS += -U_FORTIFY_SOURCE
|
|
CFLAGS_DBG ?= -g3
|
|
|
|
ifneq (,$(filter backtrace,$(USEMODULE)))
|
|
$(warning module backtrace is used, do not omit frame pointers)
|
|
CFLAGS_OPT ?= -Og -fno-omit-frame-pointer
|
|
else
|
|
CFLAGS_OPT ?= -Og
|
|
endif
|
|
|
|
# default std set to gnu11 if not overwritten by user
|
|
ifeq (,$(filter -std=%, $(CFLAGS)))
|
|
CFLAGS += -std=gnu11
|
|
endif
|
|
|
|
ifeq ($(NATIVE_ARCH_BIT),64)
|
|
CFLAGS += -m64
|
|
LINKFLAGS += -m64
|
|
else ifeq ($(NATIVE_ARCH_BIT),32)
|
|
CFLAGS += -m32
|
|
LINKFLAGS += -m32
|
|
else
|
|
$(error Unsupported native architecture)
|
|
endif
|
|
|
|
ifneq (,$(filter -DDEVELHELP,$(CFLAGS)))
|
|
CFLAGS += -fstack-protector-all
|
|
endif
|
|
ifeq ($(OS),FreeBSD)
|
|
ifeq ($(OS_ARCH),amd64)
|
|
ifeq ($(NATIVE_ARCH_BIT),32)
|
|
CFLAGS += -DCOMPAT_32BIT -B/usr/lib32
|
|
LINKFLAGS += -DCOMPAT_32BIT -L/usr/lib32 -B/usr/lib32
|
|
endif
|
|
endif
|
|
endif
|
|
ifeq ($(OS),Darwin)
|
|
CFLAGS += -Wno-deprecated-declarations
|
|
endif
|
|
|
|
# unwanted (CXXUWFLAGS) and extra (CXXEXFLAGS) flags for c++
|
|
CXXUWFLAGS +=
|
|
CXXEXFLAGS +=
|
|
|
|
ifeq ($(OS),FreeBSD)
|
|
LINKFLAGS += -L $(BINDIR)
|
|
else
|
|
LINKFLAGS += -ldl
|
|
endif
|
|
|
|
# XFA (cross file array) support
|
|
LINKFLAGS += -T$(RIOTBASE)/cpu/native/ldscripts/xfa.ld
|
|
|
|
# fix this warning:
|
|
# ```
|
|
# /usr/bin/ld: examples/hello-world/bin/native/cpu/tramp.o: warning: relocation against `_native_saved_eip' in read-only section `.text'
|
|
# /usr/bin/ld: warning: creating DT_TEXTREL in a PIE
|
|
# ```
|
|
LINKFLAGS += -no-pie
|
|
|
|
# clean up unused functions
|
|
CFLAGS += -ffunction-sections -fdata-sections
|
|
ifeq ($(OS),Darwin)
|
|
LINKFLAGS += -Wl,-dead_strip
|
|
else
|
|
LINKFLAGS += -Wl,--gc-sections
|
|
endif
|
|
LINKFLAGS += -ffunction-sections
|
|
|
|
|
|
ASFLAGS =
|
|
ifeq ($(shell basename $(DEBUGGER)),lldb)
|
|
DEBUGGER_FLAGS = -- $(ELFFILE) $(TERMFLAGS)
|
|
else
|
|
DEBUGGER_FLAGS = -q --args $(ELFFILE) $(TERMFLAGS)
|
|
endif
|
|
term-valgrind: export VALGRIND_FLAGS ?= \
|
|
--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: TERMPROG = GMON_OUT_PREFIX=gmon.out $(ELFFILE)
|
|
all-valgrind: CFLAGS += -DHAVE_VALGRIND_H
|
|
all-valgrind: NATIVEINCLUDES += $(shell pkg-config valgrind --cflags)
|
|
all-gprof: CFLAGS += -pg
|
|
all-gprof: LINKFLAGS += -pg
|
|
|
|
CFLAGS_ASAN += -fsanitize=address -fno-omit-frame-pointer -DNATIVE_MEMORY
|
|
LINKFLAGS_ASAN += -fsanitize=address -fno-omit-frame-pointer
|
|
all-asan: CFLAGS += $(CFLAGS_ASAN)
|
|
all-asan: LINKFLAGS += $(LINKFLAGS_ASAN)
|
|
all-asan: export AFL_USE_ASAN=1
|
|
|
|
INCLUDES += $(NATIVEINCLUDES)
|
|
|
|
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)'),)
|
|
CFLAGS += -DHAVE_NO_BUILTIN_BSWAP16
|
|
endif
|
|
|
|
# clumsy way to enable building native on osx:
|
|
BUILDOSXNATIVE = 0
|
|
ifeq ($(CPU),native)
|
|
ifeq ($(OS),Darwin)
|
|
BUILDOSXNATIVE = 1
|
|
endif
|
|
endif
|
|
|
|
all: # do not override first target
|
|
|
|
all-gprof: all
|
|
|
|
all-asan: all
|
|
|
|
all-valgrind: all
|
|
|
|
all-cachegrind: all
|
|
|
|
term-valgrind:
|
|
$(VALGRIND) $(VALGRIND_FLAGS) $(ELFFILE) $(PORT)
|
|
|
|
debug-valgrind-server:
|
|
$(VALGRIND) $(VALGRIND_FLAGS) $(ELFFILE) $(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) $(ELFFILE) $(PORT)
|
|
|
|
term-gprof: term
|
|
|
|
eval-gprof:
|
|
$(GPROF) $(ELFFILE) $(shell ls -rt gmon.out* | tail -1)
|
|
|
|
eval-cachegrind:
|
|
$(CGANNOTATE) $(shell ls -rt cachegrind.out* | tail -1)
|