forked from freebayes/freebayes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
129 lines (108 loc) · 4.02 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Specify the minimum version for CMake
cmake_minimum_required(VERSION 3.1)
# Project's name
project(freebayes)
# We build using c++14
set(CMAKE_CXX_STANDARD 14)
# Use all standard-compliant optimizations
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -g")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -g")
# Set the output folder where your program will be created
set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
# The following folder will be included
include_directories("${PROJECT_SOURCE_DIR}")
# Add external projects
include(ExternalProject)
# Find our dependencies
include(FindZLIB)
include(FindBZip2)
include(FindLibLZMA)
include(FindThreads)
ExternalProject_Add(vcflib
SOURCE_DIR "${CMAKE_SOURCE_DIR}/vcflib"
CMAKE_ARGS "${CMAKE_ARGS};-DBUILD_ONLY_LIB=1;-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>")
ExternalProject_Get_property(vcflib INSTALL_DIR)
set(vcflib_INCLUDE "${INSTALL_DIR}/include")
set(vcflib_LIB "${INSTALL_DIR}/lib")
ExternalProject_Add(seqlib
SOURCE_DIR ${CMAKE_SOURCE_DIR}/SeqLib
BUILD_IN_SOURCE 1 # why do we have to build in source?
CONFIGURE_COMMAND ./configure
BUILD_COMMAND $(MAKE) CXXFLAGS='-std=c++14'
INSTALL_COMMAND $(MAKE) install)
ExternalProject_Get_property(seqlib SOURCE_DIR)
set(seqlib_INCLUDE "${SOURCE_DIR}")
set(seqlib_LIB "${SOURCE_DIR}/lib")
#set(CMAKE_BUILD_TYPE Release)
#set(CMAKE_BUILD_TYPE Debug)
# set up our target executable and specify its dependencies and includes
add_library(freebayes_OBJS OBJECT
${CMAKE_SOURCE_DIR}/src/Contamination.cpp
${CMAKE_SOURCE_DIR}/src/Marginals.cpp
${CMAKE_SOURCE_DIR}/src/DataLikelihood.cpp
${CMAKE_SOURCE_DIR}/src/NonCall.cpp
${CMAKE_SOURCE_DIR}/src/Genotype.cpp
${CMAKE_SOURCE_DIR}/src/Utility.cpp
${CMAKE_SOURCE_DIR}/src/AlleleParser.cpp
${CMAKE_SOURCE_DIR}/src/Dirichlet.cpp
${CMAKE_SOURCE_DIR}/src/split.cpp
${CMAKE_SOURCE_DIR}/src/Sample.cpp
${CMAKE_SOURCE_DIR}/src/SegfaultHandler.cpp
${CMAKE_SOURCE_DIR}/src/BedReader.cpp
${CMAKE_SOURCE_DIR}/src/Multinomial.cpp
${CMAKE_SOURCE_DIR}/src/LeftAlign.cpp
${CMAKE_SOURCE_DIR}/src/CNV.cpp
${CMAKE_SOURCE_DIR}/src/ResultData.cpp
${CMAKE_SOURCE_DIR}/src/Bias.cpp
${CMAKE_SOURCE_DIR}/src/Result.cpp
${CMAKE_SOURCE_DIR}/src/Allele.cpp
${CMAKE_SOURCE_DIR}/src/IndelAllele.cpp
${CMAKE_SOURCE_DIR}/src/Fasta.cpp
${CMAKE_SOURCE_DIR}/src/Ewens.cpp
${CMAKE_SOURCE_DIR}/src/Parameters.cpp
${CMAKE_SOURCE_DIR}/src/BGZF.cpp)
set(freebayes_DEPS
vcflib
seqlib)
add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/src/version_git.txt
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/scripts/update_version.sh ${CMAKE_CURRENT_SOURCE_DIR})
add_custom_target(SetVersion ALL
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/version_git.txt)
add_dependencies(freebayes_OBJS ${freebayes_DEPS} SetVersion)
set(freebayes_INCLUDES
"${CMAKE_SOURCE_DIR}/src"
"${CMAKE_SOURCE_DIR}/ttmath"
"${vcflib_INCLUDE}"
"${seqlib_INCLUDE}"
"${seqlib_INCLUDE}/htslib")
set(freebayes_LIBS
"${vcflib_LIB}/libvcflib.a"
"${seqlib_LIB}/libseqlib.a"
"${seqlib_LIB}/libhts.a"
${CMAKE_THREAD_LIBS_INIT}
${ZLIB_LIBRARIES}
${LIBLZMA_LIBRARIES}
${BZIP2_LIBRARIES})
target_include_directories(freebayes_OBJS PUBLIC ${freebayes_INCLUDES})
set_target_properties(freebayes_OBJS PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
add_executable(freebayes
$<TARGET_OBJECTS:freebayes_OBJS>
${CMAKE_SOURCE_DIR}/src/freebayes.cpp)
target_include_directories(freebayes PUBLIC ${freebayes_INCLUDES})
target_link_libraries(freebayes ${freebayes_LIBS})
set_target_properties(freebayes PROPERTIES OUTPUT_NAME "freebayes")
add_executable(bamleftalign
$<TARGET_OBJECTS:freebayes_OBJS>
${CMAKE_SOURCE_DIR}/src/bamleftalign.cpp)
target_include_directories(bamleftalign PUBLIC ${freebayes_INCLUDES})
target_link_libraries(bamleftalign ${freebayes_LIBS})
set_target_properties(bamleftalign PROPERTIES OUTPUT_NAME "bamleftalign")
install(TARGETS freebayes DESTINATION bin)
install(TARGETS bamleftalign DESTINATION bin)
if (APPLE)
elseif (TRUE)
if (BUILD_STATIC)
set(CMAKE_EXE_LINKER_FLAGS "-static")
endif()
endif()