diff --git a/cmake/FindLIBDEFLATE.cmake b/cmake/FindLIBDEFLATE.cmake new file mode 100644 index 0000000..5584ebc --- /dev/null +++ b/cmake/FindLIBDEFLATE.cmake @@ -0,0 +1,49 @@ +# SPDX-License-Identifier: GPL-3.0-or-later; (c) 2025 Andrew D Smith (author) +#[=======================================================================[.rst: +FindLIBDEFLATE +-------------- + +Find the native libdeflate includes and library. + +#]=======================================================================] + +# FindLIBDEFLATE.cmake +# Custom CMake module to find libdeflate + +# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES +# ADS: this is taken from the FindBoost.cmake file +if(LIBDEFLATE_USE_STATIC_LIBS) + set(_libdeflate_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES + ${CMAKE_FIND_LIBRARY_SUFFIXES} + ) + if(WIN32) + list(INSERT CMAKE_FIND_LIBRARY_SUFFIXES 0 .lib .a) + else() + set(CMAKE_FIND_LIBRARY_SUFFIXES .a) + endif() +endif() + +find_path(LIBDEFLATE_INCLUDE_DIR NAMES libdeflate.h) +find_library(LIBDEFLATE_LIBRARY NAMES deflate libdeflate) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LIBDEFLATE + REQUIRED_VARS LIBDEFLATE_LIBRARY LIBDEFLATE_INCLUDE_DIR + VERSION_VAR LIBDEFLATE_VERSION +) + +if(LIBDEFLATE_FOUND AND NOT TARGET LIBDEFLATE::LIBDEFLATE) + add_library(LIBDEFLATE::LIBDEFLATE UNKNOWN IMPORTED) + set_target_properties(LIBDEFLATE::LIBDEFLATE PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${LIBDEFLATE_INCLUDE_DIR}" + IMPORTED_LOCATION "${LIBDEFLATE_LIBRARY}" + ) +endif() + +# Restore the original find library ordering +# ADS: this is take from the FindBoost.cmake file +if(LIBDEFLATE_USE_STATIC_LIBS) + set(CMAKE_FIND_LIBRARY_SUFFIXES + ${_libdeflate_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES} + ) +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5fa17b8..403e378 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -13,16 +13,22 @@ # You should have received a copy of the GNU General Public License along with # this program. If not, see . +if(USE_LIBDEFLATE) + find_package(LIBDEFLATE REQUIRED) +endif() + find_package(HTSLIB REQUIRED) find_package(Threads REQUIRED) +find_package(ZLIB REQUIRED) -if(NOT TARGET bamxx) - add_subdirectory(bamxx) -endif() if(NOT TARGET smithlab_cpp) add_subdirectory(smithlab_cpp) endif() +if(NOT TARGET bamxx) + add_subdirectory(bamxx) +endif() + add_library(abismal_objs OBJECT abismal.cpp abismalidx.cpp @@ -33,8 +39,14 @@ target_link_libraries(abismal_objs PUBLIC bamxx smithlab_cpp HTSLIB::HTSLIB + ZLIB::ZLIB Threads::Threads ) +if(USE_LIBDEFLATE) + target_link_libraries(abismal_objs PUBLIC + LIBDEFLATE::LIBDEFLATE + ) +endif() # ADS: CMAKE_BINARY_DIR for config.h target_include_directories(abismal_objs PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} diff --git a/src/bamxx b/src/bamxx index 684f4cd..a15ac9b 160000 --- a/src/bamxx +++ b/src/bamxx @@ -1 +1 @@ -Subproject commit 684f4cd6956b384632a4b4778ffc57d256c46a9a +Subproject commit a15ac9b86d87fea0df8c040ddf75122f7401ec92