Fennix/Drivers/Makefile
EnderIce2 ae7f39d0de
feat(kernel/drivers): add trusted drivers list
Signed-off-by: EnderIce2 <enderice2@protonmail.com>
2025-03-21 03:22:40 +00:00

80 lines
2.4 KiB
Makefile

default:
$(error Do not run this Makefile directly!)
export CC := $(__CONF_CC)
export CXX := $(__CONF_CXX)
export LD := $(__CONF_LD)
export AS := $(__CONF_AS)
export OBJDUMP := $(__CONF_OBJDUMP)
export OUTPUT_DIR := $(CURDIR)/out/
export INCLUDE_DIR := $(CURDIR)/include
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
copy_driver_signatures:
@echo "const char *trusted_drivers[] = {" > $(OUTPUT_DIR)../../Kernel/drivers/trusted.c
@find $(OUTPUT_DIR) -name "*.drv" -exec sha512sum {} \; | awk '{gsub(/.*\//, "", $$2); gsub(/\./, "_", $$2); sub(/_drv$$/, "_drv", $$2); print "\"" $$1 "\"," }' >> $(OUTPUT_DIR)../../Kernel/drivers/trusted.c
@echo "};" >> $(OUTPUT_DIR)../../Kernel/drivers/trusted.c
@echo "const __SIZE_TYPE__ trusted_drivers_count = sizeof(trusted_drivers) / sizeof(trusted_drivers[0]);" >> $(OUTPUT_DIR)../../Kernel/drivers/trusted.c
build:
cp -rf ../Kernel/include/interface/* include/
mkdir -p out
$(MAKE) -C library build
ifneq ($(filter amd64 i386,$(OSARCH)),)
$(MAKE) -C audio build
$(MAKE) -C input build
$(MAKE) -C misc build
$(MAKE) -C network build
$(MAKE) -C storage build
$(MAKE) -C filesystem build
endif
$(MAKE) copy_driver_signatures
prepare:
$(info Nothing to prepare)
clean:
rm -rf out
$(MAKE) -C library clean
ifneq ($(filter amd64 i386,$(OSARCH)),)
$(MAKE) -C audio clean
$(MAKE) -C input clean
$(MAKE) -C misc clean
$(MAKE) -C network clean
$(MAKE) -C storage clean
$(MAKE) -C filesystem clean
endif