From 828dab1875196fc304ec5bdf18cdef4ceae7e55e Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Fri, 29 Nov 2024 05:05:49 +0200 Subject: [PATCH] chore: Update driver makefiles --- Drivers/Makefile | 54 ++++++++++++++++++++++++++++++++ Drivers/audio/ac97/Makefile | 25 +++++++++++---- Drivers/audio/hda/Makefile | 25 +++++++++++---- Drivers/config.mk | 54 -------------------------------- Drivers/filesystem/fat/Makefile | 25 +++++++++++---- Drivers/input/aip/Makefile | 25 +++++++++++---- Drivers/library/Makefile | 23 +++++--------- Drivers/misc/example/Makefile | 25 +++++++++++---- Drivers/misc/vmware/Makefile | 25 +++++++++++---- Drivers/network/e1000/Makefile | 25 +++++++++++---- Drivers/network/rtl8139/Makefile | 25 +++++++++++---- Drivers/storage/ahci/Makefile | 25 +++++++++++---- Drivers/storage/ata/Makefile | 25 +++++++++++---- Kernel/Makefile | 4 +-- config.mk | 8 ++--- tools/Makefile | 3 ++ 16 files changed, 261 insertions(+), 135 deletions(-) delete mode 100644 Drivers/config.mk diff --git a/Drivers/Makefile b/Drivers/Makefile index f7bd98d5..4a7c5888 100644 --- a/Drivers/Makefile +++ b/Drivers/Makefile @@ -1,3 +1,57 @@ +default: + $(error Do not run this Makefile directly!) + +CC := $(__CONF_CC) +CXX := $(__CONF_CXX) +LD := $(__CONF_LD) +AS := $(__CONF_AS) +OBJDUMP := $(__CONF_OBJDUMP) + +OUTPUT_DIR := $(CURDIR)/out/ +INCLUDE_DIR := $(CURDIR)/include + +export CC +export CXX +export LD +export AS +export OBJDUMP + +export OUTPUT_DIR +export INCLUDE_DIR + +DRIVER_LDFLAGS = -nostdlib -nodefaultlibs -nolibc -zmax-page-size=0x1000 \ + -Wl,-Map file.map -fvisibility=hidden -Wl,--dynamic-linker=/boot/fennix.elf + +ifeq ($(OSARCH), amd64) +DRIVER_CFLAGS = -fPIC -fPIE -pie -mno-80387 -mno-mmx -mno-3dnow \ + -mno-red-zone -mno-sse -mno-sse2 \ + -march=x86-64 -pipe -ffunction-sections \ + -msoft-float -fno-builtin + +else ifeq ($(OSARCH), i386) +DRIVER_CFLAGS = -fPIC -fPIE -pie -mno-80387 -mno-mmx -mno-3dnow \ + -mno-red-zone -mno-sse -mno-sse2 -ffunction-sections \ + -march=i386 -pipe -msoft-float -fno-builtin +else ifeq ($(OSARCH), aarch64) +DRIVER_CFLAGS = -pipe -fno-builtin -fPIC +endif + +DRIVER_CFLAGS += -I$(CURDIR)/include + +ifeq ($(DEBUG), 1) + DRIVER_CFLAGS += -DDEBUG -ggdb3 -O0 -fdiagnostics-color=always -fstack-usage +ifeq ($(OSARCH), amd64) + DRIVER_CFLAGS += -fverbose-asm +endif +ifneq ($(OSARCH), aarch64) + DRIVER_CFLAGS += -fstack-check +endif + DRIVER_LDFLAGS += -ggdb3 -O0 +endif + +export DRIVER_LDFLAGS +export DRIVER_CFLAGS + build: cp -rf ../Kernel/include/interface/* include/ mkdir -p out diff --git a/Drivers/audio/ac97/Makefile b/Drivers/audio/ac97/Makefile index b77ec939..da54d9e7 100644 --- a/Drivers/audio/ac97/Makefile +++ b/Drivers/audio/ac97/Makefile @@ -1,6 +1,5 @@ -# Config files -include ../../../config.mk -include ../../config.mk +default: + $(error Do not run this Makefile directly!) S_SOURCES = $(shell find ./ -type f -name '*.S') C_SOURCES = $(shell find ./ -type f -name '*.c') @@ -9,14 +8,28 @@ HEADERS = $(sort $(dir $(wildcard ../../include/*))) OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(S_SOURCES:.S=.o) STACK_USAGE_OBJ = $(C_SOURCES:.c=.su) $(CPP_SOURCES:.cpp=.su) -FILENAME = ac97.drv +FILENAME = $(notdir $(shell pwd)).drv build: $(FILENAME) - mv $(FILENAME) ../../out/$(FILENAME) + mv $(FILENAME) $(OUTPUT_DIR)$(FILENAME) $(FILENAME): $(OBJ) $(info Linking $@) - $(CC) $(DRIVER_LDFLAGS) $(OBJ) ../../out/dcrt0.o -L../../out -lkernel -o $@ + $(CC) $(DRIVER_LDFLAGS) $(OBJ) $(OUTPUT_DIR)dcrt0.o -L$(OUTPUT_DIR) -lkernel -o $@ + +WARNCFLAG = -Wall -Wextra + +%.o: %.c $(HEADERS) + $(info Compiling $<) + $(CC) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c17 -c $< -o $@ + +%.o: %.cpp $(HEADERS) + $(info Compiling $<) + $(CXX) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c++20 -fno-exceptions -fno-rtti -c $< -o $@ + +%.o: %.S + $(info Compiling $<) + $(AS) -o $@ $< clean: rm -f file.map $(OBJ) $(STACK_USAGE_OBJ) diff --git a/Drivers/audio/hda/Makefile b/Drivers/audio/hda/Makefile index bdb87c7e..da54d9e7 100644 --- a/Drivers/audio/hda/Makefile +++ b/Drivers/audio/hda/Makefile @@ -1,6 +1,5 @@ -# Config files -include ../../../config.mk -include ../../config.mk +default: + $(error Do not run this Makefile directly!) S_SOURCES = $(shell find ./ -type f -name '*.S') C_SOURCES = $(shell find ./ -type f -name '*.c') @@ -9,14 +8,28 @@ HEADERS = $(sort $(dir $(wildcard ../../include/*))) OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(S_SOURCES:.S=.o) STACK_USAGE_OBJ = $(C_SOURCES:.c=.su) $(CPP_SOURCES:.cpp=.su) -FILENAME = hda.drv +FILENAME = $(notdir $(shell pwd)).drv build: $(FILENAME) - mv $(FILENAME) ../../out/$(FILENAME) + mv $(FILENAME) $(OUTPUT_DIR)$(FILENAME) $(FILENAME): $(OBJ) $(info Linking $@) - $(CC) $(DRIVER_LDFLAGS) $(OBJ) ../../out/dcrt0.o -L../../out -lkernel -o $@ + $(CC) $(DRIVER_LDFLAGS) $(OBJ) $(OUTPUT_DIR)dcrt0.o -L$(OUTPUT_DIR) -lkernel -o $@ + +WARNCFLAG = -Wall -Wextra + +%.o: %.c $(HEADERS) + $(info Compiling $<) + $(CC) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c17 -c $< -o $@ + +%.o: %.cpp $(HEADERS) + $(info Compiling $<) + $(CXX) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c++20 -fno-exceptions -fno-rtti -c $< -o $@ + +%.o: %.S + $(info Compiling $<) + $(AS) -o $@ $< clean: rm -f file.map $(OBJ) $(STACK_USAGE_OBJ) diff --git a/Drivers/config.mk b/Drivers/config.mk deleted file mode 100644 index 862437f7..00000000 --- a/Drivers/config.mk +++ /dev/null @@ -1,54 +0,0 @@ -CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc -CPP = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)g++ -LD = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)ld -AS = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)as -OBJDUMP = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)objdump - -DRIVER_LDFLAGS := -nostdlib -nodefaultlibs -nolibc -zmax-page-size=0x1000 \ - -Wl,-Map file.map -fvisibility=hidden -Wl,--dynamic-linker=/boot/fennix.elf - -ifeq ($(OSARCH), amd64) - -DRIVER_CFLAGS := -fPIC -fPIE -pie -mno-80387 -mno-mmx -mno-3dnow \ - -mno-red-zone -mno-sse -mno-sse2 \ - -march=x86-64 -pipe -ffunction-sections \ - -msoft-float -fno-builtin - -else ifeq ($(OSARCH), i386) - -DRIVER_CFLAGS := -fPIC -fPIE -pie -mno-80387 -mno-mmx -mno-3dnow \ - -mno-red-zone -mno-sse -mno-sse2 -ffunction-sections \ - -march=i386 -pipe -msoft-float -fno-builtin - -else ifeq ($(OSARCH), aarch64) - -DRIVER_CFLAGS += -pipe -fno-builtin -fPIC - -endif - -DRIVER_CFLAGS += -I../../include - -ifeq ($(DEBUG), 1) - DRIVER_CFLAGS += -DDEBUG -ggdb3 -O0 -fdiagnostics-color=always -fstack-usage -ifeq ($(OSARCH), amd64) - DRIVER_CFLAGS += -fverbose-asm -endif -ifneq ($(OSARCH), aarch64) - DRIVER_CFLAGS += -fstack-check -endif - DRIVER_LDFLAGS += -ggdb3 -O0 -endif - -WARNCFLAG = -Wall -Wextra - -%.o: %.c $(HEADERS) - $(info Compiling $<) - $(CC) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c17 -c $< -o $@ - -%.o: %.cpp $(HEADERS) - $(info Compiling $<) - $(CPP) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c++20 -fno-exceptions -fno-rtti -c $< -o $@ - -%.o: %.S - $(info Compiling $<) - $(AS) -o $@ $< diff --git a/Drivers/filesystem/fat/Makefile b/Drivers/filesystem/fat/Makefile index 08692d37..da54d9e7 100644 --- a/Drivers/filesystem/fat/Makefile +++ b/Drivers/filesystem/fat/Makefile @@ -1,6 +1,5 @@ -# Config files -include ../../../config.mk -include ../../config.mk +default: + $(error Do not run this Makefile directly!) S_SOURCES = $(shell find ./ -type f -name '*.S') C_SOURCES = $(shell find ./ -type f -name '*.c') @@ -9,14 +8,28 @@ HEADERS = $(sort $(dir $(wildcard ../../include/*))) OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(S_SOURCES:.S=.o) STACK_USAGE_OBJ = $(C_SOURCES:.c=.su) $(CPP_SOURCES:.cpp=.su) -FILENAME = fat.drv +FILENAME = $(notdir $(shell pwd)).drv build: $(FILENAME) - mv $(FILENAME) ../../out/$(FILENAME) + mv $(FILENAME) $(OUTPUT_DIR)$(FILENAME) $(FILENAME): $(OBJ) $(info Linking $@) - $(CC) $(DRIVER_LDFLAGS) $(OBJ) ../../out/dcrt0.o -L../../out -lkernel -o $@ + $(CC) $(DRIVER_LDFLAGS) $(OBJ) $(OUTPUT_DIR)dcrt0.o -L$(OUTPUT_DIR) -lkernel -o $@ + +WARNCFLAG = -Wall -Wextra + +%.o: %.c $(HEADERS) + $(info Compiling $<) + $(CC) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c17 -c $< -o $@ + +%.o: %.cpp $(HEADERS) + $(info Compiling $<) + $(CXX) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c++20 -fno-exceptions -fno-rtti -c $< -o $@ + +%.o: %.S + $(info Compiling $<) + $(AS) -o $@ $< clean: rm -f file.map $(OBJ) $(STACK_USAGE_OBJ) diff --git a/Drivers/input/aip/Makefile b/Drivers/input/aip/Makefile index b0181098..da54d9e7 100644 --- a/Drivers/input/aip/Makefile +++ b/Drivers/input/aip/Makefile @@ -1,6 +1,5 @@ -# Config files -include ../../../config.mk -include ../../config.mk +default: + $(error Do not run this Makefile directly!) S_SOURCES = $(shell find ./ -type f -name '*.S') C_SOURCES = $(shell find ./ -type f -name '*.c') @@ -9,14 +8,28 @@ HEADERS = $(sort $(dir $(wildcard ../../include/*))) OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(S_SOURCES:.S=.o) STACK_USAGE_OBJ = $(C_SOURCES:.c=.su) $(CPP_SOURCES:.cpp=.su) -FILENAME = aip.drv +FILENAME = $(notdir $(shell pwd)).drv build: $(FILENAME) - mv $(FILENAME) ../../out/$(FILENAME) + mv $(FILENAME) $(OUTPUT_DIR)$(FILENAME) $(FILENAME): $(OBJ) $(info Linking $@) - $(CC) $(DRIVER_LDFLAGS) $(OBJ) ../../out/dcrt0.o -L../../out -lkernel -o $@ + $(CC) $(DRIVER_LDFLAGS) $(OBJ) $(OUTPUT_DIR)dcrt0.o -L$(OUTPUT_DIR) -lkernel -o $@ + +WARNCFLAG = -Wall -Wextra + +%.o: %.c $(HEADERS) + $(info Compiling $<) + $(CC) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c17 -c $< -o $@ + +%.o: %.cpp $(HEADERS) + $(info Compiling $<) + $(CXX) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c++20 -fno-exceptions -fno-rtti -c $< -o $@ + +%.o: %.S + $(info Compiling $<) + $(AS) -o $@ $< clean: rm -f file.map $(OBJ) $(STACK_USAGE_OBJ) diff --git a/Drivers/library/Makefile b/Drivers/library/Makefile index 30a6dbd8..7ee6b105 100644 --- a/Drivers/library/Makefile +++ b/Drivers/library/Makefile @@ -1,21 +1,14 @@ -# Config file -include ../../config.mk - FILENAME = libkernel.so -CC = ../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc -CPP = ../../$(COMPILER_PATH)/$(COMPILER_ARCH)g++ -LD = ../../$(COMPILER_PATH)/$(COMPILER_ARCH)ld -AS = ../../$(COMPILER_PATH)/$(COMPILER_ARCH)as -AR = ../../$(COMPILER_PATH)/$(COMPILER_ARCH)ar +default: + $(error Do not run this Makefile directly!) S_SOURCES = $(shell find ./ -type f -name '*.S' -not -path "./crt/*") C_SOURCES = $(shell find ./ -type f -name '*.c' -not -path "./crt/*") CPP_SOURCES = $(shell find ./ -type f -name '*.cpp' -not -path "./crt/*") -HEADERS = $(sort $(dir $(wildcard ../include/*))) +HEADERS = $(sort $(dir $(wildcard $(INCLUDE_DIR)/*))) OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(ASM_SOURCES:.asm=.o) $(S_SOURCES:.S=.o) $(PSF_SOURCES:.psf=.o) $(BMP_SOURCES:.bmp=.o) STACK_USAGE_OBJ = $(C_SOURCES:.c=.su) $(CPP_SOURCES:.cpp=.su) -INCLUDE_DIR = ../include LDFLAGS := -fPIC -fPIE -pie -nostdlib -nodefaultlibs -nolibc \ -zmax-page-size=0x1000 -Wl,-Map libkernel.map -shared @@ -43,7 +36,7 @@ CFLAGS += -pipe -fno-builtin -fPIC endif -CRT_CFLAGS := -fPIC -fPIE -pie -mno-red-zone -std=c++20 -I../include +CRT_CFLAGS := -fPIC -fPIE -pie -mno-red-zone -std=c++20 -I$(INCLUDE_DIR) ifeq ($(DEBUG), 1) CFLAGS += -DDEBUG -ggdb3 -O0 -fdiagnostics-color=always -fstack-usage @@ -60,12 +53,12 @@ endif endif build: $(FILENAME) - $(CPP) $(CRT_CFLAGS) -c crt/crt0.cpp -o dcrt0.o - mv dcrt0.o ../out/dcrt0.o + $(CXX) $(CRT_CFLAGS) -c crt/crt0.cpp -o dcrt0.o + mv dcrt0.o $(OUTPUT_DIR)dcrt0.o $(FILENAME): $(OBJ) $(info Linking $@) - $(CC) $(LDFLAGS) $(OBJ) -o ../out/$(FILENAME) + $(CC) $(LDFLAGS) $(OBJ) -o $(OUTPUT_DIR)$(FILENAME) %.o: %.c $(HEADERS) $(info Compiling $<) @@ -73,7 +66,7 @@ $(FILENAME): $(OBJ) %.o: %.cpp $(HEADERS) $(info Compiling $<) - $(CPP) $(CFLAGS) $(WARNCFLAG) -std=c++20 -fexceptions -c $< -o $@ + $(CXX) $(CFLAGS) $(WARNCFLAG) -std=c++20 -fexceptions -c $< -o $@ %.o: %.S $(info Compiling $<) diff --git a/Drivers/misc/example/Makefile b/Drivers/misc/example/Makefile index 4e9cc861..da54d9e7 100644 --- a/Drivers/misc/example/Makefile +++ b/Drivers/misc/example/Makefile @@ -1,6 +1,5 @@ -# Config files -include ../../../config.mk -include ../../config.mk +default: + $(error Do not run this Makefile directly!) S_SOURCES = $(shell find ./ -type f -name '*.S') C_SOURCES = $(shell find ./ -type f -name '*.c') @@ -9,14 +8,28 @@ HEADERS = $(sort $(dir $(wildcard ../../include/*))) OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(S_SOURCES:.S=.o) STACK_USAGE_OBJ = $(C_SOURCES:.c=.su) $(CPP_SOURCES:.cpp=.su) -FILENAME = example.drv +FILENAME = $(notdir $(shell pwd)).drv build: $(FILENAME) - mv $(FILENAME) ../../out/$(FILENAME) + mv $(FILENAME) $(OUTPUT_DIR)$(FILENAME) $(FILENAME): $(OBJ) $(info Linking $@) - $(CC) $(DRIVER_LDFLAGS) $(OBJ) ../../out/dcrt0.o -L../../out -lkernel -o $@ + $(CC) $(DRIVER_LDFLAGS) $(OBJ) $(OUTPUT_DIR)dcrt0.o -L$(OUTPUT_DIR) -lkernel -o $@ + +WARNCFLAG = -Wall -Wextra + +%.o: %.c $(HEADERS) + $(info Compiling $<) + $(CC) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c17 -c $< -o $@ + +%.o: %.cpp $(HEADERS) + $(info Compiling $<) + $(CXX) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c++20 -fno-exceptions -fno-rtti -c $< -o $@ + +%.o: %.S + $(info Compiling $<) + $(AS) -o $@ $< clean: rm -f file.map $(OBJ) $(STACK_USAGE_OBJ) diff --git a/Drivers/misc/vmware/Makefile b/Drivers/misc/vmware/Makefile index ab8f6238..da54d9e7 100644 --- a/Drivers/misc/vmware/Makefile +++ b/Drivers/misc/vmware/Makefile @@ -1,6 +1,5 @@ -# Config files -include ../../../config.mk -include ../../config.mk +default: + $(error Do not run this Makefile directly!) S_SOURCES = $(shell find ./ -type f -name '*.S') C_SOURCES = $(shell find ./ -type f -name '*.c') @@ -9,14 +8,28 @@ HEADERS = $(sort $(dir $(wildcard ../../include/*))) OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(S_SOURCES:.S=.o) STACK_USAGE_OBJ = $(C_SOURCES:.c=.su) $(CPP_SOURCES:.cpp=.su) -FILENAME = vmware.drv +FILENAME = $(notdir $(shell pwd)).drv build: $(FILENAME) - mv $(FILENAME) ../../out/$(FILENAME) + mv $(FILENAME) $(OUTPUT_DIR)$(FILENAME) $(FILENAME): $(OBJ) $(info Linking $@) - $(CC) $(DRIVER_LDFLAGS) $(OBJ) ../../out/dcrt0.o -L../../out -lkernel -o $@ + $(CC) $(DRIVER_LDFLAGS) $(OBJ) $(OUTPUT_DIR)dcrt0.o -L$(OUTPUT_DIR) -lkernel -o $@ + +WARNCFLAG = -Wall -Wextra + +%.o: %.c $(HEADERS) + $(info Compiling $<) + $(CC) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c17 -c $< -o $@ + +%.o: %.cpp $(HEADERS) + $(info Compiling $<) + $(CXX) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c++20 -fno-exceptions -fno-rtti -c $< -o $@ + +%.o: %.S + $(info Compiling $<) + $(AS) -o $@ $< clean: rm -f file.map $(OBJ) $(STACK_USAGE_OBJ) diff --git a/Drivers/network/e1000/Makefile b/Drivers/network/e1000/Makefile index 4d8a6296..da54d9e7 100644 --- a/Drivers/network/e1000/Makefile +++ b/Drivers/network/e1000/Makefile @@ -1,6 +1,5 @@ -# Config files -include ../../../config.mk -include ../../config.mk +default: + $(error Do not run this Makefile directly!) S_SOURCES = $(shell find ./ -type f -name '*.S') C_SOURCES = $(shell find ./ -type f -name '*.c') @@ -9,14 +8,28 @@ HEADERS = $(sort $(dir $(wildcard ../../include/*))) OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(S_SOURCES:.S=.o) STACK_USAGE_OBJ = $(C_SOURCES:.c=.su) $(CPP_SOURCES:.cpp=.su) -FILENAME = e1000.drv +FILENAME = $(notdir $(shell pwd)).drv build: $(FILENAME) - mv $(FILENAME) ../../out/$(FILENAME) + mv $(FILENAME) $(OUTPUT_DIR)$(FILENAME) $(FILENAME): $(OBJ) $(info Linking $@) - $(CC) $(DRIVER_LDFLAGS) $(OBJ) ../../out/dcrt0.o -L../../out -lkernel -o $@ + $(CC) $(DRIVER_LDFLAGS) $(OBJ) $(OUTPUT_DIR)dcrt0.o -L$(OUTPUT_DIR) -lkernel -o $@ + +WARNCFLAG = -Wall -Wextra + +%.o: %.c $(HEADERS) + $(info Compiling $<) + $(CC) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c17 -c $< -o $@ + +%.o: %.cpp $(HEADERS) + $(info Compiling $<) + $(CXX) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c++20 -fno-exceptions -fno-rtti -c $< -o $@ + +%.o: %.S + $(info Compiling $<) + $(AS) -o $@ $< clean: rm -f file.map $(OBJ) $(STACK_USAGE_OBJ) diff --git a/Drivers/network/rtl8139/Makefile b/Drivers/network/rtl8139/Makefile index 25c06d92..da54d9e7 100644 --- a/Drivers/network/rtl8139/Makefile +++ b/Drivers/network/rtl8139/Makefile @@ -1,6 +1,5 @@ -# Config files -include ../../../config.mk -include ../../config.mk +default: + $(error Do not run this Makefile directly!) S_SOURCES = $(shell find ./ -type f -name '*.S') C_SOURCES = $(shell find ./ -type f -name '*.c') @@ -9,14 +8,28 @@ HEADERS = $(sort $(dir $(wildcard ../../include/*))) OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(S_SOURCES:.S=.o) STACK_USAGE_OBJ = $(C_SOURCES:.c=.su) $(CPP_SOURCES:.cpp=.su) -FILENAME = rtl8139.drv +FILENAME = $(notdir $(shell pwd)).drv build: $(FILENAME) - mv $(FILENAME) ../../out/$(FILENAME) + mv $(FILENAME) $(OUTPUT_DIR)$(FILENAME) $(FILENAME): $(OBJ) $(info Linking $@) - $(CC) $(DRIVER_LDFLAGS) $(OBJ) ../../out/dcrt0.o -L../../out -lkernel -o $@ + $(CC) $(DRIVER_LDFLAGS) $(OBJ) $(OUTPUT_DIR)dcrt0.o -L$(OUTPUT_DIR) -lkernel -o $@ + +WARNCFLAG = -Wall -Wextra + +%.o: %.c $(HEADERS) + $(info Compiling $<) + $(CC) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c17 -c $< -o $@ + +%.o: %.cpp $(HEADERS) + $(info Compiling $<) + $(CXX) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c++20 -fno-exceptions -fno-rtti -c $< -o $@ + +%.o: %.S + $(info Compiling $<) + $(AS) -o $@ $< clean: rm -f file.map $(OBJ) $(STACK_USAGE_OBJ) diff --git a/Drivers/storage/ahci/Makefile b/Drivers/storage/ahci/Makefile index e14cba48..da54d9e7 100644 --- a/Drivers/storage/ahci/Makefile +++ b/Drivers/storage/ahci/Makefile @@ -1,6 +1,5 @@ -# Config files -include ../../../config.mk -include ../../config.mk +default: + $(error Do not run this Makefile directly!) S_SOURCES = $(shell find ./ -type f -name '*.S') C_SOURCES = $(shell find ./ -type f -name '*.c') @@ -9,14 +8,28 @@ HEADERS = $(sort $(dir $(wildcard ../../include/*))) OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(S_SOURCES:.S=.o) STACK_USAGE_OBJ = $(C_SOURCES:.c=.su) $(CPP_SOURCES:.cpp=.su) -FILENAME = ahci.drv +FILENAME = $(notdir $(shell pwd)).drv build: $(FILENAME) - mv $(FILENAME) ../../out/$(FILENAME) + mv $(FILENAME) $(OUTPUT_DIR)$(FILENAME) $(FILENAME): $(OBJ) $(info Linking $@) - $(CC) $(DRIVER_LDFLAGS) $(OBJ) ../../out/dcrt0.o -L../../out -lkernel -o $@ + $(CC) $(DRIVER_LDFLAGS) $(OBJ) $(OUTPUT_DIR)dcrt0.o -L$(OUTPUT_DIR) -lkernel -o $@ + +WARNCFLAG = -Wall -Wextra + +%.o: %.c $(HEADERS) + $(info Compiling $<) + $(CC) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c17 -c $< -o $@ + +%.o: %.cpp $(HEADERS) + $(info Compiling $<) + $(CXX) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c++20 -fno-exceptions -fno-rtti -c $< -o $@ + +%.o: %.S + $(info Compiling $<) + $(AS) -o $@ $< clean: rm -f file.map $(OBJ) $(STACK_USAGE_OBJ) diff --git a/Drivers/storage/ata/Makefile b/Drivers/storage/ata/Makefile index 70629111..da54d9e7 100644 --- a/Drivers/storage/ata/Makefile +++ b/Drivers/storage/ata/Makefile @@ -1,6 +1,5 @@ -# Config files -include ../../../config.mk -include ../../config.mk +default: + $(error Do not run this Makefile directly!) S_SOURCES = $(shell find ./ -type f -name '*.S') C_SOURCES = $(shell find ./ -type f -name '*.c') @@ -9,14 +8,28 @@ HEADERS = $(sort $(dir $(wildcard ../../include/*))) OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(S_SOURCES:.S=.o) STACK_USAGE_OBJ = $(C_SOURCES:.c=.su) $(CPP_SOURCES:.cpp=.su) -FILENAME = ata.drv +FILENAME = $(notdir $(shell pwd)).drv build: $(FILENAME) - mv $(FILENAME) ../../out/$(FILENAME) + mv $(FILENAME) $(OUTPUT_DIR)$(FILENAME) $(FILENAME): $(OBJ) $(info Linking $@) - $(CC) $(DRIVER_LDFLAGS) $(OBJ) ../../out/dcrt0.o -L../../out -lkernel -o $@ + $(CC) $(DRIVER_LDFLAGS) $(OBJ) $(OUTPUT_DIR)dcrt0.o -L$(OUTPUT_DIR) -lkernel -o $@ + +WARNCFLAG = -Wall -Wextra + +%.o: %.c $(HEADERS) + $(info Compiling $<) + $(CC) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c17 -c $< -o $@ + +%.o: %.cpp $(HEADERS) + $(info Compiling $<) + $(CXX) $(DRIVER_CFLAGS) $(WARNCFLAG) -std=c++20 -fno-exceptions -fno-rtti -c $< -o $@ + +%.o: %.S + $(info Compiling $<) + $(AS) -o $@ $< clean: rm -f file.map $(OBJ) $(STACK_USAGE_OBJ) diff --git a/Kernel/Makefile b/Kernel/Makefile index 2ec1bcd0..ec01cdc3 100644 --- a/Kernel/Makefile +++ b/Kernel/Makefile @@ -84,7 +84,7 @@ endif # aarch64 endif # DEBUG default: - $(error Please specify a target) + $(error Do not run this Makefile directly!) prepare: $(info Nothing to prepare) @@ -112,7 +112,7 @@ $(KERNEL_FILENAME): $(OBJ) # https://gcc.gnu.org/projects/cxx-status.html %.o: %.cpp $(HEADERS) $(info Compiling $<) - $(__CONF_CPP) $(CFLAGS) -fcoroutines $(CFLAG_STACK_PROTECTOR) $(WARNCFLAG) -std=c++20 -c $< -o $@ -fno-rtti + $(__CONF_CXX) $(CFLAGS) -fcoroutines $(CFLAG_STACK_PROTECTOR) $(WARNCFLAG) -std=c++20 -c $< -o $@ -fno-rtti %.o: %.S $(info Compiling $<) diff --git a/config.mk b/config.mk index 06040b78..9e5a760b 100644 --- a/config.mk +++ b/config.mk @@ -18,8 +18,8 @@ KERNEL_VERSION = dev BOOTLOADER = grub BUILD_KERNEL = 1 -# BUILD_USERSPACE = 1 -# BUILD_DRIVERS = 1 +#BUILD_USERSPACE = 1 +BUILD_DRIVERS = 1 QUIET_BUILD = 1 @@ -69,7 +69,7 @@ endif export __CONF_QEMU_PATH __CONF_CC := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-gcc -__CONF_CPP := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-g++ +__CONF_CXX := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-g++ __CONF_LD := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-ld __CONF_AS := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-as __CONF_NM := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-nm @@ -78,7 +78,7 @@ __CONF_OBJDUMP := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-objdump __CONF_GDB := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-gdb export __CONF_CC -export __CONF_CPP +export __CONF_CXX export __CONF_LD export __CONF_AS export __CONF_NM diff --git a/tools/Makefile b/tools/Makefile index 28e6bbe8..229f38ef 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -4,6 +4,9 @@ export PATH := $(CROSS_DIR):$(PATH) QEMU_VERSION = 9.1.2 +default: + $(error Please specify a target) + all: do_tools do_limine __clone_all do_binutils do_gcc do_qemu clean: