tuto1: login-app/login-app token-validator/token-validator login-initrd.img server.iso

fonts: fonts/Inconsolata-16b.psf fonts/Inconsolata-16r.psf fonts/Inconsolata-32b.psf fonts/Inconsolata-32r.psf
fonts/Inconsolata-16b.psf:
	wget https://github.com/xeechou/Inconsolata-psf/raw/master/Inconsolata-16b.psf
fonts/Inconsolata-16r.psf:
	wget https://github.com/xeechou/Inconsolata-psf/raw/master/Inconsolata-16r.psf
fonts/Inconsolata-32b.psf:
	wget https://github.com/xeechou/Inconsolata-psf/raw/master/Inconsolata-32b.psf
fonts/Inconsolata-32r.psf:
	wget https://github.com/xeechou/Inconsolata-psf/raw/master/Inconsolata-32r.psf

token-validator/token-validator: token-validator/*.go
	go generate ./token-validator
	GOOS=linux GOARM=5 GOARCH=arm go build -tags netgo -ldflags '-w -extldflags "-static"' -o $@ ./token-validator

login-app/login-app: login-app/*.go
	GOOS=linux GOARCH=amd64 go build -tags netgo -ldflags '-w -extldflags "-static -lncurses"' -o $@ ./login-app

login-initrd.img: login.yml login-app/login-app
	linuxkit build $<

challenge-initrd.img: challenge.yml subject/adlin.6.gz subject/adlin-TP1-topologie.png fonts/Inconsolata-16b.psf.gz fonts/Inconsolata-16r.psf.gz fonts/Inconsolata-32b.psf.gz fonts/Inconsolata-32r.psf.gz pkg/challenge/adlin pkg/challenge/issue pkg/challenge/init
	linuxkit build $<

server.iso: server.yml students.csv ssl/fullchain.pem ssl/privkey.pem challenge-initrd.img challenge-kernel login-initrd.img
	linuxkit build -format iso-bios $<

tuto2-kernel: tuto2.yml
	linuxkit build $<
tuto2-initrd.img: tuto2.yml
	linuxkit build $<
tuto2-cmdline: tuto2.yml
	linuxkit build $<

tuto2.iso: tuto2.yml tuto2-kernel tuto2-initrd.img tuto2-cmdline
	linuxkit build -format iso-bios $<

tuto2-srs.iso: tuto2.iso pkg/debian-tuto2/isolinux.cfg
	$(eval TDIR := $(shell mktemp -d))
	bsdtar xf $< -C $(TDIR)
	cp pkg/debian-tuto2/isolinux.cfg /usr/share/syslinux/isolinux.bin /usr/share/syslinux/ldlinux.c32 /usr/share/syslinux/vesamenu.c32 /usr/share/syslinux/menu.c32 /usr/share/syslinux/libcom32.c32 /usr/share/syslinux/libutil.c32 /usr/share/syslinux/poweroff.c32 $(TDIR)/isolinux/
	$(eval CMDLINE := $(shell cat tuto2-cmdline | sed 's/console=ttyS0 //;s#root=/dev/sr0 ##;s#root=/dev/sda1 ##;s#adlin.format=/dev/sda ##;'))
	sed -i 's#<CMDLINE>#$(CMDLINE)#' $(TDIR)/isolinux/isolinux.cfg
	mkisofs -o $@ -l -J -R -c isolinux/boot.cat -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -joliet-long -input-charset utf8 -V AdLin2 $(TDIR)
	rm -rf $(TDIR)
	isohybrid $@

tuto2-srs.iso.gz: tuto2-srs.iso
	gzip -9 < $< > $@

tuto3-kernel: tuto3.yml
	linuxkit build $<
tuto3-initrd.img: tuto3.yml
	linuxkit build $<
tuto3-cmdline: tuto3.yml
	linuxkit build $<

tuto3.iso: tuto3.yml
	linuxkit build -format iso-bios $<

tuto3.iso.gz: tuto3.iso
	gzip -9 < $< > $@
