Skip to content

Commit 2ef1796

Browse files
committed
Merge develop into master
2 parents 9fd8682 + 68a92da commit 2ef1796

39 files changed

Lines changed: 2895 additions & 3241 deletions

.clang-format

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
---
2+
Language: Cpp
3+
# BasedOnStyle: LLVM
4+
AccessModifierOffset: -2
5+
AlignAfterOpenBracket: Align
6+
AlignConsecutiveAssignments: false
7+
AlignConsecutiveDeclarations: false
8+
AlignEscapedNewlinesLeft: false
9+
AlignOperands: true
10+
AlignTrailingComments: true
11+
AllowAllParametersOfDeclarationOnNextLine: true
12+
AllowShortBlocksOnASingleLine: false
13+
AllowShortCaseLabelsOnASingleLine: false
14+
AllowShortFunctionsOnASingleLine: All
15+
AllowShortIfStatementsOnASingleLine: false
16+
AllowShortLoopsOnASingleLine: false
17+
AlwaysBreakAfterDefinitionReturnType: None
18+
AlwaysBreakAfterReturnType: None
19+
AlwaysBreakBeforeMultilineStrings: false
20+
AlwaysBreakTemplateDeclarations: false
21+
BinPackArguments: true
22+
BinPackParameters: true
23+
BraceWrapping:
24+
AfterClass: false
25+
AfterControlStatement: false
26+
AfterEnum: false
27+
AfterFunction: false
28+
AfterNamespace: false
29+
AfterObjCDeclaration: false
30+
AfterStruct: false
31+
AfterUnion: false
32+
BeforeCatch: false
33+
BeforeElse: false
34+
IndentBraces: false
35+
BreakBeforeBinaryOperators: None
36+
BreakBeforeBraces: Attach
37+
BreakBeforeTernaryOperators: true
38+
BreakConstructorInitializersBeforeComma: false
39+
BreakAfterJavaFieldAnnotations: false
40+
BreakStringLiterals: true
41+
ColumnLimit: 80
42+
CommentPragmas: '^ IWYU pragma:'
43+
ConstructorInitializerAllOnOneLineOrOnePerLine: false
44+
ConstructorInitializerIndentWidth: 4
45+
ContinuationIndentWidth: 4
46+
Cpp11BracedListStyle: true
47+
DerivePointerAlignment: false
48+
DisableFormat: false
49+
ExperimentalAutoDetectBinPacking: false
50+
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
51+
IncludeCategories:
52+
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
53+
Priority: 2
54+
- Regex: '^(<|"(gtest|isl|json)/)'
55+
Priority: 3
56+
- Regex: '.*'
57+
Priority: 1
58+
IncludeIsMainRegex: '$'
59+
IndentCaseLabels: false
60+
IndentWidth: 2
61+
IndentWrappedFunctionNames: false
62+
KeepEmptyLinesAtTheStartOfBlocks: true
63+
MacroBlockBegin: ''
64+
MacroBlockEnd: ''
65+
MaxEmptyLinesToKeep: 1
66+
NamespaceIndentation: None
67+
ObjCBlockIndentWidth: 2
68+
ObjCSpaceAfterProperty: false
69+
ObjCSpaceBeforeProtocolList: true
70+
PenaltyBreakBeforeFirstCallParameter: 19
71+
PenaltyBreakComment: 300
72+
PenaltyBreakFirstLessLess: 120
73+
PenaltyBreakString: 1000
74+
PenaltyExcessCharacter: 1000000
75+
PenaltyReturnTypeOnItsOwnLine: 60
76+
PointerAlignment: Left
77+
ReflowComments: true
78+
SortIncludes: true
79+
SpaceAfterCStyleCast: false
80+
SpaceBeforeAssignmentOperators: true
81+
SpaceBeforeParens: ControlStatements
82+
SpaceInEmptyParentheses: false
83+
SpacesBeforeTrailingComments: 1
84+
SpacesInAngles: false
85+
SpacesInContainerLiterals: true
86+
SpacesInCStyleCastParentheses: false
87+
SpacesInParentheses: false
88+
SpacesInSquareBrackets: false
89+
Standard: Cpp11
90+
TabWidth: 4
91+
UseTab: Never
92+
JavaScriptQuotes: Leave
93+
...
94+

CMakeLists.txt

Lines changed: 37 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ enable_testing()
44

55
project (RapMap)
66

