mspbsldump/Makefile

85 lines
1.9 KiB
Makefile

default: all
PREFIX ?= msp430-
ifeq ($(CC),cc)
CC := gcc
endif
CC := $(PREFIX)$(CC)
OBJCOPY ?= $(PREFIX)objcopy
GDB ?= $(PREFIX)gdb
SIZE ?= $(PREFIX)size
PYTHON3 ?= python3
MCU ?= msp430fr5994
#MCU ?= msp430fr5962
CFLAGS = $(patsubst %,-I%,$(INCLUDE)) -mmcu=$(MCU) -Os \
-Werror=implicit-function-declaration -Werror=return-type \
-Werror=maybe-uninitialized \
-ffunction-sections -fdata-sections -g -ffreestanding -flto
LDFLAGS = -Wl,--cref #-Wl,--gc-sections -nostartfiles #-Wl,--print-gc-sections
SZFLAGS ?= -x --format=SysV
MSP430WARE_DIR ?= $(HOME)/ti/msp430/MSP430Ware_3_80_14_01
LIBMSP430_PATH := /usr/lib
MSPDEBUG_BIN := mspdebug
MSPDEBUG = LD_LIBRARY_PATH="$(LIBMSP430_PATH):$$LD_LIBRARY_PATH" $(MSPDEBUG_BIN) tilib
-include config.mk
MSP430WARE_DRIVER := $(MSP430WARE_DIR)/driverlib/driverlib/MSP430FR5xx_6xx
INCLUDE := include/ $(MSP430WARE_DRIVER)/
LIBSRC := cs dma eusci_a_uart gpio hspll mtif pmm sfr sysctl timer_a tlv uups wdt_a
SOURCES := $(wildcard src/*.c) $(wildcard src/*.S) \
$(patsubst %,$(MSP430WARE_DRIVER)/%.c,$(LIBSRC))
LDSCRIPT := $(MCU).ld
OBJECTS := $(patsubst $(MSP430WARE_DRIVER)/%,obj/%.o,$(patsubst src/%,obj/%.o,$(SOURCES)))
%/:
@mkdir -v "$@"
bin/main.elf: $(OBJECTS) $(LDSCRIPT)
@[ -d bin/ ] || mkdir -vp "bin/"
$(CC) -o "$@" $(OBJECTS) $(CFLAGS) $(LDFLAGS) -T $(LDSCRIPT) "-Wl,-Map=$@.map"
@$(SIZE) $(SZFLAGS) "$@"
bin/main.bin: bin/main.elf
$(OBJCOPY) -O binary "$<" "$@"
obj/%.o: src/%
@[ -d obj/ ] || mkdir -vp "obj/"
$(CC) -c -o "$@" "$<" $(CFLAGS)
obj/%.o: $(MSP430WARE_DRIVER)/%
@[ -d obj/ ] || mkdir -vp "obj/"
$(CC) -c -o "$@" "$<" $(CFLAGS)
all: bin/main.bin
clean:
@$(RM) -v bin/* obj/*
mspdebug:
$(MSPDEBUG)
load: bin/main.elf
$(MSPDEBUG) reset 'load bin/main.elf' reset
dbg: bin/main.elf
$(MSPDEBUG) reset 'load bin/main.elf' 'sym import bin/main.elf' 'gdb 3333' run
gdb: bin/main.elf
$(GDB) -ex 'target remote localhost:3333' bin/main.elf
.PHONY: default all clean hogs