diff options
author | Cameron Katri <me@cameronkatri.com> | 2022-04-08 18:39:23 -0400 |
---|---|---|
committer | Cameron Katri <me@cameronkatri.com> | 2022-04-08 18:41:12 -0400 |
commit | baa78f8bcde717359d11188a641101722bfa2748 (patch) | |
tree | a6592a6874e049979fe1bbebe08d03e5319d3631 /cc-run.sh | |
download | cc-run-baa78f8bcde717359d11188a641101722bfa2748.tar.gz cc-run-baa78f8bcde717359d11188a641101722bfa2748.tar.zst cc-run-baa78f8bcde717359d11188a641101722bfa2748.zip |
Initial
Diffstat (limited to 'cc-run.sh')
-rwxr-xr-x | cc-run.sh | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/cc-run.sh b/cc-run.sh new file mode 100755 index 0000000..6d58170 --- /dev/null +++ b/cc-run.sh @@ -0,0 +1,35 @@ +#!/bin/sh +compiler=$(basename "$0" | sed 's|-run$||') +exe=$(mktemp -t cc-run) || exit 1 +src="" +args="" +exeargs="" + +if ! command -v $compiler >/dev/null 2>&1; then + echo "$(basename "$0"): error: can't find compiler: '$compiler'" >&2 + exit 1 +fi + +for arg in "$@"; do + if [ -e "$arg" ] && [ "$src" = "" ]; then + src=$arg + elif [ "$src" != "" ]; then + exeargs="$exeargs $arg" + else + args="$args $arg" + fi +done + +case $compiler in + cc|gcc|gcc-*|clang|clang-*) + args="$args $CPPFLAGS $CFLAGS $LDFLAGS";; + c++|g++|g++-*|clang++|clang++-*) + args="$args $CPPFLAGS $CXXFLAGS $LDFLAGS" +esac + +$compiler $args $src -o $exe || exit 1 + +$exe $exeargs +ret=$? +rm -f $exe +exit $ret |