diff --git a/ChangeLog b/ChangeLog index 33145db..a693687 100644 --- a/ChangeLog +++ b/ChangeLog @@ -99,3 +99,8 @@ IDT Overhaul * GDT : CS and TSS works * IDT : Double Fault and Stack Segment Fault have a separate stack * Stack : guard pages are now fully functionnal + +[...] Time Skip + +2019-11-08 @os-k-team + * Compilation process : beginning the modernization \ No newline at end of file diff --git a/Makefile b/Makefile index 78f8692..1a84040 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,7 @@ .PHONY: all test test32 debug gdb install_mbr dust clean OS/K .DELETE_ON_ERROR: $(BINDIR)/kaleid + ## VARIABLES ----------------------------------------------------------------- # # Debug @@ -117,9 +118,11 @@ KernDep=$(patsubst %.c,$(KOBJDIR)/%.d,$(KernSources)) ## KALEID MAKEFILE ----------------------------------------------------------- # -all : OS/K $(dep) +all : OS/K + ## MISC MAKEFILE ------------------------------------------------------------- # + ./ProjectTree: ./.stylehlp_sh @cat ./.stylehlp_sh > ./ProjectTree @echo "\n" >> ./ProjectTree @@ -133,7 +136,16 @@ wc: @rm -f build/kaleid*_disasm.asm @cat $(shell find -name *.[ch]) $(shell find -name *.asm) $(shell find -name *.inc) | wc -l +egypt: CFLAGS := -DNDEBUG $(filter-out -fstack-protector-all,$(CFLAGS)) +egypt: dust $(LibCObj) $(KernObj) + @find -name '*.expand' -o -name '*.expand' | xargs cat > rtl_exp.out + @egypt < rtl_exp.out | dot -Tps -o osk-graph.ps + @rm -f rtl_exp.out + @evince osk-graph.ps & + + ## LIB C MAKEFILE ------------------------------------------------------------ # + -include $(LibCDep) $(KOBJDIR)/libc/atoi.o: $(KALEIDDIR)/libc/atoi.c | $(KOBJDIR) @@ -161,7 +173,9 @@ $(KOBJDIR)/libc/mem.o: $(KALEIDDIR)/libc/mem.c | $(KOBJDIR) @$(KCC) -fno-strict-aliasing $< -o $@ @echo ${CL2}[$@] ${CL}Compiled.${CL3} + ## KERNEL MAKEFILE ----------------------------------------------------------- # + -include $(KernDep) $(KOBJDIR)/kernel/ke/idt.o: $(KALEIDDIR)/kernel/ke/idt.c \ @@ -209,12 +223,15 @@ $(KOBJDIR)/kernel/io/ata.o: $(KALEIDDIR)/kernel/io/ata.c \ @rm -f $@.1 $@.2 @echo ${CL2}[$@] ${CL}Compiled.${CL3} + ## DEPENDENCIES MAKEFILE ----------------------------------------------------- # + $(KOBJDIR)/%.d: %.c | $(KOBJDIR) @mkdir -p $(shell dirname $@) @$(KCC) -MM -MT $(@:%.d=%.o) -MF $@ $< @echo ${CL2}[$@] ${CL}Dependencies generated.${CL3} + ## MAIN MAKEFILE ------------------------------------------------------------- # $(KOBJDIR)/%.o: %.c | $(KOBJDIR) @@ -222,6 +239,30 @@ $(KOBJDIR)/%.o: %.c | $(KOBJDIR) @$(KCC) $< -o $@ @echo ${CL2}[$@] ${CL}Compiled.${CL3} +$(BINDIR)/kaleid: $(LOBJDIR)/kaleid.x86_64 + @echo ${CL2}[$@] ${NC}Objcopy...${CL3} + @$(OBJCOPY) -I elf64-x86-64 -O elf32-i386 $(LOBJDIR)/kaleid.x86_64 $(BINDIR)/kaleid + #@make copy_kernel + @echo ${CL2}[$@] ${CL}Success.${CL3} + +$(LOBJDIR)/kaleid.x86_64: $(LibCObj) $(KernObj) $(LOBJDIR)/loader.o + @echo ${CL2}[$@] ${NC}Linking kernel objects...${CL3} + @$(LD) $(LDFLAGS) -T $(BUILDDIR)/kernel.ld \ + $(LOBJDIR)/loader.o $(KernObj) $(LibCObj) \ + -o $(LOBJDIR)/kaleid.x86_64 + @echo ${CL2}[$@] ${CL}Success.${CL3} + +$(LOBJDIR)/loader.o: $(LOADERDIR)/loader.asm $(LOADERDIR)/*/*.inc + @echo ${CL2}[$@] ${NC}Making loader...${CL3} + @mkdir -p $(shell dirname $@) + @$(ASM) $(ASMFLAGS) $(LOADERDIR)/loader.asm -o $(LOBJDIR)/loader.o > /dev/null + @echo ${CL2}[$@] ${CL}Success.${CL3} + +OS/K: $(dep) ./ProjectTree $(BINDIR)/kaleid + @echo ${CL2}[[$@]] ${NC} OS/K successfully made, $(mode) mode.${CL3} + +## QEMU/DEBUG RELATED + test: all @qemu-system-x86_64 -vga std -cpu core2duo -soundhw pcspk -s \ -rtc base=localtime -m $(ram) -hda $(BUILDDIR)/bin/disk.img \ @@ -246,10 +287,12 @@ ddd: all -no-shutdown -d cpu_reset,guest_errors,pcall,int -s 2> $(BUILDDIR)/qemu.log & @ddd + +## HD IMAGE RELATED ---------------------------------------------------------- # + install_mbr: $(BINDIR)/disk.img $(MBRDIR)/grub.cfg @mkdir -p $(BINDIR)/disk @echo ${CL2}[$@] ${NC}Installing MBR on image...${CL3} - -@$(MBRDIR)/umount.sh $(BINDIR)/disk || /bin/true @$(MBRDIR)/grub-install.sh $(BINDIR)/disk.img $(BINDIR)/disk $(MBRDIR)/grub.cfg @rmdir $(BINDIR)/disk @echo ${CL2}[$@] ${CL}Success.${CL3} @@ -264,12 +307,15 @@ copy_kernel: @echo ${CL2}[$@] ${CL}Success.${CL3} @rmdir $(BINDIR)/disk -egypt: CFLAGS := -DNDEBUG $(filter-out -fstack-protector-all,$(CFLAGS)) -egypt: dust $(LibCObj) $(KernObj) - @find -name '*.expand' -o -name '*.expand' | xargs cat > rtl_exp.out - @egypt < rtl_exp.out | dot -Tps -o osk-graph.ps - @rm -f rtl_exp.out - @evince osk-graph.ps & +$(BINDIR)/disk.img: $(MBRDIR)/create_disk.sh + @echo ${CL2}[$@]${NC} Constructing disk image...${CL3} + -@$(MBRDIR)/umount.sh $(BINDIR)/disk || /bin/true + @$(MBRDIR)/create_disk.sh $(BINDIR)/disk.img + @make install_mbr + @echo ${CL2}[$@]${NC} Constructing disk image...${CL3} + + +## CLEANUP RELATED ----------------------------------------------------------- # dust: -@$(MBRDIR)/umount.sh $(BINDIR)/disk || /bin/true @@ -281,32 +327,3 @@ clean: @rm -Rvf ./ProjectTree $(BUILDDIR)/*.log @rm -Rvf $(BINDIR)/* $(OBJDIR)/* @echo ${CL2}[$@] ${CL}Cleaned.${CL3} - -$(BINDIR)/kaleid: $(LOBJDIR)/kaleid.x86_64 - @echo ${CL2}[$@] ${NC}Objcopy...${CL3} - @$(OBJCOPY) -I elf64-x86-64 -O elf32-i386 $(LOBJDIR)/kaleid.x86_64 $(BINDIR)/kaleid - @make copy_kernel - @echo ${CL2}[$@] ${CL}Success.${CL3} - -$(LOBJDIR)/kaleid.x86_64: $(LibCObj) $(KernObj) $(LOBJDIR)/loader.o - @echo ${CL2}[$@] ${NC}Linking kernel objects...${CL3} - @$(LD) $(LDFLAGS) -T $(BUILDDIR)/kernel.ld \ - $(LOBJDIR)/loader.o $(KernObj) $(LibCObj) \ - -o $(LOBJDIR)/kaleid.x86_64 - @echo ${CL2}[$@] ${CL}Success.${CL3} - -$(LOBJDIR)/loader.o: $(LOADERDIR)/loader.asm $(LOADERDIR)/*/*.inc - @echo ${CL2}[$@] ${NC}Making loader...${CL3} - @mkdir -p $(shell dirname $@) - @$(ASM) $(ASMFLAGS) $(LOADERDIR)/loader.asm -o $(LOBJDIR)/loader.o > /dev/null - @echo ${CL2}[$@] ${CL}Success.${CL3} - -$(BINDIR)/disk.img: $(MBRDIR)/create_disk.sh - @echo ${CL2}[$@]${NC} Constructing disk image...${CL3} - -@$(MBRDIR)/umount.sh $(BINDIR)/disk || /bin/true - @$(MBRDIR)/create_disk.sh $(BINDIR)/disk.img - @make install_mbr - @echo ${CL2}[$@]${NC} Constructing disk image...${CL3} - -OS/K: $(BINDIR)/disk.img $(BINDIR)/kaleid ./ProjectTree - @echo ${CL2}[[$@]] ${NC} OS/K successfully made, $(mode) mode.${CL3} diff --git a/ProjectTree b/ProjectTree index acd9824..45446fe 100644 --- a/ProjectTree +++ b/ProjectTree @@ -48,152 +48,61 @@ │   └── folder.desc ├── build │   ├── bin -│   │   ├── disk.img -│   │   └── kaleid │   ├── obj -│   │   ├── boot -│   │   │   ├── kaleid.x86_64 -│   │   │   └── loader.o │   │   └── kaleid │   │   ├── kernel │   │   │   ├── init -│   │   │   │   ├── info.c.229r.expand │   │   │   │   ├── info.d -│   │   │   │   ├── info.o -│   │   │   │   ├── init.c.229r.expand │   │   │   │   ├── init.d -│   │   │   │   ├── init.o -│   │   │   │   ├── ssp.c.229r.expand │   │   │   │   ├── ssp.d -│   │   │   │   ├── ssp.o -│   │   │   │   ├── table.d -│   │   │   │   └── table.o +│   │   │   │   └── table.d │   │   │   ├── io -│   │   │   │   ├── ata.c.229r.expand │   │   │   │   ├── ata.d -│   │   │   │   ├── ata.o -│   │   │   │   ├── cursor.c.229r.expand │   │   │   │   ├── cursor.d -│   │   │   │   ├── cursor.o -│   │   │   │   ├── keyb.c.229r.expand │   │   │   │   ├── keyb.d -│   │   │   │   ├── keyb.o -│   │   │   │   ├── spkr.c.229r.expand │   │   │   │   ├── spkr.d -│   │   │   │   ├── spkr.o -│   │   │   │   ├── vga.c.229r.expand -│   │   │   │   ├── vga.d -│   │   │   │   └── vga.o +│   │   │   │   └── vga.d │   │   │   ├── ke -│   │   │   │   ├── cpuid.c.229r.expand │   │   │   │   ├── cpuid.d -│   │   │   │   ├── cpuid.o -│   │   │   │   ├── idt.c.229r.expand │   │   │   │   ├── idt.d -│   │   │   │   ├── idt.o -│   │   │   │   ├── log.c.229r.expand │   │   │   │   ├── log.d -│   │   │   │   ├── log.o -│   │   │   │   ├── panic.c.229r.expand │   │   │   │   ├── panic.d -│   │   │   │   ├── panic.o -│   │   │   │   ├── rtc.c.229r.expand -│   │   │   │   ├── rtc.d -│   │   │   │   └── rtc.o +│   │   │   │   └── rtc.d │   │   │   ├── mm -│   │   │   │   ├── gdt.c.229r.expand │   │   │   │   ├── gdt.d -│   │   │   │   ├── gdt.o -│   │   │   │   ├── heap.c.229r.expand │   │   │   │   ├── heap.d -│   │   │   │   ├── heap.o -│   │   │   │   ├── malloc.c.229r.expand │   │   │   │   ├── malloc.d -│   │   │   │   ├── malloc.o -│   │   │   │   ├── map.c.229r.expand │   │   │   │   ├── map.d -│   │   │   │   ├── map.o -│   │   │   │   ├── paging.c.229r.expand -│   │   │   │   ├── paging.d -│   │   │   │   └── paging.o +│   │   │   │   └── paging.d │   │   │   ├── po -│   │   │   │   ├── shtdwn.c.229r.expand -│   │   │   │   ├── shtdwn.d -│   │   │   │   └── shtdwn.o +│   │   │   │   └── shtdwn.d │   │   │   ├── ps -│   │   │   │   ├── sched.d -│   │   │   │   └── sched.o +│   │   │   │   └── sched.d │   │   │   └── sh -│   │   │   ├── argv.c.229r.expand │   │   │   ├── argv.d -│   │   │   ├── argv.o -│   │   │   ├── musage.c.229r.expand │   │   │   ├── musage.d -│   │   │   ├── musage.o -│   │   │   ├── shcmds.c.229r.expand │   │   │   ├── shcmds.d -│   │   │   ├── shcmds.o -│   │   │   ├── shell.c.229r.expand -│   │   │   ├── shell.d -│   │   │   └── shell.o +│   │   │   └── shell.d │   │   ├── libbuf -│   │   │   ├── bclose.c.229r.expand │   │   │   ├── bclose.d -│   │   │   ├── bclose.o -│   │   │   ├── bflush.c.229r.expand │   │   │   ├── bflush.d -│   │   │   ├── bflush.o -│   │   │   ├── bgetc.c.229r.expand │   │   │   ├── bgetc.d -│   │   │   ├── bgetc.o -│   │   │   ├── bmisc.c.229r.expand │   │   │   ├── bmisc.d -│   │   │   ├── bmisc.o -│   │   │   ├── bopen.c.229r.expand │   │   │   ├── bopen.d -│   │   │   ├── bopen.o -│   │   │   ├── bprint.c.229r.expand │   │   │   ├── bprint.d -│   │   │   ├── bprint.o -│   │   │   ├── bputc.c.229r.expand │   │   │   ├── bputc.d -│   │   │   ├── bputc.o │   │   │   ├── bread.d -│   │   │   ├── bread.o │   │   │   ├── bscan.d -│   │   │   ├── bscan.o -│   │   │   ├── bscroll.c.229r.expand │   │   │   ├── bscroll.d -│   │   │   ├── bscroll.o -│   │   │   ├── bwrite.d -│   │   │   └── bwrite.o +│   │   │   └── bwrite.d │   │   └── libc -│   │   ├── atoi.c.229r.expand -│   │   ├── atoi.o -│   │   ├── ctype.c.229r.expand │   │   ├── ctype.d -│   │   ├── ctype.o -│   │   ├── errno.c.229r.expand │   │   ├── errno.d -│   │   ├── errno.o -│   │   ├── itoa.c.229r.expand -│   │   ├── itoa.o -│   │   ├── mem.c.229r.expand │   │   ├── mem.d -│   │   ├── mem.o -│   │   ├── rand.c.229r.expand │   │   ├── rand.d -│   │   ├── rand.o -│   │   ├── sprintf.c.229r.expand │   │   ├── sprintf.d -│   │   ├── sprintf.o -│   │   ├── string.c.229r.expand │   │   ├── string.d -│   │   ├── string.o -│   │   ├── strtol.c.229r.expand -│   │   ├── strtol.d -│   │   └── strtol.o -│   ├── grub.log +│   │   └── strtol.d │   └── kernel.ld ├── include │   ├── ex @@ -302,4 +211,4 @@ ├── ProjectTree └── README.md -42 directories, 235 files +41 directories, 145 files