-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
49 lines (40 loc) · 1.32 KB
/
Makefile
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
# OS Main Makefile
ROOTFS := root
OUTPUT := os.iso
Q := @
MAKEFLAGS += --no-print-directory
MAKE := make
TARGETS := kern initrd
# Compiler settings
PREFIX := i686-elf-
GDB := gdb
.PHONY: rebuild default clean debug run
rebuild:
@echo "--> Rebuilding OS"
@for dir in $(TARGETS); do $(MAKE) -C $$dir ROOTFS=$(abspath $(ROOTFS)) rebuild; done
@echo "--> Generating $(OUTPUT)"
@grub-mkrescue $(ROOTFS) -o $(OUTPUT)
@echo "--> Build finished"
default:
@echo "--> Building OS"
@for dir in $(TARGETS); do $(MAKE) -C $$dir ROOTFS=$(abspath $(ROOTFS)) default ; done
@echo "--> Generating $(OUTPUT)"
@grub-mkrescue $(ROOTFS) -o $(OUTPUT)
@echo "--> Build finished"
clean:
@echo "--> Cleaning OS"
@for dir in $(TARGETS); do $(MAKE) -C $$dir ROOTFS=$(abspath $(ROOTFS)) clean; done
@rm $(OUTPUT)
@echo "--> Build finished"
debug:
@echo "--> Building OS (debug)"
@for dir in $(TARGETS); do $(MAKE) -C $$dir ROOTFS=$(abspath $(ROOTFS)) debug; done
@echo "--> Generating $(OUTPUT)"
@grub-mkrescue $(ROOTFS) -o $(OUTPUT)
@echo "--> Build finished"
@echo "--> Starting emulator and debugger"
@qemu-system-i386 -s -cdrom $(OUTPUT) -m 512M -d guest_errors,int &
@$(GDB) -ex "target remote localhost:1234" -ex "symbol-file $(ROOTFS)/boot/kernel"
run: rebuild
@echo "--> Starting emulator"
@qemu-system-i386 -cdrom $(OUTPUT) -m 512M