diff options
Diffstat (limited to 'controller/fw/Makefile')
-rw-r--r-- | controller/fw/Makefile | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/controller/fw/Makefile b/controller/fw/Makefile new file mode 100644 index 0000000..8a6d0da --- /dev/null +++ b/controller/fw/Makefile @@ -0,0 +1,93 @@ + +SOURCES := main.c mspdebug_wrapper.c +SOURCES += mspdebug/drivers/jtaglib.c + +BUILDDIR ?= build +BINARY := safetyreset +LDSCRIPT := stm32f407.ld +LIBNAME := opencm3_stm32f4 + +OPENCM3_DIR ?= libopencm3 + +PREFIX ?= arm-none-eabi- + + +CC := $(PREFIX)gcc +CXX := $(PREFIX)g++ +LD := $(PREFIX)gcc +AR := $(PREFIX)ar +AS := $(PREFIX)as +OBJCOPY := $(PREFIX)objcopy +OBJDUMP := $(PREFIX)objdump +GDB := $(PREFIX)gdb + + +CFLAGS += -I$(OPENCM3_DIR)/include -Imspdebug/util -Imspdebug/drivers + +CFLAGS += -Os -std=c11 -g -DSTM32F4 +# Note: libopencm3 requires some standard libc definitions from stdint.h and stdbool.h, so we don't pass -nostdinc here. +CFLAGS += -nostdlib -ffreestanding +CFLAGS += -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -g +CFLAGS += -Wextra -Wshadow -Wimplicit-function-declaration -Wundef +CFLAGS += -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes +CFLAGS += -fno-common -ffunction-sections -fdata-sections + +LDFLAGS += --static -nostartfiles +LDFLAGS += -T$(LDSCRIPT) +LDFLAGS += -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -g +LDFLAGS += -Wl,--cre +#LDFLAGS += -Wl,--gc-sections +LDFLAGS += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group +LDFLAGS += -L$(OPENCM3_DIR)/lib +LDFLAGS += -l$(LIBNAME) $(shell $(CC) -print-libgcc-file-name) + +all: elf + +elf: $(BUILDDIR)/$(BINARY).elf +bin: $(BUILDDIR)/$(BINARY).bin +hex: $(BUILDDIR)/$(BINARY).hex +srec: $(BUILDDIR)/$(BINARY).srec +list: $(BUILDDIR)/$(BINARY).list + +images: $(BUILDDIR)/$(BINARY).images + +$(OPENCM3_DIR)/lib/lib$(LIBNAME).a: + echo "Warning, $@ not found, attempting to rebuild in $(OPENCM3_DIR)" + $(MAKE) -C $(OPENCM3_DIR) + +OBJS := $(addprefix $(BUILDDIR)/,$(SOURCES:%.c=%.o)) + +# Define a helper macro for debugging make errors online +# you can type "make print-OPENCM3_DIR" and it will show you +# how that ended up being resolved by all of the included +# makefiles. +print-%: + @echo $*=$($*) + +$(BUILDDIR)/%.images: $(BUILDDIR)/%.bin $(BUILDDIR)/%.hex $(BUILDDIR)/%.srec $(BUILDDIR)/%.list $(BUILDDIR)/%.map + +$(BUILDDIR)/%.bin: $(BUILDDIR)/%.elf + $(OBJCOPY) -Obinary $< $@ + +$(BUILDDIR)/%.hex: $(BUILDDIR)/%.elf + $(OBJCOPY) -Oihex $< $@ + +$(BUILDDIR)/%.srec: $(BUILDDIR)/%.elf + $(OBJCOPY) -Osrec $< $@ + +$(BUILDDIR)/%.list: $(BUILDDIR)/%.elf + $(OBJDUMP) -S $< > $@ + +$(BUILDDIR)/%.elf: $(OBJS) $(LDSCRIPT) $(OPENCM3_DIR)/lib/lib$(LIBNAME).a + $(LD) $(OBJS) $(LDFLAGS) -o $@ -Wl,-Map=$*.map + +$(BUILDDIR)/%.o: %.c + mkdir -p $(dir $@) + $(CC) $(CFLAGS) -o $@ -c $< + +clean: + -rm -r $(BUILDDIR) + +.PHONY: images clean elf bin hex srec list + +-include $(OBJS:.o=.d) |