Clean up makefiles with a source grabber function
This commit is contained in:
6
Makefile
6
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:
|
||||
|
@ -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 $@
|
||||
|
18
mk/grabsrc.mk
Normal file
18
mk/grabsrc.mk
Normal file
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 $@
|
||||
|
Reference in New Issue
Block a user