7-
set(CPACK_PACKAGE_VERSION "0.1.1")
8-
set(CPACK_PACKAGE_VERSION_MAJOR "0")
9-
set(CPACK_PACKAGE_VERSION_MINOR "1")
10-
set(CPACK_PACKAGE_VERSION_PATCH "1")
7+
set(CPACK_PACKAGE_VERSION "0.2.0")
8+
SET(CPACK_PACKAGE_VERSION_MAJOR "0")
9+
set(CPACK_PACKAGE_VERSION_MINOR "2")
10+
set(CPACK_PACKAGE_VERSION_PATCH "0")
1111
set(CPACK_GENERATOR "TGZ")
1212
set(CPACK_SOURCE_GENERATOR "TGZ")
1313
set(CPACK_PACKAGE_VENDOR "Stony Brook University")
@@ -18,14 +18,26 @@ set(CPACK_SOURCE_PACKAGE_FILE_NAME
1818
"${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-Source")
1919

2020
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
21-
22-
set (WARNING_IGNORE_FLAGS "-Wno-deprecated-register -Wno-c++11-narrowing")
21+
#include(FindSSE)
22+
#FindSSE ()
23+
#if(SSE4_2_FOUND)
24+
# message("Enabling popcount")
25+
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2 -DEMPHF_USE_POPCOUNT")
26+
#endif(SSE4_2_FOUND)
27+
28+
set (WARNING_IGNORE_FLAGS "-Wno-deprecated-register -Wno-c++11-narrowing -Wno-unknown-pragmas")
2329
set (BOOST_CXX_FLAGS "-Wno-deprecated-register -std=c++11")
2430
## Prefer static to dynamic libraries
2531
SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
2632

2733
## Set the standard required compile flags
28-
set (CMAKE_CXX_FLAGS "-march=native -pthread -funroll-loops -fPIC -fomit-frame-pointer -O4 -DHAVE_ANSI_TERM -Wall -std=c++11 -Wreturn-type -Werror=return-type")
34+
if (NO_NATIVE_ARCH)
35+
message (STATUS "DISABLING NATIVE ARCH.")
36+
else()
37+
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
38+
endif()
39+
40+
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -funroll-loops -fPIC -fomit-frame-pointer -O4 -DHAVE_ANSI_TERM -Wall -std=c++11 -Wreturn-type -Werror=return-type")
2941

3042
##
3143
# OSX is strange (some might say, stupid in this regard). Deal with it's quirkines here.
@@ -153,7 +165,7 @@ message("==================================================================")
153165
include(ExternalProject)
154166
ExternalProject_Add(libdivsufsort
155167
DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external
156-
URL ${CMAKE_CURRENT_SOURCE_DIR}/external/libdivsufsort.zip
168+
URL ${CMAKE_CURRENT_SOURCE_DIR}/external/libdivsufsort.tar.gz
157169
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/libdivsufsort-master
158170
INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install
159171
UPDATE_COMMAND sh -c "mkdir -p <SOURCE_DIR>/build"
@@ -180,7 +192,7 @@ if (NOT CEREAL_ROOT)
180192
set(CEREAL_ROOT ${GAT_SOURCE_DIR}/external/install)
181193
endif()
182194

183-
find_package (Cereal)
195+
find_package (Cereal 1.1.2)
184196
if (NOT CEREAL_FOUND)
185197

186198
message("Build system will fetch and build the Cereal serialization library")
@@ -203,27 +215,28 @@ if (NOT CEREAL_FOUND)
203215

204216
endif()
205217

218+
206219
if (NOT JELLYFISH_ROOT)
207-
set(JELLYFISH_ROOT ${GAT_SOURCE_DIR}/external/install)
220+
set(JELLYFISH_ROOT ${GAT_SOURCE_DIR}/external/install)
208221
endif()
209222

210223
find_package(Jellyfish 2.2.5)
211224

212225
if (NOT JELLYFISH_FOUND)
213-
message("Build system will fetch and build Jellyfish")
214-
message("==================================================================")
215-
ExternalProject_Add(libjellyfish
216-
DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external
217-
DOWNLOAD_COMMAND curl -k -L https://github.com/gmarcais/Jellyfish/releases/download/v2.2.5/jellyfish-2.2.5.tar.gz -o jellyfish-2.2.5.tgz &&
218-
rm -fr jellyfish-2.2.5 &&
219-
tar -xzvf jellyfish-2.2.5.tgz
220-
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/jellyfish-2.2.5
221-
INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install
222-
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/external/jellyfish-2.2.5/configure --prefix=<INSTALL_DIR> CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} CXXFLAGS=${JELLYFISH_CXX_FLAGS}
223-
BUILD_COMMAND ${MAKE} CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} CXXFLAGS=${JELLYFISH_CXX_FLAGS}
224-
BUILD_IN_SOURCE 1
225-
INSTALL_COMMAND make install
226-
)
226+
message("Build system will fetch and build Jellyfish")
227+
message("==================================================================")
228+
ExternalProject_Add(libjellyfish
229+
DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external
230+
DOWNLOAD_COMMAND curl -k -L https://github.com/gmarcais/Jellyfish/releases/download/v2.2.5/jellyfish-2.2.5.tar.gz -o jellyfish-2.2.5.tgz &&
231+
rm -fr jellyfish-2.2.5 &&
232+
tar -xzvf jellyfish-2.2.5.tgz
233+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/jellyfish-2.2.5
234+
INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install
235+
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/external/jellyfish-2.2.5/configure --prefix=<INSTALL_DIR> CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} CXXFLAGS=${JELLYFISH_CXX_FLAGS}
236+
BUILD_COMMAND ${MAKE} CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} CXXFLAGS=${JELLYFISH_CXX_FLAGS}
237+
BUILD_IN_SOURCE 1
238+
INSTALL_COMMAND make install
239+
)
227240
endif()
228241

