From 5cb1d03ef4bc49236e0b48bd0e5fc28906e4f2dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9=20Kijewski?= <rene.kijewski@fu-berlin.de>
Date: Sun, 18 May 2014 18:54:11 +0200
Subject: [PATCH] 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
```
---
 Makefile.buildtests | 37 +++++++++++++++++++++++++++++++++++++
 Makefile.include    |  2 +-
 2 files changed, 38 insertions(+), 1 deletion(-)

diff --git a/Makefile.buildtests b/Makefile.buildtests
index bc0f7e26e2..c05a118fb3 100644
--- a/Makefile.buildtests
+++ b/Makefile.buildtests
@@ -148,3 +148,40 @@ buildsizes-diff:
 			for I in 0 1 2 3; do echo -ne "$${NEW[I]-$${RED}ERR$${RESET}}\t"; done; echo -e "$${NEWBIN}\n"; \
 		done; \
 	done;
+
+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)))'
diff --git a/Makefile.include b/Makefile.include
index 4b05fb9d19..b78da0151f 100644
--- a/Makefile.include
+++ b/Makefile.include
@@ -65,7 +65,7 @@ BASELIBS += $(BINDIR)$(BOARD)_base.a
 BASELIBS += $(BINDIR)${PROJECT}.a
 BASELIBS += $(USEPKG:%=${BINDIR}%.a)
 
-.PHONY: all clean flash doc term objsize buildsize buildsizes buildsizes-diff
+.PHONY: all clean flash doc term objsize buildsize buildsizes buildsizes-diff buildinfo
 
 export ELFFILE ?= $(BINDIR)$(PROJECT).elf
 export HEXFILE ?= $(ELFFILE:.elf=.hex)
-- 
GitLab