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
Marian Buschsieweke 4acc9d9c89
boards/native: Drop backward compatibility code for glibc <= 2.17
Even Debian oldstable is now at glibc 2.28, so it is safe to assume that
nobody needs this anymore.

This also fixes garbage on the terminal on musl systems, where
`ldd --version` is not supported (and output on `stderr` was not
redirected to `/dev/null`).
2023-01-09 14:13:59 +01:00

190 lines
4.7 KiB
Makefile

NATIVEINCLUDES += -DNATIVE_INCLUDES
NATIVEINCLUDES += -I$(RIOTBOARD)/native/include/
NATIVEINCLUDES += -I$(RIOTBASE)/core/lib/include/
NATIVEINCLUDES += -I$(RIOTBASE)/core/include/
NATIVEINCLUDES += -I$(RIOTBASE)/drivers/include/
ifeq ($(OS),Darwin)
DEBUGGER ?= lldb
else
DEBUGGER ?= gdb
endif
RESET ?= $(RIOTBOARD)/native/dist/reset.sh
FLASHER ?=
FLASHFILE ?= $(ELFFILE)
TERMPROG ?= $(FLASHFILE)
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 ($(OS_ARCH),x86_64)
CFLAGS += -m32
endif
ifneq (,$(filter -DDEVELHELP,$(CFLAGS)))
CFLAGS += -fstack-protector-all
endif
ifeq ($(OS),FreeBSD)
ifeq ($(OS_ARCH),amd64)
CFLAGS += -m32 -DCOMPAT_32BIT -B/usr/lib32
endif
endif
ifeq ($(OS),Darwin)
CFLAGS += -Wno-deprecated-declarations
endif
# unwanted (CXXUWFLAGS) and extra (CXXEXFLAGS) flags for c++
CXXUWFLAGS +=
CXXEXFLAGS +=
ifeq ($(OS_ARCH),x86_64)
LINKFLAGS += -m32
endif
ifeq ($(OS),FreeBSD)
ifeq ($(OS_ARCH),amd64)
LINKFLAGS += -m32 -DCOMPAT_32BIT -L/usr/lib32 -B/usr/lib32
endif
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
# set the tap interface for term/valgrind
ifneq (,$(filter netdev_tap,$(USEMODULE)))
PORT ?= tap0
endif
# Configure default eeprom file
EEPROM_FILE ?= $(BINDIR)/native.eeprom
# set the eeprom file flags only when the periph_eeprom feature is used.
ifneq (,$(filter periph_eeprom,$(FEATURES_USED)))
EEPROM_FILE_FLAGS = --eeprom $(EEPROM_FILE)
TERMFLAGS += $(EEPROM_FILE_FLAGS)
endif
VCAN_IFNUM ?= 0
VCAN_IFNAME ?= vcan0
VCAN_IFACE ?= $(VCAN_IFNUM):$(VCAN_IFNAME)
# set the default vcan interface
ifneq (,$(filter periph_can,$(FEATURES_USED)))
PERIPH_CAN_FLAGS ?= --can $(VCAN_IFACE)
TERMFLAGS += $(PERIPH_CAN_FLAGS)
endif
TERMFLAGS += $(PORT)
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)