Advertisement
Guest User

Makefile

a guest
Dec 22nd, 2021
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 3.93 KB | None | 0 0
  1. # assembler
  2. ASM = /usr/bin/nasm
  3. # compiler
  4. CC = /usr/bin/gcc
  5. # linker
  6. LD = /usr/bin/ld
  7. # grub iso creator
  8. GRUB = /usr/bin/grub-mkrescue
  9. # sources
  10. SRC = src
  11. ASM_SRC = $(SRC)/asm
  12. # objects
  13. OBJ = obj
  14. ASM_OBJ = $(OBJ)/asm
  15. CONFIG = ./config
  16. OUT = out
  17. INC = ./include
  18. INCLUDE=-I$(INC)
  19.  
  20. MKDIR= mkdir -p
  21. CP = cp -f
  22. DEFINES=
  23.  
  24. # assembler flags
  25. ASM_FLAGS = -f elf32
  26. # compiler flags
  27. CC_FLAGS = $(INCLUDE) $(DEFINES) -m32 -std=gnu99 -ffreestanding -Wall -Wextra
  28. # linker flags, for linker add linker.ld file too
  29. LD_FLAGS = -m elf_i386 -T $(CONFIG)/linker.ld -nostdlib
  30.  
  31. # target file to create in linking
  32. TARGET=$(OUT)/Terminal.bin
  33.  
  34. # iso file target to create
  35. TARGET_ISO=$(OUT)/Terminal.iso
  36. ISO_DIR=$(OUT)/isodir
  37.  
  38. OBJECTS=$(ASM_OBJ)/entry.o $(ASM_OBJ)/load_gdt.o\
  39.         $(ASM_OBJ)/load_idt.o $(ASM_OBJ)/exception.o $(ASM_OBJ)/irq.o\
  40.         $(OBJ)/io_ports.o $(OBJ)/vga.o\
  41.         $(OBJ)/string.o $(OBJ)/console.o\
  42.         $(OBJ)/gdt.o $(OBJ)/idt.o $(OBJ)/isr.o $(OBJ)/8259_pic.o\
  43.         $(OBJ)/keyboard.o\
  44.         $(OBJ)/kernel.o
  45.  
  46.  
  47. all: $(OBJECTS)
  48.     @printf "[ linking... ]\n"
  49.     $(LD) $(LD_FLAGS) -o $(TARGET) $(OBJECTS)
  50.     grub-file --is-x86-multiboot $(TARGET)
  51.     @printf "\n"
  52.     @printf "[ building ISO... ]\n"
  53.     $(MKDIR) $(ISO_DIR)/boot/grub
  54.     $(CP) $(TARGET) $(ISO_DIR)/boot/
  55.     $(CP) $(CONFIG)/grub.cfg $(ISO_DIR)/boot/grub/
  56.     $(GRUB) -o $(TARGET_ISO) $(ISO_DIR)
  57.     rm -f $(TARGET)
  58.  
  59. $(ASM_OBJ)/entry.o : $(ASM_SRC)/entry.asm
  60.     @printf "[ $(ASM_SRC)/entry.asm ]\n"
  61.     $(ASM) $(ASM_FLAGS) $(ASM_SRC)/entry.asm -o $(ASM_OBJ)/entry.o
  62.     @printf "\n"
  63.  
  64. $(ASM_OBJ)/load_gdt.o : $(ASM_SRC)/load_gdt.asm
  65.     @printf "[ $(ASM_SRC)/load_gdt.asm ]\n"
  66.     $(ASM) $(ASM_FLAGS) $(ASM_SRC)/load_gdt.asm -o $(ASM_OBJ)/load_gdt.o
  67.     @printf "\n"
  68.  
  69. $(ASM_OBJ)/load_idt.o : $(ASM_SRC)/load_idt.asm
  70.     @printf "[ $(ASM_SRC)/load_idt.asm ]\n"
  71.     $(ASM) $(ASM_FLAGS) $(ASM_SRC)/load_idt.asm -o $(ASM_OBJ)/load_idt.o
  72.     @printf "\n"
  73.  
  74. $(ASM_OBJ)/exception.o : $(ASM_SRC)/exception.asm
  75.     @printf "[ $(ASM_SRC)/exception.asm ]\n"
  76.     $(ASM) $(ASM_FLAGS) $(ASM_SRC)/exception.asm -o $(ASM_OBJ)/exception.o
  77.     @printf "\n"
  78.  
  79. $(ASM_OBJ)/irq.o : $(ASM_SRC)/irq.asm
  80.     @printf "[ $(ASM_SRC)/irq.asm ]\n"
  81.     $(ASM) $(ASM_FLAGS) $(ASM_SRC)/irq.asm -o $(ASM_OBJ)/irq.o
  82.     @printf "\n"
  83.  
  84. $(OBJ)/io_ports.o : $(SRC)/io_ports.c
  85.     @printf "[ $(SRC)/io_ports.c ]\n"
  86.     $(CC) $(CC_FLAGS) -c $(SRC)/io_ports.c -o $(OBJ)/io_ports.o
  87.     @printf "\n"
  88.  
  89. $(OBJ)/vga.o : $(SRC)/vga.c
  90.     @printf "[ $(SRC)/vga.c ]\n"
  91.     $(CC) $(CC_FLAGS) -c $(SRC)/vga.c -o $(OBJ)/vga.o
  92.     @printf "\n"
  93.  
  94. $(OBJ)/string.o : $(SRC)/string.c
  95.     @printf "[ $(SRC)/string.c ]\n"
  96.     $(CC) $(CC_FLAGS) -c $(SRC)/string.c -o $(OBJ)/string.o
  97.     @printf "\n"
  98.  
  99. $(OBJ)/console.o : $(SRC)/console.c
  100.     @printf "[ $(SRC)/console.c ]\n"
  101.     $(CC) $(CC_FLAGS) -c $(SRC)/console.c -o $(OBJ)/console.o
  102.     @printf "\n"
  103.  
  104. $(OBJ)/gdt.o : $(SRC)/gdt.c
  105.     @printf "[ $(SRC)/gdt.c ]\n"
  106.     $(CC) $(CC_FLAGS) -c $(SRC)/gdt.c -o $(OBJ)/gdt.o
  107.     @printf "\n"
  108.  
  109. $(OBJ)/idt.o : $(SRC)/idt.c
  110.     @printf "[ $(SRC)/idt.c ]\n"
  111.     $(CC) $(CC_FLAGS) -c $(SRC)/idt.c -o $(OBJ)/idt.o
  112.     @printf "\n"
  113.  
  114. $(OBJ)/isr.o : $(SRC)/isr.c
  115.     @printf "[ $(SRC)/isr.c ]\n"
  116.     $(CC) $(CC_FLAGS) -c $(SRC)/isr.c -o $(OBJ)/isr.o
  117.     @printf "\n"
  118.  
  119. $(OBJ)/8259_pic.o : $(SRC)/8259_pic.c
  120.     @printf "[ $(SRC)/8259_pic.c ]\n"
  121.     $(CC) $(CC_FLAGS) -c $(SRC)/8259_pic.c -o $(OBJ)/8259_pic.o
  122.     @printf "\n"
  123.  
  124. $(OBJ)/keyboard.o : $(SRC)/keyboard.c
  125.     @printf "[ $(SRC)/keyboard.c ]\n"
  126.     $(CC) $(CC_FLAGS) -c $(SRC)/keyboard.c -o $(OBJ)/keyboard.o
  127.     @printf "\n"
  128.  
  129. $(OBJ)/users/recive.o : $(SRC)/users/recive.c
  130.     @printf "[ $(SRC)/users/recive.c ]\n"
  131.     gcc $(SRC)/users/recive.c $(CC) $(CC_FLAGS)  $(SRC)/users/recive.c -l sqlite3-o $(OBJ)/users/recive.o
  132.     @printf "\n\n\n\n\n\n"
  133.  
  134.  
  135. $(OBJ)/kernel.o : $(SRC)/kernel.c
  136.     @printf "[ $(SRC)/kernel.c ]\n"
  137.     $(CC) $(CC_FLAGS) -l sqlite3 $(SRC)/kernel.c -l sqlite3 -o $(OBJ)/kernel.o
  138.     @printf "\n"
  139.  
  140.  
  141.  
  142. clean:
  143.     rm -f $(OBJ)/*.o
  144.     rm -f $(ASM_OBJ)/*.o
  145.     rm -rf $(OUT)/*
  146.  
  147. run:
  148.     qemu-system-x86_64 -cdrom out/Terminal.iso
  149.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement