include $(dir $(lastword $(MAKEFILE_LIST)))../../Makefile.cfg ACPI_DEBUG ?= no BIN := ../Output/$(ARCH)-kernel/libacpica.a _VERS := $(patsubst acpica-unix-%.tar.gz,%,$(wildcard acpica-unix-*.tar.gz)) _VERS := $(sort $(_VERS)) _LATEST := $(lastword $(_VERS)) ifeq ($(ACPICAVER),) ifeq ($(_LATEST),) $(warning Unable to find an archive matching acpica-unix-%.tar.gz in Externals/ACPICA) $(warning Go to https://www.acpica.org/downloads/ to get it) $(error No ACPICA archive found, disable ACPI with 'USE_ACPICA=0') endif ifneq ($(_LATEST),$(_VERS)) $(warning Multiple archvies found, picked $(_LATEST)) endif ACPICAVER := $(_LATEST) endif ACPICAROOT := acpica-unix-$(ACPICAVER)/ ACPICA_ARCHIVE := acpica-unix-$(ACPICAVER).tar.gz COMPDIR := $(ACPICAROOT)source/components/ KERNELDIR := ../../KernelLand/Kernel/ CPPFLAGS += -I $(KERNELDIR)include -I$(KERNELDIR)arch/$(ARCHDIR)/include -D_MODULE_NAME_=\"ACPICA\" CPPFLAGS += -I $(ACPICAROOT)source/include -D _ACESS -D __KERNEL__ CPPFLAGS += -D ARCH=$(ARCH) -D ARCHDIR=$(ARCHDIR) -D PLATFORM=\"$(PLATFORM)\" -D ARCHDIR_IS_$(ARCHDIR)=1 -D PLATFORM_is_$(PLATFORM)=1 CPPFLAGS += -D KERNEL_VERSION=$(KERNEL_VERSION) -ffreestanding ifneq ($(ACPI_DEBUG),no) CPPFLAGS += -D ACPI_DEBUG_OUTPUT=1 -D ACPI_DISASSEMBLER=1 endif CFLAGS += -Wall -fno-stack-protector -Wstrict-prototypes -std=gnu99 -g SRCS := $(wildcard $(COMPDIR)*/*.c) OBJS := $(SRCS:$(COMPDIR)%.c=obj-$(ARCH)/%.o) ACENV_H := $(ACPICAROOT)source/include/platform/acenv.h ACACESS_H := $(ACPICAROOT)source/include/platform/acacess.h .PHONY: all clean ifeq ($(words $(SRCS)),0) extract: $(ACPICAROOT) @echo Re-run make to compile endif all: $(BIN) include clean: $(RM) -r obj-$(ARCH)/ include purge: clean $(RM) -r $(ACPICAROOT) $(BIN): $(OBJS) @mkdir -p $(dir $@) @echo [AR] $@ @ar rcu $@ $(OBJS) include: ln -s $(ACPICAROOT)source/include $(ACPICAROOT): $(ACPICA_ARCHIVE) tar -xf $(ACPICA_ARCHIVE) $(ACACESS_H): acacess.h cp $< $@ $(ACENV_H): $(ACPICA_ARCHIVE) Makefile tar -x -O -f $(ACPICA_ARCHIVE) $(ACENV_H) | sed 's/aclinux/acacess/' | sed 's/_LINUX/_ACESS/' > $@ obj-$(ARCH)/%.o: $(COMPDIR)%.c $(ACENV_H) $(ACACESS_H) @mkdir -p $(dir $@) @echo [CC] -o $@ @$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< @$(CC) -M -MP -MT $@ $(CPPFLAGS) $< -o $@.dep -include $(OBJS:%=%.dep)