From: Michael R. Crusoe <michael.crusoe@gmail.com>
Subject: Harden the build
--- freebayes.orig/Makefile
+++ freebayes/Makefile
@@ -30,7 +30,7 @@
 	rm /usr/local/bin/freebayes /usr/local/bin/bamleftalign
 
 test:
-	cd test && make test
+	cd test && $(MAKE) test
 
 clean:
 	cd src && $(MAKE) clean
--- freebayes.orig/src/Makefile
+++ freebayes/src/Makefile
@@ -6,12 +6,11 @@
 
 # Compiler
 
-CXXFLAGS=-O3 -D_FILE_OFFSET_BITS=64 -g -ggdb
-CXX=g++ ${CXXFLAGS}
-C=gcc
+CXXFLAGS:=-O3 -D_FILE_OFFSET_BITS=64 -g -ggdb
+CXX:=g++
+CC:=gcc
 
 export CXXFLAGS
-export C
 export CC
 export CXX
 export LDFLAGS
@@ -19,10 +18,12 @@
 
 # Compiler flags
 
+PKG_CONFIG := pkg-config
+
 #CFLAGS=-O3 -static -D VERBOSE_DEBUG  # enables verbose debugging via --debug2
 
-LIBS = -lbamtools -ltabixpp -lz -lm -lpthread `pkg-config --libs libvcflib` `pkg-config --libs htslib` `pkg-config --libs libseqlib` `pkg-config --libs jsoncpp`
-INCLUDE = -I../ttmath  -I/usr/include/bamtools `pkg-config --cflags libvcflib` `pkg-config --cflags libseqlib` `pkg-config --cflags htslib` `pkg-config --cflags jsoncpp`
+LIBS = -lz -pthread -lbamtools -ltabixpp -lz -lm -lpthread $(shell $(PKG_CONFIG) --libs libvcflib) $(shell $(PKG_CONFIG) --libs htslib) $(shell $(PKG_CONFIG) --libs libseqlib) $(shell $(PKG_CONFIG) --libs jsoncpp) -lz -pthread
+INCLUDE = -I../ttmath  -I/usr/include/bamtools $(shell $(PKG_CONFIG) --cflags libvcflib) $(shell $(PKG_CONFIG) --cflags libseqlib) $(shell $(PKG_CONFIG) --cflags htslib) $(shell $(PKG_CONFIG) --cflags jsoncpp)
 
 all: autoversion ../bin/freebayes ../bin/bamleftalign
 
@@ -70,106 +71,106 @@
 # executables
 
 freebayes ../bin/freebayes: freebayes.o $(OBJECTS) $(HEADERS) $(seqlib)
-	$(CXX) $(CXXFLAGS) $(INCLUDE) freebayes.o $(OBJECTS) -o ../bin/freebayes $(LIBS)
+	$(CXX) $(LDFLAGS) $(CXXFLAGS) $(INCLUDE) freebayes.o $(OBJECTS) -o ../bin/freebayes $(LIBS)
 
 alleles ../bin/alleles: alleles.o $(OBJECTS) $(HEADERS) $(seqlib)
-	$(CXX) $(CXXFLAGS) $(INCLUDE) alleles.o $(OBJECTS) -o ../bin/alleles $(LIBS)
+	$(CXX) $(LDFLAGS) $(CXXFLAGS) $(INCLUDE) alleles.o $(OBJECTS) -o ../bin/alleles $(LIBS)
 
 dummy ../bin/dummy: dummy.o $(OBJECTS) $(HEADERS) $(seqlib)
-	$(CXX) $(CXXFLAGS) $(INCLUDE) dummy.o $(OBJECTS) -o ../bin/dummy $(LIBS)
+	$(CXX) $(LDFLAGS) $(CXXFLAGS) $(INCLUDE) dummy.o $(OBJECTS) -o ../bin/dummy $(LIBS)
 
 bamleftalign ../bin/bamleftalign: bamleftalign.o Fasta.o LeftAlign.o IndelAllele.o split.o
