forked from afaraut/RaspberryPiOS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
49 lines (35 loc) · 1.11 KB
/
Makefile
File metadata and controls
49 lines (35 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
ARMGNU ?= arm-none-eabi
CFLAGS = -I -Wall -nostdlib -fomit-frame-pointer -mno-apcs-frame -nostartfiles -ffreestanding -g -march=armv6z -marm -mthumb-interwork
ASFLAGS = -g -march=armv6z
BIN_DIR = bin/
C_FILES= os/kernel.c os/phyAlloc.c os/hw.c os/syscall.c sched/sched.c memory/vmem.c
AS_FILES=os/vectors.s
OBJ = $(patsubst %.s,%.o,$(AS_FILES))
OBJ += $(patsubst %.c,%.o,$(C_FILES))
OBJS = $(addprefix $(BIN_DIR),$(OBJ))
MEMMAP = os/memmap
.PHONY: gcc clean
gcc : kernel
clean :
rm -rf bin
rm -rf */*.bin
rm -rf */*.hex
rm -rf */*.elf
rm -rf */*.list
rm -rf */*.img
rm -rf */*.bc
rm -rf */*.clang.opt.s
rm -rf */*~
$(BIN_DIR)%.o : %.c
mkdir -p $(dir $@)
$(ARMGNU)-gcc $(CFLAGS) -c $< -o $@
$(BIN_DIR)%.o : %.s
mkdir -p $(dir $@)
$(ARMGNU)-as $(ASFLAGS) $< -o $@
kernel : $(MEMMAP) $(OBJS)
$(ARMGNU)-ld $(OBJS) -T $(MEMMAP) -o $(BIN_DIR)kernel.elf
$(ARMGNU)-objdump -D $(BIN_DIR)kernel.elf > $(BIN_DIR)kernel.list
$(ARMGNU)-objcopy $(BIN_DIR)kernel.elf -O binary $(BIN_DIR)kernel.img
$(ARMGNU)-objcopy $(BIN_DIR)kernel.elf -O ihex $(BIN_DIR)kernel.hex
student : clean
cd .. && ./build_student_archive.sh