self: libtun-so
	RUSTFLAGS="-L ." cargo build --release

linux: libtun-so
	RUSTFLAGS="-L ." cargo build --release --target x86_64-unknown-linux-musl

aarch64: libtun-so-aarch64
	RUSTFLAGS="-L ." cargo build --release --target aarch64-unknown-linux-gnu


linux-tun: libtun-so
	RUSTFLAGS="-L ." cargo build  --features "tun" --release

win:
	cargo build --release --target x86_64-pc-windows-gnu

pb:
	cargo run --bin build_pb
	# mv src/pb/_.rs src/pb/message.rs

libtun-so-clang:
	cd src/network && clang -fPIC -shared -o libtuntap.so tuntap.c && cd -

libtun-so:
	rm libtuntap.* && cd src/network && gcc -fPIC -shared -o libtuntap.so tuntap.c && cp libtuntap.so ../.. && cd -

libtun-aarch64-musl:
	rm -rf libtuntap.* && touch libtuntap.so && cd src/network && aarch64-linux-musl-gcc -c tuntap.c -o libtuntap.o && aarch64-linux-musl-ar rcs libtuntap.a libtuntap.o && cp libtuntap.a ../.. && cd -

pack:
	tar -czvf punchnet.tar.gz punchnet punchnet.service libtuntap.so install.sh

libtun-musl:
	rm libtuntap.* && touch libtuntap.so && cd src/network && musl-gcc -c tuntap.c -o libtuntap.o && ar rcs libtuntap.a libtuntap.o && cp libtuntap.a ../.. && cd -


deb-musl: libtun-musl
	RUSTFLAGS="-L ." cargo deb --target x86_64-unknown-linux-musl --deb-revision="1-static"

deb: libtun-so
	RUSTFLAGS="-L ." cargo deb --deb-revision="1-dynamic"

deb-aarch64-musl: libtun-aarch64-musl
	RUSTFLAGS="-L ." cargo deb --target aarch64-unknown-linux-musl --deb-revision="1-static"

