This enables useful features such as directories, CRC32 checksums, and other useful features. The initrdfs in the kernel is now hooked up against the new API, although the kernel's current limited FS support is a problem for now. To work around that, directories are not supported at runtime, although the internal API understands them wonderfully. This will be fixed when the kernel gets a real VFS.
164 lines
3.7 KiB
Makefile
164 lines
3.7 KiB
Makefile
BITS:=$(shell getconf LONG_BIT)
|
|
ifndef CPU
|
|
ifeq ($(BITS),64)
|
|
CPU:=x64
|
|
else
|
|
CPU:=x86
|
|
endif
|
|
MFLAGS:=$(MFLAGS) CPU=$(CPU)
|
|
endif
|
|
|
|
ifndef O
|
|
O=-O2
|
|
MFLAGS:=$(MFLAGS) 0=$(O)
|
|
endif
|
|
|
|
ifeq ($(BENCH),1)
|
|
EXTRAMODULES:=$(EXTRAMODULES) bench
|
|
endif
|
|
|
|
ifndef SYSROOT
|
|
SYSROOT:=$(shell pwd)/sysroot
|
|
MFLAGS:=$(MFLAGS) SYSROOT=$(SYSROOT)
|
|
endif
|
|
|
|
REMOTE=192.168.2.6
|
|
REMOTEUSER=sortie
|
|
REMOTECOPYDIR:=/home/$(REMOTEUSER)/Desktop/MaxsiOS
|
|
MODULES=libmaxsi games mkinitrd utils $(EXTRAMODULES) sortix
|
|
ALLMODULES=libmaxsi games mkinitrd utils bench sortix
|
|
|
|
VERSION=0.7dev
|
|
DEBNAME:=sortix_$(VERSION)_$(CPU)
|
|
DEBSRCNAME:=sortix_$(VERSION)
|
|
DEBDIR:=builds/$(DEBNAME)
|
|
DEBSRCDIR:=builds/$(DEBSRCNAME)-src
|
|
DEBFILE:=builds/$(DEBNAME).deb
|
|
PACKAGENAME:=sortix
|
|
ISODIR:=builds/$(DEBNAME)-iso
|
|
ISOFILE:=builds/$(DEBNAME).iso
|
|
INITRDDIR:=initrd
|
|
INITRD=sortix/sortix.initrd
|
|
|
|
MFLAGS:=$(MFLAGS) VERSION=$(VERSION)
|
|
|
|
all: $(INITRD)
|
|
|
|
suball:
|
|
(for D in $(MODULES); do ($(MAKE) all $(MFLAGS) --directory $$D && $(MAKE) install $(MFLAGS) --directory $$D) || exit $?; done)
|
|
|
|
clean:
|
|
rm -rf $(SYSROOT)
|
|
rm -f $(INITRD)
|
|
rm -f initrd/*
|
|
(for D in $(ALLMODULES); do $(MAKE) clean $(MFLAGS) --directory $$D || exit $?; done)
|
|
|
|
distclean: clean cleanbuilds
|
|
|
|
cleanbuilds:
|
|
rm -rf builds/
|
|
rm -f sortix.iso
|
|
|
|
everything: all deb iso
|
|
|
|
everything-all-archs:
|
|
$(MAKE) clean $(MFLAGS)
|
|
$(MAKE) everything $(MFLAGS) CPU=x86
|
|
$(MAKE) clean $(MFLAGS)
|
|
$(MAKE) everything $(MFLAGS) CPU=x64
|
|
|
|
# Initializing RamDisk
|
|
$(INITRD): suball
|
|
mkinitrd/mkinitrd initrd -o $(INITRD)
|
|
|
|
# Statistics
|
|
linecount:
|
|
wc -l `find | grep -E '\.h$$|\.c$$|\.cpp$$|\.s$$|\.asm$$|Makefile$$' | grep -v sysroot` | sort -n
|
|
|
|
# Local machine
|
|
|
|
install: all
|
|
cp sortix/sortix.bin /boot
|
|
cp $(INITRD) /boot
|
|
cp debsrc/etc/grub.d/42_sortix /etc/grub.d/42_sortix
|
|
chmod +x /etc/grub.d/42_sortix
|
|
update-grub
|
|
|
|
uninstall:
|
|
rm -f /boot/sortix.bin
|
|
rm -f /etc/grub.d/42_sortix
|
|
update-grub
|
|
|
|
# Remote machine
|
|
|
|
install-remote: all
|
|
scp -r ./ $(REMOTE):$(REMOTECOPYDIR)
|
|
scp sortix/sortix.bin root@$(REMOTE):/boot
|
|
scp $(INITRD) root@$(REMOTE):/boot
|
|
ssh root@$(REMOTE) "init 6"
|
|
|
|
uninstall-remote:
|
|
ssh root@$(REMOTE) "rm /boot/sortix.bin"
|
|
|
|
# Packaging
|
|
|
|
deb: debfile debsource
|
|
|
|
debfile: all
|
|
rm -rf $(DEBDIR)
|
|
mkdir -p $(DEBDIR)
|
|
mkdir -p $(DEBDIR)/boot
|
|
cp sortix/sortix.bin $(DEBDIR)/boot
|
|
cp sortix/sortix.initrd $(DEBDIR)/boot
|
|
expr \( `stat --printf="%s" $(DEBDIR)/boot/sortix.bin` \
|
|
+ `stat --printf="%s" $(DEBDIR)/boot/sortix.initrd` \
|
|
+ 1023 \) / 1024 > $(DEBDIR)/boot/deb.size
|
|
cp -r debsrc/. $(DEBDIR)
|
|
mkdir -p $(DEBDIR)/boot
|
|
SIZE=`cat $(DEBDIR)/boot/deb.size`; \
|
|
cat debsrc/DEBIAN/control | \
|
|
sed "s/SORTIX_PACKAGE_NAME/$(PACKAGENAME)/g" | \
|
|
sed "s/SORTIX_VERSION/$(VERSION)/g" | \
|
|
sed "s/SORTIX_ARCH/all/g" | \
|
|
sed "s/SORTIX_SIZE/$$SIZE/g" | \
|
|
cat > $(DEBDIR)/DEBIAN/control
|
|
rm $(DEBDIR)/boot/deb.size
|
|
dpkg --build $(DEBDIR) $(DEBFILE)
|
|
rm -rf $(DEBDIR)/DEBIAN
|
|
(cd builds/$(DEBNAME) && tar cfz ../$(DEBNAME).tar.gz `ls`)
|
|
rm -rf $(DEBDIR)
|
|
|
|
debsource: all
|
|
rm -rf $(DEBSRCDIR)
|
|
mkdir -p $(DEBSRCDIR)
|
|
for D in `ls | grep -v builds | grep -v sysroot`; do cp -r $$D $(DEBSRCDIR); done
|
|
(cd $(DEBSRCDIR) && make distclean)
|
|
rm -rf $(DEBSRCDIR)/sysroot
|
|
(cd builds && tar cfz $(DEBSRCNAME)-src.tar.gz $(DEBSRCNAME)-src)
|
|
rm -rf $(DEBSRCDIR)
|
|
|
|
# Bootable images
|
|
|
|
iso: all debsource
|
|
rm -rf $(ISODIR)
|
|
mkdir -p builds
|
|
mkdir -p $(ISODIR)
|
|
cp -r isosrc/. $(ISODIR)
|
|
cp sortix/sortix.bin $(ISODIR)/boot
|
|
cp $(INITRD) $(ISODIR)/boot/sortix.initrd
|
|
cp builds/$(DEBSRCNAME)-src.tar.gz $(ISODIR)
|
|
grub-mkrescue -o $(ISOFILE) $(ISODIR)
|
|
rm -rf $(ISODIR)
|
|
|
|
sortix.iso: iso
|
|
cp $(ISOFILE) sortix.iso
|
|
|
|
# Virtualization
|
|
run-virtualbox: sortix.iso
|
|
virtualbox --startvm sortix
|
|
|
|
run-virtualbox-debug: sortix.iso
|
|
virtualbox --debug --start-running --startvm sortix
|
|
|
|
|