CTAOS v6
This commit is contained in:
		
							
								
								
									
										270
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										270
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,270 @@
 | 
			
		||||
# User sets these
 | 
			
		||||
CC = gcc
 | 
			
		||||
ASM = nasm
 | 
			
		||||
CURDIR = /media/6C9EE8DF9EE8A336/ctaos
 | 
			
		||||
 | 
			
		||||
# Other parameters & paths used
 | 
			
		||||
LSCRIPT = SysCore/objects/linker.ld
 | 
			
		||||
OBJ = Build
 | 
			
		||||
 | 
			
		||||
CCPARAM = -Wall -O -fstrength-reduce -fomit-frame-pointer -nostdinc -fno-builtin -I./SysCore/include -c
 | 
			
		||||
ASMPARAMobj = -f aout
 | 
			
		||||
ASMPARAMbin = -f bin
 | 
			
		||||
 | 
			
		||||
#.PHONY : FORCE
 | 
			
		||||
#FORCE :#
 | 
			
		||||
#	@echo -e "\e[1;4m\e[36mC\e[31mT\e[32mA \e[37mOperating System v0.1\e[0"
 | 
			
		||||
 | 
			
		||||
# Build final floppy image
 | 
			
		||||
ctaos.img : $(OBJ)bootload.bin $(OBJ)stage2.cta $(OBJ)kernel.bin
 | 
			
		||||
	@echo -e "\e[1;32m[ 99%]\e[0m Making floppy image"
 | 
			
		||||
	dd bs=512 count=2880 if=/dev/zero of=ctaos.img
 | 
			
		||||
	mkfs.msdos ctaos.img
 | 
			
		||||
	dd bs=512 count=1 conv=notrunc if=$(OBJ)bootload.bin of=ctaos.img
 | 
			
		||||
	sudo mkdir /media/floppy1/
 | 
			
		||||
	sudo mount -o loop ctaos.img /media/floppy1/
 | 
			
		||||
	sudo cp $(OBJ)stage2.cta /media/floppy1
 | 
			
		||||
	sudo cp $(OBJ)kernel.bin /media/floppy1
 | 
			
		||||
	sudo umount /media/floppy1/
 | 
			
		||||
	sudo rm -r /media/floppy1/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Build Bootloader: Stage 1
 | 
			
		||||
$(OBJ)bootload.bin : SysBoot/stage1/bootload.asm
 | 
			
		||||
	echo -e "\e[1;32m[  4%]\e[0m BOOTLOADER :: stage 1"
 | 
			
		||||
	@$(ASM) $(ASMPARAMbin) SysBoot/stage1/bootload.asm -o $(OBJ)bootload.bin
 | 
			
		||||
 | 
			
		||||
# Build Bootloader: Stage 2
 | 
			
		||||
$(OBJ)stage2.cta : SysBoot/stage2/stage2.asm \
 | 
			
		||||
		    SysBoot/stage2/a20.inc \
 | 
			
		||||
		    SysBoot/stage2/bootinfo.inc \
 | 
			
		||||
		    SysBoot/stage2/common.inc \
 | 
			
		||||
		    SysBoot/stage2/fat12.inc \
 | 
			
		||||
		    SysBoot/stage2/floppy16.inc \
 | 
			
		||||
		    SysBoot/stage2/gdt.inc \
 | 
			
		||||
		    SysBoot/stage2/getdata.inc \
 | 
			
		||||
		    SysBoot/stage2/memory.inc \
 | 
			
		||||
		    SysBoot/stage2/paging.inc \
 | 
			
		||||
		    SysBoot/stage2/stdio.inc
 | 
			
		||||
	@echo -e "\e[1;32m[  8%]\e[0m BOOTLOADER :: stage 2"
 | 
			
		||||
	@$(ASM) $(ASMPARAMbin) -I./SysBoot/stage2/ -o $(OBJ)stage2.cta SysBoot/stage2/stage2.asm
 | 
			
		||||
 | 
			
		||||
# Build KERNEL:
 | 
			
		||||
