1#
2# Copyright 2015, Daehwan Kim <infphilo@gmail.com>
3#
4# This file is part of HISAT2.
5#
6# HISAT 2 is free software: you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation, either version 3 of the License, or
9# (at your option) any later version.
10#
11# HISAT 2 is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with HISAT.  If not, see <http://www.gnu.org/licenses/>.
18#
19#
20# Makefile for hisat2-align, hisat2-build, hisat2-inspect
21#
22
23INC =
24GCC_PREFIX = $(shell dirname `which gcc`)
25GCC_SUFFIX =
26CC	?= $(GCC_PREFIX)/gcc$(GCC_SUFFIX)
27CPP	?= $(GCC_PREFIX)/g++$(GCC_SUFFIX)
28CXX	?= $(CPP)
29INSTALL	?= install
30
31HEADERS = $(wildcard *.h)
32BOWTIE_MM = 1
33BOWTIE_SHARED_MEM = 0
34
35# Detect Cygwin or MinGW
36WINDOWS = 0
37CYGWIN = 0
38MINGW = 0
39ifneq (,$(findstring CYGWIN,$(shell uname)))
40	WINDOWS = 1
41	CYGWIN = 1
42	# POSIX memory-mapped files not currently supported on Windows
43	BOWTIE_MM = 0
44	BOWTIE_SHARED_MEM = 0
45else
46	ifneq (,$(findstring MINGW,$(shell uname)))
47		WINDOWS = 1
48		MINGW = 1
49		# POSIX memory-mapped files not currently supported on Windows
50		BOWTIE_MM = 0
51		BOWTIE_SHARED_MEM = 0
52	endif
53endif
54
55MACOS = 0
56ifneq (,$(findstring Darwin,$(shell uname)))
57	MACOS = 1
58endif
59
60EXTRA_FLAGS += -std=c++11
61INC += -I. -I third_party
62
63MM_DEF =
64
65ifeq (1,$(BOWTIE_MM))
66	MM_DEF = -DBOWTIE_MM
67endif
68
69SHMEM_DEF =
70
71ifeq (1,$(BOWTIE_SHARED_MEM))
72	SHMEM_DEF = -DBOWTIE_SHARED_MEM
73endif
74
75PTHREAD_PKG =
76PTHREAD_LIB =
77
78ifeq (1,$(MINGW))
79	PTHREAD_LIB =
80else
81	PTHREAD_LIB = -lpthread
82endif
83
84SEARCH_LIBS =
85BUILD_LIBS =
86INSPECT_LIBS =
87
88ifeq (1,$(MINGW))
89	BUILD_LIBS =
90	INSPECT_LIBS =
91endif
92
93USE_SRA = 0
94SRA_DEF =
95SRA_LIB =
96SERACH_INC =
97ifeq (1,$(USE_SRA))
98	SRA_DEF = -DUSE_SRA
99	SRA_LIB = -lncbi-ngs-c++-static -lngs-c++-static -lncbi-vdb-static -ldl
100	SEARCH_INC += -I$(NCBI_NGS_DIR)/include -I$(NCBI_VDB_DIR)/include
101	SEARCH_LIBS += -L$(NCBI_NGS_DIR)/lib64 -L$(NCBI_VDB_DIR)/lib64
102endif
103
104LIBS = $(PTHREAD_LIB)
105
106SHARED_CPPS = ccnt_lut.cpp ref_read.cpp alphabet.cpp shmem.cpp \
107	edit.cpp gfm.cpp \
108	reference.cpp ds.cpp multikey_qsort.cpp limit.cpp \
109	random_source.cpp tinythread.cpp
110SEARCH_CPPS = qual.cpp pat.cpp \
111	read_qseq.cpp aligner_seed_policy.cpp \
112	aligner_seed.cpp \
113	aligner_seed2.cpp \
114	aligner_sw.cpp \
115	aligner_sw_driver.cpp aligner_cache.cpp \
116	aligner_result.cpp ref_coord.cpp mask.cpp \
117	pe.cpp aln_sink.cpp dp_framer.cpp \
118	scoring.cpp presets.cpp unique.cpp \
119	simple_func.cpp \
120	random_util.cpp \
121	aligner_bt.cpp sse_util.cpp \
122	aligner_swsse.cpp outq.cpp \
123	aligner_swsse_loc_i16.cpp \
124	aligner_swsse_ee_i16.cpp \
125	aligner_swsse_loc_u8.cpp \
126	aligner_swsse_ee_u8.cpp \
127	aligner_driver.cpp \
128	splice_site.cpp
129
130BUILD_CPPS = diff_sample.cpp
131
132REPEAT_CPPS = \
133	mask.cpp \
134	qual.cpp \
135	aligner_bt.cpp \
136	scoring.cpp \
137	simple_func.cpp \
138	dp_framer.cpp \
139	aligner_result.cpp \
140	aligner_sw_driver.cpp \
141	aligner_sw.cpp \
142	aligner_swsse_ee_i16.cpp \
143	aligner_swsse_ee_u8.cpp \
144	aligner_swsse_loc_i16.cpp \
145	aligner_swsse_loc_u8.cpp \
146	aligner_swsse.cpp \
147	bit_packed_array.cpp \
148	repeat_builder.cpp
149
150HISAT2_CPPS_MAIN = $(SEARCH_CPPS) hisat2_main.cpp
151HISAT2_BUILD_CPPS_MAIN = $(BUILD_CPPS) hisat2_build_main.cpp
152HISAT2_REPEAT_CPPS_MAIN = $(REPEAT_CPPS) $(BUILD_CPPS) hisat2_repeat_main.cpp
153
154SEARCH_FRAGMENTS = $(wildcard search_*_phase*.c)
155VERSION = $(shell cat VERSION)
156
157DEBUG_FLAGS    = -O0 -g3 $(BITS_FLAG) $(SSE_FLAG)
158DEBUG_DEFS     = -DCOMPILER_OPTIONS="\"$(DEBUG_FLAGS) $(EXTRA_FLAGS)\""
159RELEASE_FLAGS  = $(CXXFLAGS)
160RELEASE_DEFS   = -DCOMPILER_OPTIONS="\"$(RELEASE_FLAGS) $(EXTRA_FLAGS)\""
161NOASSERT_FLAGS = -DNDEBUG
162FILE_FLAGS     = -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
163
164ifeq (1,$(USE_SRA))
165	ifeq (1, $(MACOS))
166		SRA_LIB += -stdlib=libc++
167		DEBUG_FLAGS += -mmacosx-version-min=10.10
168		RELEASE_FLAGS += -mmacosx-version-min=10.10
169	endif
170endif
171
172
173HISAT2_BIN_LIST = hisat2-build-s \
174	hisat2-build-l \
175	hisat2-align-s \
176	hisat2-align-l \
177	hisat2-inspect-s \
178	hisat2-inspect-l \
179	hisat2-repeat
180HISAT2_BIN_LIST_AUX = hisat2-build-s-debug \
181	hisat2-build-l-debug \
182	hisat2-align-s-debug \
183	hisat2-align-l-debug \
184	hisat2-inspect-s-debug \
185	hisat2-inspect-l-debug \
186	hisat2-repeat-debug
187
188HT2LIB_DIR = hisat2lib
189HT2LIB_SRCS = $(SHARED_CPPS) \
190			  $(HT2LIB_DIR)/ht2_init.cpp \
191			  $(HT2LIB_DIR)/ht2_repeat.cpp \
192			  $(HT2LIB_DIR)/ht2_index.cpp
193
194HT2LIB_OBJS = $(HT2LIB_SRCS:.cpp=.o)
195
196HT2LIB_DEBUG_OBJS = $(addprefix .ht2lib-obj-debug/,$(HT2LIB_OBJS))
197HT2LIB_RELEASE_OBJS = $(addprefix .ht2lib-obj-release/,$(HT2LIB_OBJS))
198HT2LIB_SHARED_DEBUG_OBJS = $(addprefix .ht2lib-obj-debug-shared/,$(HT2LIB_OBJS))
199HT2LIB_SHARED_RELEASE_OBJS = $(addprefix .ht2lib-obj-release-shared/,$(HT2LIB_OBJS))
200
201HT2LIB_PKG_SRC = \
202	$(HT2LIB_DIR)/ht2_init.cpp \
203	$(HT2LIB_DIR)/ht2_repeat.cpp \
204	$(HT2LIB_DIR)/ht2_index.cpp \
205	$(HT2LIB_DIR)/ht2.h \
206	$(HT2LIB_DIR)/ht2_handle.h \
207	$(HT2LIB_DIR)/java_jni/Makefile \
208	$(HT2LIB_DIR)/java_jni/ht2module.c \
209	$(HT2LIB_DIR)/java_jni/HT2Module.java \
210	$(HT2LIB_DIR)/java_jni/HT2ModuleExample.java \
211	$(HT2LIB_DIR)/pymodule/Makefile \
212	$(HT2LIB_DIR)/pymodule/ht2module.c \
213	$(HT2LIB_DIR)/pymodule/setup.py \
214	$(HT2LIB_DIR)/pymodule/ht2example.py
215
216
217GENERAL_LIST = $(wildcard scripts/*.sh) \
218	$(wildcard scripts/*.pl) \
219	$(wildcard *.py) \
220	$(wildcard example/index/*.ht2) \
221	$(wildcard example/reads/*.fa) \
222	example/reference/22_20-21M.fa \
223	example/reference/22_20-21M.snp \
224	$(PTHREAD_PKG) \
225	hisat2 \
226	hisat2-build \
227	hisat2-inspect \
228	AUTHORS \
229	LICENSE \
230	NEWS \
231	MANUAL \
232	MANUAL.markdown \
233	TUTORIAL \
234	VERSION
235
236ifeq (1,$(WINDOWS))
237	HISAT2_BIN_LIST := $(HISAT2_BIN_LIST) hisat2.bat hisat2-build.bat hisat2-inspect.bat
238endif
239
240# This is helpful on Windows under MinGW/MSYS, where Make might go for
241# the Windows FIND tool instead.
242FIND=$(shell which find)
243
244SRC_PKG_LIST = $(wildcard *.h) \
245	$(wildcard *.hh) \
246	$(wildcard *.c) \
247	$(wildcard *.cpp) \
248	$(HT2LIB_PKG_SRC) \
249	Makefile \
250	CMakeLists.txt \
251	$(GENERAL_LIST)
252
253BIN_PKG_LIST = $(GENERAL_LIST)
254
255.PHONY: all allall both both-debug
256
257all: $(HISAT2_BIN_LIST)
258
259allall: $(HISAT2_BIN_LIST) $(HISAT2_BIN_LIST_AUX)
260
261both: hisat2-align-s hisat2-align-l hisat2-build-s hisat2-build-l
262
263both-debug: hisat2-align-s-debug hisat2-align-l-debug hisat2-build-s-debug hisat2-build-l-debug
264
265repeat: hisat2-repeat
266
267repeat-debug: hisat2-repeat-debug
268
269DEFS=-fno-strict-aliasing \
270     -DHISAT2_VERSION="\"`cat VERSION`\"" \
271     -DBUILD_HOST="\"`hostname`\"" \
272     -DBUILD_TIME="\"`date`\"" \
273     -DCOMPILER_VERSION="\"`$(CXX) -v 2>&1 | tail -1`\"" \
274     $(FILE_FLAGS) \
275     $(PREF_DEF) \
276     $(MM_DEF) \
277     $(SHMEM_DEF)
278
279#
280# hisat-bp targets
281#
282
283hisat-bp-bin: hisat_bp.cpp $(SEARCH_CPPS) $(SHARED_CPPS) $(HEADERS) $(SEARCH_FRAGMENTS)
284	$(CXX) $(RELEASE_FLAGS) $(RELEASE_DEFS) $(EXTRA_FLAGS) \
285	$(DEFS) -DBOWTIE2 $(NOASSERT_FLAGS) -Wall \
286	$(INC) \
287	-o $@ $< \
288	$(SHARED_CPPS) $(HISAT_CPPS_MAIN) \
289	$(LIBS) $(SEARCH_LIBS)
290
291hisat-bp-bin-debug: hisat_bp.cpp $(SEARCH_CPPS) $(SHARED_CPPS) $(HEADERS) $(SEARCH_FRAGMENTS)
292	$(CXX) $(DEBUG_FLAGS) \
293	$(DEBUG_DEFS) $(EXTRA_FLAGS) \
294	$(DEFS) -DBOWTIE2 -Wall \
295	$(INC) \
296	-o $@ $< \
297	$(SHARED_CPPS) $(HISAT_CPPS_MAIN) \
298	$(LIBS) $(SEARCH_LIBS)
299
300#
301# hisat2-repeat targets
302#
303
304hisat2-repeat: hisat2_repeat.cpp $(REPEAT_CPPS) $(SHARED_CPPS) $(HEADERS)
305	$(CXX) $(RELEASE_FLAGS) $(RELEASE_DEFS) $(EXTRA_FLAGS) \
306	$(DEFS) -DBOWTIE2 -DBOWTIE_64BIT_INDEX $(NOASSERT_FLAGS) -Wall \
307	$(INC) \
308	-o $@ $< \
309	$(SHARED_CPPS) $(HISAT2_REPEAT_CPPS_MAIN) \
310	$(LIBS) $(BUILD_LIBS)
311
312hisat2-repeat-debug: hisat2_repeat.cpp $(REPEAT_CPPS) $(SHARED_CPPS) $(HEADERS)
313	$(CXX) $(DEBUG_FLAGS) $(DEBUG_DEFS) $(EXTRA_FLAGS) \
314	$(DEFS) -DBOWTIE2 -DBOWTIE_64BIT_INDEX -Wall \
315	$(INC) \
316	-o $@ $< \
317	$(SHARED_CPPS) $(HISAT2_REPEAT_CPPS_MAIN) \
318	$(LIBS) $(BUILD_LIBS)
319
320
321#
322# hisat2-build targets
323#
324
325hisat2-build-s: hisat2_build.cpp $(SHARED_CPPS) $(HEADERS)
326	$(CXX) $(RELEASE_FLAGS) $(RELEASE_DEFS) $(EXTRA_FLAGS) \
327	$(DEFS) -DBOWTIE2 $(NOASSERT_FLAGS) -Wall -DMASSIVE_DATA_RLCSA \
328	$(INC) \
329	-o $@ $< \
330	$(SHARED_CPPS) $(HISAT2_BUILD_CPPS_MAIN) \
331	$(LIBS) $(BUILD_LIBS)
332
333hisat2-build-l: hisat2_build.cpp $(SHARED_CPPS) $(HEADERS)
334	$(CXX) $(RELEASE_FLAGS) $(RELEASE_DEFS) $(EXTRA_FLAGS) \
335	$(DEFS) -DBOWTIE2 -DBOWTIE_64BIT_INDEX $(NOASSERT_FLAGS) -Wall \
336	$(INC) \
337	-o $@ $< \
338	$(SHARED_CPPS) $(HISAT2_BUILD_CPPS_MAIN) \
339	$(LIBS) $(BUILD_LIBS)
340
341hisat2-build-s-debug: hisat2_build.cpp $(SHARED_CPPS) $(HEADERS)
342	$(CXX) $(DEBUG_FLAGS) $(DEBUG_DEFS) $(EXTRA_FLAGS) \
343	$(DEFS) -DBOWTIE2 -Wall -DMASSIVE_DATA_RLCSA \
344	$(INC) \
345	-o $@ $< \
346	$(SHARED_CPPS) $(HISAT2_BUILD_CPPS_MAIN) \
347	$(LIBS) $(BUILD_LIBS)
348
349hisat2-build-l-debug: hisat2_build.cpp $(SHARED_CPPS) $(HEADERS)
350	$(CXX) $(DEBUG_FLAGS) $(DEBUG_DEFS) $(EXTRA_FLAGS) \
351	$(DEFS) -DBOWTIE2 -DBOWTIE_64BIT_INDEX -Wall \
352	$(INC) \
353	-o $@ $< \
354	$(SHARED_CPPS) $(HISAT2_BUILD_CPPS_MAIN) \
355	$(LIBS) $(BUILD_LIBS)
356
357#
358# hisat2 targets
359#
360
361hisat2-align-s: hisat2.cpp $(SEARCH_CPPS) $(SHARED_CPPS) $(HEADERS) $(SEARCH_FRAGMENTS)
362	$(CXX) $(RELEASE_FLAGS) $(RELEASE_DEFS) $(EXTRA_FLAGS) \
363	$(DEFS) $(SRA_DEF) -DBOWTIE2 $(NOASSERT_FLAGS) -Wall \
364	$(INC) $(SEARCH_INC) \
365	-o $@ $< \
366	$(SHARED_CPPS) $(HISAT2_CPPS_MAIN) \
367	$(LIBS) $(SRA_LIB) $(SEARCH_LIBS)
368
369hisat2-align-l: hisat2.cpp $(SEARCH_CPPS) $(SHARED_CPPS) $(HEADERS) $(SEARCH_FRAGMENTS)
370	$(CXX) $(RELEASE_FLAGS) $(RELEASE_DEFS) $(EXTRA_FLAGS) \
371	$(DEFS) $(SRA_DEF) -DBOWTIE2 -DBOWTIE_64BIT_INDEX $(NOASSERT_FLAGS) -Wall \
372	$(INC) $(SEARCH_INC) \
373	-o $@ $< \
374	$(SHARED_CPPS) $(HISAT2_CPPS_MAIN) \
375	$(LIBS) $(SRA_LIB) $(SEARCH_LIBS)
376
377hisat2-align-s-debug: hisat2.cpp $(SEARCH_CPPS) $(SHARED_CPPS) $(HEADERS) $(SEARCH_FRAGMENTS)
378	$(CXX) $(DEBUG_FLAGS) \
379	$(DEBUG_DEFS) $(EXTRA_FLAGS) \
380	$(DEFS) $(SRA_DEF) -DBOWTIE2 -Wall \
381	$(INC) $(SEARCH_INC) \
382	-o $@ $< \
383	$(SHARED_CPPS) $(HISAT2_CPPS_MAIN) \
384	$(LIBS) $(SRA_LIB) $(SEARCH_LIBS)
385
386hisat2-align-l-debug: hisat2.cpp $(SEARCH_CPPS) $(SHARED_CPPS) $(HEADERS) $(SEARCH_FRAGMENTS)
387	$(CXX) $(DEBUG_FLAGS) \
388	$(DEBUG_DEFS) $(EXTRA_FLAGS) \
389	$(DEFS) $(SRA_DEF) -DBOWTIE2 -DBOWTIE_64BIT_INDEX -Wall \
390	$(INC) $(SEARCH_INC) \
391	-o $@ $< \
392	$(SHARED_CPPS) $(HISAT2_CPPS_MAIN) \
393	$(LIBS) $(SRA_LIB) $(SEARCH_LIBS)
394
395#
396# hisat2-inspect targets
397#
398
399hisat2-inspect-s: hisat2_inspect.cpp $(HEADERS) $(SHARED_CPPS)
400	$(CXX) $(RELEASE_FLAGS) \
401	$(RELEASE_DEFS) $(EXTRA_FLAGS) \
402	$(DEFS) -DBOWTIE2 -DHISAT2_INSPECT_MAIN -Wall \
403	$(INC) -I . \
404	-o $@ $< \
405	$(SHARED_CPPS) \
406	$(LIBS) $(INSPECT_LIBS)
407
408hisat2-inspect-l: hisat2_inspect.cpp $(HEADERS) $(SHARED_CPPS)
409	$(CXX) $(RELEASE_FLAGS) \
410	$(RELEASE_DEFS) $(EXTRA_FLAGS) \
411	$(DEFS) -DBOWTIE2 -DBOWTIE_64BIT_INDEX -DHISAT2_INSPECT_MAIN -Wall \
412	$(INC) -I . \
413	-o $@ $< \
414	$(SHARED_CPPS) \
415	$(LIBS) $(INSPECT_LIBS)
416
417hisat2-inspect-s-debug: hisat2_inspect.cpp $(HEADERS) $(SHARED_CPPS)
418	$(CXX) $(DEBUG_FLAGS) \
419	$(DEBUG_DEFS) $(EXTRA_FLAGS) \
420	$(DEFS) -DBOWTIE2 -DHISAT2_INSPECT_MAIN -Wall \
421	$(INC) -I . \
422	-o $@ $< \
423	$(SHARED_CPPS) \
424	$(LIBS) $(INSPECT_LIBS)
425
426hisat2-inspect-l-debug: hisat2_inspect.cpp $(HEADERS) $(SHARED_CPPS)
427	$(CXX) $(DEBUG_FLAGS) \
428	$(DEBUG_DEFS) $(EXTRA_FLAGS) \
429	$(DEFS) -DBOWTIE2 -DBOWTIE_64BIT_INDEX -DHISAT2_INSPECT_MAIN -Wall \
430	$(INC) -I . \
431	-o $@ $< \
432	$(SHARED_CPPS) \
433	$(LIBS) $(INSPECT_LIBS)
434
435#
436# HT2LIB targets
437#
438
439ht2lib: libhisat2lib-debug.a libhisat2lib.a libhisat2lib-debug.so libhisat2lib.so
440
441libhisat2lib-debug.a: $(HT2LIB_DEBUG_OBJS)
442	ar rc $@ $(HT2LIB_DEBUG_OBJS)
443
444libhisat2lib.a: $(HT2LIB_RELEASE_OBJS)
445	ar rc $@ $(HT2LIB_RELEASE_OBJS)
446
447libhisat2lib-debug.so: $(HT2LIB_SHARED_DEBUG_OBJS)
448	$(CXX) $(DEBUG_FLAGS) $(DEBUG_DEFS) $(EXTRA_FLAGS) $(DEFS) $(SRA_DEF) -DBOWTIE2 -Wall $(INC) $(SEARCH_INC) \
449	-shared -o $@  $(HT2LIB_SHARED_DEBUG_OBJS) $(LIBS) $(SRA_LIB) $(SEARCH_LIBS)
450
451libhisat2lib.so: $(HT2LIB_SHARED_RELEASE_OBJS)
452	$(CXX) $(RELEASE_FLAGS) $(RELEASE_DEFS) $(EXTRA_FLAGS) $(DEFS) $(SRA_DEF) -DBOWTIE2 $(NOASSERT_FLAGS) -Wall  $(INC) $(SEARCH_INC)\
453	-shared -o $@ $(HT2LIB_SHARED_RELEASE_OBJS) $(LIBS) $(SRA_LIB) $(SEARCH_LIBS)
454
455.ht2lib-obj-debug/%.o: %.cpp
456	@mkdir -p $(dir $@)/$(dir $<)
457	$(CXX) -fPIC $(DEBUG_FLAGS) $(DEBUG_DEFS) $(EXTRA_FLAGS) $(DEFS) $(SRA_DEF) -DBOWTIE2 -Wall $(INC) $(SEARCH_INC) \
458	-c -o $@ $<
459
460.ht2lib-obj-release/%.o: %.cpp
461	@mkdir -p $(dir $@)/$(dir $<)
462	$(CXX) -fPIC $(RELEASE_FLAGS) $(RELEASE_DEFS) $(EXTRA_FLAGS) $(DEFS) $(SRA_DEF) -DBOWTIE2 $(NOASSERT_FLAGS) -Wall $(INC) $(SEARCH_INC) \
463	-c -o $@ $<
464
465.ht2lib-obj-debug-shared/%.o: %.cpp
466	@mkdir -p $(dir $@)/$(dir $<)
467	$(CXX) -fPIC $(DEBUG_FLAGS) $(DEBUG_DEFS) $(EXTRA_FLAGS) $(DEFS) $(SRA_DEF) -DBOWTIE2 -Wall $(INC) $(SEARCH_INC) \
468	-c -o $@ $<
469
470.ht2lib-obj-release-shared/%.o: %.cpp
471	@mkdir -p $(dir $@)/$(dir $<)
472	$(CXX) -fPIC $(RELEASE_FLAGS) $(RELEASE_DEFS) $(EXTRA_FLAGS) $(DEFS) $(SRA_DEF) -DBOWTIE2 $(NOASSERT_FLAGS) -Wall $(INC) $(SEARCH_INC) \
473	-c -o $@ $<
474
475#
476# repeatexp
477#
478repeatexp:
479	g++ -o repeatexp repeatexp.cpp -I hisat2lib libhisat2lib.a
480
481hisat2: ;
482
483hisat2.bat:
484	echo "@echo off" > hisat2.bat
485	echo "perl %~dp0/hisat2 %*" >> hisat2.bat
486
487hisat2-build.bat:
488	echo "@echo off" > hisat2-build.bat
489	echo "python %~dp0/hisat2-build %*" >> hisat2-build.bat
490
491hisat2-inspect.bat:
492	echo "@echo off" > hisat2-inspect.bat
493	echo "python %~dp0/hisat2-inspect %*" >> hisat2-inspect.bat
494
495
496.PHONY: hisat2-src
497hisat2-src: $(SRC_PKG_LIST)
498	chmod a+x scripts/*.sh scripts/*.pl
499	mkdir .src.tmp
500	mkdir .src.tmp/hisat2-$(VERSION)
501	zip tmp.zip $(SRC_PKG_LIST)
502	mv tmp.zip .src.tmp/hisat2-$(VERSION)
503	cd .src.tmp/hisat2-$(VERSION) ; unzip tmp.zip ; rm -f tmp.zip
504	cd .src.tmp ; zip -r hisat2-$(VERSION)-source.zip hisat2-$(VERSION)
505	cp .src.tmp/hisat2-$(VERSION)-source.zip .
506	rm -rf .src.tmp
507
508.PHONY: hisat2-bin
509hisat2-bin: $(BIN_PKG_LIST) $(HISAT2_BIN_LIST) $(HISAT2_BIN_LIST_AUX)
510	chmod a+x scripts/*.sh scripts/*.pl
511	rm -rf .bin.tmp
512	mkdir .bin.tmp
513	mkdir .bin.tmp/hisat2-$(VERSION)
514	if [ -f hisat2.exe ] ; then \
515		zip tmp.zip $(BIN_PKG_LIST) $(addsuffix .exe,$(HISAT2_BIN_LIST) $(HISAT2_BIN_LIST_AUX)) ; \
516	else \
517		zip tmp.zip $(BIN_PKG_LIST) $(HISAT2_BIN_LIST) $(HISAT2_BIN_LIST_AUX) ; \
518	fi
519	mv tmp.zip .bin.tmp/hisat2-$(VERSION)
520	cd .bin.tmp/hisat2-$(VERSION) ; unzip tmp.zip ; rm -f tmp.zip
521	cd .bin.tmp ; zip -r hisat2-$(VERSION)-$(BITS).zip hisat2-$(VERSION)
522	cp .bin.tmp/hisat2-$(VERSION)-$(BITS).zip .
523	rm -rf .bin.tmp
524
525.PHONY: doc
526doc: doc/manual.inc.html MANUAL
527
528doc/manual.inc.html: MANUAL.markdown
529	pandoc -T "HISAT2 Manual" -o $@ \
530	 --from markdown --to HTML --toc $^
531	perl -i -ne \
532	 '$$w=0 if m|^</body>|;print if $$w;$$w=1 if m|^<body>|;' $@
533
534MANUAL: MANUAL.markdown
535	perl doc/strip_markdown.pl < $^ > $@
536
537# Install per filesystem hierarchy standard:
538# https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
539
540.PHONY: install
541install:
542	mkdir -p ${DESTDIR}${PREFIX}/bin
543	${INSTALL} -c -s ${HISAT2_BIN_LIST} ${DESTDIR}${PREFIX}/bin
544	${INSTALL} -c hisat2 hisat2-build hisat2-inspect \
545		${DESTDIR}${PREFIX}/bin
546
547	mkdir -p ${DESTDIR}${PREFIX}/libexec/hisat2
548	${INSTALL} -c scripts/*.sh scripts/*.pl scripts/*.py *.py \
549		${DESTDIR}${PREFIX}/libexec/hisat2
550
551.PHONY: clean
552clean:
553	rm -f $(HISAT2_BIN_LIST) $(HISAT2_BIN_LIST_AUX) \
554	$(addsuffix .exe,$(HISAT2_BIN_LIST) $(HISAT2_BIN_LIST_AUX)) \
555	hisat2-src.zip hisat2-bin.zip
556	rm -f core.* .tmp.head
557	rm -rf *.dSYM
558	rm -rf .ht2lib-obj*
559	rm -f libhisat2lib*.a libhisat2lib*.so
560
561
562.PHONY: push-doc
563push-doc: doc/manual.inc.html
564	scp doc/*.*html doc/indexes.txt salz-dmz:/ccb/salz7-data/www/ccb.jhu.edu/html/software/hisat2/
565