IMGE_VERSION := "v" + `grep ^version Cargo.toml | cut -d\" -f2`
BUILD_TARGET := "unknown-linux-gnu"
TOOLCHAIN_VERSION := "glibc--stable-2024.05-1"
LIBARCHIVE_VERSION := "3.7.7"

default: build-x86_64 build-aarch64
build-x86_64: (build "x86_64")
build-aarch64: (build "aarch64")

build arch:
	#!/bin/sh -eux
	TOOLCHAIN="target/{{replace(arch, "_", "-")}}--{{TOOLCHAIN_VERSION}}"
	IMGE=target/imge-{{IMGE_VERSION}}-{{arch}}-{{BUILD_TARGET}}
	export RUSTFLAGS="-O -C linker=$TOOLCHAIN/bin/{{arch}}-linux-gcc"
	cargo build --release --target {{arch}}-{{BUILD_TARGET}}
	cp target/{{arch}}-{{BUILD_TARGET}}/release/imge $IMGE

libarchive-build-x86_64: (libarchive-build "x86_64")
libarchive-build-aarch64: (libarchive-build "aarch64")

libarchive-build arch:
	#!/bin/sh -eux
	TOOLCHAIN="$(pwd)/target/{{replace(arch, "_", "-")}}--{{TOOLCHAIN_VERSION}}"
	cd target/libarchive-{{LIBARCHIVE_VERSION}}/
	CC=$TOOLCHAIN/bin/{{arch}}-linux-gcc ./configure --host {{arch}}-unknown-linux-gnu \
		--prefix=/usr --disable-rpath --without-xml2
	make && make install DESTDIR=$TOOLCHAIN

toolchain-x86_64: (toolchain "x86-64")
toolchain-aarch64: (toolchain "aarch64")

toolchain arch:
	#!/bin/sh -eux
	URL="https://toolchains.bootlin.com/downloads/releases/toolchains/{{arch}}/tarballs"
	test -d target || mkdir target
	wget -qO- $URL/{{arch}}--{{TOOLCHAIN_VERSION}}.tar.xz | tar xvJ -C target

libarchive-fetch:
	#!/bin/sh -eux
	URL="https://libarchive.org/downloads/libarchive-{{LIBARCHIVE_VERSION}}.tar.xz"
	wget -qO- $URL | tar xvJ -C target
