File: CMakeLists.txt

package info (click to toggle)
blasr 5.3%2B0-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 3,064 kB
  • sloc: cpp: 13,753; ansic: 614; python: 314; makefile: 237; xml: 201; sh: 72
file content (139 lines) | stat: -rw-r--r-- 4,818 bytes parent folder | download | duplicates (2)
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
130
131
132
133
134
135
136
137
138
139
########################################################################
# CMake build script for Bam2Bax executable.
########################################################################

project(Bam2Bax CXX C)
cmake_minimum_required(VERSION 2.8)

# project version
set(Bam2Bax_MAJOR_VERSION 0)
set(Bam2Bax_MINOR_VERSION 0)
set(Bam2Bax_PATCH_VERSION 1)
set(Bam2Bax_VERSION
  "${Bam2Bax_MAJOR_VERSION}.${Bam2Bax_MINOR_VERSION}.${Bam2Bax_PATCH_VERSION}"
)

# build-time options
option(Bam2Bax_build_tests "Build Bam2Bax's unit tests." OFF)

# main project paths
set(Bam2Bax_RootDir       ${Bam2Bax_SOURCE_DIR})
set(Bam2Bax_DocsDir       ${Bam2Bax_RootDir}/docs)
set(Bam2Bax_SourceDir     ${Bam2Bax_RootDir}/src)
set(Bam2Bax_TestsDir      ${Bam2Bax_RootDir}/tests)
set(Bam2Bax_ThirdPartyDir ${Bam2Bax_RootDir}/third-party)

if (NOT Bam2Bax_OutputDir)
    set(Bam2Bax_OutputDir ${Bam2Bax_RootDir})
endif()

set(Bam2Bax_BinDir        ${Bam2Bax_OutputDir}/bin)
file(MAKE_DIRECTORY       ${Bam2Bax_BinDir})

# shared & third-party paths

if (NOT PBDATA_ROOT_DIR)
    set(PBDATA_ROOT_DIR ${Bam2Bax_RootDir}/../../../blasr_libcpp)
endif()

# find (existing) libraries needed by executable and tests
if (NOT BLASR_INCLUDE_DIRS OR NOT BLASR_LIBRARIES)
    find_library(BLASR_LIBRARIES    blasr    ${PBDATA_ROOT_DIR}/alignment)
    set(BLASR_INCLUDE_DIRS ${PBDATA_ROOT_DIR}/alignment)
endif()

if (NOT PBIHDF_INCLUDE_DIRS OR NOT PBIHDF_LIBRARIES)
    find_library(PBIHDF_LIBRARIES   pbihdf   ${PBDATA_ROOT_DIR}/hdf)
    set(PBIHDF_INCLUDE_DIRS ${PBDATA_ROOT_DIR}/hdf)
endif()

if (NOT PBDATA_INCLUDE_DIRS OR NOT PBDATA_LIBRARIES)
    find_library(PBDATA_LIBRARIES   pbdata   ${PBDATA_ROOT_DIR}/pbdata)
    set(PBDATA_INCLUDE_DIRS ${PBDATA_ROOT_DIR}/pbdata)
endif()

if (NOT HDF5_INCLUDE_DIRS OR NOT HDF5_LIBRARIES)
    if (NOT HDF5_RootDir)
        set(HDF5_RootDir ${Bam2Bax_RootDir}/../../../../../../prebuilt.out/hdf5/hdf5-1.8.12/ubuntu-1404)
    endif()

    set(HDF5_INCLUDE_DIRS ${HDF5_RootDir}/include)
    set(HDF5_LibDir       ${HDF5_RootDir}/lib)

    find_library(HDF5_LIBRARIES     hdf5     ${HDF5_LibDir} NO_CMAKE_SYSTEM_PATH)
    find_library(HDF5_CPP_LIBRARIES hdf5_cpp ${HDF5_LibDir} NO_CMAKE_SYSTEM_PATH)
endif()