229242
set (FAST_MALLOC_LIB "")

cmake/Modules/FindSSE.cmake

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
# Check if SSE instructions are available on the machine where
2+
# the project is compiled.
3+
# from https://raw.githubusercontent.com/hideo55/CMake-FindSSE/master/FindSSE.cmake
4+
5+
MACRO (FindSSE)
6+
7+
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
8+
EXEC_PROGRAM(cat ARGS "/proc/cpuinfo" OUTPUT_VARIABLE CPUINFO)
9+
10+
STRING(REGEX REPLACE "^.*(sse2).*$" "\\1" SSE_THERE ${CPUINFO})
11+
STRING(COMPARE EQUAL "sse2" "${SSE_THERE}" SSE2_TRUE)
12+
IF (SSE2_TRUE)
13+
set(SSE2_FOUND true CACHE BOOL "SSE2 available on host")
14+
ELSE (SSE2_TRUE)
15+
set(SSE2_FOUND false CACHE BOOL "SSE2 available on host")
16+
ENDIF (SSE2_TRUE)
17+
18+
# /proc/cpuinfo apparently omits sse3 :(
19+
STRING(REGEX REPLACE "^.*[^s](sse3).*$" "\\1" SSE_THERE ${CPUINFO})
20+
STRING(COMPARE EQUAL "sse3" "${SSE_THERE}" SSE3_TRUE)
21+
IF (NOT SSE3_TRUE)
22+
STRING(REGEX REPLACE "^.*(T2300).*$" "\\1" SSE_THERE ${CPUINFO})
23+
STRING(COMPARE EQUAL "T2300" "${SSE_THERE}" SSE3_TRUE)
24+
ENDIF (NOT SSE3_TRUE)
25+
26+
STRING(REGEX REPLACE "^.*(ssse3).*$" "\\1" SSE_THERE ${CPUINFO})
27+
STRING(COMPARE EQUAL "ssse3" "${SSE_THERE}" SSSE3_TRUE)
28+
IF (SSE3_TRUE OR SSSE3_TRUE)
29+
set(SSE3_FOUND true CACHE BOOL "SSE3 available on host")
30+
ELSE (SSE3_TRUE OR SSSE3_TRUE)
31+
set(SSE3_FOUND false CACHE BOOL "SSE3 available on host")
32+
ENDIF (SSE3_TRUE OR SSSE3_TRUE)
33+
IF (SSSE3_TRUE)
34+
set(SSSE3_FOUND true CACHE BOOL "SSSE3 available on host")
35+
ELSE (SSSE3_TRUE)
36+
set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host")
37+
ENDIF (SSSE3_TRUE)
38+
39+
STRING(REGEX REPLACE "^.*(sse4_1).*$" "\\1" SSE_THERE ${CPUINFO})
40+
STRING(COMPARE EQUAL "sse4_1" "${SSE_THERE}" SSE41_TRUE)
41+
IF (SSE41_TRUE)
42+
set(SSE4_1_FOUND true CACHE BOOL "SSE4.1 available on host")
43+
ELSE (SSE41_TRUE)
44+
set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host")
45+
ENDIF (SSE41_TRUE)
46+
47+
STRING(REGEX REPLACE "^.*(sse4_2).*$" "\\1" SSE_THERE ${CPUINFO})
48+
STRING(COMPARE EQUAL "sse4_2" "${SSE_THERE}" SSE42_TRUE)
49+
IF (SSE42_TRUE)
50+
set(SSE4_2_FOUND true CACHE BOOL "SSE4.2 available on host")
51+
ELSE (SSE42_TRUE)
52+
set(SSE4_2_FOUND false CACHE BOOL "SSE4.2 available on host")
53+
ENDIF (SSE42_TRUE)
54+
55+
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Darwin")
56+
EXEC_PROGRAM("/usr/sbin/sysctl -n machdep.cpu.features" OUTPUT_VARIABLE
57+
CPUINFO)
58+
59+
STRING(REGEX REPLACE "^.*[^S](SSE2).*$" "\\1" SSE_THERE ${CPUINFO})
60+
STRING(COMPARE EQUAL "SSE2" "${SSE_THERE}" SSE2_TRUE)
61+
IF (SSE2_TRUE)
62+
set(SSE2_FOUND true CACHE BOOL "SSE2 available on host")
63+
ELSE (SSE2_TRUE)
64+
set(SSE2_FOUND false CACHE BOOL "SSE2 available on host")
65+
ENDIF (SSE2_TRUE)
66+
67+
STRING(REGEX REPLACE "^.*[^S](SSE3).*$" "\\1" SSE_THERE ${CPUINFO})
68+
STRING(COMPARE EQUAL "SSE3" "${SSE_THERE}" SSE3_TRUE)
69+
IF (SSE3_TRUE)
70+
set(SSE3_FOUND true CACHE BOOL "SSE3 available on host")
71+
ELSE (SSE3_TRUE)
72+
set(SSE3_FOUND false CACHE BOOL "SSE3 available on host")
73+
ENDIF (SSE3_TRUE)
74+
75+
STRING(REGEX REPLACE "^.*(SSSE3).*$" "\\1" SSE_THERE ${CPUINFO})
76+
STRING(COMPARE EQUAL "SSSE3" "${SSE_THERE}" SSSE3_TRUE)
77+
IF (SSSE3_TRUE)
78+
set(SSSE3_FOUND true CACHE BOOL "SSSE3 available on host")
79+
ELSE (SSSE3_TRUE)
80+
set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host")
81+
ENDIF (SSSE3_TRUE)
82+
83+
STRING(REGEX REPLACE "^.*(SSE4.1).*$" "\\1" SSE_THERE ${CPUINFO})
84+
STRING(COMPARE EQUAL "SSE4.1" "${SSE_THERE}" SSE41_TRUE)
85+
IF (SSE41_TRUE)
86+
set(SSE4_1_FOUND true CACHE BOOL "SSE4.1 available on host")
87+
ELSE (SSE41_TRUE)
88+
set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host")
89+
ENDIF (SSE41_TRUE)
90+
91+
STRING(REGEX REPLACE "^.*(SSE4.2).*$" "\\1" SSE_THERE ${CPUINFO})
92+
STRING(COMPARE EQUAL "SSE4.2" "${SSE_THERE}" SSE42_TRUE)
93+
IF (SSE42_TRUE)
94+
set(SSE4_2_FOUND true CACHE BOOL "SSE4.2 available on host")
95+
ELSE (SSE42_TRUE)
96+
set(SSE4_2_FOUND false CACHE BOOL "SSE4.2 available on host")
97+
ENDIF (SSE42_TRUE)
98+
99+
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Windows")
100+
# TODO
101+
set(SSE2_FOUND true CACHE BOOL "SSE2 available on host")
102+
set(SSE3_FOUND false CACHE BOOL "SSE3 available on host")
103+
set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host")
104+
set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host")
105+
set(SSE4_2_FOUND false CACHE BOOL "SSE4.2 available on host")
106+
ELSE(CMAKE_SYSTEM_NAME MATCHES "Linux")
107+
set(SSE2_FOUND true CACHE BOOL "SSE2 available on host")
108+
set(SSE3_FOUND false CACHE BOOL "SSE3 available on host")
109+
set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host")
110+
set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host")
111+
set(SSE4_2_FOUND false CACHE BOOL "SSE4.2 available on host")
112+
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
113+
114+
IF(CMAKE_COMPILER_IS_GNUCXX)
115+
EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
116+
IF(GCC_VERSION VERSION_LESS 4.2)
117+
set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host" FORCE)
118+
set(SSE4_2_FOUND false CACHE BOOL "SSE4.2 available on host" FORCE)
119+
ENDIF()
120+
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
121+
122+
if(NOT SSE2_FOUND)
123+
MESSAGE(STATUS "Could not find support for SSE2 on this machine.")
124+
endif(NOT SSE2_FOUND)
125+
if(NOT SSE3_FOUND)
126+
MESSAGE(STATUS "Could not find support for SSE3 on this machine.")
127+
endif(NOT SSE3_FOUND)
128+
if(NOT SSSE3_FOUND)
129+
MESSAGE(STATUS "Could not find support for SSSE3 on this machine.")
130+
endif(NOT SSSE3_FOUND)
131+
if(NOT SSE4_1_FOUND)
132+
MESSAGE(STATUS "Could not find support for SSE4.1 on this machine.")
133+
endif(NOT SSE4_1_FOUND)
134+
if(NOT SSE4_2_FOUND)
135+
MESSAGE(STATUS "Could not find support for SSE4.2 on this machine.")
136+
endif(NOT SSE4_2_FOUND)
137+
138+
mark_as_advanced(SSE2_FOUND SSE3_FOUND SSSE3_FOUND SSE4_1_FOUND SSE4_2_FOUND)
139+
140+
ENDMACRO(FindSSE)
141+

external/libdivsufsort.tar.gz

25.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)