Draft: lab 3 irq wtf
This commit is contained in:
33
Makefile
33
Makefile
@@ -1,4 +1,5 @@
|
||||
MAKE := make
|
||||
MAKEFLAGS += -j 8
|
||||
|
||||
ARCH := aarch64
|
||||
GNU := $(ARCH)-linux-gnu
|
||||
@@ -14,6 +15,7 @@ CCFLAGS += -Wall -Wextra -O0 \
|
||||
LD := $(GNU)-ld
|
||||
LDFLAGS += -g -nostdlib -no-pie
|
||||
OBJCOPY := $(GNU)-objcopy
|
||||
OBJDUMP := $(GNU)-objdump
|
||||
|
||||
MISC_DIR := misc
|
||||
QEMUFLAGS += -dtb $(MISC_DIR)/bcm2710-rpi-3-b-plus.dtb
|
||||
@@ -43,15 +45,17 @@ TARGET_OBJS := $(TARGET_SRCS:%=%.o)
|
||||
SRCS := $(shell find $(LIB_DIR) -name '*.c')
|
||||
OBJS := $(SRCS:%=%.o)
|
||||
|
||||
.PHONY: all build clean clean_target run kernel debug gdb
|
||||
.PHONY: all build clean clean_target run \
|
||||
kernel bootloader userprog debug gdb objdump
|
||||
|
||||
all: $(CPIO)
|
||||
$(MAKE) build TARGET_DIR=./kernel TARGET=kernel8
|
||||
$(MAKE) build TARGET_DIR=./bootloader TARGET=bootloader
|
||||
$(MAKE) $(MAKEFLAGS) build TARGET_DIR=kernel TARGET=kernel8
|
||||
$(MAKE) $(MAKEFLAGS) build TARGET_DIR=bootloader TARGET=bootloader
|
||||
|
||||
build: $(IMG)
|
||||
|
||||
$(CPIO): $(shell find $(ROOTFS_DIR))
|
||||
$(CPIO): $(shell find $(ROOTFS_DIR)) userprog
|
||||
cp userprog.img $(ROOTFS_DIR)/userprog
|
||||
cd $(ROOTFS_DIR) && find . | cpio -o -H newc > ../$@
|
||||
|
||||
$(IMG): $(ELF)
|
||||
@@ -69,9 +73,10 @@ $(ELF): $(LD_SCRIPT) $(TARGET_OBJS) $(OBJS)
|
||||
$(CC) -c $< -o $@ $(INCLUDE) $(CCFLAGS)
|
||||
|
||||
clean:
|
||||
-rm $(OBJS) $(CPIO)
|
||||
$(MAKE) clean_target TARGET_DIR=./kernel TARGET=kernel8
|
||||
$(MAKE) clean_target TARGET_DIR=./bootloader TARGET=bootloader
|
||||
-rm $(OBJS) $(CPIO) $(ROOTFS_DIR)/userprog
|
||||
$(MAKE) $(MAKEFLAGS) clean_target TARGET_DIR=kernel TARGET=kernel8
|
||||
$(MAKE) $(MAKEFLAGS) clean_target TARGET_DIR=bootloader TARGET=bootloader
|
||||
$(MAKE) $(MAKEFLAGS) clean_target TARGET_DIR=userprog TARGET=userprog
|
||||
|
||||
clean_target:
|
||||
-rm $(TARGET_OBJS) $(ELF) $(IMG)
|
||||
@@ -80,15 +85,23 @@ run: all $(CPIO)
|
||||
$(QEMU) -kernel bootloader.img $(QEMUFLAGS) -serial pty
|
||||
|
||||
kernel: $(CPIO)
|
||||
$(MAKE) build TARGET_DIR=kernel TARGET=kernel8
|
||||
$(MAKE) $(MAKEFLAGS) build TARGET_DIR=kernel TARGET=kernel8
|
||||
$(QEMU) -kernel kernel8.img $(QEMUFLAGS) -serial stdio
|
||||
|
||||
bootloader: $(CPIO)
|
||||
$(MAKE) build TARGET_DIR=./bootloader TARGET=bootloader
|
||||
$(MAKE) $(MAKEFLAGS) build TARGET_DIR=bootloader TARGET=bootloader
|
||||
$(QEMU) -kernel bootloader.img $(QEMUFLAGS)
|
||||
|
||||
debug: all $(CPIO)
|
||||
userprog:
|
||||
$(MAKE) $(MAKEFLAGS) build TARGET_DIR=userprog TARGET=userprog
|
||||
|
||||
debug: $(CPIO)
|
||||
$(MAKE) $(MAKEFLAGS) build TARGET_DIR=kernel TARGET=kernel8
|
||||
$(QEMU) -kernel kernel8.img $(QEMUFLAGS) -serial stdio -S -s
|
||||
|
||||
gdb:
|
||||
$(GDB)
|
||||
|
||||
objdump:
|
||||
$(MAKE) $(MAKEFLAGS) build TARGET_DIR=kernel TARGET=kernel8
|
||||
$(OBJDUMP) -D kernel8.elf
|
||||
|
||||
Reference in New Issue
Block a user