DEFAULT_HOST!=../default-host.sh HOST?=DEFAULT_HOST HOSTARCH!=../target-triplet-to-arch.sh $(HOST) CFLAGS?=-O2 -g CPPFLAGS?= LDFLAGS?= LIBS?= DESTDIR?= PREFIX?=/usr/local EXEC_PREFIX?=$(PREFIX) BOOTDIR?=$(EXEC_PREFIX)/boot INCLUDEDIR?=$(PREFIX)/include CFLAGS:=$(CFLAGS) -ffreestanding -Wall -Wextra CPPFLAGS:=$(CPPFLAGS) -D__is_kernel -Iinclude LDFLAGS:=$(LDFLAGS) LIBS:=$(LIBS) -nostdlib -lk -lgcc ARCHDIR=arch/$(HOSTARCH) include $(ARCHDIR)/make.config CFLAGS:=$(CFLAGS) $(KERNEL_ARCH_CFLAGS) CPPFLAGS:=$(CPPFLAGS) $(KERNEL_ARCH_CPPFLAGS) LDFLAGS:=$(LDFLAGS) $(KERNEL_ARCH_LDFLAGS) LIBS:=$(LIBS) $(KERNEL_ARCH_LIBS) KERNEL_OBJS=$(KERNEL_ARCH_OBJS) kernel/kernel.o OBJS=$(ARCHDIR)/crti.o $(ARCHDIR)/crtbegin.o $(KERNEL_OBJS) $(ARCHDIR)/crtend.o $(ARCHDIR)/crtn.o LINK_LIST=$(LDFLAGS) $(ARCHDIR)/crti.o $(ARCHDIR)/crtbegin.o $(KERNEL_OBJS) $(LIBS) $(ARCHDIR)/crtend.o $(ARCHDIR)/crtn.o .PHONY: all clean install install-headers install-kernel .SUFFIXES: .o .c .S all: fenix.kernel fenix.kernel: $(OBJS) $(ARCHDIR)/linker.ld $(CC) -T $(ARCHDIR)/linker.ld -o $@ $(CFLAGS) $(LINK_LIST) #grub-file --is-x86-multiboot fenix.kernel $(ARCHDIR)/crtbegin.o $(ARCHDIR)/crtend.o: OBJ=`$(CC) $(CFLAGS) $(LDFLAGS) -print-file-name=$(@F)` && cp "$$OBJ" $@ .c.o: $(CC) -MD -c $< -o $@ -std=c99 $(CFLAGS) $(CPPFLAGS) .S.o: $(CC) -MD -c $< -o $@ $(CFLAGS) $(CPPFLAGS) clean: rm -f fenix.kernel rm -f $(OBJS) *.o */*.o */*/*.o rm -f $(OBJS:.o=.d) *.d */*.d */*/*.d install: install-headers install-kernel install-headers: mkdir -p $(DESTDIR)$(INCLUDEDIR) cp -R include/. $(DESTDIR)$(INCLUDEDIR)/. install-kernel: fenix.kernel mkdir -p $(DESTDIR)$(BOOTDIR) cp fenix.kernel $(DESTDIR)$(BOOTDIR) -include $(OBJS:.o=.d)