From 9ffc2348d2bd444a4cbeb5b590c08542d3c13f2e Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Thu, 14 Mar 2019 13:12:01 +0100 Subject: [PATCH 1/8] little makefile stuff --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d7ae0dc..00e3ce4 100644 --- a/Makefile +++ b/Makefile @@ -116,7 +116,7 @@ test: kaleid @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 64 > loader_disasm64.asm @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 32 > loader_disasm32.asm -test32: kaleid +test32: @qemu-system-i386 -hda build/bin/disk.img -d cpu_reset,guest_errors,pcall,int -enable-kvm 2> qemu.log & @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 64 > loader_disasm64.asm @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 32 > loader_disasm32.asm From 7ba6b95c199173ecd7dae16f3029daa7d7db848d Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Thu, 14 Mar 2019 18:30:29 +0100 Subject: [PATCH 2/8] working on cpu --- kaleid/include/kernel/cpu.h | 23 +++++++++++++++++++++++ kaleid/kernel/cpu/cpuid.c | 23 +++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 kaleid/include/kernel/cpu.h create mode 100644 kaleid/kernel/cpu/cpuid.c diff --git a/kaleid/include/kernel/cpu.h b/kaleid/include/kernel/cpu.h new file mode 100644 index 0000000..3a26310 --- /dev/null +++ b/kaleid/include/kernel/cpu.h @@ -0,0 +1,23 @@ +//----------------------------------------------------------------------------// +// GNU GPL OS/K // +// // +// Desc: CPU related functions // +// // +// // +// Copyright © 2018-2019 The OS/K Team // +// // +// This file is part of OS/K. // +// // +// OS/K is free software: you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation, either version 3 of the License, or // +// any later version. // +// // +// OS/K is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY//without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with OS/K. If not, see . // +//----------------------------------------------------------------------------// diff --git a/kaleid/kernel/cpu/cpuid.c b/kaleid/kernel/cpu/cpuid.c new file mode 100644 index 0000000..1728396 --- /dev/null +++ b/kaleid/kernel/cpu/cpuid.c @@ -0,0 +1,23 @@ +//----------------------------------------------------------------------------// +// GNU GPL OS/K // +// // +// Desc: CPU detection // +// // +// // +// Copyright © 2018-2019 The OS/K Team // +// // +// This file is part of OS/K. // +// // +// OS/K is free software: you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation, either version 3 of the License, or // +// any later version. // +// // +// OS/K is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY//without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with OS/K. If not, see . // +//----------------------------------------------------------------------------// From 107688098e8cbf55a8ce9547ce8e64f2aea9c677 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Thu, 14 Mar 2019 18:33:12 +0100 Subject: [PATCH 3/8] working on cpu --- kaleid/include/kernel/mm.h | 23 +++++++++++++++++++++++ kaleid/kernel/mm/.placeholder | 0 2 files changed, 23 insertions(+) create mode 100644 kaleid/include/kernel/mm.h create mode 100644 kaleid/kernel/mm/.placeholder diff --git a/kaleid/include/kernel/mm.h b/kaleid/include/kernel/mm.h new file mode 100644 index 0000000..95971fe --- /dev/null +++ b/kaleid/include/kernel/mm.h @@ -0,0 +1,23 @@ +//----------------------------------------------------------------------------// +// GNU GPL OS/K // +// // +// Desc: Memory related functions // +// // +// // +// Copyright © 2018-2019 The OS/K Team // +// // +// This file is part of OS/K. // +// // +// OS/K is free software: you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation, either version 3 of the License, or // +// any later version. // +// // +// OS/K is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY//without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with OS/K. If not, see . // +//----------------------------------------------------------------------------// diff --git a/kaleid/kernel/mm/.placeholder b/kaleid/kernel/mm/.placeholder new file mode 100644 index 0000000..e69de29 From 7add4179868f741959a5fd37880ce8f97cdae7cc Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Thu, 14 Mar 2019 21:00:03 +0100 Subject: [PATCH 4/8] stuff --- kaleid/include/kernel/cpu.h | 6 ++++++ kaleid/kernel/cpu/cpuid.c | 2 ++ 2 files changed, 8 insertions(+) diff --git a/kaleid/include/kernel/cpu.h b/kaleid/include/kernel/cpu.h index 3a26310..f347d99 100644 --- a/kaleid/include/kernel/cpu.h +++ b/kaleid/include/kernel/cpu.h @@ -21,3 +21,9 @@ // You should have received a copy of the GNU General Public License // // along with OS/K. If not, see . // //----------------------------------------------------------------------------// + +#define cpuid(in, a, b, c, d) asm("cpuid" \ + : "=a" (a), "=b" (b), "=c" (c), "=d" (d) \ + : "a" (in) \ + ); + diff --git a/kaleid/kernel/cpu/cpuid.c b/kaleid/kernel/cpu/cpuid.c index 1728396..7cab5a5 100644 --- a/kaleid/kernel/cpu/cpuid.c +++ b/kaleid/kernel/cpu/cpuid.c @@ -21,3 +21,5 @@ // You should have received a copy of the GNU General Public License // // along with OS/K. If not, see . // //----------------------------------------------------------------------------// + + From 77b9f2d066ae78a2f347b4a4a213329d3a18713f Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Sat, 16 Mar 2019 22:33:09 +0100 Subject: [PATCH 5/8] Makefile stuff --- Makefile | 21 +++++++++------------ boot/grub/grub-install.sh | 2 +- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 00e3ce4..5537649 100644 --- a/Makefile +++ b/Makefile @@ -63,17 +63,12 @@ CL3='\033[0m' NC='\033[1;37m' kernel: - cpp ./Makefile.in > build/Makefile.out - python build/idttool.py - make kernel -f build/Makefile.out.2 - rm build/Makefile.out build/Makefile.out.2 - -kernel-asm: - cpp -D_TO_ASM ./Makefile.in > build/Makefile.out - python build/idttool.py - make kernel -f build/Makefile.out.2 - rm build/Makefile.out build/Makefile.out.2 - + @echo ${CL2}[[kernel]]${NC} Making kernel...${CL3} + @cpp ./Makefile.in > build/Makefile.out + @python build/idttool.py + @make kernel -f build/Makefile.out.2 + @rm build/Makefile.out build/Makefile.out.2 + @echo ${CL2}[[kernel]]${CL} Terminated without error.${CL3} tests: cpp -D_TESTS ./Makefile.in > build/Makefile.out python build/idttool.py @@ -84,8 +79,9 @@ boot.mbr: $(BINDIR)/disk.img $(MBRDIR)/grub.cfg @mkdir -p $(BINDIR)/disk @echo ${CL2}[boot.mbr]${NC} Installing MBR on image...${CL3} @$(MBRDIR)/grub-install.sh $(BINDIR)/disk.img $(BINDIR)/disk $(MBRDIR)/grub.cfg - @echo ${CL2}[boot.mbr]${CL} OK${CL3} + @tail -1 grub.log | head -1 | grep "Installation terminée, sans erreur." @rmdir $(BINDIR)/disk + @echo ${CL2}[boot.mbr]${CL} Terminated without error.${CL3} boot.loader.asm: $(LOADERDIR)/loader.asm @echo ${CL2}[boot.loader.asm]${NC} Making loader...${CL3} @@ -106,6 +102,7 @@ copykernel: make_disk: @echo ${CL2}[make_disk]${NC} Constructing disk image...${CL3} @$(MBRDIR)/create_disk.sh $(BINDIR)/disk.img + @echo ${CL2}[make_disk]${CL} OK${CL3} diff --git a/boot/grub/grub-install.sh b/boot/grub/grub-install.sh index cd76028..d89d6eb 100755 --- a/boot/grub/grub-install.sh +++ b/boot/grub/grub-install.sh @@ -61,4 +61,4 @@ sudo umount /dev/loop1 > /dev/null echo ${CL2}[grub-install.sh]${NC} Unmounting image... \(losetup\)${CL3} sudo losetup -D > /dev/null -echo ${CL2}[grub-install.sh]${CL} Terminated without error. See grub.log for more informations.${CL3} +echo ${CL2}[grub-install.sh]${CL} See grub.log for more informations.${CL3} From bc53c696fccbdbbc7360d44eaec2968cdf70548f Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Sun, 17 Mar 2019 22:32:52 +0100 Subject: [PATCH 6/8] Big reorganization of the makefile --- Makefile | 223 +++++++++++------- Makefile.in | 104 -------- build/idttool.py | 14 -- build/obj/kaleid/crtlib/test/.placeholder | 0 build/obj/kaleid/extras/.placeholder | 0 .../{common/test => kernel}/.placeholder | 0 build/obj/kaleid/kernel/init/.placeholder | 0 build/obj/kaleid/kernel/io/.placeholder | 0 build/obj/kaleid/kernel/ke/.placeholder | 0 build/obj/kaleid/test/.placeholder | 0 build/preproc.h | 44 ---- kaleid/kernel/cpu/cpuid.c | 2 +- 12 files changed, 145 insertions(+), 242 deletions(-) delete mode 100644 Makefile.in delete mode 100644 build/idttool.py delete mode 100644 build/obj/kaleid/crtlib/test/.placeholder delete mode 100644 build/obj/kaleid/extras/.placeholder rename build/obj/kaleid/{common/test => kernel}/.placeholder (100%) delete mode 100644 build/obj/kaleid/kernel/init/.placeholder delete mode 100644 build/obj/kaleid/kernel/io/.placeholder delete mode 100644 build/obj/kaleid/kernel/ke/.placeholder delete mode 100644 build/obj/kaleid/test/.placeholder delete mode 100644 build/preproc.h diff --git a/Makefile b/Makefile index 5537649..35b2feb 100644 --- a/Makefile +++ b/Makefile @@ -22,117 +22,182 @@ # along with OS/K. If not, see . # #=----------------------------------------------------------------------------=# -.PHONY: all +## VARIABLES ----------------------------------------------------------------- # #Programs ASM=nasm LD=ld +CCNAME=x86_64-elf-gcc + ASMFLAGS=-f elf64 LDFLAGS=-melf_x86_64 +COPTIM=-O2 +CWARNS=-Wall -Wextra # -Werror=implicit-function-declaration +CINCLUDES=-Ikaleid/include +CFLAGS1=-nostdlib -ffreestanding -mcmodel=large # -std=gnu11 +CFLAGS2= -c -mno-red-zone -mno-mmx -mno-sse -mno-sse2 -fno-strict-aliasing +CFLAGS=$(CFLAGS1) $(CFLAGS2) -DNDEBUG +KCC=$(CCNAME) $(COPTIM) $(CWARNS) $(CFLAGS) $(CINCLUDES) -D_OSK_SOURCE -D_KALEID_KERNEL #Folders MBRDIR=boot/grub LOADERDIR=boot/loader +KERNELDIR=kaleid OBJDIR=build/obj BINDIR=build/bin -# Object to link (temp) -l_objects=./build/obj/kaleid/crtlib/memory.o \ - ./build/obj/kaleid/crtlib/rand.o \ - ./build/obj/kaleid/crtlib/string.o \ - ./build/obj/kaleid/crtlib/ultoa.o \ - ./build/obj/kaleid/crtlib/utoa.o \ - ./build/obj/kaleid/crtlib/ctype.o \ - ./build/obj/kaleid/crtlib/itoa.o \ - ./build/obj/kaleid/crtlib/ltoa.o \ - ./build/obj/kaleid/crtlib/sprintf.o \ - ./build/obj/kaleid/extras/prog.o \ - ./build/obj/kaleid/extras/argv.o \ - ./build/obj/kaleid/kernel/init/table.o \ - ./build/obj/kaleid/kernel/init/init.o \ - ./build/obj/kaleid/kernel/io/vga.o \ - ./build/obj/kaleid/kernel/io/cursor.o \ - ./build/obj/kaleid/kernel/io/term.o \ - ./build/obj/kaleid/kernel/ke/panic.o \ - ./build/obj/boot/loader.o - #Color codes CL='\033[0;32m' CL2='\033[1;36m' CL3='\033[0m' NC='\033[1;37m' -kernel: - @echo ${CL2}[[kernel]]${NC} Making kernel...${CL3} - @cpp ./Makefile.in > build/Makefile.out - @python build/idttool.py - @make kernel -f build/Makefile.out.2 - @rm build/Makefile.out build/Makefile.out.2 - @echo ${CL2}[[kernel]]${CL} Terminated without error.${CL3} -tests: - cpp -D_TESTS ./Makefile.in > build/Makefile.out - python build/idttool.py - make tests -f build/Makefile.out.2 - rm build/Makefile.out build/Makefile.out.2 +## MAIN MAKEFILE ------------------------------------------------------------- # +.PHONY: all +all : kernel -boot.mbr: $(BINDIR)/disk.img $(MBRDIR)/grub.cfg - @mkdir -p $(BINDIR)/disk - @echo ${CL2}[boot.mbr]${NC} Installing MBR on image...${CL3} - @$(MBRDIR)/grub-install.sh $(BINDIR)/disk.img $(BINDIR)/disk $(MBRDIR)/grub.cfg - @tail -1 grub.log | head -1 | grep "Installation terminée, sans erreur." - @rmdir $(BINDIR)/disk - @echo ${CL2}[boot.mbr]${CL} Terminated without error.${CL3} - -boot.loader.asm: $(LOADERDIR)/loader.asm - @echo ${CL2}[boot.loader.asm]${NC} Making loader...${CL3} - @$(ASM) $(ASMFLAGS) $(LOADERDIR)/loader.asm -o $(OBJDIR)/boot/loader.o > /dev/null - @echo ${CL2}[boot.loader.asm]${CL} OK${CL3} - -loader: boot.loader.asm link copykernel - -copykernel: - @mkdir -p $(BINDIR)/disk - @echo ${CL2}[disk]${NC} Integrating kernel...${CL3} - @$(MBRDIR)/mount.sh $(BINDIR)/disk.img $(BINDIR)/disk - @cp $(BINDIR)/kaleid $(BINDIR)/disk/boot/kaleid - @$(MBRDIR)/umount.sh $(BINDIR)/disk - @echo ${CL2}[disk]${CL} OK${CL3} - @rmdir $(BINDIR)/disk - -make_disk: - @echo ${CL2}[make_disk]${NC} Constructing disk image...${CL3} - @$(MBRDIR)/create_disk.sh $(BINDIR)/disk.img - - @echo ${CL2}[make_disk]${CL} OK${CL3} - - -kaleid: kernel loader - -test: kaleid +.PHONY: test +test: all @qemu-system-x86_64 -hda build/bin/disk.img -d cpu_reset,guest_errors,pcall,int -enable-kvm 2> qemu.log & @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 64 > loader_disasm64.asm @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 32 > loader_disasm32.asm - -test32: +.PHONY: test32 +test32: all @qemu-system-i386 -hda build/bin/disk.img -d cpu_reset,guest_errors,pcall,int -enable-kvm 2> qemu.log & @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 64 > loader_disasm64.asm @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 32 > loader_disasm32.asm -debug: kaleid +.PHONY: debug +debug: all @qemu-system-x86_64 -hda build/bin/disk.img -d cpu_reset,guest_errors,pcall,int -s -S -enable-kvm 2> qemu.log & @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 64 > loader_disasm64.asm @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 32 > loader_disasm32.asm -boot: make_disk boot.mbr - @echo ${CL2}[[boot]]${CL} Terminated without error.${CL3} -all: boot kaleid - @echo ${CL2}[[all]]${CL} Terminated without error.${CL3} +.PHONY: kernel +kernel: $(BINDIR)/kaleid $(BINDIR)/disk.img + @mkdir -p $(BINDIR)/disk + @echo ${CL2}[[$@]] ${NC}Integrating kernel...${CL3} + -@$(MBRDIR)/umount.sh $(BINDIR)/disk + @$(MBRDIR)/mount.sh $(BINDIR)/disk.img $(BINDIR)/disk + @cp $(BINDIR)/kaleid $(BINDIR)/disk/boot/kaleid + @$(MBRDIR)/umount.sh $(BINDIR)/disk + @echo ${CL2}[[$@]] ${CL}Success.${CL3} + @rmdir $(BINDIR)/disk -link: - @$(LD) $(LDFLAGS) -T build/kernel.ld $(l_objects) -o $(OBJDIR)/boot/kaleid.x86_64 - @x86_64-elf-objcopy -I elf64-x86-64 -O elf32-i386 $(OBJDIR)/boot/kaleid.x86_64 $(BINDIR)/kaleid +.PHONY: install_mbr +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 + @$(MBRDIR)/grub-install.sh $(BINDIR)/disk.img $(BINDIR)/disk $(MBRDIR)/grub.cfg + @tail -1 grub.log | head -1 | grep "Installation terminée, sans erreur." + @rmdir $(BINDIR)/disk + @echo ${CL2}[$@] ${CL}Success.${CL3} +.PHONY: clean clean: - @rm -Rf $(BINDIR)/* - @rm -Rf $(OBJDIR)/*/*/*/*.o + -@$(MBRDIR)/umount.sh $(BINDIR)/disk + @rm -Rvf $(BINDIR)/*.* + @rm -Rvf $(OBJDIR)/*.o + @rm -Rvf $(OBJDIR)/*/*.o + @rm -Rvf $(OBJDIR)/*/*/*.o + +.PHONY: kal_com +kal_com: $(OBJDIR)/kaleid/atoi.o $(OBJDIR)/kaleid/ctype.o \ + $(OBJDIR)/kaleid/itoa.o $(OBJDIR)/kaleid/memory.o \ + $(OBJDIR)/kaleid/rand.o $(OBJDIR)/kaleid/sprintf.o \ + $(OBJDIR)/kaleid/status.o $(OBJDIR)/kaleid/string.o \ + $(OBJDIR)/kaleid/strtol.o $(OBJDIR)/kaleid/argv.o \ + $(OBJDIR)/kaleid/prog.o $(OBJDIR)/kaleid/atol.o \ + $(OBJDIR)/kaleid/atou.o $(OBJDIR)/kaleid/atoul.o \ + $(OBJDIR)/kaleid/utoa.o $(OBJDIR)/kaleid/ltoa.o \ + $(OBJDIR)/kaleid/ultoa.o + +.PHONY: kal_kern +kal_kern: $(OBJDIR)/kaleid/kernel/cpuid.o $(OBJDIR)/kaleid/kernel/init.o \ + $(OBJDIR)/kaleid/kernel/table.o $(OBJDIR)/kaleid/kernel/cursor.o \ + $(OBJDIR)/kaleid/kernel/term.o $(OBJDIR)/kaleid/kernel/vga.o \ + $(OBJDIR)/kaleid/kernel/panic.o + + +$(BINDIR)/kaleid: $(OBJDIR)/boot/kaleid.x86_64 + @echo ${CL2}[$@] ${NC}Objcopy...${CL3} + @x86_64-elf-objcopy -I elf64-x86-64 -O elf32-i386 $(OBJDIR)/boot/kaleid.x86_64 $(BINDIR)/kaleid + @echo ${CL2}[$@] ${CL}Success.${CL3} + +$(OBJDIR)/boot/kaleid.x86_64: $(OBJDIR)/boot/loader.o kal_com kal_kern + @echo ${CL2}[$@] ${NC}Linking kernel objects...${CL3} + @$(LD) $(LDFLAGS) -T build/kernel.ld \ + $(OBJDIR)/boot/loader.o \ + $(OBJDIR)/kaleid/*.o \ + $(OBJDIR)/kaleid/kernel/*.o \ + -o $(OBJDIR)/boot/kaleid.x86_64 + @echo ${CL2}[$@] ${CL}Success.${CL3} + +$(OBJDIR)/boot/loader.o: $(LOADERDIR)/loader.asm + @echo ${CL2}[$@] ${NC}Making loader...${CL3} + @$(ASM) $(ASMFLAGS) $(LOADERDIR)/loader.asm -o $(OBJDIR)/boot/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 + @$(MBRDIR)/create_disk.sh $(BINDIR)/disk.img + @make install_mbr + @echo ${CL2}[$@]${NC} Constructing disk image...${CL3} +## KALEID MAKEFILE ----------------------------------------------------------- # + +# Crtlib objects +$(OBJDIR)/kaleid/atoi.o: $(KERNELDIR)/crtlib/atoi.c + @$(KCC) -D_NEED_ATOI $< -o $@ +$(OBJDIR)/kaleid/atol.o: $(KERNELDIR)/crtlib/atoi.c + @$(KCC) -D_NEED_ATOL $< -o $@ +$(OBJDIR)/kaleid/atou.o: $(KERNELDIR)/crtlib/atoi.c + @$(KCC) -D_NEED_ATOU $< -o $@ +$(OBJDIR)/kaleid/atoul.o: $(KERNELDIR)/crtlib/atoi.c + @$(KCC) -D_NEED_ATOUL $< -o $@ +$(OBJDIR)/kaleid/ctype.o: $(KERNELDIR)/crtlib/ctype.c + @$(KCC) $< -o $@ +$(OBJDIR)/kaleid/itoa.o: $(KERNELDIR)/crtlib/itoa.c + @$(KCC) -D_NEED_ITOA $< -o $@ +$(OBJDIR)/kaleid/ltoa.o: $(KERNELDIR)/crtlib/itoa.c + @$(KCC) -D_NEED_LTOA $< -o $@ +$(OBJDIR)/kaleid/utoa.o: $(KERNELDIR)/crtlib/itoa.c + @$(KCC) -D_NEED_UTOA $< -o $@ +$(OBJDIR)/kaleid/ultoa.o: $(KERNELDIR)/crtlib/itoa.c + @$(KCC) -D_NEED_ULTOA $< -o $@ +$(OBJDIR)/kaleid/memory.o: $(KERNELDIR)/crtlib/memory.c + @$(KCC) -fno-strict-aliasing $< -o $@ +$(OBJDIR)/kaleid/rand.o: $(KERNELDIR)/crtlib/rand.c + @$(KCC) $< -o $@ +$(OBJDIR)/kaleid/sprintf.o: $(KERNELDIR)/crtlib/sprintf.c + @$(KCC) $< -o $@ +$(OBJDIR)/kaleid/status.o: $(KERNELDIR)/crtlib/status.c + @$(KCC) $< -o $@ +$(OBJDIR)/kaleid/string.o: $(KERNELDIR)/crtlib/string.c + @$(KCC) $< -o $@ +$(OBJDIR)/kaleid/strtol.o: $(KERNELDIR)/crtlib/strtol.c + @$(KCC) $< -o $@ + +# Extra objects +$(OBJDIR)/kaleid/argv.o: $(KERNELDIR)/extras/argv.c + @$(KCC) $< -o $@ +$(OBJDIR)/kaleid/prog.o: $(KERNELDIR)/extras/prog.c + @$(KCC) $< -o $@ + +# Kernel objects +$(OBJDIR)/kaleid/kernel/cpuid.o: $(KERNELDIR)/kernel/cpu/cpuid.c + @$(KCC) $< -o $@ +$(OBJDIR)/kaleid/kernel/init.o: $(KERNELDIR)/kernel/init/init.c + @$(KCC) $< -o $@ +$(OBJDIR)/kaleid/kernel/table.o: $(KERNELDIR)/kernel/init/table.c + @$(KCC) $< -o $@ +$(OBJDIR)/kaleid/kernel/cursor.o: $(KERNELDIR)/kernel/io/cursor.c + @$(KCC) $< -o $@ +$(OBJDIR)/kaleid/kernel/term.o: $(KERNELDIR)/kernel/io/term.c + @$(KCC) $< -o $@ +$(OBJDIR)/kaleid/kernel/vga.o: $(KERNELDIR)/kernel/io/vga.c + @$(KCC) $< -o $@ +$(OBJDIR)/kaleid/kernel/panic.o: $(KERNELDIR)/kernel/ke/panic.c + @$(KCC) $< -o $@ diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index eec9b98..0000000 --- a/Makefile.in +++ /dev/null @@ -1,104 +0,0 @@ -// -*- Mode: Makefile -*- - -//----------------------------------------------------------------------------// -// GNU GPL OS/K // -// // -// Desc: Project Makefile // -// // -// // -// Copyright © 2018-2019 The OS/K Team // -// // -// This file is part of OS/K. // -// // -// OS/K is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// any later version. // -// // -// OS/K is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY//without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with OS/K. If not, see . // -//----------------------------------------------------------------------------// - -// The madman's Makefile -#include "build/preproc.h" - -CCNAME=x86_64-elf-gcc -CC2NAME=gcc -COPTIM=-O2 -CWARNS=-Wall -Wextra // -Werror=implicit-function-declaration -CINCLUDES=-Ikaleid/include - -CFLAGS1=-nostdlib -ffreestanding -mcmodel=large // -std=gnu11 -CFLAGS2=_ASMTYPE -mno-red-zone -mno-mmx -mno-sse -mno-sse2 -CFLAGS=$(CFLAGS1) $(CFLAGS2) -DNDEBUG - -CC=$(CCNAME) $(COPTIM) $(CWARNS) $(CFLAGS) $(CINCLUDES) - -BINDIR=build/bin -OBJDIR=build/obj - -BOOTDIR=boot -COMMDIR=kaleid/crtlib -KERNDIR=kaleid/kernel -SYSTDIR=kaleid/system -LINXDIR=kaleid/test - - -// COMMON MAKEFILE - -COBJDIR=$(OBJDIR)/$(COMMDIR) -LOBJDIR=$(OBJDIR)/$(LINXDIR) - -COMMOBJS=COBJ6(string, status, rand, memory, strtol, sprintf) COBJ4(itoa, ltoa, utoa, ultoa) COBJ4(atoi, atol, atou, atoul) COBJ3(../extras/prog, ../extras/argv, ctype) - -TCC=$(CC2NAME) $(COPTIM) $(CWARNS) $(CINCLUDES) -KCC=$(CC) -D_OSK_SOURCE -D_KALEID_KERNEL - -comm-convert: - @COMPILE_CONVRT1(itoa) -D_NEED_ITOA - @COMPILE_CONVRT1(ltoa) -D_NEED_LTOA - @COMPILE_CONVRT1(utoa) -D_NEED_UTOA - @COMPILE_CONVRT1(ultoa) -D_NEED_ULTOA - @COMPILE_CONVRT2(atoi) -D_NEED_ATOI - @COMPILE_CONVRT2(atol) -D_NEED_ATOL - @COMPILE_CONVRT2(atou) -D_NEED_ATOU - @COMPILE_CONVRT2(atoul) -D_NEED_ATOUL - -common: comm-convert - @COMPILE_COMMON(rand) - @COMPILE_COMMON(ctype) - @COMPILE_COMMON(string) - @COMPILE_COMMON(status) - @COMPILE_COMMON(memory) -fno-strict-aliasing - @COMPILE_COMMON(strtol) - @COMPILE_COMMON(sprintf) - @COMPILE_COMMON(../extras/prog) - @COMPILE_COMMON(../extras/argv) - -tests: common - $(TCC) -c $(LINXDIR)/test-common.c -o $(LOBJDIR)/test-common.o - $(TCC) $(COMMOBJS) $(LOBJDIR)/test-common.o -o $(BINDIR)/comm-test - -//----------------------------------------------------------------------------# -// KERNEL MAKEFILE - -KOBJDIR=$(OBJDIR)/$(KERNDIR) - -KERNOBJS=KOBJ6(init/init, init/table, ke/panic, io/term, io/cursor, io/vga) - -kernel: common - @COMPILE_KERNEL(init/init) - @COMPILE_KERNEL(init/table) - @COMPILE_KERNEL(ke/panic) - @COMPILE_KERNEL(io/cursor) - @COMPILE_KERNEL(io/term) - @COMPILE_KERNEL(io/vga) - //LINK_KERNEL(kaleid-kernel.elf) - -//----------------------------------------------------------------------------# - diff --git a/build/idttool.py b/build/idttool.py deleted file mode 100644 index 200d19d..0000000 --- a/build/idttool.py +++ /dev/null @@ -1,14 +0,0 @@ -# don't mind this file - -f1 = open("build/Makefile.out", "r+") -f2 = open("build/Makefile.out.2", "w+") - -fl = f1.readlines() -for ln in fl: - if ln[0] == ' ' and ln[1] != ' ': - f2.write('\t') - f2.write(ln) - -f1.close() -f2.close() - diff --git a/build/obj/kaleid/crtlib/test/.placeholder b/build/obj/kaleid/crtlib/test/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/build/obj/kaleid/extras/.placeholder b/build/obj/kaleid/extras/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/build/obj/kaleid/common/test/.placeholder b/build/obj/kaleid/kernel/.placeholder similarity index 100% rename from build/obj/kaleid/common/test/.placeholder rename to build/obj/kaleid/kernel/.placeholder diff --git a/build/obj/kaleid/kernel/init/.placeholder b/build/obj/kaleid/kernel/init/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/build/obj/kaleid/kernel/io/.placeholder b/build/obj/kaleid/kernel/io/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/build/obj/kaleid/kernel/ke/.placeholder b/build/obj/kaleid/kernel/ke/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/build/obj/kaleid/test/.placeholder b/build/obj/kaleid/test/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/build/preproc.h b/build/preproc.h deleted file mode 100644 index 746bd2c..0000000 --- a/build/preproc.h +++ /dev/null @@ -1,44 +0,0 @@ -// be careful with this file - -#ifdef _TESTS -# define CCC TCC -#else -# define CCC KCC -#endif - -#ifdef _TO_ASM -# define _CSPREF -S -# define _OUTFIX S -# define _ASMTYPE -masm=intel -# define LINK_KERNEL(out) -#else -# define _CSPREF -c -# define _OUTFIX o -# define _ASMTYPE -# define LINK_KERNEL(out) $(KCC) -T ./build/kernel.ld $(CLDSCR) $(COMMOBJS) $(KERNOBJS) -o $(BINDIR)/out -#endif - -#define COMPILE_CONVRT1(file) $(CCC) _CSPREF $(COMMDIR)/itoa.c -o $(COBJDIR)/file._OUTFIX -#define COMPILE_CONVRT2(file) $(CCC) _CSPREF $(COMMDIR)/atoi.c -o $(COBJDIR)/file._OUTFIX - -#define COMPILE_COMMON(file) $(CCC) _CSPREF $(COMMDIR)/file.c -o $(COBJDIR)/file._OUTFIX -#define COMPILE_KERNEL(file) $(KCC) _CSPREF $(KERNDIR)/file.c -o $(KOBJDIR)/file._OUTFIX - -#define COBJ1(x1) $(COBJDIR)/x1.o -#define COBJ2(x1,x2) COBJ1(x1) $(COBJDIR)/x2.o -#define COBJ3(x1,x2,x3) COBJ2(x1,x2) $(COBJDIR)/x3.o -#define COBJ4(x1,x2,x3,x4) COBJ3(x1,x2,x3) $(COBJDIR)/x4.o -#define COBJ5(x1,x2,x3,x4,x5) COBJ4(x1,x2,x3,x4) $(COBJDIR)/x5.o -#define COBJ6(x1,x2,x3,x4,x5,x6) COBJ5(x1,x2,x3,x4,x5) $(COBJDIR)/x6.o -#define COBJ7(x1,x2,x3,x4,x5,x6,x7) COBJ6(x1,x2,x3,x4,x5,x6) $(COBJDIR)/x7.o -#define COBJ8(x1,x2,x3,x4,x5,x6,x7,x8) COBJ7(x1,x2,x3,x4,x5,x6,x7) $(COBJDIR)/x8.o - -#define KOBJ1(x1) $(KOBJDIR)/x1.o -#define KOBJ2(x1,x2) KOBJ1(x1) $(KOBJDIR)/x2.o -#define KOBJ3(x1,x2,x3) KOBJ2(x1,x2) $(KOBJDIR)/x3.o -#define KOBJ4(x1,x2,x3,x4) KOBJ3(x1,x2,x3) $(KOBJDIR)/x4.o -#define KOBJ5(x1,x2,x3,x4,x5) KOBJ4(x1,x2,x3,x4) $(KOBJDIR)/x5.o -#define KOBJ6(x1,x2,x3,x4,x5,x6) KOBJ5(x1,x2,x3,x4,x5) $(KOBJDIR)/x6.o -#define KOBJ7(x1,x2,x3,x4,x5,x6,x7) KOBJ6(x1,x2,x3,x4,x5,x6) $(KOBJDIR)/x7.o -#define KOBJ8(x1,x2,x3,x4,x5,x6,x7,x8) KOBJ7(x1,x2,x3,x4,x5,x6,x7) $(KOBJDIR)/x8.o - diff --git a/kaleid/kernel/cpu/cpuid.c b/kaleid/kernel/cpu/cpuid.c index 7cab5a5..ef8b36a 100644 --- a/kaleid/kernel/cpu/cpuid.c +++ b/kaleid/kernel/cpu/cpuid.c @@ -22,4 +22,4 @@ // along with OS/K. If not, see . // //----------------------------------------------------------------------------// - +int stub; From fb5fc7ba6cd770b9ee72521c91361bd0e923d7f7 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Sun, 17 Mar 2019 22:47:21 +0100 Subject: [PATCH 7/8] Big reorganization of the makefile --- Makefile | 187 +++++++++++++++++++++++++++---------------------------- 1 file changed, 92 insertions(+), 95 deletions(-) diff --git a/Makefile b/Makefile index 35b2feb..02e1fd7 100644 --- a/Makefile +++ b/Makefile @@ -52,103 +52,23 @@ CL2='\033[1;36m' CL3='\033[0m' NC='\033[1;37m' -## MAIN MAKEFILE ------------------------------------------------------------- # + .PHONY: all -all : kernel +all : OS/K -.PHONY: test -test: all - @qemu-system-x86_64 -hda build/bin/disk.img -d cpu_reset,guest_errors,pcall,int -enable-kvm 2> qemu.log & - @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 64 > loader_disasm64.asm - @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 32 > loader_disasm32.asm -.PHONY: test32 -test32: all - @qemu-system-i386 -hda build/bin/disk.img -d cpu_reset,guest_errors,pcall,int -enable-kvm 2> qemu.log & - @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 64 > loader_disasm64.asm - @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 32 > loader_disasm32.asm - -.PHONY: debug -debug: all - @qemu-system-x86_64 -hda build/bin/disk.img -d cpu_reset,guest_errors,pcall,int -s -S -enable-kvm 2> qemu.log & - @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 64 > loader_disasm64.asm - @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 32 > loader_disasm32.asm - - -.PHONY: kernel -kernel: $(BINDIR)/kaleid $(BINDIR)/disk.img - @mkdir -p $(BINDIR)/disk - @echo ${CL2}[[$@]] ${NC}Integrating kernel...${CL3} - -@$(MBRDIR)/umount.sh $(BINDIR)/disk - @$(MBRDIR)/mount.sh $(BINDIR)/disk.img $(BINDIR)/disk - @cp $(BINDIR)/kaleid $(BINDIR)/disk/boot/kaleid - @$(MBRDIR)/umount.sh $(BINDIR)/disk - @echo ${CL2}[[$@]] ${CL}Success.${CL3} - @rmdir $(BINDIR)/disk - -.PHONY: install_mbr -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 - @$(MBRDIR)/grub-install.sh $(BINDIR)/disk.img $(BINDIR)/disk $(MBRDIR)/grub.cfg - @tail -1 grub.log | head -1 | grep "Installation terminée, sans erreur." - @rmdir $(BINDIR)/disk - @echo ${CL2}[$@] ${CL}Success.${CL3} - -.PHONY: clean -clean: - -@$(MBRDIR)/umount.sh $(BINDIR)/disk - @rm -Rvf $(BINDIR)/*.* - @rm -Rvf $(OBJDIR)/*.o - @rm -Rvf $(OBJDIR)/*/*.o - @rm -Rvf $(OBJDIR)/*/*/*.o - -.PHONY: kal_com -kal_com: $(OBJDIR)/kaleid/atoi.o $(OBJDIR)/kaleid/ctype.o \ - $(OBJDIR)/kaleid/itoa.o $(OBJDIR)/kaleid/memory.o \ - $(OBJDIR)/kaleid/rand.o $(OBJDIR)/kaleid/sprintf.o \ - $(OBJDIR)/kaleid/status.o $(OBJDIR)/kaleid/string.o \ - $(OBJDIR)/kaleid/strtol.o $(OBJDIR)/kaleid/argv.o \ - $(OBJDIR)/kaleid/prog.o $(OBJDIR)/kaleid/atol.o \ - $(OBJDIR)/kaleid/atou.o $(OBJDIR)/kaleid/atoul.o \ - $(OBJDIR)/kaleid/utoa.o $(OBJDIR)/kaleid/ltoa.o \ - $(OBJDIR)/kaleid/ultoa.o - -.PHONY: kal_kern -kal_kern: $(OBJDIR)/kaleid/kernel/cpuid.o $(OBJDIR)/kaleid/kernel/init.o \ - $(OBJDIR)/kaleid/kernel/table.o $(OBJDIR)/kaleid/kernel/cursor.o \ - $(OBJDIR)/kaleid/kernel/term.o $(OBJDIR)/kaleid/kernel/vga.o \ - $(OBJDIR)/kaleid/kernel/panic.o - - -$(BINDIR)/kaleid: $(OBJDIR)/boot/kaleid.x86_64 - @echo ${CL2}[$@] ${NC}Objcopy...${CL3} - @x86_64-elf-objcopy -I elf64-x86-64 -O elf32-i386 $(OBJDIR)/boot/kaleid.x86_64 $(BINDIR)/kaleid - @echo ${CL2}[$@] ${CL}Success.${CL3} - -$(OBJDIR)/boot/kaleid.x86_64: $(OBJDIR)/boot/loader.o kal_com kal_kern - @echo ${CL2}[$@] ${NC}Linking kernel objects...${CL3} - @$(LD) $(LDFLAGS) -T build/kernel.ld \ - $(OBJDIR)/boot/loader.o \ - $(OBJDIR)/kaleid/*.o \ - $(OBJDIR)/kaleid/kernel/*.o \ - -o $(OBJDIR)/boot/kaleid.x86_64 - @echo ${CL2}[$@] ${CL}Success.${CL3} - -$(OBJDIR)/boot/loader.o: $(LOADERDIR)/loader.asm - @echo ${CL2}[$@] ${NC}Making loader...${CL3} - @$(ASM) $(ASMFLAGS) $(LOADERDIR)/loader.asm -o $(OBJDIR)/boot/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 - @$(MBRDIR)/create_disk.sh $(BINDIR)/disk.img - @make install_mbr - @echo ${CL2}[$@]${NC} Constructing disk image...${CL3} ## KALEID MAKEFILE ----------------------------------------------------------- # -# Crtlib objects +# Common objects +kal_com_obj= $(OBJDIR)/kaleid/atoi.o $(OBJDIR)/kaleid/ctype.o \ + $(OBJDIR)/kaleid/itoa.o $(OBJDIR)/kaleid/memory.o \ + $(OBJDIR)/kaleid/rand.o $(OBJDIR)/kaleid/sprintf.o \ + $(OBJDIR)/kaleid/status.o $(OBJDIR)/kaleid/string.o \ + $(OBJDIR)/kaleid/strtol.o $(OBJDIR)/kaleid/argv.o \ + $(OBJDIR)/kaleid/prog.o $(OBJDIR)/kaleid/atol.o \ + $(OBJDIR)/kaleid/atou.o $(OBJDIR)/kaleid/atoul.o \ + $(OBJDIR)/kaleid/utoa.o $(OBJDIR)/kaleid/ltoa.o \ + $(OBJDIR)/kaleid/ultoa.o + $(OBJDIR)/kaleid/atoi.o: $(KERNELDIR)/crtlib/atoi.c @$(KCC) -D_NEED_ATOI $< -o $@ $(OBJDIR)/kaleid/atol.o: $(KERNELDIR)/crtlib/atoi.c @@ -179,14 +99,17 @@ $(OBJDIR)/kaleid/string.o: $(KERNELDIR)/crtlib/string.c @$(KCC) $< -o $@ $(OBJDIR)/kaleid/strtol.o: $(KERNELDIR)/crtlib/strtol.c @$(KCC) $< -o $@ - -# Extra objects $(OBJDIR)/kaleid/argv.o: $(KERNELDIR)/extras/argv.c @$(KCC) $< -o $@ $(OBJDIR)/kaleid/prog.o: $(KERNELDIR)/extras/prog.c @$(KCC) $< -o $@ # Kernel objects +kal_kern_obj= $(OBJDIR)/kaleid/kernel/cpuid.o $(OBJDIR)/kaleid/kernel/init.o \ + $(OBJDIR)/kaleid/kernel/table.o $(OBJDIR)/kaleid/kernel/cursor.o \ + $(OBJDIR)/kaleid/kernel/term.o $(OBJDIR)/kaleid/kernel/vga.o \ + $(OBJDIR)/kaleid/kernel/panic.o + $(OBJDIR)/kaleid/kernel/cpuid.o: $(KERNELDIR)/kernel/cpu/cpuid.c @$(KCC) $< -o $@ $(OBJDIR)/kaleid/kernel/init.o: $(KERNELDIR)/kernel/init/init.c @@ -201,3 +124,77 @@ $(OBJDIR)/kaleid/kernel/vga.o: $(KERNELDIR)/kernel/io/vga.c @$(KCC) $< -o $@ $(OBJDIR)/kaleid/kernel/panic.o: $(KERNELDIR)/kernel/ke/panic.c @$(KCC) $< -o $@ + +## MAIN MAKEFILE ------------------------------------------------------------- # + +.PHONY: test +test: all + @qemu-system-x86_64 -hda build/bin/disk.img -d cpu_reset,guest_errors,pcall,int -enable-kvm 2> qemu.log & + @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 64 > loader_disasm64.asm + @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 32 > loader_disasm32.asm +.PHONY: test32 +test32: all + @qemu-system-i386 -hda build/bin/disk.img -d cpu_reset,guest_errors,pcall,int -enable-kvm 2> qemu.log & + @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 64 > loader_disasm64.asm + @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 32 > loader_disasm32.asm + +.PHONY: debug +debug: all + @qemu-system-x86_64 -hda build/bin/disk.img -d cpu_reset,guest_errors,pcall,int -s -S -enable-kvm 2> qemu.log & + @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 64 > loader_disasm64.asm + @ndisasm $(BINDIR)/kaleid -o 0x00100000 -b 32 > loader_disasm32.asm + +.PHONY:OS/K +OS/K: $(BINDIR)/kaleid $(BINDIR)/disk.img + @mkdir -p $(BINDIR)/disk + @echo ${CL2}[[$@]] ${NC}Integrating kernel...${CL3} + -@$(MBRDIR)/umount.sh $(BINDIR)/disk + @$(MBRDIR)/mount.sh $(BINDIR)/disk.img $(BINDIR)/disk + @cp $(BINDIR)/kaleid $(BINDIR)/disk/boot/kaleid + @$(MBRDIR)/umount.sh $(BINDIR)/disk + @echo ${CL2}[[$@]] ${CL}Success.${CL3} + @rmdir $(BINDIR)/disk + +.PHONY: install_mbr +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 + @$(MBRDIR)/grub-install.sh $(BINDIR)/disk.img $(BINDIR)/disk $(MBRDIR)/grub.cfg + @tail -1 grub.log | head -1 | grep "Installation terminée, sans erreur." + @rmdir $(BINDIR)/disk + @echo ${CL2}[$@] ${CL}Success.${CL3} + +.PHONY: clean +clean: + -@$(MBRDIR)/umount.sh $(BINDIR)/disk + @rm -Rvf $(BINDIR)/*.* + @rm -Rvf $(OBJDIR)/*.o + @rm -Rvf $(OBJDIR)/*/*.o + @rm -Rvf $(OBJDIR)/*/*/*.o + +$(BINDIR)/kaleid: $(OBJDIR)/boot/kaleid.x86_64 + @echo ${CL2}[$@] ${NC}Objcopy...${CL3} + @x86_64-elf-objcopy -I elf64-x86-64 -O elf32-i386 $(OBJDIR)/boot/kaleid.x86_64 $(BINDIR)/kaleid + @echo ${CL2}[$@] ${CL}Success.${CL3} + +$(OBJDIR)/boot/kaleid.x86_64: $(kal_kern_obj) $(kal_com_obj) $(OBJDIR)/boot/loader.o + @echo ${CL2}[$@] ${NC}Linking kernel objects...${CL3} + @$(LD) $(LDFLAGS) -T build/kernel.ld \ + $(OBJDIR)/boot/loader.o \ + $(OBJDIR)/kaleid/*.o \ + $(OBJDIR)/kaleid/kernel/*.o \ + -o $(OBJDIR)/boot/kaleid.x86_64 + @echo ${CL2}[$@] ${CL}Success.${CL3} + +$(OBJDIR)/boot/loader.o: $(LOADERDIR)/loader.asm + @echo ${CL2}[$@] ${NC}Making loader...${CL3} + @$(ASM) $(ASMFLAGS) $(LOADERDIR)/loader.asm -o $(OBJDIR)/boot/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 + @$(MBRDIR)/create_disk.sh $(BINDIR)/disk.img + @make install_mbr + @echo ${CL2}[$@]${NC} Constructing disk image...${CL3} From a8e28c491b332e47517010548932bc4995aa3579 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Sun, 17 Mar 2019 22:52:34 +0100 Subject: [PATCH 8/8] Update Readme.md --- Readme.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Readme.md b/Readme.md index 566c708..3133e29 100644 --- a/Readme.md +++ b/Readme.md @@ -20,19 +20,17 @@ To compile this project from sources, you must first install the dependencies ``` apt update && apt upgrade -apt install grub-pc dosfstools make nasm +apt install grub-pc dosfstools make nasm qemu ``` You also need to have the [x86-64 ELF gcc cross-compiler](https://www.os-k.eu/build-tools/cross-cc.tar.xz) in `/opt/cross-cc`. -To compile for the first time, you must compile the whole project, in order to build the loop disk image : - +To compile, simply use at the root of this project : ``` -make all +make ``` -After that, you can use this to compile the kernel only : - +To compile and test, simply use at the root of this project : ``` -make kaleid +make test ```