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: pkg/debian-tuto2/isolinux.cfg tuto2-kernel tuto2-initrd.img tuto2-cmdline
	$(eval TDIR := $(shell mktemp -d))
	mkdir $(TDIR)/boot/ $(TDIR)/isolinux/
	cp tuto2-kernel $(TDIR)/boot/kernel
	cp tuto2-initrd.img $(TDIR)/boot/tuto2ird.img
	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 -i 's#<CMDLINE>#$(CMDLINE)#' $(TDIR)/isolinux/isolinux.cfg
	genisoimage -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 $@
