]> git.cameronkatri.com Git - cc-run.git/commitdiff
Initial
authorCameron Katri <me@cameronkatri.com>
Fri, 8 Apr 2022 22:39:23 +0000 (18:39 -0400)
committerCameron Katri <me@cameronkatri.com>
Fri, 8 Apr 2022 22:41:12 +0000 (18:41 -0400)
.gitignore [new file with mode: 0644]
Makefile [new file with mode: 0644]
cc-run.sh [new file with mode: 0755]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..ea1c5b2
--- /dev/null
@@ -0,0 +1 @@
+cc-run
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..494575c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,12 @@
+PREFIX ?= ~/.local
+DESTDIR?=
+
+all: cc-run
+
+install: cc-run
+       install -d ${DESTDIR}${PREFIX}/bin/
+       install -m755 cc-run ${DESTDIR}${PREFIX}/bin/cc-run
+       ln -sf cc-run ${DESTDIR}${PREFIX}/bin/c++-run
+
+clean:
+       rm -f cc-run
diff --git a/cc-run.sh b/cc-run.sh
new file mode 100755 (executable)
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