summaryrefslogtreecommitdiffstats
path: root/cc-run.sh
diff options
context:
space:
mode:
authorCameron Katri <me@cameronkatri.com>2022-04-08 18:39:23 -0400
committerCameron Katri <me@cameronkatri.com>2022-04-08 18:41:12 -0400
commitbaa78f8bcde717359d11188a641101722bfa2748 (patch)
treea6592a6874e049979fe1bbebe08d03e5319d3631 /cc-run.sh
downloadcc-run-baa78f8bcde717359d11188a641101722bfa2748.tar.gz
cc-run-baa78f8bcde717359d11188a641101722bfa2748.tar.zst
cc-run-baa78f8bcde717359d11188a641101722bfa2748.zip
Initial
Diffstat (limited to 'cc-run.sh')
-rwxr-xr-xcc-run.sh35
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