$(OBJ)kernel.bin : $(OBJ)/loader.o \
 | 
			
		||||
		   $(OBJ)/main.o \
 | 
			
		||||
		   $(OBJ)/lib-conio.o \
 | 
			
		||||
		   $(OBJ)/lib-ctype.o \
 | 
			
		||||
		   $(OBJ)/mmngr-asm.o \
 | 
			
		||||
		   $(OBJ)/mmngr-phys.o \
 | 
			
		||||
		   $(OBJ)/mmngr-virt.o \
 | 
			
		||||
		   $(OBJ)/mmngr-lib-pde.o \
 | 
			
		||||
		   $(OBJ)/mmngr-lib-pte.o \
 | 
			
		||||
		   $(OBJ)/shell.o \
 | 
			
		||||
		   $(OBJ)/lib-stdlib.o \
 | 
			
		||||
		   $(OBJ)/lib-string.o \
 | 
			
		||||
		   $(OBJ)/lib-system.o \
 | 
			
		||||
		   $(OBJ)/lib-time.o \
 | 
			
		||||
		   $(OBJ)/driver-bsod.o \
 | 
			
		||||
		   $(OBJ)/driver-cpu.o \
 | 
			
		||||
		   $(OBJ)/driver-dma.o \
 | 
			
		||||
		   $(OBJ)/driver-drivers.o \
 | 
			
		||||
		   $(OBJ)/driver-floppy.o \
 | 
			
		||||
		   $(OBJ)/driver-gdt.o \
 | 
			
		||||
		   $(OBJ)/driver-gdt-asm.o \
 | 
			
		||||
		   $(OBJ)/driver-idt.o \
 | 
			
		||||
		   $(OBJ)/driver-idt-asm.o \
 | 
			
		||||
		   $(OBJ)/driver-isrs.o \
 | 
			
		||||
		   $(OBJ)/driver-isrs-asm.o \
 | 
			
		||||
		   $(OBJ)/driver-irq.o \
 | 
			
		||||
		   $(OBJ)/driver-irq-asm.o \
 | 
			
		||||
		   $(OBJ)/driver-keyboard.o \
 | 
			
		||||
		   $(OBJ)/driver-fat.o \
 | 
			
		||||
		   $(OBJ)/driver-pic.o \
 | 
			
		||||
		   $(OBJ)/driver-pit.o \
 | 
			
		||||
		   $(OBJ)/video-vga03h.o
 | 
			
		||||
	ld -T SysCore/link.ld
 | 
			
		||||
 | 
			
		||||
# ----------   Kernel components   ---------- #  
 | 
			
		||||
 | 
			
		||||
# Build assembly sources:
 | 
			
		||||
$(OBJ)/loader.o : SysCore/loader.asm
 | 
			
		||||
	@ echo -e "\e[1;33m[  9%]\e[0m Assembly kernel loader"
 | 
			
		||||
	@$(ASM) $(ASMPARAMobj) -o $(OBJ)/loader.o SysCore/loader.asm
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-gdt-asm.o : SysCore/drivers/cpu/gdt/gdt.asm
 | 
			
		||||
	@echo -e "\e[1;33m[ 10%]\e[0m Assembly code for GDT"
 | 
			
		||||
	@$(ASM) $(ASMPARAMobj) -o $(OBJ)/driver-gdt-asm.o SysCore/drivers/cpu/gdt/gdt.asm
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-idt-asm.o : SysCore/drivers/cpu/idt/idt.asm
 | 
			
		||||
	@echo -e "\e[1;33m[ 11%]\e[0m Assembly code for IDT"
 | 
			
		||||
	@$(ASM) $(ASMPARAMobj) -o $(OBJ)/driver-idt-asm.o SysCore/drivers/cpu/idt/idt.asm
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-irq-asm.o : SysCore/drivers/cpu/irq/irq.asm
 | 
			
		||||
	@echo -e "\e[1;33m[ 12%]\e[0m Assembly code for IRQ"
 | 
			
		||||
	@$(ASM) $(ASMPARAMobj) -o $(OBJ)/driver-irq-asm.o SysCore/drivers/cpu/irq/irq.asm
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-isrs-asm.o : SysCore/drivers/cpu/isrs/isrs.asm
 | 
			
		||||
	@echo -e "\e[1;33m[ 13%]\e[0m Assembly code for ISRs"
 | 
			
		||||
	@$(ASM) $(ASMPARAMobj) -o $(OBJ)/driver-isrs-asm.o SysCore/drivers/cpu/isrs/isrs.asm
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Build MAIN function
 | 
			
		||||
