@@ -4,9 +4,8 @@ project(panmap VERSION 0.1.0)
44set (CMAKE_EXPORT_COMPILE_COMMANDS ON )
55set (CMAKE_CXX_STANDARD 20)
66set (CMAKE_CXX_STANDARD_REQUIRED ON )
7- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pipe -Wno-unused-function -Wno-deprecated-declarations -w" )
7+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 - Wall -pipe -Wno-unused-function -Wno-deprecated-declarations -w" )
88
9- include (ExternalProject )
109include (GNUInstallDirs )
1110
1211# ===== Find all system packages =====
@@ -25,7 +24,8 @@ find_library(CAPNP_LIBRARY NAMES capnp REQUIRED)
2524find_library (KJ_LIBRARY NAMES kj REQUIRED )
2625find_library (DEFLATE_LIBRARY NAMES deflate REQUIRED )
2726find_library (ZSTD_LIBRARY NAMES zstd REQUIRED )
28-
27+ find_library (HTS_LIBRARY NAMES hts REQUIRED )
28+ find_path (HTS_INCLUDE_DIR htslib/hts.h REQUIRED )
2929find_program (CAPNP_EXECUTABLE NAMES capnp REQUIRED )
3030find_program (CAPNPC_CXX_EXECUTABLE NAMES capnpc-c++ REQUIRED )
3131
@@ -102,7 +102,7 @@ execute_process(
102102file (WRITE "${PANMAN_SOURCE_DIR} /CMakeLists.txt" [=[
103103cmake_minimum_required(VERSION 3.8)
104104project(panmanUtils)
105- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pipe -Wno-unused-function -Wno-deprecated-declarations -w")
105+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 - Wall -pipe -Wno-unused-function -Wno-deprecated-declarations -w")
106106set(CMAKE_INCLUDE_CURRENT_DIR ON)
107107
108108find_package(Protobuf REQUIRED)
@@ -190,7 +190,7 @@ endif()
190190
191191add_custom_command (
192192 OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /lib/libminimap2.a
193- COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR} /src/3rdparty/minimap2 && make clean && make -j ${MINIMAP2_MAKE_ARGS}
193+ COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR} /src/3rdparty/minimap2 && make clean && make -j libminimap2.a "CPPFLAGS=-I ${CMAKE_INSTALL_PREFIX} /include" ${MINIMAP2_MAKE_ARGS}
194194 COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR} /lib ${CMAKE_CURRENT_BINARY_DIR} /bin
195195 COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR} /src/3rdparty/minimap2/libminimap2.a ${CMAKE_CURRENT_BINARY_DIR} /lib/libminimap2.a
196196 COMMAND rm -f ${CMAKE_CURRENT_SOURCE_DIR} /src/3rdparty/minimap2/*.o
@@ -202,41 +202,12 @@ add_custom_target(minimap2_target
202202 COMMENT "Building minimap2 library"
203203)
204204
205- # Htslib
206- set (HTSLIB_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR} /htslib_install)
207- ExternalProject_Add (htslib_ext
208- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /src/3rdparty/samtools/htslib-1.20
209- CONFIGURE_COMMAND <SOURCE_DIR >/configure --prefix =${HTSLIB_INSTALL_DIR}
210- --disable-lzma --disable-bz2 --disable-libcurl --disable-libdeflate
211- BUILD_COMMAND make -j lib-static
212- INSTALL_COMMAND make install
213- BUILD_IN_SOURCE 1
214- UPDATE_COMMAND ""
215- )
216- add_library (htslib STATIC IMPORTED GLOBAL )
217- set_target_properties (htslib PROPERTIES IMPORTED_LOCATION ${HTSLIB_INSTALL_DIR} /lib/libhts.a )
218- add_dependencies (htslib htslib_ext )
219-
220- # Samtools
221- set (SAMTOOLS_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR} /samtools_build)
222- ExternalProject_Add (samtools_ext
223- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /src/3rdparty/samtools
224- BINARY_DIR ${SAMTOOLS_BUILD_DIR}
225- CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy_directory
226- ${CMAKE_CURRENT_SOURCE_DIR} /src/3rdparty/samtools ${SAMTOOLS_BUILD_DIR}
227- BUILD_COMMAND ${CMAKE_COMMAND} -E env
228- "LDFLAGS=-L${HTSLIB_INSTALL_DIR} /lib -lz -lpthread"
229- LD_LIBRARY_PATH=${HTSLIB_INSTALL_DIR} /lib
230- CPPFLAGS=-I${HTSLIB_INSTALL_DIR} /include
231- sh -c "cd ${SAMTOOLS_BUILD_DIR} && autoheader && autoconf && ./configure --with-htslib=${HTSLIB_INSTALL_DIR} --disable-lzma --disable-bz2 --disable-libcurl --disable-shared --with-pic --without-curses && make libst.a"
232- INSTALL_COMMAND ""
233- BUILD_IN_SOURCE 0
234- UPDATE_COMMAND ""
235- DEPENDS htslib_ext
205+ # Htslib (system/conda package)
206+ add_library (htslib SHARED IMPORTED GLOBAL )
207+ set_target_properties (htslib PROPERTIES
208+ IMPORTED_LOCATION "${HTS_LIBRARY} "
209+ INTERFACE_INCLUDE_DIRECTORIES "${HTS_INCLUDE_DIR} "
236210)
237- add_library (samtools STATIC IMPORTED GLOBAL )
238- set_target_properties (samtools PROPERTIES IMPORTED_LOCATION "${SAMTOOLS_BUILD_DIR} /libst.a" )
239- add_dependencies (samtools samtools_ext )
240211
241212# BWA
242213set (BWA_SOURCES
@@ -263,7 +234,7 @@ set(BWA_SOURCES
263234file (GLOB BCFTOOLS_SOURCES src/3rdparty/bcftools/*.c )
264235
265236# Build dependency targets
266- add_custom_target (build -deps DEPENDS htslib_ext samtools_ext minimap2_target capnp_tools )
237+ add_custom_target (build -deps DEPENDS minimap2_target capnp_tools )
267238
268239add_library (minimap2 STATIC IMPORTED )
269240set_target_properties (minimap2 PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR} /lib/libminimap2.a" )
@@ -275,6 +246,7 @@ target_compile_options(bwa PRIVATE -fPIC -w)
275246
276247add_library (bcftools STATIC ${BCFTOOLS_SOURCES} )
277248target_include_directories (bcftools PUBLIC src/3rdparty/bcftools )
249+ target_include_directories (bcftools PRIVATE ${HTS_INCLUDE_DIR} )
278250target_compile_options (bcftools PRIVATE -fPIC -w )
279251
280252# ===== panmap executable =====
@@ -292,7 +264,7 @@ target_sources(panmap PRIVATE ${LITE_CAPNP_GEN_CPP})
292264target_include_directories (panmap PRIVATE
293265 ${CMAKE_CURRENT_BINARY_DIR}
294266 ${CMAKE_CURRENT_SOURCE_DIR} /src/3rdparty
295- ${HTSLIB_INSTALL_DIR} /include
267+ ${HTS_INCLUDE_DIR}
296268)
297269
298270target_link_libraries (panmap PRIVATE
@@ -301,7 +273,6 @@ target_link_libraries(panmap PRIVATE
301273 bwa
302274 bcftools
303275 minimap2
304- samtools
305276 htslib
306277 ${CAPNP_LIBRARY}
307278 ${KJ_LIBRARY}
0 commit comments