Skip to content

Commit

Permalink
Merge pull request #5 from PROBIC/dev
Browse files Browse the repository at this point in the history
mSWEEP-v1.4.0 (10 March 2020)
  • Loading branch information
tmaklin authored Mar 10, 2020
2 parents cc8d314 + 1410069 commit ecca0a2
Show file tree
Hide file tree
Showing 37 changed files with 1,627 additions and 1,494 deletions.
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

128 changes: 117 additions & 11 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,34 @@ project(mSWEEP)
## Determine build type
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release) ## Build Release by default
elseif(CMAKE_BUILD_TYPE MATCHES Debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -g")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -g")
endif()

if(CMAKE_BUILD_TYPE MATCHES Release)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -xHost -fp-model fast=2 -no-prec-div -fimf-use-svml=true -ipo -m64")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -O3 -xHost -fp-model fast=2 -no-prec-div -fimf-use-svml=true -ipo -m64")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -O3 -xHost -fp-model fast=2 -no-prec-div -fimf-use-svml=true -ipo -m64")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffast-math -funroll-loops")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -ffast-math -funroll-loops")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -ffast-math -funroll-loops")
endif()
endif()

## Check dependencies
find_package(Threads REQUIRED)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(ZLIB)
find_package(OpenMP)
if (OPENMP_FOUND)
set(MSWEEP_OPENMP_SUPPORT 1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_PARALLEL")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -D_GLIBCXX_PARALLEL")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -D_GLIBCXX_PARALLEL")
else()
set(MSWEEP_OPENMP_SUPPORT 0)
endif()
set (CMAKE_CXX_STANDARD 11)
set (CMAKE_CXX_STANDARD_REQUIRED ON)

Expand All @@ -35,6 +57,36 @@ string(TIMESTAMP _BUILD_TIMESTAMP)

## Generate a version.h file containing build version and timestamp
configure_file(include/version.h.in ${CMAKE_BINARY_DIR}/include/version.h @ONLY)
configure_file(include/openmp_config.hpp.in ${CMAKE_BINARY_DIR}/include/openmp_config.hpp @ONLY)

add_executable(mSWEEP
${CMAKE_SOURCE_DIR}/src/BootstrapSample.cpp
${CMAKE_SOURCE_DIR}/src/Reference.cpp
${CMAKE_SOURCE_DIR}/src/Sample.cpp
${CMAKE_SOURCE_DIR}/src/likelihood.cpp
${CMAKE_SOURCE_DIR}/src/main.cpp
${CMAKE_SOURCE_DIR}/src/matrix.cpp
${CMAKE_SOURCE_DIR}/src/parse_arguments.cpp
${CMAKE_SOURCE_DIR}/src/process_reads.cpp
${CMAKE_SOURCE_DIR}/src/rcg.cpp
${CMAKE_SOURCE_DIR}/src/read_bitfield.cpp)

## Check supported compression types
find_package(BZip2)
if (BZIP2_FOUND)
include_directories(${BZIP2_INCLUDE_DIRS})
target_link_libraries(mSWEEP ${BZIP2_LIBRARIES})
endif()
find_package(LibLZMA)
if (LIBLZMA_FOUND)
include_directories(${LIBLZMA_INCLUDE_DIRS})
target_link_libraries(mSWEEP ${LIBLZMA_LIBRARIES})
endif()
find_package(ZLIB)
if (ZLIB_FOUND)
include_directories(${ZLIB_INCLUDE_DIRS})
target_link_libraries(mSWEEP ${ZLIB_LIBRARIES})
endif()

if(NOT ZLIB_FOUND OR CMAKE_BUILD_ZLIB)
configure_file(CMakeLists.txt.in ${CMAKE_BINARY_DIR}/external/zlib-download/CMakeLists.txt)
Expand All @@ -55,15 +107,60 @@ else()
set(ZLIB ZLIB::ZLIB)
endif()

add_subdirectory(${CMAKE_SOURCE_DIR}/external/telescope
${CMAKE_BINARY_DIR}/external/telescope/build)
set_target_properties(telescope PROPERTIES EXCLUDE_FROM_ALL 1)
## Check dependencies and download them if not given
## telescope
if (DEFINED CMAKE_TELESCOPE_LIBRARY AND DEFINED CMAKE_TELESCOPE_HEADERS)
find_library(TELESCOPE NAMES telescope HINTS ${CMAKE_TELESCOPE_LIBRARY})
target_link_libraries(mSWEEP ${TELESCOPE})
include_directories("${CMAKE_TELESCOPE_HEADERS}")
else()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config/CMakeLists-telescope.txt.in ${CMAKE_BINARY_DIR}/external/telescope-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/external/telescope-download )
if(result)
message(FATAL_ERROR "CMake step for telescope failed: ${result}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/external/telescope-download )
if(result)
message(FATAL_ERROR "Build step for telescope failed: ${result}")
endif()
add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/external/telescope
${CMAKE_CURRENT_BINARY_DIR}/external/telescope/build)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/external/telescope/include)
set_target_properties(telescope PROPERTIES EXCLUDE_FROM_ALL 1)
target_link_libraries(mSWEEP libtelescope)
endif()

include_directories(${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/include ${CMAKE_SOURCE_DIR}/external/zstr ${CMAKE_SOURCE_DIR}/external ${CMAKE_SOURCE_DIR}/include/tools)
file(GLOB SOURCES "src/*.cpp")
## bxzstr
if (DEFINED CMAKE_BXZSTR_LIBRARY AND DEFINED CMAKE_BXZSTR_HEADERS)
find_library(BXZSTR NAMES telescope HINTS ${CMAKE_BXZSTR_LIBRARY})
include_directories("${CMAKE_BXZSTR_HEADERS}")
else()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config/CMakeLists-bxzstr.txt.in ${CMAKE_BINARY_DIR}/external/bxzstr-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/external/bxzstr-download )
if(result)
message(FATAL_ERROR "CMake step for bxzstr failed: ${result}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/external/bxzstr-download )
if(result)
message(FATAL_ERROR "Build step for bxzstr failed: ${result}")
endif()
add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/external/bxzstr
${CMAKE_CURRENT_BINARY_DIR}/external/bxzstr/build)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/external/bxzstr/include)
endif()

add_executable(mSWEEP ${SOURCES})
add_executable(matchfasta ${CMAKE_SOURCE_DIR}/src/tools/matchfasta.cpp)
include_directories(${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/external ${CMAKE_SOURCE_DIR}/include/tools
${CMAKE_SOURCE_DIR}/external/cxxio
${CMAKE_CURRENT_BINARY_DIR}/include)

## Handle compiling zlib from source
if(CMAKE_BUILD_ZLIB)
Expand All @@ -75,5 +172,14 @@ if(CMAKE_BUILD_ZLIB)
add_dependencies(mSWEEP zlibstatic)
endif()

add_library(msweeptools ${CMAKE_CURRENT_SOURCE_DIR}/src/tools/matchfasta.cpp)
add_executable(matchfasta ${CMAKE_CURRENT_SOURCE_DIR}/src/tools/main.cpp)

# Link libraries
target_link_libraries(mSWEEP Threads::Threads ${ZLIB} libtelescope)
target_link_libraries(mSWEEP ${ZLIB} msweeptools)
target_link_libraries(matchfasta msweeptools)
if (OPENMP_FOUND)
target_link_libraries(mSWEEP OpenMP::OpenMP_CXX)
target_link_libraries(matchfasta OpenMP::OpenMP_CXX)
target_link_libraries(msweeptools OpenMP::OpenMP_CXX)
endif()
Loading

0 comments on commit ecca0a2

Please sign in to comment.