40 lines
		
	
	
		
			981 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			981 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						||
 | 
						||
# Copyright (c) 2023–2024 Emma Tebibyte <emma@tebibyte.media>
 | 
						||
# SPDX-License-Identifier: FSFAP
 | 
						||
#
 | 
						||
# Copying and distribution of this file, with or without modification, are
 | 
						||
# permitted in any medium without royalty provided the copyright notice and this
 | 
						||
# notice are preserved.  This file is offered as-is, without any warranty.
 | 
						||
 | 
						||
set -e
 | 
						||
 | 
						||
CFLAGS='-Lbuild/lib -idirafter include -O3'
 | 
						||
RUSTFLAGS='-Copt-level=z -Ccodegen-units=1 -Cpanic=abort -Clto=y \
 | 
						||
	-Cstrip=symbols -Ctarget-cpu=native \
 | 
						||
	--extern sysexits=build/o/libsysexits.rlib'
 | 
						||
 | 
						||
case "$@" in
 | 
						||
	clang)
 | 
						||
		CFLAGS="$CFLAGS -Wall"
 | 
						||
		;;
 | 
						||
	clean)
 | 
						||
		rm *.mk || true
 | 
						||
		exit 0
 | 
						||
		;;
 | 
						||
	gcc)
 | 
						||
		CFLAGS="$CFLAGS -s -Wl,-z,noseparate-code,-z,nosectionheader -flto"
 | 
						||
		;;
 | 
						||
	'rustc +nightly')
 | 
						||
		RUSTFLAGS="+nightly -Zlocation-detail=none $RUSTFLAGS"
 | 
						||
		;;
 | 
						||
	'') ;;
 | 
						||
	*)
 | 
						||
		printf 'Usage: %s [compiler]\n' "$0"
 | 
						||
		exit 64 # sysexits.h(3) EX_USAGE
 | 
						||
		;;
 | 
						||
esac
 | 
						||
 | 
						||
printf 'CFLAGS=%s\n' "$CFLAGS" >cc.mk
 | 
						||
printf 'RUSTFLAGS=%s\n' "$RUSTFLAGS" >rustc.mk
 |