diff options
Diffstat (limited to 'Unix.mk')
-rw-r--r-- | Unix.mk | 30 |
1 files changed, 23 insertions, 7 deletions
@@ -1,9 +1,9 @@ C_SOURCES = $(wildcard src/*.c) C_HEADERS = $(wildcard src/*.h) -C_OBJECTS = ${C_SOURCES:.c=.o} +C_OBJECTS = ${C_SOURCES:.c=.co} C_OBJECTD = ${subst src,obj,${C_OBJECTS}} A_SOURCES = $(wildcard src/*.S) -A_OBJECTS = ${A_SOURCES:.S=.o} +A_OBJECTS = ${A_SOURCES:.S=.ao} A_OBJECTD = ${subst src,obj,${A_OBJECTS}} CROSS = arm-none-eabi @@ -13,31 +13,47 @@ OBJCOPY = ${CROSS}-objcopy OBJDUMP = ${CROSS}-objdump QEMU = qemu-system-arm GDB = gdb-multiarch -CFLAGS = -mcpu=cortex-a7 -fpic -ffreestanding -std=gnu99 -O2 -Wall -Wextra -nostdlib -g -AFLAGS = -mcpu=cortex-a7 +CFLAGS = -mcpu=cortex-a7 -fpic -ffreestanding -std=gnu99 -O3 -Wall -Wextra -nostdlib -g +AFLAGS = -mcpu=cortex-a7 -g QFLAGS = -M raspi2 -cpu arm1176 -m 1G -serial mon:stdio -nographic +BSP ?= 2 + +ifeq ($(BSP),2) + BSP23 = 1 + CFLAGS += -DBSP23 +endif + .PHONY: clean run run-debug debug export default: clean build/kernel7.img build/kernel7.img: build/kernel.elf + @mkdir -p $(@D) ${OBJCOPY} $< -O binary $@ build/kernel.list: build/kernel-g.elf + @mkdir -p $(@D) ${OBJDUMP} -D $< > $@ build/kernel-g.elf: ${A_OBJECTD} ${C_OBJECTD} + @mkdir -p $(@D) ${CC} -T linker.ld -o $@ ${CFLAGS} $^ -lgcc build/kernel.elf: ${A_OBJECTD} ${C_OBJECTD} + @mkdir -p $(@D) ${CC} -T linker.ld -o $@ -ffreestanding -O2 -nostdlib $^ -lgcc export: build/kernel.list cp build/kernel-g.elf /mnt/c/Local/ -obj/%.o: src/%.S - ${AS} ${AFLAGS} -g -c $< -o $@ +obj/%.co: src/%.c + @mkdir -p $(@D) + ${CC} ${CFLAGS} -c $< -o $@ + +obj/%.ao: src/%.S + @mkdir -p $(@D) + ${AS} ${AFLAGS} -c $< -o $@ run: build/kernel.elf ${QEMU} -kernel $< ${QFLAGS} @@ -49,4 +65,4 @@ debug: build/kernel-g.elf build/kernel.list ${GDB} $< -command=gdbinit clean: - rm -f obj/*.o build/*.elf build/*.list build/*.img + rm -f obj/*.o build/*.elf build/*.list build/*.img obj/*.ao obj/*.co |