X-Git-Url: https://robinkrens.nl/gitweb/?a=blobdiff_plain;f=Makefile;h=6d3ec1935ecbc2ad192a7925281633febe5bc698;hb=47f52d56fac1acc9410a351dbf603c462bf3994c;hp=b4a4133cd8b9ab6d18d9400555971846f695538e;hpb=41d25ed67df8b6acd6126c41c8b0882586db0b0d;p=cortex-from-scratch diff --git a/Makefile b/Makefile index b4a4133..6d3ec19 100644 --- a/Makefile +++ b/Makefile @@ -10,36 +10,55 @@ AS=arm-none-eabi-as MKIMG=arm-none-eabi-objcopy # Compiler flags -# TODO:Cortex-m3 or Cortex-m0? LDFLAGS+= -mthumb -mcpu=cortex-m3 -ASFLAGS+= -mcpu=cortex-m3 -mthumb -g -CFLAGS+= -mcpu=cortex-m3 -mthumb -g -ffreestanding +ASFLAGS+= -mcpu=cortex-m3 -mthumb +CFLAGS+= -mcpu=cortex-m3 -mthumb -ffreestanding +#CFLAGS+= -mcpu=cortex-m3 -mthumb -g -ffreestanding + +# Include directory +INCLUDE+= -Iinclude BIN = bin ODIR = obj -_OBJ = ivt.o uart.o systick.o sysinfo.o lib.o regf.o pool.o term.o main.o +_OBJ = ivt.o systick.o sysinfo.o term.o main.o clock.o rtc.o heap.o syscall.o OBJ = $(patsubst %, $(ODIR)/%,$(_OBJ)) +DDIR = obj/drivers +_DRIVERS = uart.o tm1637.o led.o tsensor.o at24c.o mk450_joystick.o st7735s.o +DRIVERS = $(patsubst %, $(DDIR)/%,$(_DRIVERS)) + +LDIR = obj/lib +_LIBS = string.o stdio.o regfunc.o pool.o tinyprintf.o syscall.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 $@ +$(LDIR)/%.o: lib/%.c + @mkdir -p $(@D) + $(CC) -c $< $(CFLAGS) -I./include -o $@ + # Start up machine assembly 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 $(BIN)/$@.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..." @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 $(BIN)/kernel.bin + /usr/local/bin/qemu-system-arm -monitor stdio -serial stdio -M stm32-f103c8 -kernel $(BIN)/kernel.bin # Examine all sections examine-all: @@ -56,7 +75,7 @@ flash: .PHONY: clean clean: - rm -rf $(ODIR)/*.o start.o $(BIN)/kernel.* + rm -rf $(ODIR)/* start.o $(BIN)/kernel.* # Altijd handig deze template #%.o: %.c