diff --git a/Makefile b/Makefile
index 09e80ea26e8f146689f3567532fc89d698c8bc75..bb9609d58090ef74f32301b64af7b43c698c502d 100644
--- a/Makefile
+++ b/Makefile
@@ -9,12 +9,12 @@
 GOBIN = build/bin
 
 geth:
-	build/env.sh go install -v github.com/ethereum/go-ethereum/cmd/geth
+	build/env.sh go install -v $(shell build/ldflags.sh) ./cmd/geth
 	@echo "Done building."
 	@echo "Run \"$(GOBIN)/geth\" to launch geth."
 
 mist:
-	build/env.sh go install -v github.com/ethereum/go-ethereum/cmd/mist
+	build/env.sh go install -v $(shell build/ldflags.sh) ./cmd/mist
 	@echo "Done building."
 	@echo "Run \"$(GOBIN)/mist --asset_path=cmd/mist/assets\" to launch mist."
 
diff --git a/build/ldflags.sh b/build/ldflags.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9e17ca49862efbdeff91ea89ff99167646216995
--- /dev/null
+++ b/build/ldflags.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+if [ ! -f "build/env.sh" ]; then
+    echo "$0 must be run from the root of the repository."
+    exit 2
+fi
+
+# set gitCommit when running from a Git checkout.
+if [ -f ".git/HEAD" ]; then
+    echo "-ldflags '-X main.gitCommit $(git rev-parse HEAD)'"
+fi