kernel: enumerate internal kexts during boot

This commit is contained in:
2023-04-08 09:27:21 +01:00
parent a1f54fd156
commit 9b75ca8b8c
6 changed files with 151 additions and 4 deletions

View File

@@ -10,6 +10,14 @@ include tools/make/gcc-cross-compile.mk
BUILD_DIR := build
CONFIG_DIR := .config
####################################
# If the user has selected some kernel extensions to include
# in the kernel image, include the file that describes the
# extension source files to build
####################################
-include $(CONFIG_DIR)/extensions.mk
####################################
# Architecture-specific source files
####################################
@@ -20,7 +28,7 @@ include arch/$(SOCKS_ARCH)/config.mk
# Platform-independent kernel source files
####################################
KERNEL_SRC_DIRS := init kernel vm ds util obj sched dev test
KERNEL_SRC_DIRS := init kernel vm ds util obj sched dev test kxld
KERNEL_C_FILES := $(foreach dir,$(KERNEL_SRC_DIRS),$(wildcard $(dir)/*.c))
KERNEL_CXX_FILES := $(foreach dir,$(KERNEL_SRC_DIRS),$(wildcard $(dir)/*.cpp))
KERNEL_OBJ := $(addprefix $(BUILD_DIR)/,$(KERNEL_C_FILES:.c=.o) $(KERNEL_CXX_FILES:.cpp=.o))
@@ -42,13 +50,15 @@ OPTIMISATION_LEVEL := -O2
CFLAGS := $(CFLAGS) -DBUILD_ID=\"$(BUILD_ID)\" $(OPTIMISATION_LEVEL) -g -fPIC -std=gnu17 \
-Iinclude -Iarch/$(SOCKS_ARCH)/include -Ilibc/include $(CWARNINGS)
KERNEL_DEFINES := -DSOCKS_INTERNAL=1
CXXFLAGS := $(CXXFLAGS) -DBUILD_ID=\"$(BUILD_ID)\" $(OPTIMISATION_LEVEL) -g -fPIC -std=gnu++17 \
-Iinclude -Iarch/$(SOCKS_ARCH)/include -Ilibc/include -Wno-language-extension-token $(CWARNINGS)
ASMFLAGS := $(ASMFLAGS) -DBUILD_ID=\"$(BUILD_ID)\"
LDFLAGS := $(LDFLAGS) -g -lgcc $(OPTIMISATION_LEVEL)
ALL_KERNEL_OBJECT_FILES := $(KERNEL_OBJ) $(ARCH_OBJ) $(LIBC_OBJ)
ALL_KERNEL_OBJECT_FILES := $(KERNEL_OBJ) $(ARCH_OBJ) $(LIBC_OBJ) $(INTERNAL_KEXT_OBJ)
ALL_KERNEL_DEPS := $(ALL_KERNEL_OBJECT_FILES:.o=.d)
all: $(BUILD_DIR)/$(KERNEL_EXEC) tools
@@ -70,12 +80,12 @@ $(BUILD_DIR)/%.o: %.S
$(BUILD_DIR)/%.o: %.c
@printf " \033[1;32mCC\033[0m \033[35m$(KERNEL_EXEC)\033[0m/$<\n"
@mkdir -p $(@D)
@$(CC) $< -o $@ -c $(CFLAGS) $(ARCH_CFLAGS) -MMD
@$(CC) $< -o $@ -c $(CFLAGS) $(ARCH_CFLAGS) -MMD $(KERNEL_DEFINES)
$(BUILD_DIR)/%.o: %.cpp
@printf " \033[1;32mCXX\033[0m \033[35m$(KERNEL_EXEC)\033[0m/$<\n"
@mkdir -p $(@D)
@$(CXX) $< -o $@ -c $(CXXFLAGS) $(ARCH_CXXFLAGS) -MMD
@$(CXX) $< -o $@ -c $(CXXFLAGS) $(ARCH_CXXFLAGS) -MMD $(KERNEL_DEFINES)
clean:
@printf " \033[1;93mRM\033[0m Deleting build files.\n"