Skip to content

Commit 545c79b

Browse files
committed
update WFA2_lib to version 2.3.4
1 parent db26570 commit 545c79b

File tree

91 files changed

+6796
-3245
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+6796
-3245
lines changed

_custom_build.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def get_extra_args(flags):
7575
# this has happened on multiple OS with/without `libomp-dev`
7676
# compiler = ccompiler.new_compiler()
7777
omp = 0 #1 if has_flag(compiler, "-fopenmp") else 0
78-
ret = run(f"cd pywfa/WFA2_lib; make clean all BUILD_WFA_PARALLEL={omp} BUILD_MINIMAL=1",
78+
ret = run(f"cd pywfa/WFA2_lib; make clean all BUILD_WFA_PARALLEL={omp} BUILD_TOOLS=0 BUILD_EXAMPLES=0",
7979
shell=True)
8080
if ret.returncode != 0:
8181
print("Unable to build WFA2_lib")

pywfa/WFA2_lib/.gitignore

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
lib/
2+
bin/
3+
build/
4+
5+
# Prerequisites
6+
*.d
7+
8+
# Compiled Object files
9+
*.slo
10+
*.lo
11+
*.o
12+
*.obj
13+
14+
# Precompiled Headers
15+
*.gch
16+
*.pch
17+
18+
# Compiled Dynamic libraries
19+
*.so
20+
*.dylib
21+
*.dll
22+
23+
# Fortran module files
24+
*.mod
25+
*.smod
26+
27+
# Compiled Static libraries
28+
*.lai
29+
*.la
30+
*.a
31+
*.lib
32+
33+
# Executables
34+
*.exe
35+
*.out
36+
*.app
37+
38+
# Test output files
39+
tests/wfa.utest.log.correct
40+
tests/wfa.utest.log.mem
41+
tests/wfa.utest.log.time
42+
43+

pywfa/WFA2_lib/CMakeLists.txt

+226
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
# For Debian currently with
2+
#
3+
# cd build
4+
# cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
5+
# make
6+
# make test
7+
# make install
8+
# See below option statements and the README for build information
9+
10+
cmake_minimum_required(VERSION 3.16)
11+
project(wfa2lib)
12+
13+
set(CMAKE_CXX_STANDARD 17)
14+
15+
include(FeatureSummary)
16+
include(GNUInstallDirs)
17+
18+
find_package(PkgConfig REQUIRED)
19+
20+
feature_summary(
21+
FATAL_ON_MISSING_REQUIRED_PACKAGES
22+
WHAT REQUIRED_PACKAGES_NOT_FOUND)
23+
24+
# ---- Options
25+
26+
option(OPENMP "Enable OpenMP" OFF) # enables WFA_PARALLEL
27+
option(PROFILING "Enable profiling" OFF)
28+
option(ASAN "Use address sanitiser" OFF)
29+
option(EXTRA_FLAGS "Add optimization flags for C/C++ compiler" OFF)
30+
31+
# include(CheckIPOSupported) # adds lto
32+
# check_ipo_supported(RESULT ipo_supported OUTPUT output)
33+
34+
# ---- Dependencies
35+
36+
if(OPENMP)
37+
include(FindOpenMP)
38+
set(OPTIMIZE_FLAGS "-DWFA_PARALLEL")
39+
endif(OPENMP)
40+
41+
if(EXTRA_FLAGS)
42+
set(OPTIMIZE_FLAGS "${OPTIMIZE_FLAGS} ${EXTRA_FLAGS}")
43+
endif(EXTRA_FLAGS)
44+
45+
find_package(Threads)
46+
set_package_properties(Threads PROPERTIES TYPE REQUIRED)
47+
48+
# ---- Build switches
49+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
50+
# set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ${ipo_supported})
51+
52+
if(NOT CMAKE_BUILD_TYPE)
53+
set(CMAKE_BUILD_TYPE Release CACHE STRING
54+
"Choose the type of build, options are: Release|Debug|RelWithDebInfo (for distros)." FORCE)
55+
endif()
56+
57+
if (${CMAKE_BUILD_TYPE} MATCHES Release)
58+
set(OPTIMIZE_FLAGS "${OPTIMIZE_FLAGS} -march=native -D_FILE_OFFSET_BITS=64")
59+
endif()
60+
61+
if ((${CMAKE_BUILD_TYPE} MATCHES Release) OR (${CMAKE_BUILD_TYPE} MATCHES RelWithDebInfo))
62+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPTIMIZE_FLAGS}")
63+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPTIMIZE_FLAGS}")
64+
endif ()
65+
66+
if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
67+
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPTIMIZE_FLAGS}")
68+
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPTIMIZE_FLAGS}")
69+
add_definitions(-Wfatal-errors)
70+
endif ()
71+
72+
if (ASAN)
73+
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fno-common")
74+
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fno-common")
75+
endif(ASAN)
76+
77+
if(PROFILING)
78+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
79+
endif(PROFILING)
80+
81+
if(GPROF)
82+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
83+
endif(GPROF)
84+
85+
# ---- Include files
86+
87+
file(GLOB INCLUDES
88+
wavefront/*.h*
89+
)
90+
file(GLOB UTILS_INCLUDES
91+
utils/*.h*
92+
)
93+
file(GLOB ALIGNMENT_INCLUDES
94+
alignment/*.h*
95+
)
96+
file(GLOB SYSTEM_INCLUDES
97+
system/*.h*
98+
)
99+
100+
set(wfa2lib_SOURCE
101+
wavefront/wavefront_align.c
102+
wavefront/wavefront_aligner.c
103+
wavefront/wavefront_attributes.c
104+
wavefront/wavefront_backtrace_buffer.c
105+
wavefront/wavefront_backtrace.c
106+
wavefront/wavefront_backtrace_offload.c
107+
wavefront/wavefront_bialign.c
108+
wavefront/wavefront_bialigner.c
109+
wavefront/wavefront.c
110+
wavefront/wavefront_components.c
111+
wavefront/wavefront_compute_affine2p.c
112+
wavefront/wavefront_compute_affine.c
113+
wavefront/wavefront_compute.c
114+
wavefront/wavefront_compute_edit.c
115+
wavefront/wavefront_compute_linear.c
116+
wavefront/wavefront_debug.c
117+
wavefront/wavefront_display.c
118+
wavefront/wavefront_extend.c
119+
wavefront/wavefront_heuristic.c
120+
wavefront/wavefront_pcigar.c
121+
wavefront/wavefront_penalties.c
122+
wavefront/wavefront_plot.c
123+
wavefront/wavefront_sequences.c
124+
wavefront/wavefront_slab.c
125+
wavefront/wavefront_unialign.c
126+
wavefront/wavefront_termination.c
127+
wavefront/wavefront_extend_kernels_avx.c
128+
wavefront/wavefront_extend_kernels.c
129+
system/mm_stack.c
130+
system/mm_allocator.c
131+
system/profiler_counter.c
132+
system/profiler_timer.c
133+
utils/bitmap.c
134+
utils/dna_text.c
135+
utils/sequence_buffer.c
136+
utils/vector.c
137+
utils/commons.c
138+
utils/heatmap.c
139+
alignment/affine2p_penalties.c
140+
alignment/affine_penalties.c
141+
alignment/cigar.c
142+
alignment/score_matrix.c
143+
)
144+
145+
add_library(wfa2_static
146+
${wfa2lib_SOURCE}
147+
)
148+
add_library(wfa2 SHARED ${wfa2lib_SOURCE})
149+
set_target_properties(wfa2_static PROPERTIES OUTPUT_NAME wfa2)
150+
set_target_properties(wfa2 PROPERTIES SOVERSION 0)
151+
target_include_directories(wfa2 PUBLIC . wavefront utils)
152+
target_include_directories(wfa2_static PUBLIC . wavefront utils)
153+
add_library(wfa2::wfa2 ALIAS wfa2)
154+
add_library(wfa2::wfa2_static ALIAS wfa2_static)
155+
156+
if(OPENMP)
157+
target_link_libraries(wfa2_static PRIVATE OpenMP::OpenMP_C)
158+
target_link_libraries(wfa2 PRIVATE OpenMP::OpenMP_C)
159+
endif(OPENMP)
160+
161+
# ---- C++ binding library
162+
163+
set(wfa2cpp_SOURCE
164+
bindings/cpp/WFAligner.cpp
165+
)
166+
file(GLOB CPP_INCLUDES
167+
bindings/cpp/*.h*
168+
)
169+
add_library(wfa2cpp_static STATIC ${wfa2cpp_SOURCE})
170+
add_library(wfa2cpp SHARED ${wfa2cpp_SOURCE})
171+
set_target_properties(wfa2cpp PROPERTIES SOVERSION 0)
172+
set_target_properties(wfa2cpp_static PROPERTIES OUTPUT_NAME wfa2cpp)
173+
target_link_libraries(wfa2cpp PUBLIC wfa2)
174+
target_link_libraries(wfa2cpp_static PUBLIC wfa2_static)
175+
add_library(wfa2::wfa2cpp ALIAS wfa2cpp)
176+
add_library(wfa2::wfa2cpp_static ALIAS wfa2cpp_static)
177+
178+
if(OPENMP)
179+
target_link_libraries(wfa2cpp_static PRIVATE OpenMP::OpenMP_CXX)
180+
target_link_libraries(wfa2cpp PRIVATE OpenMP::OpenMP_CXX)
181+
endif(OPENMP)
182+
183+
# ---- Get version
184+
185+
file (STRINGS "VERSION.txt" BUILD_NUMBER)
186+
add_definitions(-DWFA2LIB_VERSION="${BUILD_NUMBER}")
187+
add_definitions(-DVERSION="${BUILD_NUMBER}")
188+
189+
set(wfa2lib_LIBS
190+
)
191+
192+
# add_dependencies(wfa2lib ${wfa2lib_DEPS})
193+
194+
# ---- Build all
195+
196+
# ---- Test
197+
198+
enable_testing()
199+
200+
201+
function(add_wfa_test)
202+
add_test(
203+
NAME wfa2lib
204+
COMMAND ./tests/wfa.utest.sh
205+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
206+
)
207+
endfunction()
208+
209+
add_wfa_test()
210+
211+
# ---- Install
212+
213+
# Do not install anything when used with FetchContent
214+
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
215+
install(TARGETS wfa2_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} )
216+
install(TARGETS wfa2 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} )
217+
218+
install(FILES ${INCLUDES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wfa2lib/wavefront)
219+
install(FILES ${UTILS_INCLUDES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wfa2lib/utils)
220+
install(FILES ${ALIGNMENT_INCLUDES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wfa2lib/alignment)
221+
install(FILES ${SYSTEM_INCLUDES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wfa2lib/system)
222+
223+
install(TARGETS wfa2cpp ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
224+
install(TARGETS wfa2cpp_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
225+
install(FILES ${CPP_INCLUDES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wfa2lib/bindings/cpp)
226+
endif()

pywfa/WFA2_lib/Makefile

+17-28
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ FOLDER_BIN=bin
55
FOLDER_BUILD=build
66
FOLDER_BUILD_CPP=build/cpp
77
FOLDER_LIB=lib
8+
FOLDER_TESTS=tests
89

910
UNAME=$(shell uname)
1011

@@ -16,17 +17,14 @@ CC_FLAGS=-Wall -g -fPIC
1617
AR=ar
1718
AR_FLAGS=-rsc
1819

19-
ifndef BUILD_EXAMPLES
20-
BUILD_EXAMPLES=0
20+
ifndef BUILD_EXAMPLES
21+
BUILD_EXAMPLES=1
2122
endif
22-
ifndef BUILD_TOOLS
23+
ifndef BUILD_TOOLS
2324
BUILD_TOOLS=1
2425
endif
2526
ifndef BUILD_WFA_PARALLEL
26-
BUILD_WFA_PARALLEL=1
27-
endif
28-
ifndef BUILD_MINIMAL
29-
BUILD_MINIMAL=0
27+
BUILD_WFA_PARALLEL=0
3028
endif
3129

3230
###############################################################################
@@ -38,18 +36,12 @@ SUBDIRS=alignment \
3836
system \
3937
utils \
4038
wavefront
41-
ifeq ($(BUILD_MINIMAL),0)
42-
SUBDIRS+=bindings/cpp
39+
ifeq ($(BUILD_TOOLS),1)
40+
APPS+=tools/generate_dataset \
41+
tools/align_benchmark
4342
endif
44-
45-
ifeq ($(BUILD_MINIMAL),0)
46-
ifeq ($(BUILD_TOOLS),1)
47-
APPS+=tools/generate_dataset \
48-
tools/align_benchmark
49-
endif
50-
ifeq ($(BUILD_EXAMPLES),1)
51-
APPS+=examples
52-
endif
43+
ifeq ($(BUILD_EXAMPLES),1)
44+
APPS+=examples
5345
endif
5446

5547
all: CC_FLAGS+=-O3 -march=native #-flto -ffat-lto-objects
@@ -69,29 +61,26 @@ asan: build
6961
# Build rules
7062
###############################################################################
7163
build: setup
72-
build: $(SUBDIRS)
73-
build: lib_wfa
64+
build: $(SUBDIRS)
65+
build: lib_wfa
7466
build: $(APPS)
7567

7668
setup:
77-
$( if ($(BUILD_MINIMAL),0) $(@mkdir -p $(FOLDER_BUILD_CPP)))
78-
@mkdir -p $(FOLDER_BIN) $(FOLDER_BUILD) $(FOLDER_LIB)
79-
69+
@mkdir -p $(FOLDER_BIN) $(FOLDER_BUILD) $(FOLDER_BUILD_CPP) $(FOLDER_LIB)
70+
8071
lib_wfa: $(SUBDIRS)
8172
$(AR) $(AR_FLAGS) $(LIB_WFA) $(FOLDER_BUILD)/*.o 2> /dev/null
82-
$( if ($(BUILD_MINIMAL),0) $(AR) $((AR_FLAGS) $(LIB_WFA_CPP) $(FOLDER_BUILD)/*.o $(FOLDER_BUILD_CPP)/*.o 2> /dev/null))
8373

8474
clean:
85-
rm -rf $(FOLDER_BIN) $(FOLDER_BUILD) $(FOLDER_LIB)
86-
$(MAKE)
87-
75+
rm -rf $(FOLDER_BIN) $(FOLDER_BUILD) $(FOLDER_LIB) 2> /dev/null
76+
8877
###############################################################################
8978
# Subdir rule
9079
###############################################################################
9180
export
9281
$(SUBDIRS):
9382
$(MAKE) --directory=$@ all
94-
83+
9584
$(APPS):
9685
$(MAKE) --directory=$@ all
9786

0 commit comments

Comments
 (0)