Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # assembler
- ASM = /usr/bin/nasm
- # compiler
- CC = /usr/bin/gcc
- # linker
- LD = /usr/bin/ld
- # grub iso creator
- GRUB = /usr/bin/grub-mkrescue
- # sources
- SRC = src
- ASM_SRC = $(SRC)/asm
- # objects
- OBJ = obj
- ASM_OBJ = $(OBJ)/asm
- CONFIG = ./config
- OUT = out
- INC = ./include
- INCLUDE=-I$(INC)
- MKDIR= mkdir -p
- CP = cp -f
- DEFINES=
- # assembler flags
- ASM_FLAGS = -f elf32
- # compiler flags
- CC_FLAGS = $(INCLUDE) $(DEFINES) -m32 -std=gnu99 -ffreestanding -Wall -Wextra
- # linker flags, for linker add linker.ld file too
- LD_FLAGS = -m elf_i386 -T $(CONFIG)/linker.ld -nostdlib
- # target file to create in linking
- TARGET=$(OUT)/Terminal.bin
- # iso file target to create
- TARGET_ISO=$(OUT)/Terminal.iso
- ISO_DIR=$(OUT)/isodir
- OBJECTS=$(ASM_OBJ)/entry.o $(ASM_OBJ)/load_gdt.o\
- $(ASM_OBJ)/load_idt.o $(ASM_OBJ)/exception.o $(ASM_OBJ)/irq.o\
- $(OBJ)/io_ports.o $(OBJ)/vga.o\
- $(OBJ)/string.o $(OBJ)/console.o\
- $(OBJ)/gdt.o $(OBJ)/idt.o $(OBJ)/isr.o $(OBJ)/8259_pic.o\
- $(OBJ)/keyboard.o\
- $(OBJ)/kernel.o
- all: $(OBJECTS)
- @printf "[ linking... ]\n"
- $(LD) $(LD_FLAGS) -o $(TARGET) $(OBJECTS)
- grub-file --is-x86-multiboot $(TARGET)
- @printf "\n"
- @printf "[ building ISO... ]\n"
- $(MKDIR) $(ISO_DIR)/boot/grub
- $(CP) $(TARGET) $(ISO_DIR)/boot/
- $(CP) $(CONFIG)/grub.cfg $(ISO_DIR)/boot/grub/
- $(GRUB) -o $(TARGET_ISO) $(ISO_DIR)
- rm -f $(TARGET)
- $(ASM_OBJ)/entry.o : $(ASM_SRC)/entry.asm
- @printf "[ $(ASM_SRC)/entry.asm ]\n"
- $(ASM) $(ASM_FLAGS) $(ASM_SRC)/entry.asm -o $(ASM_OBJ)/entry.o
- @printf "\n"
- $(ASM_OBJ)/load_gdt.o : $(ASM_SRC)/load_gdt.asm
- @printf "[ $(ASM_SRC)/load_gdt.asm ]\n"
- $(ASM) $(ASM_FLAGS) $(ASM_SRC)/load_gdt.asm -o $(ASM_OBJ)/load_gdt.o
- @printf "\n"
- $(ASM_OBJ)/load_idt.o : $(ASM_SRC)/load_idt.asm
- @printf "[ $(ASM_SRC)/load_idt.asm ]\n"
- $(ASM) $(ASM_FLAGS) $(ASM_SRC)/load_idt.asm -o $(ASM_OBJ)/load_idt.o
- @printf "\n"
- $(ASM_OBJ)/exception.o : $(ASM_SRC)/exception.asm
- @printf "[ $(ASM_SRC)/exception.asm ]\n"
- $(ASM) $(ASM_FLAGS) $(ASM_SRC)/exception.asm -o $(ASM_OBJ)/exception.o
- @printf "\n"
- $(ASM_OBJ)/irq.o : $(ASM_SRC)/irq.asm
- @printf "[ $(ASM_SRC)/irq.asm ]\n"
- $(ASM) $(ASM_FLAGS) $(ASM_SRC)/irq.asm -o $(ASM_OBJ)/irq.o
- @printf "\n"
- $(OBJ)/io_ports.o : $(SRC)/io_ports.c
- @printf "[ $(SRC)/io_ports.c ]\n"
- $(CC) $(CC_FLAGS) -c $(SRC)/io_ports.c -o $(OBJ)/io_ports.o
- @printf "\n"
- $(OBJ)/vga.o : $(SRC)/vga.c
- @printf "[ $(SRC)/vga.c ]\n"
- $(CC) $(CC_FLAGS) -c $(SRC)/vga.c -o $(OBJ)/vga.o
- @printf "\n"
- $(OBJ)/string.o : $(SRC)/string.c
- @printf "[ $(SRC)/string.c ]\n"
- $(CC) $(CC_FLAGS) -c $(SRC)/string.c -o $(OBJ)/string.o
- @printf "\n"
- $(OBJ)/console.o : $(SRC)/console.c
- @printf "[ $(SRC)/console.c ]\n"
- $(CC) $(CC_FLAGS) -c $(SRC)/console.c -o $(OBJ)/console.o
- @printf "\n"
- $(OBJ)/gdt.o : $(SRC)/gdt.c
- @printf "[ $(SRC)/gdt.c ]\n"
- $(CC) $(CC_FLAGS) -c $(SRC)/gdt.c -o $(OBJ)/gdt.o
- @printf "\n"
- $(OBJ)/idt.o : $(SRC)/idt.c
- @printf "[ $(SRC)/idt.c ]\n"
- $(CC) $(CC_FLAGS) -c $(SRC)/idt.c -o $(OBJ)/idt.o
- @printf "\n"
- $(OBJ)/isr.o : $(SRC)/isr.c
- @printf "[ $(SRC)/isr.c ]\n"
- $(CC) $(CC_FLAGS) -c $(SRC)/isr.c -o $(OBJ)/isr.o
- @printf "\n"
- $(OBJ)/8259_pic.o : $(SRC)/8259_pic.c
- @printf "[ $(SRC)/8259_pic.c ]\n"
- $(CC) $(CC_FLAGS) -c $(SRC)/8259_pic.c -o $(OBJ)/8259_pic.o
- @printf "\n"
- $(OBJ)/keyboard.o : $(SRC)/keyboard.c
- @printf "[ $(SRC)/keyboard.c ]\n"
- $(CC) $(CC_FLAGS) -c $(SRC)/keyboard.c -o $(OBJ)/keyboard.o
- @printf "\n"
- $(OBJ)/users/recive.o : $(SRC)/users/recive.c
- @printf "[ $(SRC)/users/recive.c ]\n"
- gcc $(SRC)/users/recive.c $(CC) $(CC_FLAGS) $(SRC)/users/recive.c -l sqlite3-o $(OBJ)/users/recive.o
- @printf "\n\n\n\n\n\n"
- $(OBJ)/kernel.o : $(SRC)/kernel.c
- @printf "[ $(SRC)/kernel.c ]\n"
- $(CC) $(CC_FLAGS) -l sqlite3 $(SRC)/kernel.c -l sqlite3 -o $(OBJ)/kernel.o
- @printf "\n"
- clean:
- rm -f $(OBJ)/*.o
- rm -f $(ASM_OBJ)/*.o
- rm -rf $(OUT)/*
- run:
- qemu-system-x86_64 -cdrom out/Terminal.iso
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement