]> git.donarmstrong.com Git - bamtools.git/blob - src/api/CMakeLists.txt
Merge branches 'master' and 'iodevice' into iodevice
[bamtools.git] / src / api / CMakeLists.txt
1 # ==========================
2 # BamTools CMakeLists.txt
3 # (c) 2010 Derek Barnett
4 #
5 # src/api/
6 # ==========================
7
8 # list include paths
9 include_directories( ${BamTools_SOURCE_DIR}/src )
10
11 # add compiler definitions 
12 add_definitions( -DBAMTOOLS_API_LIBRARY ) # (for proper exporting of library symbols)
13 add_definitions( -fPIC ) # (attempt to force PIC compiling on CentOS, not being set on shared libs by CMake)
14
15 # list of all BamTools API source (.cpp) files
16 set( BamToolsAPISources
17         BamAlignment.cpp
18         BamMultiReader.cpp
19         BamReader.cpp
20         BamWriter.cpp
21         SamHeader.cpp
22         SamProgram.cpp
23         SamProgramChain.cpp
24         SamReadGroup.cpp
25         SamReadGroupDictionary.cpp
26         SamSequence.cpp
27         SamSequenceDictionary.cpp
28         internal/BamDeviceFactory_p.cpp
29         internal/BamFile_p.cpp
30         internal/BamFtp_p.cpp
31         internal/BamHeader_p.cpp
32         internal/BamHttp_p.cpp
33         internal/BamIndexFactory_p.cpp
34         internal/BamMultiReader_p.cpp
35         internal/BamPipe_p.cpp
36         internal/BamRandomAccessController_p.cpp
37         internal/BamReader_p.cpp
38         internal/BamStandardIndex_p.cpp
39         internal/BamToolsIndex_p.cpp
40         internal/BamWriter_p.cpp
41         internal/BgzfStream_p.cpp
42         internal/SamFormatParser_p.cpp
43         internal/SamFormatPrinter_p.cpp
44         internal/SamHeaderValidator_p.cpp
45 )
46
47 # create main BamTools API shared library
48 add_library( BamTools SHARED ${BamToolsAPISources} )
49 set_target_properties( BamTools PROPERTIES SOVERSION "1.0.2" )
50 set_target_properties( BamTools PROPERTIES OUTPUT_NAME "bamtools" )
51
52 # create main BamTools API static library
53 add_library( BamTools-static STATIC ${BamToolsAPISources} )
54 set_target_properties( BamTools-static PROPERTIES OUTPUT_NAME "bamtools" )
55 set_target_properties( BamTools-static PROPERTIES PREFIX "lib" )
56
57 # link libraries with zlib automatically
58 target_link_libraries( BamTools z )
59 target_link_libraries( BamTools-static z )
60
61 # set library install destinations
62 install( TARGETS BamTools LIBRARY DESTINATION "lib/bamtools" RUNTIME DESTINATION "bin")
63 install( TARGETS BamTools-static ARCHIVE DESTINATION "lib/bamtools")
64
65 # export API headers
66 include(../ExportHeader.cmake)
67 set(ApiIncludeDir "api")
68 ExportHeader(APIHeaders api_global.h             ${ApiIncludeDir})
69 ExportHeader(APIHeaders BamAlignment.h           ${ApiIncludeDir})
70 ExportHeader(APIHeaders BamAux.h                 ${ApiIncludeDir})
71 ExportHeader(APIHeaders BamConstants.h           ${ApiIncludeDir})
72 ExportHeader(APIHeaders BamIndex.h               ${ApiIncludeDir})
73 ExportHeader(APIHeaders BamMultiReader.h         ${ApiIncludeDir})
74 ExportHeader(APIHeaders BamReader.h              ${ApiIncludeDir})
75 ExportHeader(APIHeaders BamWriter.h              ${ApiIncludeDir})
76 ExportHeader(APIHeaders IBamIODevice.h           ${ApiIncludeDir})
77 ExportHeader(APIHeaders SamConstants.h           ${ApiIncludeDir})
78 ExportHeader(APIHeaders SamHeader.h              ${ApiIncludeDir})
79 ExportHeader(APIHeaders SamProgram.h             ${ApiIncludeDir})
80 ExportHeader(APIHeaders SamProgramChain.h        ${ApiIncludeDir})
81 ExportHeader(APIHeaders SamReadGroup.h           ${ApiIncludeDir})
82 ExportHeader(APIHeaders SamReadGroupDictionary.h ${ApiIncludeDir})
83 ExportHeader(APIHeaders SamSequence.h            ${ApiIncludeDir})
84 ExportHeader(APIHeaders SamSequenceDictionary.h  ${ApiIncludeDir})