41 lines
1.1 KiB
Makefile
41 lines
1.1 KiB
Makefile
include ../toolchain.mk
|
|
|
|
override CFLAGS += \
|
|
-Isrc/include \
|
|
-I../arch/aarch64 \
|
|
-I../libc/src/include
|
|
|
|
override LDFLAGS += \
|
|
-T ../arch/aarch64/linker.ld
|
|
|
|
override CFILES := $(shell cd src && find * -type f -name '*.c')
|
|
override ASFILES := $(shell cd src && find * -type f -name '*.S')
|
|
override OBJ := $(addprefix obj/,$(CFILES:.c=.c.o) $(ASFILES:.S=.S.o))
|
|
override HEADER_DEPS := $(addprefix obj/,$(CFILES:.c=.c.d) $(ASFILES:.S=.S.d))
|
|
override OBJDEPS := $(shell find ../arch/aarch64/obj/* -type f -name '*.S.o')
|
|
|
|
.PHONY: all
|
|
all: bin/$(KERNEL)
|
|
|
|
# Link rules for the final kernel executable.
|
|
bin/$(KERNEL): Makefile ../arch/aarch64/linker.ld $(OBJ)
|
|
mkdir -p "$$(dirname $@)"
|
|
$(LD) $(OBJ) $(LDFLAGS) -o $@ $(OBJDEPS)
|
|
|
|
# Include header dependencies.
|
|
-include $(HEADER_DEPS)
|
|
|
|
# Compilation rules for *.c files.
|
|
obj/%.c.o: src/%.c Makefile
|
|
mkdir -p "$$(dirname $@)"
|
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
|
|
|
# Compilation rules for *.S files.
|
|
obj/%.S.o: src/%.S Makefile
|
|
mkdir -p "$$(dirname $@)"
|
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
|
|
|
# Remove object files and the final executable.
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf bin obj
|