From d080c04a5d358c79616c7cbfd8d0dee499d99804 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Tue, 4 Apr 2023 10:29:19 -0400 Subject: [PATCH] makelinux.zsh: Add compiler selection options I add an easy way to select between gcc and clang. Additionally, I add an option to cross-compile for arm64 architectures. Signed-off-by: Anna Schumaker --- completions/_makelinux.zsh | 6 +++++- makelinux.zsh | 23 +++++++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/completions/_makelinux.zsh b/completions/_makelinux.zsh index 2cab7fc..9c82faa 100644 --- a/completions/_makelinux.zsh +++ b/completions/_makelinux.zsh @@ -1,7 +1,11 @@ #compdef makelinux.zsh function _makelinux.zsh() { - _arguments '*: :_make' + _arguments \ + --clang'[compile using clang]' \ + --gcc'[compile using gcc]' \ + --arm64'[cross-compile for arm64]' \ + '*: :_make' } _makelinux.zsh "$@" diff --git a/makelinux.zsh b/makelinux.zsh index 341dcf9..1b41e6e 100755 --- a/makelinux.zsh +++ b/makelinux.zsh @@ -1,11 +1,30 @@ #!/bin/zsh - set -eo pipefail let jobs=$(nproc)-2 +ARCH=$(uname -m) +CROSS_COMPILE= +CC= +OPTS=(--clang) + +zparseopts -D -K -clang+=OPTS -gcc+=OPTS -arm64+=OPTS + +case ${OPTS[-1]} in +--clang) CC=clang ;; +--gcc) CC=gcc ;; +--arm64) ARCH=arm64 + CC=gcc + CROSS_COMPILE=aarch64-linux-gnu- + ;; +esac + if [ -f .git/config ] && [ -f .git/HEAD ]; then REV=$(git rev-parse --short HEAD)$(git diff --quiet || echo "-dirty") scripts/config --set-str CONFIG_LOCALVERSION "-g$REV" fi -make -j$jobs $* | python /home/anna/bin/colors/make.py +make -j$jobs CC=$CC ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE $* | python -u /home/anna/bin/colors/make.py + +if [[ "$CC" == "clang" ]]; then + scripts/clang-tools/gen_compile_commands.py & +fi