summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCameron Katri <me@cameronkatri.com>2022-04-08 19:39:57 -0400
committerCameron Katri <me@cameronkatri.com>2022-04-08 19:40:50 -0400
commit60e2b04758e8389eb81cd6cd0f67df3c8b7f1c2d (patch)
tree3c9c1412e4dbb73325f1341383528b1ba979fc66
parentaa11ddc57517c85f249fc4b6811fd72ee42e98d4 (diff)
downloadcc-run-main.tar.gz
cc-run-main.tar.zst
cc-run-main.zip
Allow compiling stdinHEADmain
-rwxr-xr-xcc-run.sh21
1 files changed, 15 insertions, 6 deletions
diff --git a/cc-run.sh b/cc-run.sh
index 7a59ed6..ee1d5fd 100755
--- a/cc-run.sh
+++ b/cc-run.sh
@@ -1,6 +1,5 @@
#!/bin/sh
compiler=$(basename "$0" | sed 's|-run$||')
-exe=$(mktemp -t cc-run) || exit 1
src=""
args=""
exeargs=""
@@ -11,8 +10,8 @@ if ! command -v "$compiler" >/dev/null 2>&1; then
fi
for arg in "$@"; do
- if [ -e "$arg" ] && [ "$src" = "" ]; then
- src=$arg
+ if [ "$src" = "" -a -e "$arg" -o "$arg" = "-" ]; then
+ src="$arg"
elif [ "$src" != "" ]; then
exeargs="$exeargs $arg"
else
@@ -20,14 +19,24 @@ for arg in "$@"; do
fi
done
-case "$compiler" in
- cc|gcc|gcc-*|clang|clang-*)
+case $compiler in
+ cc|gcc|gcc-*|clang|clang-*|tcc)
+ if [ "$src" = '-' ]; then
+ args="$args -x c"
+ fi
args="$args $CPPFLAGS $CFLAGS $LDFLAGS";;
c++|g++|g++-*|clang++|clang++-*)
+ if [ "$src" = '-' ]; then
+ args="$args -x c++"
+ fi
args="$args $CPPFLAGS $CXXFLAGS $LDFLAGS"
esac
-$compiler $args $src -o $exe || exit 1
+exe=$(mktemp -t cc-run) || exit 1
+if ! $compiler $args $src -o $exe; then
+ rm -f $exe
+ exit 1
+fi
$exe $exeargs
ret=$?