if (NOT PacBioBAM_INCLUDE_DIRS OR NOT PacBioBAM_LIBRARIES
    OR NOT HTSLIB_INCLUDE_DIRS OR NOT HTSLIB_LIBRARIES)
    set(PacBioBAM_LIBRARIES )
    set(PacBioBAM_INCLUDE_DIRS )
    set(HTSLIB_INCLUDE_DIRS )
    set(HTSLIB_LIBRARIES )
    if (NOT PacBioBAM_RootDir)
        message ("Must either set (PacBioBAM_INCLUDE_DIRS, PacBioBAM_LIBRARIES, HTSLIB_INCLUDE_DIRS, and HTSLIB_LIBRARIES) or PacBioBAM_RootDir!")
    endif()
    add_subdirectory(${PacBioBAM_RootDir} external/build/pbbam)
    set(PBBAM_LINK_FLAG pbbam)
endif()

if (NOT Boost_INCLUDE_DIRS)
    find_package(Boost REQUIRED)
endif()

if (NOT ZLIB_LIBRARIES OR NOT ZLIB_INCLUDE_DIRS)
    find_package(ZLIB REQUIRED)
endif()

# shared CXX flags for src & tests
include(CheckCXXCompilerFlag)
set(Bam2Bax_CXX_FLAGS "-g -std=c++11 -Wall")

# quash warnings from pbdata
check_cxx_compiler_flag("-Wno-overloaded-virtual" HAS_NO_OVERLOADED_VIRTUAL)
if(HAS_NO_OVERLOADED_VIRTUAL)
    set(Bam2Bax_CXX_FLAGS "${Bam2Bax_CXX_FLAGS} -Wno-overloaded-virtual")
endif()
#check_cxx_compiler_flag("-Wno-unused-private-field" HAS_NO_UNUSED_PRIVATE_FIELD)
#if(HAS_NO_UNUSED_PRIVATE_FIELD)
#    set(Bam2Bax_CXX_FLAGS "${Bam2Bax_CXX_FLAGS} -Wno-unused-private-field")
#endif()
check_cxx_compiler_flag("-Wno-unused-variable" HAS_NO_UNUSED_VARIABLE)
if(HAS_NO_UNUSED_VARIABLE)
    set(Bam2Bax_CXX_FLAGS "${Bam2Bax_CXX_FLAGS} -Wno-unused-variable")
endif()
check_cxx_compiler_flag("-Wno-uninitialized" HAS_NO_UNINITIALIZED)
if(HAS_NO_UNINITIALIZED)
    set(Bam2Bax_CXX_FLAGS "${Bam2Bax_CXX_FLAGS} -Wno-uninitialized")
endif()
check_cxx_compiler_flag("-Wunused-but-set-variable" HAS_UNUSED_BUT_SET_VARIABLE)
if(HAS_UNUSED_BUT_SET_VARIABLE)
    set(Bam2Bax_CXX_FLAGS "${Bam2Bax_CXX_FLAGS} -Wunused-but-set-variable")
endif()
check_cxx_compiler_flag("-Wno-deprecated-declarations" HAS_NO_DEPRECATED_DECLARATIONS)
if(HAS_NO_DEPRECATED_DECLARATIONS)
    set(Bam2Bax_CXX_FLAGS "${Bam2Bax_CXX_FLAGS} -Wno-deprecated-declarations")
endif()
# NOTE: -Wno-unused-local-typedefs used to quash clang warnings w/ Boost
check_cxx_compiler_flag("-Wno-unused-local-typedef" HAS_NO_UNUSED_LOCAL_TYPEDEF)
if(HAS_NO_UNUSED_LOCAL_TYPEDEF)
    set(Bam2Bax_CXX_FLAGS "${Bam2Bax_CXX_FLAGS} -Wno-unused-local-typedef")
endif()

SET(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} ${Bam2Bax_LINKER_FLAGS}" )

# main exe src
add_subdirectory(src)

# testing
if(Bam2Bax_build_tests)

    enable_testing()
    
    if (NOT GTEST_SRC_DIR)
        set(GTEST_SRC_DIR ../gtest)
    endif()

    add_subdirectory(${GTEST_SRC_DIR} external/gtest/build)
    add_subdirectory(tests)
endif()