$(OBJ)/main.o : SysCore/main.c SysCore/include/string.h \
 | 
			
		||||
		SysCore/include/system.h SysCore/include/conio.h \
 | 
			
		||||
		SysCore/drivers/drivers.h SysCore/include/time.h \
 | 
			
		||||
		SysCore/include/bootinfo.h SysCore/memory/mmngr_ph.h \
 | 
			
		||||
		SysCore/memory/mmngr_vi.h SysCore/video/vga03h.h
 | 
			
		||||
	@echo -e "\e[1;32m[ 14%]\e[0m MAIN C Function"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/main.o SysCore/main.c
 | 
			
		||||
 | 
			
		||||
# Build SHELL
 | 
			
		||||
$(OBJ)/shell.o : SysCore/shell/shell.c SysCore/shell/apps.h \
 | 
			
		||||
		SysCore/include/system.h SysCore/include/conio.h \
 | 
			
		||||
		SysCore/drivers/drivers.h SysCore/include/time.h \
 | 
			
		||||
		SysCore/memory/mmngr_ph.h SysCore/drivers/keyboard.h \
 | 
			
		||||
		SysCore/drivers/cpu/cpu.h SysCore/include/drivers/floppy.h \
 | 
			
		||||
		SysCore/drivers/filesys/fat.h
 | 
			
		||||
	@echo -e "\e[1;34m[ 15%]\e[0m Shell"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/shell.o SysCore/shell/shell.c
 | 
			
		||||
 | 
			
		||||
# Build LIBRARIES
 | 
			
		||||
$(OBJ)/lib-conio.o : SysCore/lib/conio.c \
 | 
			
		||||
		 SysCore/include/drivers/keyboard.h SysCore/include/stdarg.h \
 | 
			
		||||
		 SysCore/include/conio.h SysCore/include/stdlib.h \
 | 
			
		||||
		 SysCore/include/string.h SysCore/include/ctype.h \
 | 
			
		||||
		 SysCore/memory/mmngr_ph.h
 | 
			
		||||
	@echo -e "\e[1;34m[ 16%]\e[0m Libraries: conio"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/lib-conio.o SysCore/lib/conio.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/lib-ctype.o : SysCore/lib/ctype.c SysCore/include/ctype.h
 | 
			
		||||
	@echo -e "\e[1;34m[ 17%]\e[0m Libraries: ctype"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/lib-ctype.o SysCore/lib/ctype.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/lib-stdlib.o : SysCore/lib/stdlib.c SysCore/include/stdlib.h \
 | 
			
		||||
		 SysCore/include/ctype.h
 | 
			
		||||
	@echo -e "\e[1;34m[ 18%]\e[0m Libraries: stdlib"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/lib-stdlib.o SysCore/lib/stdlib.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/lib-string.o : SysCore/lib/string.c SysCore/include/string.h
 | 
			
		||||
	@echo -e "\e[1;32m[ 19%]\e[0m Libraries: string"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/lib-string.o SysCore/lib/string.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/lib-system.o : SysCore/lib/system.c SysCore/include/system.h
 | 
			
		||||
	@echo -e "\e[1;34m[ 20%]\e[0m Libraries: system"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/lib-system.o SysCore/lib/system.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/lib-time.o : SysCore/lib/time.c SysCore/include/time.h \
 | 
			
		||||
		    SysCore/include/system.h
 | 
			
		||||
	@echo -e "\e[1;34m[ 21%]\e[0m Libraries: time"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/lib-time.o SysCore/lib/time.c
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Build Memory Manager
 | 
			
		||||
