You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

192 lines
5.5 KiB

ifneq (, $(filter buildtest, $(MAKECMDGOALS)))
ifeq (, $(strip $(NPROC)))
# Linux (utility program)
NPROC := $(shell nproc 2>/dev/null)
ifeq (, $(strip $(NPROC)))
# Linux (generic)
NPROC := $(shell grep -c ^processor /proc/cpuinfo 2>/dev/null)
endif
ifeq (, $(strip $(NPROC)))
# BSD (at least FreeBSD and Mac OSX)
NPROC := $(shell sysctl -n hw.ncpu 2>/dev/null)
endif
ifeq (, $(strip $(NPROC)))
# Fallback
NPROC := 1
endif
NPROC := $(shell echo $$(($(NPROC) + 1)))
endif
endif
buildtest:
@if [ -z "$${JENKINS_URL}" ] && tput colors 2>&1 > /dev/null; then \
GREEN='\033[1;32m'; RED='\033[1;31m'; RESET='\033[0m'; \
ECHO='/bin/echo -e'; \
else \
GREEN=''; RED=''; RESET=''; \
ECHO='/bin/echo'; \
fi; \
\
if [ -z "$(BOARD_WHITELIST)" ]; then \
BOARDS=$$(find $(RIOTBOARD) -mindepth 1 -maxdepth 1 -type d \! -name \*-common -printf '%f\n' ); \
else \
BOARDS="$(BOARD_WHITELIST)"; \
fi; \
\
for BOARD in $(BOARD_BLACKLIST); do \
echo "Ignoring $${BOARD} (blacklisted)"; \
BOARDS=$$(echo \ $${BOARDS}\ | sed -e 's/ '$${BOARD}' / /'); \
done; \
\
rm -rf "$$BINDIRBASE"; \
for BOARD in $${BOARDS}; do \
RIOTNOLINK=$$(case ' $(BOARD_INSUFFICIENT_RAM) ' in *" $${BOARD} "*) echo 1; esac); \
$${ECHO} -n "Building for $${BOARD} "; \
[ -n "$${RIOTNOLINK}" ] && $${ECHO} -n "(no linking) "; \
$${ECHO} -n ".. "; \
LOG=$$(env -i \
HOME=$${HOME} \
PATH=$${PATH} \
BOARD=$${BOARD} \
RIOTBASE=$${RIOTBASE} \
RIOTBOARD=$${RIOTBOARD} \
RIOTCPU=$${RIOTCPU} \
BINDIRBASE=$${BINDIRBASE} \
RIOTNOLINK=$${RIOTNOLINK} \
$(MAKE) -j$(NPROC) 2>&1 >/dev/null) ; \
if [ "$${?}" = "0" ]; then \
$${ECHO} "$${GREEN}success$${RESET}"; \
else \
$${ECHO} "$${RED}failed$${RESET}"; \
echo "$${LOG}" | grep -v -E '^make(\[[[:digit:]]])?:'; \
BUILDTESTFAILED=1; \
fi; \
done; \
if [ "$${BUILDTESTFAILED}" = "1" ]; then \
exit 1; \
fi
objsize:
@case "${SORTROW}" in \
text) SORTROW=1 ;; \
data) SORTROW=2 ;; \
bss) SORTROW=3 ;; \
dec) SORTROW=4 ;; \
"") SORTROW=4 ;; \
*) echo "Usage: $(MAKE) objsize SORTROW=[text|data|bss|dec]" ; return ;; \
esac; \
echo ' text\t data\t bss\t dec\t hex\tfilename'; \
$(SIZE) -dB $(BASELIBS) | \
tail -n+2 | \
sed -e 's#$(BINDIR)##' | \
sort -rnk$${SORTROW}
buildsize:
@$(SIZE) -dB $(BINDIR)$(APPLICATION).elf
buildsizes: SHELL=bash
buildsizes:
@if [[ -z "$(BOARD_WHITELIST)" ]]; then \
BOARDS=$$(find $(RIOTBOARD) -mindepth 1 -maxdepth 1 -type d \! -name \*-common -printf '%f\n' ); \
else \
BOARDS="$(BOARD_WHITELIST)"; \
fi; \
for BOARD in $(BOARD_BLACKLIST); do \
BOARDS=$$(sed -e "s/ $${BOARD} / /" <<< " $${BOARDS} "); \
done; \
\
echo -e " text\t data\t bss\t dec\tboard"; \
for BOARD in $${BOARDS}; do \
echo "$$(env -i \
HOME=$${HOME} \
PATH=$${PATH} \
BOARD=$${BOARD} \
RIOTBASE=$${RIOTBASE} \
RIOTBOARD=$${RIOTBOARD} \
RIOTCPU=$${RIOTCPU} \
BINDIRBASE=$${BINDIRBASE} \
$(MAKE) buildsize 2>/dev/null | tail -n-1 | cut -f-4)" "$${BOARD}"; \
done;
buildsizes-diff: SHELL=bash
buildsizes-diff:
@if [[ -z "$(BOARD_WHITELIST)" ]]; then \
BOARDS=$$(find $(RIOTBOARD) -mindepth 1 -maxdepth 1 -type d \! -name \*-common -printf '%f\n' ); \
else \
BOARDS="$(BOARD_WHITELIST)"; \
fi; \
for BOARD in $(BOARD_BLACKLIST); do \
BOARDS=$$(sed -e "s/ $${BOARD} / /" <<< " $${BOARDS} "); \
done; \
\
GREEN='\033[1;32m'; RED='\033[1;31m'; RESET='\033[0m'; \
\
echo -e "text\tdata\tbss\tdec\tBOARD/BINDIRBASE\n"; \
for BOARD in $$(tr ' ' '\n' <<< $${BOARDS} | sort); do \
for BINDIRBASE in $${OLDBIN} $${NEWBIN}; do \
env -i \
HOME=$${HOME} \
PATH=$${PATH} \
BOARD=$${BOARD} \
RIOTBASE=$${RIOTBASE} \
RIOTBOARD=$${RIOTBOARD} \
RIOTCPU=$${RIOTCPU} \
BINDIRBASE=$${BINDIRBASE} \
$(MAKE) buildsize 2>/dev/null | tail -n-1 | cut -f-4; \
done | \
while read -a OLD && read -a NEW; do \
for I in 0 1 2 3; do \
if [[ -n "$${NEW[I]}" && -n "$${OLD[I]}" ]]; then \
DIFF=$$(($${NEW[I]} - $${OLD[I]})); \
if [[ "$${DIFF}" -gt 0 ]]; then echo -ne "$${RED}"; fi; \
if [[ "$${DIFF}" -lt 0 ]]; then echo -ne "$${GREEN}"; fi; \
else \
DIFF="$${RED}ERR"; \
fi; \
echo -ne "$${DIFF}\t$${RESET}"; \
done; \
echo "$${BOARD}"; \
for I in 0 1 2 3; do echo -ne "$${OLD[I]-$${RED}ERR$${RESET}}\t"; done; echo -e "$${OLDBIN}"; \
for I in 0 1 2 3; do echo -ne "$${NEW[I]-$${RED}ERR$${RESET}}\t"; done; echo -e "$${NEWBIN}\n"; \
done; \
done;
make: add comprehensive `buildinfo` list Sometimes it is difficult to track down build errors for boards that you are unfamiliar with. This change adds `make buildinfo` that prints out all the relevant build information for the selected board and project: ``` PROJECT: default BOARD: msba2 CPU: lpc2387 MCU: lpc2387 RIOTBASE: /home/kijewski/RIOT/RIOT RIOTBOARD: /home/kijewski/RIOT/RIOT/boards RIOTCPU: /home/kijewski/RIOT/RIOT/cpu DEFAULT_MODULE: auto_init core cpu sys DISABLE_MODULE: USEMODULE: arm_common cc110x_ng cc110x_spi config defaulttransceiver gpioint lib lpc_common ltc4150 mci net_help posix protocol_multiplex ps random rtc shell shell_commands sht11 timex transceiver uart0 vtimer ELFFILE: /home/kijewski/RIOT/RIOT/examples/default/bin/msba2/default.elf HEXFILE: /home/kijewski/RIOT/RIOT/examples/default/bin/msba2/default.hex CC: arm-none-eabi-gcc CFLAGSS: -DBOARD_MSBA2 -DCPU_LPC2387 -DMODULE_ARM_COMMON -DMODULE_AUTO_INIT -DMODULE_CC110X_NG -DMODULE_CC110X_SPI -DMODULE_CONFIG -DMODULE_CORE -DMODULE_CPU -DMODULE_DEFAULTTRANSCEIVER -DMODULE_GPIOINT -DMODULE_LIB -DMODULE_LPC_COMMON -DMODULE_LTC4150 -DMODULE_MCI -DMODULE_NET_HELP -DMODULE_POSIX -DMODULE_PROTOCOL_MULTIPLEX -DMODULE_PS -DMODULE_RANDOM -DMODULE_RTC -DMODULE_SHELL -DMODULE_SHELL_COMMANDS -DMODULE_SHT11 -DMODULE_SYS -DMODULE_TIMEX -DMODULE_TRANSCEIVER -DMODULE_UART0 -DMODULE_VTIMER -O2 -Wall -Wstrict-prototypes -mcpu=arm7tdmi-s -gdwarf-2 -std=gnu99 -fno-delete-null-pointer-checks -Wstrict-prototypes -Werror=strict-prototypes -Wold-style-definition -Werror=old-style-definition LINK: arm-none-eabi-gcc LINKFLAGS: -gdwarf-2 -mcpu=arm7tdmi-s -static -lgcc -nostartfiles -T/home/kijewski/RIOT/RIOT/cpu/lpc2387/linkerscript.x OBJCOPY: arm-none-eabi-objcopy OFLAGS: -O ihex FLASHER: lpc2k_pgm FFLAGS: /dev/ttyUSB0 /home/kijewski/RIOT/RIOT/examples/default/bin/msba2/default.hex TERMPROG: /home/kijewski/RIOT/RIOT/dist/tools/pyterm/pyterm.py PORT: /dev/ttyUSB0 DEBUGGER: DEBUGGER_FLAGS: MAKEFILE_LIST: /home/kijewski/RIOT/RIOT/examples/default/Makefile /home/kijewski/RIOT/RIOT/Makefile.include /home/kijewski/RIOT/RIOT/Makefile.modules /home/kijewski/RIOT/RIOT/Makefile.pseudomodules /home/kijewski/RIOT/RIOT/Makefile.defaultmodules /home/kijewski/RIOT/RIOT/boards/msba2/Makefile.include /home/kijewski/RIOT/RIOT/boards/msba2-common/Makefile.include /home/kijewski/RIOT/RIOT/boards/msba2-common/Makefile.dep /home/kijewski/RIOT/RIOT/cpu/lpc2387/Makefile.include /home/kijewski/RIOT/RIOT/cpu/arm_common/Makefile.include /home/kijewski/RIOT/RIOT/cpu/lpc_common/Makefile.include /home/kijewski/RIOT/RIOT/Makefile.dep /home/kijewski/RIOT/RIOT/Makefile.cflags /home/kijewski/RIOT/RIOT/sys/Makefile.include /home/kijewski/RIOT/RIOT/drivers/Makefile.include /home/kijewski/RIOT/RIOT/Makefile.buildtests ```
9 years ago
buildinfo:
@echo 'PROJECT: $(PROJECT)'
@echo 'BOARD: $(BOARD)'
@echo 'CPU: $(CPU)'
@echo 'MCU: $(MCU)'
@echo ''
@echo 'RIOTBASE: $(RIOTBASE)'
@echo 'RIOTBOARD: $(RIOTBOARD)'
@echo 'RIOTCPU: $(RIOTCPU)'
@echo ''
@echo 'DEFAULT_MODULE: $(sort $(filter-out $(DISABLE_MODULE), $(DEFAULT_MODULE)))'
@echo 'DISABLE_MODULE: $(sort $(DISABLE_MODULE))'
@echo 'USEMODULE: $(sort $(filter-out $(DEFAULT_MODULE), $(USEMODULE)))'
@echo ''
@echo 'ELFFILE: $(ELFFILE)'
@echo 'HEXFILE: $(HEXFILE)'
@echo ''
@echo 'CC: $(CC)'
@echo -e 'CFLAGSS:$(patsubst %, \n\t%, $(CFLAGS))'
@echo ''
@echo 'LINK: $(LINK)'
@echo -e 'LINKFLAGS:$(patsubst %, \n\t%, $(LINKFLAGS))'
@echo ''
@echo 'OBJCOPY: $(OBJCOPY)'
@echo 'OFLAGS: $(OFLAGS)'
@echo ''
@echo 'FLASHER: $(FLASHER)'
@echo 'FFLAGS: $(FFLAGS)'
@echo ''
@echo 'TERMPROG: $(TERMPROG)'
@echo 'PORT: $(PORT)'
@echo ''
@echo 'DEBUGGER: $(DEBUGGER)'
@echo 'DEBUGGER_FLAGS: $(DEBUGGER_FLAGS)'
@echo ''
@echo -e 'MAKEFILE_LIST:$(patsubst %, \n\t%, $(abspath $(MAKEFILE_LIST)))'