diff --git a/SConstruct b/SConstruct
index a0e19c09e046a6a2d303907badd75fde469d0448..429b0d8b5a907e14efa7b66a5b1466601c1e4628 100644
--- a/SConstruct
+++ b/SConstruct
@@ -1,8 +1,8 @@
-
+# -*- python -*-
+import os
 env = Environment()
 
 env.MergeFlags("-std=gnu99 -Wall -Wextra -Werror -Wno-unused-parameter -Wno-attributes -lrt")
-env['MODE'] = 'shared'
 
 AddOption("--variant",
           dest="variant",
@@ -24,9 +24,13 @@ if GetOption("variant") == 'debug':
     env = dbg
 else:
     env = opt
+
+if os.getenv("CC") == "clang":
+    env.Replace(CC="clang",
+                CXX="clang++")
 Export('env')
 
 env.SConscript(["src/SConscript"], variant_dir='build/$VARIANT/src')
 env.SConscript(["examples/SConscript"], variant_dir='build/$VARIANT/examples')
 
-env.Command('test', 'build/$VARIANT/src/test_suite', 'env LD_LIBRARY_PATH=build/$VARIANT/src $SOURCE')
\ No newline at end of file
+env.Command('test', 'build/$VARIANT/src/test_suite', 'env LD_LIBRARY_PATH=build/$VARIANT/src $SOURCE')
diff --git a/src/glue.h b/src/glue.h
index 1880988910e926c1c216dcd24cbb99022ddf7866..54b598507927b656f9bd1d17a363cd3a7bd723ac 100644
--- a/src/glue.h
+++ b/src/glue.h
@@ -182,7 +182,7 @@ HParsedToken *h_make_sint(HArena *arena, int64_t val);
 HParsedToken *h_make_uint(HArena *arena, uint64_t val);
 
 // Standard short-hands to make tokens in an action.
-#define H_MAKE(TYP, VAL)  h_make(p->arena, TT_ ## TYP, VAL)
+#define H_MAKE(TYP, VAL)  h_make(p->arena, (HTokenType)TT_ ## TYP, VAL)
 #define H_MAKE_SEQ()      h_make_seq(p->arena)
 #define H_MAKE_SEQN(N)    h_make_seqn(p->arena, N)
 #define H_MAKE_BYTES(LEN) h_make_bytes(p->arena, LEN)