87 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
ARCHDIR=arch/i686
 | 
						|
 | 
						|
CFLAGS?=
 | 
						|
ASFLAGS?=
 | 
						|
 | 
						|
INCLUDEDIR=include
 | 
						|
 | 
						|
CFLAGS:=\
 | 
						|
-O2 \
 | 
						|
-std=gnu99 \
 | 
						|
-ffreestanding \
 | 
						|
-Wall -Wextra \
 | 
						|
-I$(INCLUDEDIR) \
 | 
						|
$(CFLAGS)
 | 
						|
 | 
						|
ASFLAGS:=\
 | 
						|
-I$(INCLUDEDIR) \
 | 
						|
-I$(ARCHDIR) \
 | 
						|
$(ASFLAGS)
 | 
						|
 | 
						|
KERNEL_OBJS=\
 | 
						|
kernel/kernel.o \
 | 
						|
kernel/debugging.o \
 | 
						|
kernel/elf.o \
 | 
						|
kernel/syscall.o \
 | 
						|
kernel/io/keyboard.o \
 | 
						|
kernel/heap.o \
 | 
						|
kernel/task.o \
 | 
						|
 | 
						|
LIB_OBJS=\
 | 
						|
$(ARCHDIR)/bootstrap.o \
 | 
						|
$(ARCHDIR)/tty.o \
 | 
						|
$(ARCHDIR)/strlib.o \
 | 
						|
$(ARCHDIR)/paging.o \
 | 
						|
$(ARCHDIR)/gdt.o \
 | 
						|
$(ARCHDIR)/interrupts/idt.o \
 | 
						|
$(ARCHDIR)/interrupts/interrupt.o \
 | 
						|
$(ARCHDIR)/interrupts/irq0.o \
 | 
						|
$(ARCHDIR)/interrupts/syscall.o \
 | 
						|
$(ARCHDIR)/interrupts/pic.o \
 | 
						|
 | 
						|
OBJS=$(KERNEL_OBJS) $(LIB_OBJS)
 | 
						|
 | 
						|
LDFLAGS=$(OBJS) \
 | 
						|
-ffreestanding \
 | 
						|
-O2 \
 | 
						|
-nostdlib \
 | 
						|
-lgcc
 | 
						|
 | 
						|
.PHONY: all clean myos.iso
 | 
						|
.SUFFIXES: .c .o .s
 | 
						|
 | 
						|
all: myos.iso
 | 
						|
 | 
						|
clean:
 | 
						|
	rm -f $(OBJS)
 | 
						|
	rm -f myos.kernel
 | 
						|
	rm -f myos.iso
 | 
						|
	rm -f isodir/boot/myos.kernel
 | 
						|
 | 
						|
$(ARCHDIR)/interrupts/interrupt.o: CFLAGS += -mgeneral-regs-only
 | 
						|
# kernel/elf.o: CFLAGS += -masm=intel
 | 
						|
 | 
						|
%.o : %.c
 | 
						|
	i686-elf-gcc -c $< -o $@ $(CFLAGS)
 | 
						|
 | 
						|
%.o : %.s
 | 
						|
	i686-elf-as $< -o $@ $(ASFLAGS)
 | 
						|
 | 
						|
myos.kernel: $(OBJS)
 | 
						|
	i686-elf-gcc -T $(ARCHDIR)/linker.ld -o myos.kernel $(LDFLAGS)
 | 
						|
	grub-file --is-x86-multiboot myos.kernel
 | 
						|
 | 
						|
myos.iso: myos.kernel
 | 
						|
	cp myos.kernel isodir/boot/myos.kernel
 | 
						|
	grub-mkrescue -o myos.iso isodir
 | 
						|
 | 
						|
debug: CFLAGS += -g -O0
 | 
						|
debug: ASFLAGS += -g
 | 
						|
debug: all
 | 
						|
 | 
						|
run: all
 | 
						|
	qemu-system-i386 myos.iso
 | 
						|
 | 
						|
run-debug: debug
 | 
						|
	qemu-system-i386 -S -gdb tcp::9000 myos.iso
 |