sortix-mirror/system/Makefile

145 lines
6.7 KiB
Makefile

include ../platform.mak
# Protect the user from accidentally replacing his build operating system with a broken Sortix.
ifeq ($(HOST_IS_SORTIX),0)
$(error You are about to build Sortix as $(HOST) and possibly overwrite your root filesystem. Use the HOST=cpu-sortix environmental variable if you wish to cross-compile)
endif
SRCDIR:=..
BOOTDIR:=$(ROOT)/boot/$(cputype)
KERNEL:=$(BOOTDIR)/sortix.bin
INITRD_COMPRESSION:=.gz
INITRD:=$(BOOTDIR)/sortix.initrd
INITRD_FILTER:=$(BOOTDIR)/sortix.initrd.filter
all: $(KERNEL) $(INITRD)$(INITRD_COMPRESSION)
# Delete various temporary build files.
clean:
$(MAKE) -B -C $(SRCDIR)/doc clean
$(MAKE) -B -C $(SRCDIR)/libc clean
$(MAKE) -B -C $(SRCDIR)/libm clean
$(MAKE) -B -C $(SRCDIR)/libpthread clean
$(MAKE) -B -C $(SRCDIR)/dispd clean
$(MAKE) -B -C $(SRCDIR)/bench clean
$(MAKE) -B -C $(SRCDIR)/carray clean
$(MAKE) -B -C $(SRCDIR)/games clean
$(MAKE) -B -C $(SRCDIR)/mkinitrd clean
$(MAKE) -B -C $(SRCDIR)/utils clean
$(MAKE) -B -C $(SRCDIR)/ext clean
$(MAKE) -B -C $(SRCDIR)/mbr clean
$(MAKE) -B -C $(SRCDIR)/systest clean
$(MAKE) -B -C $(SRCDIR)/kernel clean
# Set up the base filesystem.
fsh:
mkdir -p $(ROOT)/
mkdir -p $(ROOT)/boot
mkdir -p $(ROOT)/boot/$(cputype)
mkdir -p $(ROOT)/dev
mkdir -p $(ROOT)/etc
mkdir -p $(ROOT)/etc/$(cputype)
mkdir -p $(ROOT)/etc/skel
mkdir -p $(ROOT)/home
mkdir -p $(ROOT)/include
mkdir -p $(ROOT)/include/$(cputype)
mkdir -p $(ROOT)/mnt
mkdir -p $(ROOT)/root
mkdir -p $(ROOT)/share
mkdir -p $(ROOT)/src
mkdir -p $(ROOT)/tmp
mkdir -p $(ROOT)/$(cputype)/bin
mkdir -p $(ROOT)/$(cputype)/lib
mkdir -p $(ROOT)/$(cputype)/libexec
# Install the system headers.
system-headers:
$(MAKE) fsh ROOT=$(ROOT)
$(MAKE) system-headers_internal ROOT=$(ROOT)
system-headers_internal:
$(MAKE) -B -C $(SRCDIR)/kernel install-headers DESTDIR=$(ROOT)
$(MAKE) -B -C $(SRCDIR)/libc install-headers DESTDIR=$(ROOT)
$(MAKE) -B -C $(SRCDIR)/libm install-headers DESTDIR=$(ROOT)
$(MAKE) -B -C $(SRCDIR)/libpthread install-headers DESTDIR=$(ROOT)
# Rebuild and install the entire system.
system:
$(MAKE) fsh ROOT=$(ROOT)
$(MAKE) system-headers_internal ROOT=$(ROOT)
$(MAKE) -B -C $(SRCDIR)/doc install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/libc install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/libm install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/libpthread install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/dispd install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/bench install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/games install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/mkinitrd install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/utils install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/bench install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/ext install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/mbr install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/systest install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/lib
$(MAKE) -B -C $(SRCDIR)/kernel install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/libs
# Rebuild and install the kernel
kernel:
$(MAKE) -B -C $(SRCDIR)/kernel install-headers DESTDIR=$(ROOT)
$(MAKE) -B -C $(SRCDIR)/kernel install DESTDIR=$(ROOT) C_INCLUDE_PATH=$(ROOT)/include CPLUS_INCLUDE_PATH=$(ROOT)/include LIBRARY_PATH=$(ROOT)/$(cputype)/libs
# Rebuild the initrd and the kernel.
boot-files: initrd kernel
# Regenerate the initrd from $ROOT.
initrd:
mkdir -p $(BOOTDIR)
rm -f $(INITRD_FILTER)
echo exclude /boot >> $(INITRD_FILTER)
echo exclude /dev >> $(INITRD_FILTER)
echo exclude /next >> $(INITRD_FILTER)
echo exclude /tmp >> $(INITRD_FILTER)
echo exclude /$(OTHER_PLATFORM_1) >> $(INITRD_FILTER)
echo exclude /etc/$(OTHER_PLATFORM_1) >> $(INITRD_FILTER)
echo exclude /include/$(OTHER_PLATFORM_1) >> $(INITRD_FILTER)
echo exclude /tix/$(OTHER_PLATFORM_1) >> $(INITRD_FILTER)
mkinitrd $(ROOT)/ -o $(INITRD) -f $(INITRD_FILTER)
rm -f $(INITRD_FILTER)
gzip -v $(INITRD)
# Format a device with a tar filesystem.
device-format-tar:
tar cvf DEVICE=$(DEVICE)
# Update the kernel on a device.
update-tar-device-kernel: $(KERNEL)
cd $(BOOTDIR) ; head sortix.bin > /dev/null
cd $(BOOTDIR) ; tar --delete --verbose --checkpoint=1 --blocking-factor=2048 --file=$(DEVICE) sortix.bin
cd $(BOOTDIR) ; tar --append --verbose --checkpoint=1 --blocking-factor=2048 --file=$(DEVICE) sortix.bin
# Update the initrd on a device.
update-tar-device-initrd: $(INITRD)$(INITRD_COMPRESSION)
cd $(BOOTDIR) ; head sortix.initrd$(INITRD_COMPRESSION) > /dev/null
cd $(BOOTDIR) ; tar --delete --verbose --checkpoint=1 --blocking-factor=2048 --file=$(DEVICE) sortix.initrd$(INITRD_COMPRESSION)
cd $(BOOTDIR) ; tar --append --verbose --checkpoint=1 --blocking-factor=2048 --file=$(DEVICE) sortix.initrd$(INITRD_COMPRESSION)
# Update the kernel and initrd on a device.
update-tar-device-image: $(KERNEL) $(INITRD)$(INITRD_COMPRESSION)
cd $(BOOTDIR) ; head sortix.bin sortix.initrd$(INITRD_COMPRESSION) > /dev/null
cd $(BOOTDIR) ; tar --create --verbose --checkpoint=1 --blocking-factor=2048 --file=$(DEVICE) sortix.bin sortix.initrd$(INITRD_COMPRESSION)
# Build an entire new Sortix system and install onto this device.
install-onto-device:
$(MAKE) system ROOT=/next
$(MAKE) initrd ROOT=/next
$(MAKE) update-tar-device-image ROOT=/next DEVICE=$(DEVICE)
# Misc. stuff down here.
fetch-device-stuff: fetch-device-kernel fetch-device-initrd
fetch-device-kernel:
cd $(BOOTDIR) ; tar xvf $(DEVICE) sortix.bin
fetch-device-initrd:
cd $(BOOTDIR) ; tar xvf $(DEVICE)
#