mittos65/Makefile

46 lines
1.1 KiB
Makefile

ifeq ($(BUILDROOT),)
$(error BUILDROOT IS NOT SET!)
endif
TARGET := x86_64-elf
KERNELMAKE := TARGET=${TARGET} $(MAKE) -C src/kernel
LIBMAKE := TARGET=${TARGET} $(MAKE) -C src/libmittos
DIST := $(BUILDROOT)/mittos.iso
SYSROOT := $(BUILDROOT)/sysroot
SYS_ITEMS := $(SYSROOT)/kernel $(SYSROOT)/usr/lib/libc.a $(SYSROOT)/usr/lib/libmittos.a
all: $(SYSROOT)/kernel $(SYS_ITEMS)
dist: $(DIST)
$(DIST): $(SYS_ITEMS)
$(BUILDROOT)/toolchain/setup-grub.sh
grub-mkrescue -o $@ $(SYSROOT)
kernel: $(SYSROOT)/kernel
$(SYSROOT)/kernel: $(SYSROOT)/usr/lib/libc.a $(SYSROOT)/usr/lib/libmittos.a FORCE
ifeq ($(shell make -sqC src/kernel install || echo 1), 1)
$(KERNELMAKE) install
endif
musllib: $(SYSROOT)/usr/lib/libc.a
$(SYSROOT)/usr/lib/libc.a:
toolchain/build-musl.sh
libmittos: $(SYSROOT)/usr/lib/libmittos.a
$(SYSROOT)/usr/lib/libmittos.a: FORCE
ifeq ($(shell make -sqC src/libmittos install || echo 1), 1)
$(LIBMAKE) install
endif
.PHONY: all dist sysroot FORCE
clean:
rm -rf $(DIST)
$(KERNELMAKE) clean
$(LIBMAKE) clean
distclean:
$(MAKE) clean
rm -rf $(SYSROOT)