$(OBJ)/mmngr-asm.o : SysCore/memory/mmngr.asm
 | 
			
		||||
	@echo -e "\e[1;36m[ 22%]\e[0m Memory manager assembly code"
 | 
			
		||||
	@$(ASM) $(ASMPARAMobj) -o $(OBJ)/mmngr-asm.o SysCore/memory/mmngr.asm
 | 
			
		||||
 | 
			
		||||
$(OBJ)/mmngr-phys.o : SysCore/memory/mmngr_ph.c SysCore/memory/mmngr_ph.h
 | 
			
		||||
	@echo -e "\e[1;36m[ 22%]\e[0m Physical memory manager"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/mmngr-phys.o SysCore/memory/mmngr_ph.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/mmngr-virt.o : SysCore/memory/mmngr_vi.c SysCore/memory/mmngr_vi.h \
 | 
			
		||||
		      SysCore/memory/mmngr_ph.h
 | 
			
		||||
	@echo -e "\e[1;36m[ 23%]\e[0m Virtual memory manager"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/mmngr-virt.o SysCore/memory/mmngr_vi.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/mmngr-lib-pde.o : SysCore/memory/lib/pde.c SysCore/memory/lib/pde.h
 | 
			
		||||
	@echo -e "\e[1;36m[ 24%]\e[0m Memory manager libraries: PDE"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/mmngr-lib-pde.o SysCore/memory/lib/pde.c 
 | 
			
		||||
 | 
			
		||||
$(OBJ)/mmngr-lib-pte.o : SysCore/memory/lib/pte.c SysCore/memory/lib/pte.h
 | 
			
		||||
	@echo -e "\e[1;36m[ 25%]\e[0m Memory manager libraries: PTE"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/mmngr-lib-pte.o SysCore/memory/lib/pte.c 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Build drivers
 | 
			
		||||
$(OBJ)/driver-drivers.o : SysCore/drivers/drivers.c SysCore/include/system.h \
 | 
			
		||||
			SysCore/drivers/cpu/cpu.h SysCore/drivers/clock/clock.h \
 | 
			
		||||
			SysCore/drivers/floppy/floppy.h SysCore/include/drivers/keyboard.h
 | 
			
		||||
	@echo -e "\e[1;35m[ 26%]\e[0m Driver manager"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-drivers.o SysCore/drivers/drivers.c 
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-bsod.o : SysCore/drivers/BSOD.c SysCore/include/system.h \
 | 
			
		||||
		       SysCore/include/conio.h
 | 
			
		||||
	@echo -e "\e[1;35m[ 27%]\e[0m Kernel panic screen"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-bsod.o SysCore/drivers/BSOD.c 
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-cpu.o : SysCore/drivers/cpu/cpu.c SysCore/include/system.h \
 | 
			
		||||
		      SysCore/drivers/cpu/cpu.h SysCore/drivers/cpu/gdt/gdt.h \
 | 
			
		||||
		      SysCore/drivers/cpu/idt/idt.h SysCore/drivers/cpu/irq/irq.h \
 | 
			
		||||
		      SysCore/drivers/cpu/isrs/isrs.h
 | 
			
		||||
	@echo -e "\e[1;35m[ 28%]\e[0m CPU modules"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-cpu.o SysCore/drivers/cpu/cpu.c 
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-gdt.o : SysCore/drivers/cpu/gdt/gdt.c SysCore/drivers/cpu/gdt/gdt.h
 | 
			
		||||
	@echo -e "\e[1;35m[ 29%]\e[0m Global descriptor table"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-gdt.o SysCore/drivers/cpu/gdt/gdt.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-idt.o : SysCore/drivers/cpu/idt/idt.c SysCore/drivers/cpu/idt/idt.h \
 | 
			
		||||
		      SysCore/include/system.h
 | 
			
		||||
	@echo -e "\e[1;35m[ 30%]\e[0m Interrupt descriptor table"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-idt.o SysCore/drivers/cpu/idt/idt.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-isrs.o : SysCore/drivers/cpu/isrs/isrs.c SysCore/drivers/cpu/isrs/isrs.h \
 | 
			
		||||
		       SysCore/drivers/cpu/idt/idt.h SysCore/include/system.h \
 | 
			
		||||
		       SysCore/include/conio.h
 | 
			
		||||
	@echo -e "\e[1;35m[ 31%]\e[0m Interrupt service routines"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-isrs.o SysCore/drivers/cpu/isrs/isrs.c
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-irq.o : SysCore/drivers/cpu/irq/irq.c SysCore/drivers/cpu/irq/irq.h \
 | 
			
		||||
		      SysCore/include/system.h SysCore/drivers/cpu/idt/idt.h \
 | 
			
		||||
		      SysCore/drivers/cpu/pic/pic.h 
 | 
			
		||||
	@echo -e "\e[1;35m[ 32%]\e[0m Interrupt requests"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-irq.o SysCore/drivers/cpu/irq/irq.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-pic.o : SysCore/drivers/cpu/irq/pic.c SysCore/drivers/cpu/irq/pic.h \
 | 
			
		||||
		      SysCore/include/system.h  
 | 
			
		||||
	@echo -e "\e[1;35m[ 33%]\e[0m Programmable interrupt controller"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-pic.o SysCore/drivers/cpu/irq/pic.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-pit.o : SysCore/drivers/clock/pit.c SysCore/drivers/clock/clock.h \
 | 
			
		||||
		      SysCore/include/system.h SysCore/include/time.h
 | 
			
		||||
	@echo -e "\e[1;35m[ 34%]\e[0m Programmable interval timer"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-pit.o SysCore/drivers/clock/pic.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-keyboard.o : SysCore/drivers/keyboard/keyboard.c SysCore/include/system.h \
 | 
			
		||||
			   SysCore/include/drivers/keyboard.h  
 | 
			
		||||
	@echo -e "\e[1;35m[ 35%]\e[0m Keyboard"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-pic.o SysCore/drivers/cpu/irq/pic.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-dma.o : SysCore/drivers/floppy/dma.c SysCore/drivers/floppy/dma.h \
 | 
			
		||||
			SysCore/include/system.h  
 | 
			
		||||
	@echo -e "\e[1;35m[ 36%]\e[0m DMA Controller"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-dma.o SysCore/drivers/floppy/dma.c
 | 
			
		||||
 | 
			
		||||
