#!/bin/echo Must be sourced from a bash script ** # strict mode export IFS=$'\n' set -eu -o pipefail # git clone wrapper clone () { if ! [ -e "$2" ]; then git clone \ --single-branch --depth 1 \ --recurse-submodules \ "$1" \ "$2" else echo " ** '$2/' already exists" fi } # optimizations set_cflags () { opt="-Ofast -march=native" export \ CFLAGS="-std=gnu2x $opt" \ CPPFLAGS="$opt" \ LDFLAGS="-Wl,-O3" \ RUSTFLAGS="-C target-cpu=native -C panic=abort" } # in a separate fn because ring does not build with LTO use_lto () { lto="-flto=auto -fwhole-program" export \ CFLAGS="$CFLAGS $lto" \ CPPFLAGS="$CPPFLAGS $lto" } # make -j12 make_maxthreads() { [ -v JOBS ] || JOBS=$(nproc || echo 4) JOBS="${JOBS//[^0-9]/}" make -j"$JOBS" } # alias build_rust="cargo build -r" build_rust () { cargo build \ --release \ --config 'panic="abort"' \ --config 'lto="fat"' \ --config 'codegen-units=1' \ "$@" } # just disabling debugging build_go () { go build -v \ -trimpath \ -ldflags "-s -w -buildid=" \ "$@" }