1# ${LOCALBASE}/include must come after bundled dirs
2INCLUDES = -I. -Ilib -Ilib/Rmath -Ilib/tclap -Ilib/pcre2 -I${LOCALBASE}/include
3CXXFLAGS ?= -pipe -std=c++0x $(OPTFLAG) $(INCLUDES) -D__STDC_LIMIT_MACROS
4CXXFLAGS += -std=c++0x $(INCLUDES) -D__STDC_LIMIT_MACROS
5CXX ?= g++
6
7SOURCESONLY =
8
9SOURCES = ahmm\
10		align\
11		allele\
12		annotate_1000g\
13		annotate_dbsnp_rsid\
14		annotate_indels\
15		annotate_indels2\
16		annotate_regions\
17		annotate_variants\
18		annotate_vntrs\
19		augmented_bam_record\
20		bcf_genotyping_buffered_reader\
21		bcf_single_genotyping_buffered_reader\
22		bam_ordered_reader\
23		bcf_ordered_reader\
24		bcf_ordered_writer\
25		bcf_synced_reader\
26		bed\
27		candidate_motif_picker\
28		candidate_region_extractor\
29		cat\
30		chmm\
31		complex_genotyping_record\
32		compute_concordance\
33		compute_features\
34		compute_features2\
35		compute_rl_dist\
36		config\
37		consolidate_multiallelics\
38		consolidate_vntrs\
39		consolidate\
40		construct_probes\
41		decompose\
42		decompose2\
43		decompose_blocksub\
44		discover\
45		duplicate\
46		estimate\
47		estimator\
48		extract_vntrs\
49		filter\
50		filter_overlap\
51		flank_detector\
52		fuzzy_aligner\
53		fuzzy_partition\
54		gencode\
55		genome_interval\
56		genotype\
57		genotyping_record\
58		ghmm\
59		hts_utils\
60		hfilter\
61		indel_annotator\
62		indel_genotyping_record\
63		index\
64		info2tab\
65		interval_tree\
66		interval\
67		lfhmm\
68		lhmm\
69		lhmm1\
70		liftover\
71		log_tool\
72		merge\
73		merge_candidate_variants\
74		merge_genotypes\
75		milk_filter\
76		motif_tree\
77		motif_map\
78		multi_partition\
79		multiallelics_consolidator\
80		needle\
81		normalize\
82		nuclear_pedigree\
83		ordered_bcf_overlap_matcher\
84		ordered_region_overlap_matcher\
85		partition\
86		paste\
87		paste_and_compute_features_sequential\
88		paste_genotypes\
89		pedigree\
90		peek\
91		pileup\
92		pregex\
93		profile_afs\
94		profile_chm1\
95		profile_chrom\
96		profile_fic_hwe\
97		profile_hwe\
98		profile_indels\
99		profile_len\
100		profile_mendelian\
101		profile_na12878\
102		profile_snps\
103		profile_vntrs\
104		program\
105		read_filter\
106		reference_sequence\
107		rfhmm\
108		rfhmm_x\
109		rminfo\
110		seq\
111		set_ref\
112		snp_genotyping_record\
113		sort\
114		subset\
115		sv_tree\
116		svm_train\
117		svm_predict\
118		tbx_ordered_reader\
119		test\
120		trio\
121		union_variants\
122		uniq\
123		utils\
124		validate\
125		variant\
126		variant_manip\
127		variant_filter\
128		view\
129		vntr\
130		vntr_annotator\
131		vntr_consolidator\
132		vntr_extractor\
133		vntr_genotyping_record\
134		vntr_tree\
135		vntrize\
136		wdp_ahmm\
137
138SOURCESONLY = main.cpp
139
140TARGET = vt
141TOOLSRC = $(SOURCES:=.cpp) $(SOURCESONLY)
142TOOLOBJ = $(TOOLSRC:.cpp=.o)
143LIBDEFLATE = -ldeflate
144LIBHTS = -lhts
145LIBRMATH = lib/Rmath/libRmath.a
146LIBPCRE2 = lib/pcre2/libpcre2.a
147LIBSVM = -lsvm
148
149all : $(TARGET)
150
151${LIBDEFLATE} :
152	cd lib/libdeflate; $(MAKE) || exit 1;
153
154${LIBHTS} : ${LIBDEFLATE}
155	export LDFLAGS=-L${PWD}/lib/libdeflate;	export CPPFLAGS=-I${PWD}/lib/libdeflate; cd lib/htslib; autoheader; autoconf; ./configure; $(MAKE) libhts.a || exit 1;
156
157${LIBRMATH} :
158	cd lib/Rmath; $(MAKE) libRmath.a || exit 1;
159
160${LIBPCRE2} :
161	cd lib/pcre2; $(MAKE) libpcre2.a || exit 1;
162
163${LIBSVM} :
164	cd lib/libsvm; $(MAKE) libsvm.a || exit 1;
165
166version :
167	git rev-parse HEAD | cut -c 1-8 | awk '{print "#define VERSION \"0.5772-"$$0"\""}' > version.h;
168
169$(TARGET) : ${LIBRMATH} ${LIBPCRE2} $(TOOLOBJ)
170	$(CXX) $(CXXFLAGS) -o $@ $(TOOLOBJ) -L${LOCALBASE}/lib $(LIBHTS) $(LIBRMATH) ${LIBPCRE2} ${LIBDEFLATE} -lz -lpthread -lbz2 -llzma -lcurl -lcrypto
171
172$(TOOLOBJ): $(HEADERSONLY)
173
174.cpp.o :
175	$(CXX) $(CXXFLAGS) -o $@ -c $*.cpp
176
177.PHONY: clean cleanvt test version
178
179clean :
180	cd lib/libdeflate; $(MAKE) clean
181	cd lib/htslib; $(MAKE) clean
182	cd lib/Rmath; $(MAKE) clean
183	cd lib/pcre2; $(MAKE) clean
184	cd lib/libsvm; $(MAKE) clean
185	-rm -rf $(TARGET) $(TOOLOBJ)
186
187cleanvt :
188	-rm -rf $(TARGET) $(TOOLOBJ)
189
190test : vt
191	test/test.sh
192
193debug : vt
194	test/test.sh debug
195