1# 2# Copyright 2011, Ben Langmead <langmea@cs.jhu.edu> 3# 4# This file is part of Bowtie 2. 5# 6# Bowtie 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# Bowtie 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 Bowtie 2. If not, see <http://www.gnu.org/licenses/>. 18# 19 20# 21# Makefile for bowtie, bowtie2-build, bowtie2-inspect 22# 23 24PREFIX := /usr/local 25bindir := $(PREFIX)/bin 26 27LDLIBS := -lpthread -lz 28 29HEADERS := $(wildcard *.h) 30BOWTIE_MM := 1 31BOWTIE_SHARED_MEM := 32 33CXXFLAGS += -std=c++11 34 35ARCH = $(shell uname -p) 36NGS_VER ?= 2.9.2 37VDB_VER ?= 2.9.2-1 38 39# Detect Cygwin or MinGW 40WINDOWS := 41MINGW := 42ifneq (,$(findstring MINGW,$(shell uname))) 43 WINDOWS := 1 44 MINGW := 1 45 # POSIX memory-mapped files not currently supported on Windows 46 BOWTIE_MM := 47 BOWTIE_SHARED_MEM := 48endif 49 50MACOS := 51ifneq (,$(findstring Darwin,$(shell uname))) 52 MACOS := 1 53 ifeq (1,$(shell uname -r | awk -F. '{ if ($$1 > 12 && $$1 < 16) print 1; }')) 54 CXXFLAGS += -stdlib=libstdc++ 55 endif 56 ifdef STATIC_BUILD 57 CXXFLAGS += -mmacosx-version-min=10.9 58 endif 59endif 60 61BITS := 32 62ifneq (,$(findstring $(shell uname -p), x86_64 amd64)) 63 BITS := 64 64 SSE_FLAG := -msse2 65 POPCNT_CAPABILITY ?= 1 66else ifneq (,$(findstring $(shell uname -p), aarch64 arm64 s390x powerpc64 powerpc64le)) 67 BITS := 64 68 SSE_FLAG := 69 CXXFLAGS += -fopenmp-simd 70 CPPFLAGS += -Ithird_party 71 POPCNT_CAPABILITY ?= 0 72endif 73 74# msys will always be 32 bit so look at the cpu arch instead. 75ifneq (,$(findstring AMD64,$(PROCESSOR_ARCHITEW6432))) 76 ifeq (1,$(MINGW)) 77 BITS := 64 78 endif 79endif 80ifeq (32,$(BITS)) 81 $(error bowtie2 compilation requires a 64-bit platform ) 82endif 83 84ifdef STATIC_BUILD 85 LDFLAGS += -L$(CURDIR)/.tmp/lib 86 CPPFLAGS += -I$(CURDIR)/.tmp/include 87endif 88 89ifeq (1, $(POPCNT_CAPABILITY)) 90 CXXFLAGS += -DPOPCNT_CAPABILITY 91 CPPFLAGS += -I third_party 92endif 93 94MM_DEF := 95 96ifeq (1,$(BOWTIE_MM)) 97 MM_DEF := -DBOWTIE_MM 98endif 99 100SHMEM_DEF := 101 102ifdef BOWTIE_SHARED_MEM 103 SHMEM_DEF := -DBOWTIE_SHARED_MEM 104endif 105 106PTHREAD_PKG := 107PTHREAD_LIB := 108 109ifeq (1,$(MINGW)) 110 PTHREAD_LIB := 111else 112 PTHREAD_LIB := -lpthread 113endif 114 115ifeq (1,$(NO_SPINLOCK)) 116 CXXFLAGS += -DNO_SPINLOCK 117endif 118 119USE_SRA ?= 120ifeq (1, $(USE_SRA)) 121 ifdef MINGW 122 $(error "SRA binaries cannot be built on MINGW") 123 else 124 LDFLAGS += -L$(CURDIR)/.tmp/lib64 125 ifndef ($(STATIC_BUILD)) 126 CPPFLAGS += -I$(CURDIR)/.tmp/include 127 endif 128 LDLIBS += -lncbi-ngs-c++-static 129 LDLIBS += -lngs-c++-static 130 LDLIBS += -lncbi-vdb-static 131 LDLIBS += -ldl 132 CXXFLAGS += -DUSE_SRA 133 endif 134endif 135 136ifeq (1,$(WITH_THREAD_PROFILING)) 137 CXXFLAGS += -DPER_THREAD_TIMING=1 138endif 139 140ifeq (1,$(WITH_AFFINITY)) 141 CXXFLAGS += -DWITH_AFFINITY=1 142endif 143 144#default is to use queue lock for better thread scaling performance 145ifneq (1,$(NO_QUEUELOCK)) 146 CXXFLAGS += -DNO_SPINLOCK 147 CXXFLAGS += -DWITH_QUEUELOCK=1 148endif 149 150SHARED_CPPS := ccnt_lut.cpp ref_read.cpp alphabet.cpp shmem.cpp \ 151 edit.cpp bt2_locks.cpp bt2_idx.cpp bt2_io.cpp bt2_util.cpp \ 152 reference.cpp ds.cpp multikey_qsort.cpp limit.cpp \ 153 random_source.cpp 154 155SEARCH_CPPS := qual.cpp pat.cpp sam.cpp \ 156 read_qseq.cpp aligner_seed_policy.cpp \ 157 aligner_seed.cpp \ 158 aligner_seed2.cpp \ 159 aligner_sw.cpp \ 160 aligner_sw_driver.cpp aligner_cache.cpp \ 161 aligner_result.cpp ref_coord.cpp mask.cpp \ 162 pe.cpp aln_sink.cpp dp_framer.cpp \ 163 scoring.cpp presets.cpp unique.cpp \ 164 simple_func.cpp \ 165 random_util.cpp \ 166 aligner_bt.cpp sse_util.cpp \ 167 aligner_swsse.cpp outq.cpp \ 168 aligner_swsse_loc_i16.cpp \ 169 aligner_swsse_ee_i16.cpp \ 170 aligner_swsse_loc_u8.cpp \ 171 aligner_swsse_ee_u8.cpp \ 172 aligner_driver.cpp 173 174ifeq (1, $(WITH_ZSTD)) 175 LDLIBS += -lzstd 176 SHARED_CPPS += zstd_decompress.cpp 177endif 178 179SEARCH_CPPS_MAIN := $(SEARCH_CPPS) bowtie_main.cpp 180 181DP_CPPS := qual.cpp aligner_sw.cpp aligner_result.cpp ref_coord.cpp mask.cpp \ 182 simple_func.cpp sse_util.cpp aligner_bt.cpp aligner_swsse.cpp \ 183 aligner_swsse_loc_i16.cpp aligner_swsse_ee_i16.cpp \ 184 aligner_swsse_loc_u8.cpp aligner_swsse_ee_u8.cpp scoring.cpp 185 186BUILD_CPPS := diff_sample.cpp 187BUILD_CPPS_MAIN := $(BUILD_CPPS) bowtie_build_main.cpp 188 189SEARCH_FRAGMENTS := $(wildcard search_*_phase*.c) 190VERSION := $(shell cat BOWTIE2_VERSION) 191 192SANITIZER_FLAGS := 193ifeq (0,$(shell $(CXX) -E -fsanitize=address,undefined btypes.h > /dev/null 2>&1; echo $$?)) 194 SANITIZER_FLAGS := -fsanitize=address,undefined 195else ifeq (0,$(shell $(CXX) -E -fsanitize=address btypes.h > /dev/null 2>&1; echo $$?)) 196 SANITIZER_FLAGS := -fsanitize=address 197else ifeq (0,$(shell $(CXX) -E -fsanitize=undefined btypes.h > /dev/null 2>&1; echo $$?)) 198 SANITIZER_FLAGS := -fsanitize=undefined 199endif 200 201DEBUG_FLAGS := -O0 -g3 $(SSE_FLAG) 202RELEASE_FLAGS := -O3 $(SSE_FLAG) -funroll-loops -g3 203NOASSERT_FLAGS := -DNDEBUG 204FILE_FLAGS := -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE 205DEBUG_DEFS = -DCOMPILER_OPTIONS="\"$(DEBUG_FLAGS) $(CXXFLAGS)\"" 206RELEASE_DEFS = -DCOMPILER_OPTIONS="\"$(RELEASE_FLAGS) $(CXXFLAGS)\"" 207 208BOWTIE2_BIN_LIST := bowtie2-build-s \ 209 bowtie2-build-l \ 210 bowtie2-align-s \ 211 bowtie2-align-l \ 212 bowtie2-inspect-s \ 213 bowtie2-inspect-l 214BOWTIE2_BIN_LIST_DBG := bowtie2-build-s-debug \ 215 bowtie2-build-l-debug \ 216 bowtie2-align-s-debug \ 217 bowtie2-align-l-debug \ 218 bowtie2-inspect-s-debug \ 219 bowtie2-inspect-l-debug 220BOWTIE2_BIN_LIST_SAN := bowtie2-build-s-sanitized \ 221 bowtie2-build-l-sanitized \ 222 bowtie2-align-s-sanitized \ 223 bowtie2-align-l-sanitized \ 224 bowtie2-inspect-s-sanitized \ 225 bowtie2-inspect-l-sanitized 226ifndef SANITIZER_FLAGS 227 BOWTIE2_BIN_LIST_SAN = 228endif 229 230GENERAL_LIST := $(wildcard scripts/*.sh) \ 231 $(wildcard scripts/*.pl) \ 232 doc/manual.html \ 233 doc/README \ 234 doc/style.css \ 235 $(wildcard example/index/*.bt2) \ 236 $(wildcard example/reads/*.fq) \ 237 $(wildcard example/reads/*.pl) \ 238 example/reads/combined_reads.bam \ 239 example/reference/lambda_virus.fa \ 240 $(PTHREAD_PKG) \ 241 bowtie2 \ 242 bowtie2-build \ 243 bowtie2-inspect \ 244 AUTHORS \ 245 LICENSE \ 246 NEWS \ 247 MANUAL \ 248 MANUAL.markdown \ 249 README.md \ 250 TUTORIAL \ 251 BOWTIE2_VERSION 252 253ifeq (1,$(WINDOWS)) 254 BOWTIE2_BIN_LIST := $(BOWTIE2_BIN_LIST) bowtie2.bat bowtie2-build.bat bowtie2-inspect.bat 255 CXXFLAGS += -static-libgcc -static-libstdc++ 256endif 257 258# This is helpful on Windows under MinGW/MSYS, where Make might go for 259# the Windows FIND tool instead. 260FIND := $(shell which find) 261 262SRC_PKG_LIST = $(wildcard *.h) \ 263 $(wildcard *.hh) \ 264 $(wildcard *.c) \ 265 $(wildcard *.cpp) \ 266 $(wildcard third_party/*) \ 267 Makefile \ 268 CMakeLists.txt \ 269 $(GENERAL_LIST) 270 271ifeq (1,$(WINDOWS)) 272 BIN_PKG_LIST := $(GENERAL_LIST) bowtie2.bat bowtie2-build.bat bowtie2-inspect.bat 273else 274 BIN_PKG_LIST := $(GENERAL_LIST) 275endif 276 277.PHONY: all allall both both-debug 278 279all: $(BOWTIE2_BIN_LIST) ; 280allall: $(BOWTIE2_BIN_LIST) $(BOWTIE2_BIN_LIST_DBG) $(BOWTIE2_BIN_LIST_SAN) ; 281both: bowtie2-align-s bowtie2-build-s bowtie2-align-l bowtie2-build-l ; 282both-debug: bowtie2-align-s-debug bowtie2-build-s-debug bowtie2-align-l-debug bowtie2-build-l-debug ; 283both-sanitized: bowtie2-align-s-sanitized bowtie2-build-s-sanitized bowtie2-align-l-sanitized bowtie2-build-l-sanitized ; 284 285DEFS := -fno-strict-aliasing \ 286 -DBOWTIE2_VERSION="\"`cat BOWTIE2_VERSION`\"" \ 287 -DBUILD_HOST="\"$${HOSTNAME:-`hostname`}\"" \ 288 -DBUILD_TIME="\"`date -u`\"" \ 289 -DCOMPILER_VERSION="\"`$(CXX) -v 2>&1 | tail -1`\"" \ 290 $(FILE_FLAGS) \ 291 $(PREF_DEF) \ 292 $(MM_DEF) \ 293 $(SHMEM_DEF) 294 295# set compiler flags for all sanitized builds 296ifdef BOWTIE2_BIN_LIST_SAN 297$(BOWTIE2_BIN_LIST_SAN): CXXFLAGS+=$(SANITIZER_FLAGS) 298else 299$(BOWTIE2_BIN_LIST_SAN): $(error "Compiler does not support...") 300endif 301 302# 303# bowtie2-build targets 304# 305 306bowtie2-build-s-sanitized bowtie2-build-s: bt2_build.cpp $(SHARED_CPPS) $(HEADERS) 307 $(CXX) $(RELEASE_FLAGS) $(RELEASE_DEFS) $(CXXFLAGS) \ 308 $(DEFS) -DBOWTIE2 $(NOASSERT_FLAGS) -Wall \ 309 $(CPPFLAGS) \ 310 -o $@ $< \ 311 $(SHARED_CPPS) $(BUILD_CPPS_MAIN) \ 312 $(LDFLAGS) $(LDLIBS) 313 314bowtie2-build-l-sanitized bowtie2-build-l: bt2_build.cpp $(SHARED_CPPS) $(HEADERS) 315 $(CXX) $(RELEASE_FLAGS) $(RELEASE_DEFS) $(CXXFLAGS) \ 316 $(DEFS) -DBOWTIE2 -DBOWTIE_64BIT_INDEX $(NOASSERT_FLAGS) -Wall \ 317 $(CPPFLAGS) \ 318 -o $@ $< \ 319 $(SHARED_CPPS) $(BUILD_CPPS_MAIN) \ 320 $(LDFLAGS) $(LDLIBS) 321 322bowtie2-build-s-debug: bt2_build.cpp $(SHARED_CPPS) $(HEADERS) 323 $(CXX) $(DEBUG_FLAGS) $(DEBUG_DEFS) $(CXXFLAGS) \ 324 $(DEFS) -DBOWTIE2 -Wall \ 325 $(CPPFLAGS) \ 326 -o $@ $< \ 327 $(SHARED_CPPS) $(BUILD_CPPS_MAIN) \ 328 $(LDFLAGS) $(LDLIBS) 329 330bowtie2-build-l-debug: bt2_build.cpp $(SHARED_CPPS) $(HEADERS) 331 $(CXX) $(DEBUG_FLAGS) $(DEBUG_DEFS) $(CXXFLAGS) \ 332 $(DEFS) -DBOWTIE2 -DBOWTIE_64BIT_INDEX -Wall \ 333 $(CPPFLAGS) \ 334 -o $@ $< \ 335 $(SHARED_CPPS) $(BUILD_CPPS_MAIN) \ 336 $(LDFLAGS) $(LDLIBS) 337 338# 339# bowtie2-align targets 340# 341 342bowtie2-align-s-sanitized bowtie2-align-s: bt2_search.cpp $(SEARCH_CPPS) $(SHARED_CPPS) $(HEADERS) $(SEARCH_FRAGMENTS) 343 $(CXX) $(RELEASE_FLAGS) $(RELEASE_DEFS) $(CXXFLAGS) \ 344 $(DEFS) -DBOWTIE2 $(NOASSERT_FLAGS) -Wall \ 345 $(CPPFLAGS) \ 346 -o $@ $< \ 347 $(SHARED_CPPS) $(SEARCH_CPPS_MAIN) \ 348 $(LDFLAGS) $(LDLIBS) 349 350bowtie2-align-l-sanitized bowtie2-align-l: bt2_search.cpp $(SEARCH_CPPS) $(SHARED_CPPS) $(HEADERS) $(SEARCH_FRAGMENTS) 351 $(CXX) $(RELEASE_FLAGS) $(RELEASE_DEFS) $(CXXFLAGS) \ 352 $(DEFS) -DBOWTIE2 -DBOWTIE_64BIT_INDEX $(NOASSERT_FLAGS) -Wall \ 353 $(CPPFLAGS) \ 354 -o $@ $< \ 355 $(SHARED_CPPS) $(SEARCH_CPPS_MAIN) \ 356 $(LDFLAGS) $(LDLIBS) 357 358bowtie2-align-s-debug: bt2_search.cpp $(SEARCH_CPPS) $(SHARED_CPPS) $(HEADERS) $(SEARCH_FRAGMENTS) 359 $(CXX) $(DEBUG_FLAGS) \ 360 $(DEBUG_DEFS) $(CXXFLAGS) \ 361 $(DEFS) -DBOWTIE2 -Wall \ 362 $(CPPFLAGS) \ 363 -o $@ $< \ 364 $(SHARED_CPPS) $(SEARCH_CPPS_MAIN) \ 365 $(LDFLAGS) $(LDLIBS) 366 367bowtie2-align-l-debug: bt2_search.cpp $(SEARCH_CPPS) $(SHARED_CPPS) $(HEADERS) $(SEARCH_FRAGMENTS) 368 $(CXX) $(DEBUG_FLAGS) \ 369 $(DEBUG_DEFS) $(CXXFLAGS) \ 370 $(DEFS) -DBOWTIE2 -DBOWTIE_64BIT_INDEX -Wall \ 371 $(CPPFLAGS) \ 372 -o $@ $< \ 373 $(SHARED_CPPS) $(SEARCH_CPPS_MAIN) \ 374 $(LDFLAGS) $(LDLIBS) 375 376# 377# bowtie2-inspect targets 378# 379 380bowtie2-inspect-s-sanitized bowtie2-inspect-s: bt2_inspect.cpp $(HEADERS) $(SHARED_CPPS) 381 $(CXX) $(RELEASE_FLAGS) \ 382 $(RELEASE_DEFS) $(CXXFLAGS) \ 383 $(DEFS) -DBOWTIE2 -DBOWTIE_INSPECT_MAIN -Wall \ 384 $(CPPFLAGS) \ 385 -o $@ $< \ 386 $(SHARED_CPPS) \ 387 $(LDFLAGS) $(LDLIBS) 388 389bowtie2-inspect-l-sanitized bowtie2-inspect-l: bt2_inspect.cpp $(HEADERS) $(SHARED_CPPS) 390 $(CXX) $(RELEASE_FLAGS) \ 391 $(RELEASE_DEFS) $(CXXFLAGS) \ 392 $(DEFS) -DBOWTIE2 -DBOWTIE_INSPECT_MAIN -DBOWTIE_64BIT_INDEX -Wall \ 393 $(CPPFLAGS) \ 394 -o $@ $< \ 395 $(SHARED_CPPS) \ 396 $(LDFLAGS) $(LDLIBS) 397 398bowtie2-inspect-s-debug: bt2_inspect.cpp $(HEADERS) $(SHARED_CPPS) 399 $(CXX) $(DEBUG_FLAGS) \ 400 $(DEBUG_DEFS) $(CXXFLAGS) \ 401 $(DEFS) -DBOWTIE2 -DBOWTIE_INSPECT_MAIN -Wall \ 402 $(CPPFLAGS) \ 403 -o $@ $< \ 404 $(SHARED_CPPS) \ 405 $(LDFLAGS) $(LDLIBS) 406 407bowtie2-inspect-l-debug: bt2_inspect.cpp $(HEADERS) $(SHARED_CPPS) 408 $(CXX) $(DEBUG_FLAGS) \ 409 $(DEBUG_DEFS) $(CXXFLAGS) \ 410 $(DEFS) -DBOWTIE2 -DBOWTIE_64BIT_INDEX -DBOWTIE_INSPECT_MAIN -Wall \ 411 $(CPPFLAGS) \ 412 -o $@ $< \ 413 $(SHARED_CPPS) \ 414 $(LDFLAGS) $(LDLIBS) 415 416# 417# bowtie2-dp targets 418# 419 420bowtie2-dp: bt2_dp.cpp $(HEADERS) $(SHARED_CPPS) $(DP_CPPS) 421 $(CXX) $(RELEASE_FLAGS) \ 422 $(RELEASE_DEFS) $(CXXFLAGS) $(NOASSERT_FLAGS) \ 423 $(DEFS) -DBOWTIE2 -DBOWTIE_DP_MAIN -Wall \ 424 $(CPPFLAGS) \ 425 -o $@ $< \ 426 $(DP_CPPS) $(SHARED_CPPS) \ 427 $(LDFLAGS) $(LDLIBS) 428 429bowtie2-dp-debug: bt2_dp.cpp $(HEADERS) $(SHARED_CPPS) $(DP_CPPS) 430 $(CXX) $(DEBUG_FLAGS) \ 431 $(DEBUG_DEFS) $(CXXFLAGS) \ 432 $(DEFS) -DBOWTIE2 -DBOWTIE_DP_MAIN -Wall \ 433 $(CPPFLAGS) \ 434 -o $@ $< \ 435 $(DP_CPPS) $(SHARED_CPPS) \ 436 $(LDFLAGS) $(LDLIBS) 437 438bowtie2.bat: 439 echo "@echo off" > bowtie2.bat 440 echo "perl %~dp0/bowtie2 %*" >> bowtie2.bat 441 442bowtie2-build.bat: 443 echo "@echo off" > bowtie2-build.bat 444 echo "python3 %~dp0/bowtie2-build %*" >> bowtie2-build.bat 445 446bowtie2-inspect.bat: 447 echo "@echo off" > bowtie2-inspect.bat 448 echo "python3 %~dp0/bowtie2-inspect %*" >> bowtie2-inspect.bat 449 450.PHONY: bowtie2-src-pkg 451bowtie2-src-pkg: $(SRC_PKG_LIST) 452 chmod a+x scripts/*.sh scripts/*.pl 453 mkdir .src.tmp 454 mkdir .src.tmp/bowtie2-$(VERSION) 455 zip tmp.zip $(SRC_PKG_LIST) 456 mv tmp.zip .src.tmp/bowtie2-$(VERSION) 457 cd .src.tmp/bowtie2-$(VERSION) ; unzip tmp.zip ; rm -f tmp.zip 458 cd .src.tmp ; zip -r bowtie2-$(VERSION)-source.zip bowtie2-$(VERSION) 459 cp .src.tmp/bowtie2-$(VERSION)-source.zip . 460 rm -rf .src.tmp 461 462.PHONY: bowtie2-bin-pkg 463bowtie2-bin-pkg: PKG_DIR := bowtie2-$(VERSION)-$(if $(USE_SRA),sra-)$(if $(MACOS),macos,$(if $(MINGW),mingw,linux))-$(ARCH) 464bowtie2-bin-pkg: $(BIN_PKG_LIST) $(BOWTIE2_BIN_LIST) $(BOWTIE2_BIN_LIST_DBG) 465 chmod a+x scripts/*.sh scripts/*.pl 466 rm -rf .bin.tmp 467 mkdir -p .bin.tmp/$(PKG_DIR) 468 if [ -f bowtie2-align-s.exe ] ; then \ 469 zip tmp.zip $(BIN_PKG_LIST) $(addsuffix .exe,$(BOWTIE2_BIN_LIST) $(BOWTIE2_BIN_LIST_DBG)) ; \ 470 else \ 471 zip tmp.zip $(BIN_PKG_LIST) $(BOWTIE2_BIN_LIST) $(BOWTIE2_BIN_LIST_DBG) ; \ 472 fi 473 mv tmp.zip .bin.tmp/$(PKG_DIR) 474 cd .bin.tmp/$(PKG_DIR) ; unzip tmp.zip ; rm -f tmp.zip 475 cd .bin.tmp ; zip -r $(PKG_DIR).zip $(PKG_DIR) 476 cp .bin.tmp/$(PKG_DIR).zip . 477 rm -rf .bin.tmp 478 479bowtie2-seeds-debug: aligner_seed.cpp ccnt_lut.cpp alphabet.cpp aligner_seed.h bt2_idx.cpp bt2_io.cpp 480 $(CXX) $(DEBUG_FLAGS) \ 481 $(DEBUG_DEFS) $(CXXFLAGS) \ 482 -DSCAN_MAIN \ 483 $(DEFS) -Wall \ 484 $(CPPFLAGS) \ 485 -o $@ $< \ 486 aligner_seed.cpp bt2_idx.cpp ccnt_lut.cpp alphabet.cpp bt2_io.cpp \ 487 $(LDFLAGS) $(LDLIBS) 488 489.PHONY: doc 490doc: doc/manual.html MANUAL 491 492doc/manual.html: MANUAL.markdown 493 echo "<h1>Table of Contents</h1>" > .tmp.head 494 pandoc -B .tmp.head \ 495 --metadata title:"Bowtie 2 Manual"\ 496 --css doc/style.css -o $@ \ 497 --from markdown-smart \ 498 --to HTML \ 499 --table-of-contents $^ 500 rm -f .tmp.head 501 502MANUAL: MANUAL.markdown 503 pandoc -f markdown-smart -t plain $^ -o $@ 504 505.PHONY: install 506install: all 507 mkdir -p $(DESTDIR)$(bindir) 508 for file in $(BOWTIE2_BIN_LIST) bowtie2-inspect bowtie2-build bowtie2 ; do \ 509 cp -f $$file $(DESTDIR)$(bindir) ; \ 510 done 511 512.PHONY: simple-test 513simple-test: perl-deps both both-debug both-sanitized 514 eval `perl -I $(CURDIR)/.tmp/lib/perl5 -Mlocal::lib=$(CURDIR)/.tmp` ; \ 515 sh ./scripts/test/simple_tests.sh 516 517.PHONY: random-test 518random-test: all perl-deps 519 eval `perl -I $(CURDIR)/.tmp/lib/perl5 -Mlocal::lib=$(CURDIR)/.tmp` ; \ 520 sh ./scripts/sim/run.sh $(if $(NUM_CORES), $(NUM_CORES), 2) 521 522.PHONY: perl-deps 523perl-deps: 524 if [ ! -d "$(CURDIR)/.tmp" ]; then \ 525 mkdir -p $(CURDIR)/.tmp/include $(CURDIR)/.tmp/lib ; \ 526 fi 527 DL=$$( ( which wget >/dev/null 2>&1 && echo "wget --no-check-certificate -O-" ) || echo "curl -L") ; \ 528 $$DL http://cpanmin.us | perl - -l $(CURDIR)/.tmp App::cpanminus local::lib ; \ 529 eval `perl -I $(CURDIR)/.tmp/lib/perl5 -Mlocal::lib=$(CURDIR)/.tmp` ; \ 530 $(CURDIR)/.tmp/bin/cpanm --force File::Which Math::Random Clone Test::Deep Sys::Info ; \ 531 532.PHONY: static-libs 533static-libs: 534 if [ ! -d "$(CURDIR)/.tmp" ] ; then \ 535 mkdir -p $(CURDIR)/.tmp/include $(CURDIR)/.tmp/lib ; \ 536 fi ; \ 537 if [ `uname` = "Darwin" ]; then \ 538 export CFLAGS=-mmacosx-version-min=10.9 ; \ 539 export CXXFLAGS=-mmacosx-version-min=10.9 ; \ 540 fi ; \ 541 cd $(CURDIR)/.tmp ; \ 542 DL=$$( ( which wget >/dev/null 2>&1 && echo "wget --no-check-certificate" ) || echo "curl -LOk") ; \ 543 if [ ! -f "$(CURDIR)/.tmp/include/zlib.h" ] ; then \ 544 $$DL https://zlib.net/zlib-1.2.11.tar.gz && tar xzf zlib-1.2.11.tar.gz && cd zlib-1.2.11 ; \ 545 $(if $(MINGW), mingw32-make -f win32/Makefile.gcc, ./configure --static && make) ; \ 546 cp zlib.h zconf.h $(CURDIR)/.tmp/include && cp libz.a $(CURDIR)/.tmp/lib ; \ 547 rm -f zlib-1.2.11 ; \ 548 fi ; \ 549 if [ ! -f "$(CURDIR)/.tmp/include/zstd.h" ]; then \ 550 cd $(CURDIR)/.tmp ; \ 551 $$DL https://github.com/facebook/zstd/releases/download/v1.4.9/zstd-1.4.9.tar.gz && tar xzf zstd-1.4.9.tar.gz ; \ 552 cd zstd-1.4.9 && $(MAKE) ; \ 553 cd $(CURDIR)/.tmp/zstd-1.4.9/lib && cp zstd.h $(CURDIR)/.tmp/include && cp libzstd.a $(CURDIR)/.tmp/lib ; \ 554 fi 555 556.PHONY: sra-deps 557sra-deps: 558 DL=$$( ( which wget >/dev/null 2>&1 && echo "wget --no-check-certificate" ) || echo "curl -LOk") ; \ 559 if [ ! -d "$(CURDIR)/.tmp" ] ; then \ 560 mkdir -p $(CURDIR)/.tmp/include $(CURDIR)/.tmp/lib ; \ 561 fi ; \ 562 if [ `uname` = "Darwin" ]; then \ 563 export CFLAGS=-mmacosx-version-min=10.9 ; \ 564 export CXXFLAGS=-mmacosx-version-min=10.9 ; \ 565 fi ; \ 566 if [ ! -f "$(CURDIR)/.tmp/include/ngs/Alignment.hpp" ] ; then \ 567 if [ ! -d "$(CURDIR)/.tmp/ngs-$(NGS_VER)/ngs-sdk" ] ; then \ 568 cd $(CURDIR)/.tmp ; \ 569 $$DL https://github.com/ncbi/ngs/archive/$(NGS_VER).tar.gz ; \ 570 tar xzvf $(NGS_VER).tar.gz ; \ 571 rm -f $(NGS_VER).tar.gz ; \ 572 fi ; \ 573 cd $(CURDIR)/.tmp/ngs-$(NGS_VER) && ./configure --prefix=$(CURDIR)/.tmp --build-prefix=`pwd`/build ; \ 574 make && make install ; \ 575 fi ; \ 576 if [ ! -f "$(CURDIR)/.tmp/include/ncbi-vdb/NGS.hpp" ] ; then \ 577 if [ ! -d "$(CURDIR)/.tmp/ncbi-vdb-$(VDB_VER)/vdb3" ] ; then \ 578 cd $(CURDIR)/.tmp ; \ 579 $$DL https://github.com/ncbi/ncbi-vdb/archive/$(VDB_VER).tar.gz ; \ 580 tar zxvf $(VDB_VER).tar.gz ; \ 581 rm -f $(VDB_VER).tar.gz ; \ 582 fi ; \ 583 cd $(CURDIR)/.tmp/ncbi-vdb-$(VDB_VER) && ./configure --prefix=$(CURDIR)/.tmp --build-prefix=`pwd`/build --with-ngs-sdk=$(CURDIR)/.tmp && make && make install ; \ 584 fi ; 585 586.PHONY: test 587test: simple-test random-test 588 589.PHONY: clean 590clean: 591 rm -f $(BOWTIE2_BIN_LIST) $(BOWTIE2_BIN_LIST_DBG) $(BOWTIE2_BIN_LIST_SAN) \ 592 $(addsuffix .exe,$(BOWTIE2_BIN_LIST) $(BOWTIE2_BIN_LIST_DBG)) \ 593 bowtie2-*.zip 594 rm -f core.* .tmp.head 595 rm -rf *.dSYM 596 rm -rf .tmp 597