diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..cf0c0d5
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,5 @@
+language: c
+compiler:
+    - clang
+    - gcc
+script: "make"
diff --git a/Makefile b/Makefile
index 7f3e575..dc32b61 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,4 @@
+CC?=gcc
 LDFLAGS=-lm
 CFLAGS=-O3 -Wall -Wuninitialized -fomit-frame-pointer -funroll-loops \
 	-fstrength-reduce -DNODEBUG `libpng-config --I_opts`
@@ -18,31 +19,31 @@ clean:
 	rm -f optar unoptar golay golay_codes.c *.o
 
 common.o: common.c optar.h
-	gcc -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
+	$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
 
 parity.o: parity.c
-	gcc -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
+	$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
 
 optar.o: optar.c optar.h font.h parity.h
-	gcc -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
+	$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
 
 golay_codes.o: golay_codes.c
-	gcc -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
+	$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
 
 golay.o: golay.c parity.h
-	gcc -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
+	$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
 
 unoptar.o: unoptar.c optar.h parity.h
-	gcc -c -I/usr/local/include/libpng $(CPPFLAGS) $(CFLAGS) -o $@ $<
+	$(CC) -c -I/usr/local/include/libpng $(CPPFLAGS) $(CFLAGS) -o $@ $<
 
 optar: optar.o common.o golay_codes.o parity.o
-	gcc $(LDFLAGS) -o $@ $^
+	$(CC) $(LDFLAGS) -o $@ $^
 
 golay_codes.c: golay
 	./$< > $@
 
 golay: golay.o parity.o
-	gcc $(LDFLAGS) -o $@ $^
+	$(CC) $(LDFLAGS) -o $@ $^
 
 unoptar: unoptar.o common.o golay_codes.o parity.o
-	gcc -o $@ -L/usr/local/lib $^ -lm -lpng -lz
+	$(CC) -o $@ -L/usr/local/lib $^ -lm -lpng -lz