$(OBJ)/driver-floppy.o : SysCore/drivers/floppy/floppy.c SysCore/drivers/floppy/dma.h \
 | 
			
		||||
		      SysCore/include/system.h SysCore/include/time.h \
 | 
			
		||||
		      SysCore/include/conio.h SysCore/drivers/floppy/storage.h \
 | 
			
		||||
		      SysCore/drivers/floppy/floppy.h
 | 
			
		||||
	@echo -e "\e[1;35m[ 37%]\e[0m FDC Controller"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-floppy.o SysCore/drivers/floppy/floppy.c
 | 
			
		||||
 | 
			
		||||
# TODO: add SysCore/drivers/filesys/vfs.h
 | 
			
		||||
$(OBJ)/driver-fat.o : SysCore/drivers/filesys/fat.c SysCore/drivers/filesys/fat.h \
 | 
			
		||||
		      SysCore/drivers/floppy/floppy.h SysCore/include/conio.h
 | 
			
		||||
	@echo -e "\e[1;35m[ 38%]\e[0m File system"
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/driver-fat.o SysCore/drivers/floppy/fat.c
 | 
			
		||||
 | 
			
		||||
# TODO: add vfs.c
 | 
			
		||||
 | 
			
		||||
# TODO: add colors
 | 
			
		||||
$(OBJ)/video-vga03h.o : SysCore/video/vga03h.c SysCore/include/conio.h \
 | 
			
		||||
			SysCore/include/system.h
 | 
			
		||||
	@$(CC) $(CCPARAM) -o $(OBJ)/video-vga03h.o SysCore/video/vga03h.c
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.PHONY : clean
 | 
			
		||||
clean:
 | 
			
		||||
	- rm ctaos.img
 | 
			
		||||
	rm $(OBJ)*.*
 | 
			
		||||
		Reference in New Issue
	
	Block a user