diff --git a/.travis.yml b/.travis.yml
index d74cf6120bc7c41aec6d908cfdd221fa49ef34b9..05206db5ef4b99ec3429d373fab8c379c34a1762 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -91,7 +91,6 @@ matrix:
       language: cpp
       env: BINDINGS=cpp CC=clang
 before_install:
-  - if [ "$CC" == "clang" ]; then export CC="clang --coverage"; fi
   - sudo apt-get update -qq
   - sudo apt-get install lcov
   - gem install coveralls-lcov
diff --git a/SConstruct b/SConstruct
index b7549cd8d697e1afe7837437a3463e936dac7862..bb2bb858e51ecf84db7588ba1c212bdf164e2e5d 100644
--- a/SConstruct
+++ b/SConstruct
@@ -90,14 +90,17 @@ if GetOption("variant") == 'debug':
 else:
     env = opt
 
+env["CC"] = os.getenv("CC") or env["CC"]
+env["CXX"] = os.getenv("CXX") or env["CXX"]
+
 if GetOption("coverage"):
     env.Append(CFLAGS=["--coverage"],
                CXXFLAGS=["--coverage"],
-               LDFLAGS=["--coverage"],
-               LIBS=['gcov'])
-
-env["CC"] = os.getenv("CC") or env["CC"]
-env["CXX"] = os.getenv("CXX") or env["CXX"]
+               LDFLAGS=["--coverage"])
+    if env["CC"] == "gcc":
+        env.Append(LIBS=['gcov'])
+    else:
+        env.ParseConfig('llvm-config --ldflags')
 
 if os.getenv("CC") == "clang" or env['PLATFORM'] == 'darwin':
     env.Replace(CC="clang",
diff --git a/src/SConscript b/src/SConscript
index 0351e1ba8674492aef1c0aaf4cad4c52c08120fd..dd6b61628b943a79c14ecf250f89dd4e7e063bca 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -89,7 +89,7 @@ env.Install("$pkgconfigpath", "../../../libhammer.pc")
 testenv = env.Clone()
 testenv.ParseConfig('pkg-config --cflags --libs glib-2.0')
 testenv.Append(LIBS=['hammer'], LIBPATH=['.'])
-ctestexec = testenv.Program('test_suite', ctests + ['test_suite.c'])
+ctestexec = testenv.Program('test_suite', ctests + ['test_suite.c'], LINKFLAGS="--coverage" if testenv.GetOption("coverage") else None)
 ctest = Alias('testc', [ctestexec], "".join(["env LD_LIBRARY_PATH=", os.path.dirname(ctestexec[0].path), " ", ctestexec[0].path]))
 AlwaysBuild(ctest)
 testruns.append(ctest)