about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-07-04 20:53:26 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-07-04 20:53:26 -0700
commitfa3d7edce4eebe54736dc1020752a0f7fa1c35d4 (patch)
tree15612ae8b57a28642ddb34b741b8969878e26ed8
parent57bcdaeefa83bdccc5ea15dd273747b0b50e836a (diff)
downloadmu-fa3d7edce4eebe54736dc1020752a0f7fa1c35d4.tar.gz
1706 - automatically recompile mu when necessary
-rw-r--r--makefile18
-rwxr-xr-xmu8
2 files changed, 17 insertions, 9 deletions
diff --git a/makefile b/makefile
index f4096838..c1ed25ab 100644
--- a/makefile
+++ b/makefile
@@ -1,5 +1,5 @@
-mu: makefile enumerate/enumerate tangle/tangle mu.cc termbox/libtermbox.a
-	c++ -g -O3 -Wall -Wextra -fno-strict-aliasing mu.cc termbox/libtermbox.a -o mu
+mu_bin: makefile enumerate/enumerate tangle/tangle mu.cc termbox/libtermbox.a
+	c++ -g -O3 -Wall -Wextra -fno-strict-aliasing mu.cc termbox/libtermbox.a -o mu_bin
 
 # To see what the program looks like after all layers have been applied, read
 # mu.cc
@@ -19,20 +19,20 @@ termbox/libtermbox.a: termbox/*.c termbox/*.h termbox/*.inl
 
 .PHONY: autogenerated_lists test valgrind clang opt clang+opt clena
 
-test: mu
-	./mu test
+test: mu_bin
+	./mu_bin test
 
 valgrind: clang
-	valgrind --leak-check=yes -q --error-exitcode=1 ./mu test
+	valgrind --leak-check=yes -q --error-exitcode=1 ./mu_bin test
 
 clang: makefile mu.cc termbox/libtermbox.a autogenerated_lists
-	clang++ -g -fsanitize=undefined mu.cc termbox/libtermbox.a -o mu
+	clang++ -g -fsanitize=undefined mu.cc termbox/libtermbox.a -o mu_bin
 
 clang+opt: makefile mu.cc termbox/libtermbox.a autogenerated_lists
-	clang++ -O3 -fsanitize=undefined mu.cc termbox/libtermbox.a -o mu
+	clang++ -O3 -fsanitize=undefined mu.cc termbox/libtermbox.a -o mu_bin
 
 opt: makefile enumerate/enumerate tangle/tangle mu.cc termbox/libtermbox.a autogenerated_lists
-	g++ -O3 -Wall -Wextra -fno-strict-aliasing mu.cc termbox/libtermbox.a -o mu
+	g++ -O3 -Wall -Wextra -fno-strict-aliasing mu.cc termbox/libtermbox.a -o mu_bin
 
 # auto-generated files; by convention they end in '_list'.
 autogenerated_lists: mu.cc function_list test_list
@@ -58,4 +58,4 @@ clean:
 	cd enumerate && make clean
 	cd tangle && make clean
 	cd termbox && make clean
-	-rm mu.cc core.mu mu *_list
+	-rm mu.cc core.mu mu_bin *_list
diff --git a/mu b/mu
new file mode 100755
index 00000000..cd4019c5
--- /dev/null
+++ b/mu
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+#
+# Compile mu if necessary before running it.
+
+# show make output only if something needs doing
+make -q || make >&2 || exit 1
+
+./mu_bin "$@"