-	$(CXX) $(CXXFLAGS) $(INCLUDE) bamleftalign.o $(OBJECTS) -o ../bin/bamleftalign $(LIBS)
+	$(CXX) $(LDFLAGS) $(CXXFLAGS) $(INCLUDE) bamleftalign.o $(OBJECTS) -o ../bin/bamleftalign $(LIBS)
 
 bamfiltertech ../bin/bamfiltertech: bamfiltertech.o $(OBJECTS) $(HEADERS)
-	$(CXX) $(CXXFLAGS) $(INCLUDE) bamfiltertech.o $(OBJECTS) -o ../bin/bamfiltertech $(LIBS)
+	$(CXX) $(LDFLAGS) $(CXXFLAGS) $(INCLUDE) bamfiltertech.o $(OBJECTS) -o ../bin/bamfiltertech $(LIBS)
 
 
 # objects
 
 Fasta.o: Fasta.cpp Utility.o
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c Fasta.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c Fasta.cpp
 
 alleles.o: alleles.cpp AlleleParser.o Allele.o
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c alleles.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c alleles.cpp
 
 dummy.o: dummy.cpp AlleleParser.o Allele.o
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c dummy.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c dummy.cpp
 
 freebayes.o: freebayes.cpp TryCatch.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c freebayes.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c freebayes.cpp
 
 fastlz.o: fastlz.c fastlz.h
-	$(C) $(CFLAGS) $(INCLUDE) -c fastlz.c	
+	$(CC) $(CFLAGS) $(CPPFLAGS) $(INCLUDE) -c fastlz.c	
 
 Parameters.o: Parameters.cpp Parameters.h Version.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c Parameters.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c Parameters.cpp
 
 Allele.o: Allele.cpp Allele.h multichoose.h Genotype.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c Allele.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c Allele.cpp
 
 Sample.o: Sample.cpp Sample.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c Sample.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c Sample.cpp
 
 Genotype.o: Genotype.cpp Genotype.h Allele.h multipermute.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c Genotype.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c Genotype.cpp
 
 Ewens.o: Ewens.cpp Ewens.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c Ewens.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c Ewens.cpp
 
 AlleleParser.o: AlleleParser.cpp AlleleParser.h multichoose.h Parameters.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c AlleleParser.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c AlleleParser.cpp
 
 Utility.o: Utility.cpp Utility.h Sum.h Product.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c Utility.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c Utility.cpp
 
 SegfaultHandler.o: SegfaultHandler.cpp SegfaultHandler.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c SegfaultHandler.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c SegfaultHandler.cpp
 
 Dirichlet.o: Dirichlet.h Dirichlet.cpp Sum.h Product.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c Dirichlet.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c Dirichlet.cpp
 
 Multinomial.o: Multinomial.h Multinomial.cpp Sum.h Product.h Utility.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c Multinomial.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c Multinomial.cpp
 
 DataLikelihood.o: DataLikelihood.cpp DataLikelihood.h Sum.h Product.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c DataLikelihood.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c DataLikelihood.cpp
 
 Marginals.o: Marginals.cpp Marginals.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c Marginals.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c Marginals.cpp
 
 ResultData.o: ResultData.cpp ResultData.h Result.h Result.cpp Allele.h Utility.h Genotype.h AlleleParser.h Version.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c ResultData.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c ResultData.cpp
 
 Result.o: Result.cpp Result.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c Result.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c Result.cpp
 
 NonCall.o: NonCall.cpp NonCall.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c NonCall.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c NonCall.cpp
 
 BedReader.o: BedReader.cpp BedReader.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c BedReader.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c BedReader.cpp
 
 CNV.o: CNV.cpp CNV.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c CNV.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c CNV.cpp
 
 Bias.o: Bias.cpp Bias.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c Bias.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c Bias.cpp
 
 split.o: split.h split.cpp
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c split.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c split.cpp
 
 bamleftalign.o: bamleftalign.cpp LeftAlign.cpp
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c bamleftalign.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c bamleftalign.cpp
 
 bamfiltertech.o: bamfiltertech.cpp
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c bamfiltertech.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c bamfiltertech.cpp
 
 LeftAlign.o: LeftAlign.h LeftAlign.cpp
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c LeftAlign.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c LeftAlign.cpp
 
 IndelAllele.o: IndelAllele.cpp IndelAllele.h
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c IndelAllele.cpp
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDE) -c IndelAllele.cpp
 
 
 VERSION_FILE=./version_git.h
