From 20cc9ab4be8ff35bb9db70f4e7adcf384a9b2223 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Sat, 11 May 2019 00:16:40 +0200 Subject: [PATCH] Major overhaul for the Makefile --- Makefile | 34 +++++++++++++++++++--------- ProjectTree | 47 ++++++++++++++++++++++++++++++++++++--- kaleid/kernel/cpu/cpuid.c | 10 ++++----- kaleid/kernel/init/init.c | 3 --- 4 files changed, 72 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index 98d2b92..2cfe0e6 100644 --- a/Makefile +++ b/Makefile @@ -75,8 +75,7 @@ NC='\033[1;37m' ## SOURCES INSCRIPTION-------------------------------------------------------- # # Lib C sources + libbuf source -LibCSources = libc/atoi.c libc/itoa.c \ - libc/mem.c libc/ctype.c \ +LibCSources = libc/mem.c libc/ctype.c \ libc/rand.c libc/sprintf.c \ libc/status.c libc/string.c \ libc/strtol.c extras/argv.c \ @@ -86,7 +85,10 @@ LibCSources = libc/atoi.c libc/itoa.c \ libbuf/bmisc.c libbuf/bclose.c \ extras/prog.c \ -KernObj=$(patsubst %.c,$(KOBJDIR)/%.o,$(KernSources)) +LibCObj=$(patsubst %.c,$(KOBJDIR)/%.o,$(LibCSources)) +LibCDep=$(patsubst %.c,$(KOBJDIR)/%.d,$(LibCSources)) + +LibCObj += $(KOBJDIR)/libc/atoi.o $(KOBJDIR)/libc/itoa.o # Kernel sources KernSources = kernel/cpu/cpuid.c \ @@ -101,7 +103,8 @@ KernSources = kernel/cpu/cpuid.c \ kernel/io/spkr.c kernel/po/shtdwn.c \ kernel/sh/shell.c kernel/sh/shcmds.c -LibCObj=$(patsubst %.c,$(KOBJDIR)/%.o,$(LibCSources)) +KernObj=$(patsubst %.c,$(KOBJDIR)/%.o,$(KernSources)) +KernDep=$(patsubst %.c,$(KOBJDIR)/%.d,$(KernSources)) ## KALEID MAKEFILE ----------------------------------------------------------- # @@ -119,7 +122,9 @@ $(KOBJDIR): @mkdir -p $(KOBJDIR) ## LIB C MAKEFILE ------------------------------------------------------------ # -$(KOBJDIR)/libc/atoi.o: $(KALEIDDIR)/libc/atoi.c $(INCLUDEDIR)/*/*.h | $(KOBJDIR) +-include $(LibCDep) + +$(KOBJDIR)/libc/atoi.o: $(KALEIDDIR)/libc/atoi.c $(INCLUDEDIR)/kalbase.h | $(KOBJDIR) @mkdir -p $(shell dirname $@) @$(KCC) -D_NEED_ATOI $< -o $@.1 @$(KCC) -D_NEED_ATOL $< -o $@.2 @@ -129,7 +134,7 @@ $(KOBJDIR)/libc/atoi.o: $(KALEIDDIR)/libc/atoi.c $(INCLUDEDIR)/*/*.h | $(KOBJDIR @rm -f $@.1 $@.2 $@.3 $@.4 @echo ${CL2}[$@] ${CL}Compiled.${CL3} -$(KOBJDIR)/libc/itoa.o: $(KALEIDDIR)/libc/itoa.c $(INCLUDEDIR)/*/*.h | $(KOBJDIR) +$(KOBJDIR)/libc/itoa.o: $(KALEIDDIR)/libc/itoa.c $(INCLUDEDIR)/kalbase.h | $(KOBJDIR) @mkdir -p $(shell dirname $@) @$(KCC) -D_NEED_ITOA $< -o $@.1 @$(KCC) -D_NEED_LTOA $< -o $@.2 @@ -139,15 +144,16 @@ $(KOBJDIR)/libc/itoa.o: $(KALEIDDIR)/libc/itoa.c $(INCLUDEDIR)/*/*.h | $(KOBJDIR @rm -f $@.1 $@.2 $@.3 $@.4 @echo ${CL2}[$@] ${CL}Compiled.${CL3} -$(KOBJDIR)/libc/mem.o: $(KALEIDDIR)/libc/mem.c $(INCLUDEDIR)/*/*.h | $(KOBJDIR) +$(KOBJDIR)/libc/mem.o: $(KALEIDDIR)/libc/mem.c | $(KOBJDIR) @mkdir -p $(shell dirname $@) @$(KCC) -fno-strict-aliasing $< -o $@ @echo ${CL2}[$@] ${CL}Compiled.${CL3} -## MISC MAKEFILE ------------------------------------------------------------- # +## KERNEL MAKEFILE ----------------------------------------------------------- # +-include $(KernDep) $(KOBJDIR)/kernel/cpu/idt.o: $(KALEIDDIR)/kernel/cpu/idt.c \ - $(KALEIDDIR)/kernel/cpu/isr.asm $(INCLUDEDIR)/*/*.h | $(KOBJDIR) + $(KALEIDDIR)/kernel/cpu/isr.asm | $(KOBJDIR) @mkdir -p $(shell dirname $@) @$(ASM) $(ASMFLAGS) $(KALEIDDIR)/kernel/cpu/isr.asm -o $@.1 @$(KCC) $< -o $@.2 @@ -156,7 +162,7 @@ $(KOBJDIR)/kernel/cpu/idt.o: $(KALEIDDIR)/kernel/cpu/idt.c \ @echo ${CL2}[$@] ${CL}Compiled.${CL3} $(KOBJDIR)/kernel/cpu/cpuid.o: $(KALEIDDIR)/kernel/cpu/cpuid.c \ - $(KALEIDDIR)/kernel/cpu/cpuf.asm $(INCLUDEDIR)/*/*.h | $(KOBJDIR) + $(KALEIDDIR)/kernel/cpu/cpuf.asm | $(KOBJDIR) @mkdir -p $(shell dirname $@) @$(ASM) $(ASMFLAGS) $(KALEIDDIR)/kernel/cpu/cpuf.asm -o $@.1 @$(KCC) $< -o $@.2 @@ -164,9 +170,15 @@ $(KOBJDIR)/kernel/cpu/cpuid.o: $(KALEIDDIR)/kernel/cpu/cpuid.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 $(INCLUDEDIR)/*/*.h $(KALEIDDIR)/*/*/*.h | $(KOBJDIR) +$(KOBJDIR)/%.o: %.c | $(KOBJDIR) @mkdir -p $(shell dirname $@) @$(KCC) $< -o $@ @echo ${CL2}[$@] ${CL}Compiled.${CL3} diff --git a/ProjectTree b/ProjectTree index bd89bbf..cd1f48c 100644 --- a/ProjectTree +++ b/ProjectTree @@ -56,59 +56,100 @@ │   │   │   └── loader.o │   │   └── kaleid │   │   ├── extras +│   │   │   ├── argv.d │   │   │   ├── argv.o +│   │   │   ├── prog.d │   │   │   └── prog.o │   │   ├── kernel │   │   │   ├── cpu +│   │   │   │   ├── cpuid.d │   │   │   │   ├── cpuid.o +│   │   │   │   ├── idt.d │   │   │   │   └── idt.o │   │   │   ├── init +│   │   │   │   ├── info.d │   │   │   │   ├── info.o +│   │   │   │   ├── init.d │   │   │   │   ├── init.o +│   │   │   │   ├── ssp.d │   │   │   │   ├── ssp.o +│   │   │   │   ├── table.d │   │   │   │   └── table.o │   │   │   ├── io +│   │   │   │   ├── cursor.d │   │   │   │   ├── cursor.o +│   │   │   │   ├── keyb.d │   │   │   │   ├── keyb.o +│   │   │   │   ├── rtc.d │   │   │   │   ├── rtc.o +│   │   │   │   ├── spkr.d │   │   │   │   ├── spkr.o +│   │   │   │   ├── vga.d │   │   │   │   └── vga.o │   │   │   ├── ke +│   │   │   │   ├── log.d │   │   │   │   ├── log.o +│   │   │   │   ├── panic.d │   │   │   │   └── panic.o │   │   │   ├── mm +│   │   │   │   ├── gdt.d │   │   │   │   ├── gdt.o +│   │   │   │   ├── heap.d │   │   │   │   ├── heap.o +│   │   │   │   ├── malloc.d │   │   │   │   ├── malloc.o +│   │   │   │   ├── map.d │   │   │   │   └── map.o │   │   │   ├── po +│   │   │   │   ├── shtdwn.d │   │   │   │   └── shtdwn.o │   │   │   ├── ps +│   │   │   │   ├── sched.d │   │   │   │   └── sched.o │   │   │   └── sh +│   │   │   ├── shcmds.d │   │   │   ├── shcmds.o +│   │   │   ├── shell.d │   │   │   └── shell.o │   │   ├── libbuf +│   │   │   ├── bclose.d │   │   │   ├── bclose.o +│   │   │   ├── bflush.d │   │   │   ├── bflush.o +│   │   │   ├── bgetc.d │   │   │   ├── bgetc.o +│   │   │   ├── bmisc.d │   │   │   ├── bmisc.o +│   │   │   ├── bopen.d │   │   │   ├── bopen.o +│   │   │   ├── bprint.d │   │   │   ├── bprint.o +│   │   │   ├── bputc.d │   │   │   ├── bputc.o +│   │   │   ├── bread.d │   │   │   ├── bread.o +│   │   │   ├── bscan.d │   │   │   ├── bscan.o +│   │   │   ├── bscroll.d │   │   │   ├── bscroll.o +│   │   │   ├── bwrite.d │   │   │   └── bwrite.o │   │   └── libc │   │   ├── atoi.o +│   │   ├── ctype.d │   │   ├── ctype.o │   │   ├── itoa.o +│   │   ├── mem.d │   │   ├── mem.o +│   │   ├── rand.d │   │   ├── rand.o +│   │   ├── sprintf.d │   │   ├── sprintf.o +│   │   ├── status.d │   │   ├── status.o +│   │   ├── string.d │   │   ├── string.o +│   │   ├── strtol.d │   │   └── strtol.o │   ├── grub.log │   ├── kaleid32_disasm.asm @@ -156,10 +197,10 @@ │   ├── kernel │   │   ├── cpu │   │   │   ├── cpuf.asm +│   │   │   ├── cpuf.inc │   │   │   ├── cpuid.c │   │   │   ├── idt.c -│   │   │   ├── isr.asm -│   │   │   └── isr.inc +│   │   │   └── isr.asm │   │   ├── init │   │   │   ├── info.c │   │   │   ├── init.c @@ -218,4 +259,4 @@ ├── ProjectTree └── README.md -41 directories, 152 files +41 directories, 193 files diff --git a/kaleid/kernel/cpu/cpuid.c b/kaleid/kernel/cpu/cpuid.c index 7aa56ea..b012664 100644 --- a/kaleid/kernel/cpu/cpuid.c +++ b/kaleid/kernel/cpu/cpuid.c @@ -25,11 +25,11 @@ #include -void CpuGetInfos(void) -{ - CpuCpuidString(0, CpuVendorString); - return (char *)&CpuVendorString[1]; -} +/* void CpuGetInfos(void) */ +/* { */ +/* CpuCpuidString(0, CpuVendorString); */ +/* return (char *)&CpuVendorString[1]; */ +/* } */ diff --git a/kaleid/kernel/init/init.c b/kaleid/kernel/init/init.c index 70cc1ff..5c7bcd9 100644 --- a/kaleid/kernel/init/init.c +++ b/kaleid/kernel/init/init.c @@ -62,9 +62,6 @@ noreturn void BtStartKern(multiboot_info_t *mbInfo, uint mbMagic, void *codeSeg) IoGetRtcTimeChar(); IoPrintRtcTime(); - extern void PrintVendorString(void); - PrintVendorString(); - KeStartShell(); KernLog("End of input reached\n");