X-Git-Url: https://robinkrens.nl/gitweb/?a=blobdiff_plain;f=Makefile;h=3da970125d1f4e40f84667c8a76c3758d0563320;hb=d35408aabe7ea757d406bf8a7dba669ee8736bd5;hp=d7e165283e817d24d8ca22f7c55b0c6a8e020c79;hpb=6a0dad9f096144560b4b06da489ea8f88b0145ee;p=cortex-from-scratch diff --git a/Makefile b/Makefile index d7e1652..3da9701 100644 --- a/Makefile +++ b/Makefile @@ -15,12 +15,31 @@ LDFLAGS+= -mthumb -mcpu=cortex-m3 ASFLAGS+= -mcpu=cortex-m3 -mthumb -g CFLAGS+= -mcpu=cortex-m3 -mthumb -g -ffreestanding +INCLUDE+= -Iinclude + +BIN = bin + ODIR = obj -_OBJ = main.o uart.o ivt.o systick.o sysinfo.o lib.o regf.o pool.o +_OBJ = ivt.o systick.o sysinfo.o term.o main.o OBJ = $(patsubst %, $(ODIR)/%,$(_OBJ)) +DDIR = obj/drivers +_DRIVERS = uart.o tm1637.o led.o +DRIVERS = $(patsubst %, $(DDIR)/%,$(_DRIVERS)) + +LDIR = obj/lib +_LIBS = string.o stdio.o regfunc.o pool.o +LIBS = $(patsubst %, $(LDIR)/%,$(_LIBS)) + +$(DDIR)/%.o: drivers/%.c + @mkdir -p $(@D) + $(CC) -c $< $(CFLAGS) $(INCLUDE) -o $@ + +$(ODIR)/%.o: %.c + @mkdir -p $(@D) + $(CC) -c $< $(CFLAGS) -I./include -o $@ -$(ODIR)/%.o: %.c $(DEPS) +$(LDIR)/%.o: lib/%.c @mkdir -p $(@D) $(CC) -c $< $(CFLAGS) -I./include -o $@ @@ -29,32 +48,33 @@ as: $(AS) $(ASFLAGS) -o start.o start.asm # Compile and link all -kernel: $(OBJ) +kernel: $(OBJ) $(DRIVERS) $(LIBS) $(AS) $(ASFLAGS) -o start.o start.asm - $(LD) -nostartfiles -Map $@.MAP -T link.ld -o $@.ELF start.o $^ --print-memory-usage + $(LD) -nostartfiles -Map $(BIN)/$@.MAP -T link.ld -o $(BIN)/$@.ELF start.o $^ --print-memory-usage @echo "Creating binary..." - $(MKIMG) -Obinary -R .data $@.ELF $@.bin + @mkdir -p $(BIN) + $(MKIMG) -Obinary -R .data $(BIN)/$@.ELF $(BIN)/$@.bin # Run in Qemu; note this is a patched version for stm32-f103c8 run: - /usr/local/bin/qemu-system-arm -serial stdio -M stm32-f103c8 -kernel kernel.bin + /usr/local/bin/qemu-system-arm -serial stdio -M stm32-f103c8 -kernel $(BIN)/kernel.bin # Examine all sections examine-all: - arm-none-eabi-objdump -D kernel.ELF | less + arm-none-eabi-objdump -D $(BIN)/kernel.ELF | less # Examine just headers examine-header: - arm-none-eabi-objdump -x kernel.ELF | less + arm-none-eabi-objdump -x $(BIN)/kernel.ELF | less # Flash kernel to board flash: - stm32flash -w kernel.bin -v /dev/ttyUSB0 + stm32flash -w $(BIN)/kernel.bin -v /dev/ttyUSB0 .PHONY: clean clean: - rm -rf $(ODIR)/*.o start.o kernel.* + rm -rf $(ODIR)/* start.o $(BIN)/kernel.* # Altijd handig deze template #%.o: %.c