From 4e3c3869427d7c5d57f775b89a8fc5a9dc76427a Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Tue, 2 Sep 2025 00:10:07 +0200 Subject: [PATCH] Clean up makefiles with a source grabber function --- Makefile | 6 ++--- kernel/Makefile | 63 +++++++++++++++++++++++---------------------- mk/grabsrc.mk | 18 +++++++++++++ user/Makefile | 2 +- user/hello/Makefile | 7 ++--- 5 files changed, 58 insertions(+), 38 deletions(-) create mode 100644 mk/grabsrc.mk diff --git a/Makefile b/Makefile index 3e026e6..e49598b 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: clean prepare cleanall iso base kernel user +.PHONY: clean prepare cleanall iso base kernel user test kernel: make -C kernel ROOT=$(PWD) all @@ -18,8 +18,8 @@ cleanall: rm -rf limine clean: - make -C kernel clean - make -C user clean + make -C kernel ROOT=$(PWD) clean + make -C user ROOT=$(PWD) clean rm -f mop2.iso base.img base: diff --git a/kernel/Makefile b/kernel/Makefile index 955015a..7695975 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -1,3 +1,5 @@ +include $(ROOT)/mk/grabsrc.mk + .PHONY: all clean ARCH ?= x86_64 @@ -6,7 +8,7 @@ PUTCHAR_ ?= fb CFLAGS := -ffreestanding -Wall -Wextra -g -fcommon -nostdinc CFLAGS += -I. \ - -I../limine \ + -I$(ROOT)/limine \ -I./std/include \ -I./flanterm/src \ -DPRINTF_INCLUDE_CONFIG_H=1 \ @@ -31,40 +33,39 @@ include extconf/extra.mk LDFLAGS += -nostdlib -static -T arch/$(ARCH)/link.ld $(shell $(CC) -print-libgcc-file-name) -SRCFILES := $(wildcard *.c) \ - $(wildcard printf/*.c) \ - $(wildcard bitmap/*.c) \ - $(wildcard pmm/*.c) \ - $(wildcard bootinfo/*.c) \ - $(wildcard spinlock/*.c) \ - $(wildcard term/*.c) \ - $(wildcard vmm/*.c) \ - $(wildcard dlmalloc/*.c) \ - $(wildcard vfs/*.c) \ - $(wildcard storedev/*.c) \ - $(wildcard util/*.c) \ - $(wildcard fs/kvfs/*.c) \ - $(wildcard fs/littlefs/*.c) \ - $(wildcard fs/portlfs/*.c) \ - $(wildcard baseimg/*.c) \ - $(wildcard proc/*.c) \ - $(wildcard hal/*.c) \ - $(wildcard hal/$(ARCH)/*.c) \ - $(wildcard hal/$(ARCH)/*.S) \ - $(wildcard paging/$(ARCH)/*.c) \ - $(wildcard paging/*.c) \ - $(wildcard *.S) \ - $(wildcard std/*.c) \ - $(wildcard flanterm/src/*.c) \ - $(wildcard flanterm/src/flanterm_backends/*.c) +SRCFILES := + +SRCFILES += $(call GRABSRC, \ + printf \ + bitmap \ + pmm \ + bootinfo \ + spinlock \ + term \ + vmm \ + dlmalloc \ + vfs \ + storedev \ + util \ + fs/kvfs \ + fs/littlefs \ + fs/portlfs \ + baseimg \ + proc \ + hal \ + hal/$(ARCH) \ + std \ + flanterm/src \ + flanterm/src/flanterm_backends \ + ) ifeq ($(ARCH),x86_64) - SRCFILES += $(wildcard hal/x86_64/uACPI/source/*.c) + SRCFILES += $(call GRABSRC, hal/x86_64/uACPI/source) endif -CFILES := $(filter %.c,$(SRCFILES)) -ASFILES := $(filter %.S,$(SRCFILES)) -OBJ := $(patsubst %.c,%.o,$(CFILES)) $(patsubst %.S,%.o,$(ASFILES)) +CFILES := $(call GET_CFILES, $(SRCFILES)) +ASFILES := $(call GET_ASFILES, $(SRCFILES)) +OBJ := $(call GET_OBJ, $(SRCFILES)) %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ diff --git a/mk/grabsrc.mk b/mk/grabsrc.mk new file mode 100644 index 0000000..e6ca68e --- /dev/null +++ b/mk/grabsrc.mk @@ -0,0 +1,18 @@ +define GRABSRC +$(foreach item, $(1), $(wildcard $(item)/*.c) $(wildcard $(item)/*.S) $(wildcard $(item)/*.s)) +endef + +define GET_CFILES +$(filter %.c,$(1)) +endef + +define GET_ASFILES +$(filter %.S,$(1)) $(filter %.s,$(1)) +endef + +define GET_OBJ +$(patsubst %.c,%.o,$(filter %.c,$(1))) \ + $(patsubst %.S,%.o,$(filter %.S,$(1))) \ + $(patsubst %.s,%.o,$(filter %.s,$(1))) +endef + diff --git a/user/Makefile b/user/Makefile index d26e74d..5e802a1 100644 --- a/user/Makefile +++ b/user/Makefile @@ -7,7 +7,7 @@ APP_DIR := $(shell find . -mindepth 1 -maxdepth 1 -type d -not -path "./arch") all: rm -f FILES.txt touch FILES.txt - for dir in $(APP_DIR); do make -C $$dir FILES=$(CURRENT_DIR)/FILES.txt all; done + for dir in $(APP_DIR); do make -C $$dir ROOT=$(ROOT) FILES=$(CURRENT_DIR)/FILES.txt all; done clean: for dir in $(APP_DIR); do make -C $$dir clean; done diff --git a/user/hello/Makefile b/user/hello/Makefile index 64130a8..c19cadd 100644 --- a/user/hello/Makefile +++ b/user/hello/Makefile @@ -1,12 +1,13 @@ +include $(ROOT)/mk/grabsrc.mk include ../Makefile.inc .PHONY: all clean TARGET := hello -SRCFILES := $(wildcard *.s) -ASFILES := $(filter %.s,$(SRCFILES)) -OBJ := $(patsubst %.s,%.o,$(ASFILES)) +SRCFILES := $(call GRABSRC, .) +ASFILES := $(call GET_ASFILES, $(SRCFILES)) +OBJ := $(call GET_OBJ, $(SRCFILES)) %.o: %.s $(CC) $(CFLAGS) -c $< -o $@