]> git.donarmstrong.com Git - bamtools.git/blob - src/api/CMakeLists.txt
66eb35f9f301478976acb9e24f02318a97fe07c6
[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 # fetch all internal source files
16 add_subdirectory ( internal )
17
18 # make list of all API source files
19 set( BamToolsAPISources
20         BamAlignment.cpp
21         BamMultiReader.cpp
22         BamReader.cpp
23         BamWriter.cpp
24         SamHeader.cpp
25         SamProgram.cpp
26         SamProgramChain.cpp
27         SamReadGroup.cpp
28         SamReadGroupDictionary.cpp
29         SamSequence.cpp
30         SamSequenceDictionary.cpp
31         ${InternalSources}
32 )
33
34 # create main BamTools API shared library
35 add_library( BamTools SHARED ${BamToolsAPISources} )
36 set_target_properties( BamTools PROPERTIES
37                        SOVERSION "2.2.3"
38                        OUTPUT_NAME "bamtools" )
39
40 # create main BamTools API static library
41 add_library( BamTools-static STATIC ${BamToolsAPISources} )
42 set_target_properties( BamTools-static PROPERTIES 
43                        OUTPUT_NAME "bamtools" 
44                        PREFIX "lib" )
45
46 # link libraries automatically with zlib (and Winsock2, if applicable)
47 if( _WIN32 )
48     set( APILibs z ws2_32 )
49 else( _WIN32 )
50     set( APILibs z )
51 endif( _WIN32 )
52
53 target_link_libraries( BamTools ${APILibs} )
54 target_link_libraries( BamTools-static ${APILibs} )
55
56 # set library install destinations
57 install( TARGETS BamTools LIBRARY DESTINATION "lib/bamtools" RUNTIME DESTINATION "bin")
58 install( TARGETS BamTools-static ARCHIVE DESTINATION "lib/bamtools")
59
60 # export API headers
61 include(../ExportHeader.cmake)
62 set(ApiIncludeDir "api")
63 ExportHeader(APIHeaders api_global.h             ${ApiIncludeDir})
64 ExportHeader(APIHeaders BamAlgorithms.h          ${ApiIncludeDir})
65 ExportHeader(APIHeaders BamAlignment.h           ${ApiIncludeDir})
66 ExportHeader(APIHeaders BamAux.h                 ${ApiIncludeDir})
67 ExportHeader(APIHeaders BamConstants.h           ${ApiIncludeDir})
68 ExportHeader(APIHeaders BamIndex.h               ${ApiIncludeDir})
69 ExportHeader(APIHeaders BamMultiReader.h         ${ApiIncludeDir})
70 ExportHeader(APIHeaders BamReader.h              ${ApiIncludeDir})
71 ExportHeader(APIHeaders BamWriter.h              ${ApiIncludeDir})
72 ExportHeader(APIHeaders IBamIODevice.h           ${ApiIncludeDir})
73 ExportHeader(APIHeaders SamConstants.h           ${ApiIncludeDir})
74 ExportHeader(APIHeaders SamHeader.h              ${ApiIncludeDir})
75 ExportHeader(APIHeaders SamProgram.h             ${ApiIncludeDir})
76 ExportHeader(APIHeaders SamProgramChain.h        ${ApiIncludeDir})
77 ExportHeader(APIHeaders SamReadGroup.h           ${ApiIncludeDir})
78 ExportHeader(APIHeaders SamReadGroupDictionary.h ${ApiIncludeDir})
79 ExportHeader(APIHeaders SamSequence.h            ${ApiIncludeDir})
80 ExportHeader(APIHeaders SamSequenceDictionary.h  ${ApiIncludeDir})
81
82 set( AlgorithmsIncludeDir "api/algorithms" )
83 ExportHeader( AlgorithmsHeaders algorithms/Sort.h ${AlgorithmsIncludeDir} )