diff --git a/src/SConscript b/src/SConscript
index dd6b61628b943a79c14ecf250f89dd4e7e063bca..689c7e0344c918074edd1c830195aea14662e39c 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -51,7 +51,7 @@ parsers = ['parsers/%s.c'%s for s in
             'value']] 
 
 backends = ['backends/%s.c' % s for s in
-            ['packrat', 'llk', 'regex', 'glr', 'lalr', 'lr', 'lr0']]
+            ['packrat', 'llk', 'regex', 'glr', 'lalr', 'lr', 'lr0', 'llvm']]
 
 misc_hammer_parts = [
     'allocator.c',
@@ -76,6 +76,7 @@ ctests = ['t_benchmark.c',
           't_misc.c',
 	  't_regression.c']
 
+env.ParseConfig('llvm-config --cflags')
 libhammer_shared = env.SharedLibrary('hammer', parsers + backends + misc_hammer_parts)
 libhammer_static = env.StaticLibrary('hammer', parsers + backends + misc_hammer_parts)
 Default(libhammer_shared, libhammer_static)
@@ -88,6 +89,7 @@ env.Install("$pkgconfigpath", "../../../libhammer.pc")
 
 testenv = env.Clone()
 testenv.ParseConfig('pkg-config --cflags --libs glib-2.0')
+testenv.ParseConfig('llvm-config --cflags')
 testenv.Append(LIBS=['hammer'], LIBPATH=['.'])
 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]))
diff --git a/src/backends/regex.c b/src/backends/regex.c
index f6494fa98afea084ab347511ec0f25dc0e11379c..6471eccb229f925fa19369d08ca5c7ae1ccb0804 100644
--- a/src/backends/regex.c
+++ b/src/backends/regex.c
@@ -1,4 +1,3 @@
-#define _GNU_SOURCE
 #include <string.h>
 #include <assert.h>
 #include "../internal.h"
diff --git a/src/platform_bsdlike.c b/src/platform_bsdlike.c
index 2ccf874264a740e0784e8fba14e2ae78a337fa08..561869fc29bf73a0064437adb5c93d9693beacf1 100644
--- a/src/platform_bsdlike.c
+++ b/src/platform_bsdlike.c
@@ -1,4 +1,3 @@
-#define _GNU_SOURCE // to obtain asprintf/vasprintf
 #include "platform.h"
 
 #include <stdio.h>