# ==========================
# set project name
-project (BamTools)
+project( BamTools )
# Cmake requirements
-cmake_minimum_required (VERSION 2.6.4)
+cmake_minimum_required( VERSION 2.6.4 )
+
+# init CTest
+enable_testing()
# Force the build directory to be different from source directory
-macro (ENSURE_OUT_OF_SOURCE_BUILD MSG)
- string (COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" insource)
- get_filename_component (PARENTDIR ${CMAKE_SOURCE_DIR} PATH)
- string (COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${PARENTDIR}" insourcesubdir)
- IF (insource OR insourcesubdir)
- message (FATAL_ERROR "${MSG}")
- ENDIF (insource OR insourcesubdir)
-endmacro (ENSURE_OUT_OF_SOURCE_BUILD)
-
-ensure_out_of_source_build ("
+macro( ENSURE_OUT_OF_SOURCE_BUILD MSG )
+ string( COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" insource )
+ get_filename_component( PARENTDIR ${CMAKE_SOURCE_DIR} PATH )
+ string( COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${PARENTDIR}" insourcesubdir )
+ IF( insource OR insourcesubdir )
+ message( FATAL_ERROR "${MSG}" )
+ ENDIF( insource OR insourcesubdir )
+endmacro( ENSURE_OUT_OF_SOURCE_BUILD )
+
+ensure_out_of_source_build( "
${PROJECT_NAME} requires an out of source build.
$ mkdir build
$ cd build
$ cmake ..
$ make
-(or the Windows equivalent)\n")
+(or the Windows equivalent)\n" )
# set BamTools version information
-set (BamTools_VERSION_MAJOR 2)
-set (BamTools_VERSION_MINOR 0)
-set (BamTools_VERSION_BUILD 5)
+set( BamTools_VERSION_MAJOR 2 )
+set( BamTools_VERSION_MINOR 0 )
+set( BamTools_VERSION_BUILD 5 )
# set our library and executable destination dirs
-set (EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin")
-set (LIBRARY_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/lib")
+set( EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin" )
+set( LIBRARY_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/lib" )
# define compiler flags for all code
-set (CMAKE_BUILD_TYPE Release)
-add_definitions (-Wall -D_FILE_OFFSET_BITS=64)
+set( CMAKE_BUILD_TYPE Release )
+add_definitions( -Wall -D_FILE_OFFSET_BITS=64 )
# add our includes root path
-include_directories (src)
+include_directories( src )
# list subdirectories to build in
-add_subdirectory (src)
+add_subdirectory( src )
# src/
# ==========================
-add_subdirectory (api)
-add_subdirectory (utils)
-add_subdirectory (third_party)
-add_subdirectory (toolkit)
+add_subdirectory( api )
+add_subdirectory( test )
+add_subdirectory( third_party )
+add_subdirectory( toolkit )
+add_subdirectory( utils )
# export shared headers
-include(ExportHeader.cmake)
-set(SharedIncludeDir "shared")
-ExportHeader(SharedHeaders shared/bamtools_global.h ${SharedIncludeDir})
-
-
+include( ExportHeader.cmake )
+set( SharedIncludeDir "shared" )
+ExportHeader( SharedHeaders shared/bamtools_global.h ${SharedIncludeDir} )
// loads existing data from file into memory
virtual bool Load(const std::string& filename) =0;
+ // returns the 'type' enum for derived index format
+ virtual BamIndex::IndexType Type(void) const =0;
+
//! \cond
// internal methods
# create main BamTools API shared library
add_library( BamTools SHARED ${BamToolsAPISources} )
-set_target_properties( BamTools PROPERTIES SOVERSION "2.0.5" )
-set_target_properties( BamTools PROPERTIES OUTPUT_NAME "bamtools" )
+set_target_properties( BamTools PROPERTIES
+ SOVERSION "2.0.5"
+ OUTPUT_NAME "bamtools" )
+target_link_libraries( BamTools z )
+install( TARGETS BamTools LIBRARY DESTINATION "lib/bamtools" RUNTIME DESTINATION "bin" )
# create main BamTools API static library
add_library( BamTools-static STATIC ${BamToolsAPISources} )
-set_target_properties( BamTools-static PROPERTIES OUTPUT_NAME "bamtools" )
-set_target_properties( BamTools-static PROPERTIES PREFIX "lib" )
-
-# link libraries with zlib automatically
-target_link_libraries( BamTools z )
+set_target_properties( BamTools-static PROPERTIES
+ OUTPUT_NAME "bamtools"
+ PREFIX "lib" )
target_link_libraries( BamTools-static z )
-
-# set library install destinations
-install( TARGETS BamTools LIBRARY DESTINATION "lib/bamtools" RUNTIME DESTINATION "bin")
-install( TARGETS BamTools-static ARCHIVE DESTINATION "lib/bamtools")
+install( TARGETS BamTools-static ARCHIVE DESTINATION "lib/bamtools" )
# export API headers
-include(../ExportHeader.cmake)
-set(ApiIncludeDir "api")
-ExportHeader(APIHeaders api_global.h ${ApiIncludeDir})
-ExportHeader(APIHeaders BamAlgorithms.h ${ApiIncludeDir})
-ExportHeader(APIHeaders BamAlignment.h ${ApiIncludeDir})
-ExportHeader(APIHeaders BamAux.h ${ApiIncludeDir})
-ExportHeader(APIHeaders BamConstants.h ${ApiIncludeDir})
-ExportHeader(APIHeaders BamIndex.h ${ApiIncludeDir})
-ExportHeader(APIHeaders BamMultiReader.h ${ApiIncludeDir})
-ExportHeader(APIHeaders BamReader.h ${ApiIncludeDir})
-ExportHeader(APIHeaders BamWriter.h ${ApiIncludeDir})
-ExportHeader(APIHeaders IBamIODevice.h ${ApiIncludeDir})
-ExportHeader(APIHeaders SamConstants.h ${ApiIncludeDir})
-ExportHeader(APIHeaders SamHeader.h ${ApiIncludeDir})
-ExportHeader(APIHeaders SamProgram.h ${ApiIncludeDir})
-ExportHeader(APIHeaders SamProgramChain.h ${ApiIncludeDir})
-ExportHeader(APIHeaders SamReadGroup.h ${ApiIncludeDir})
-ExportHeader(APIHeaders SamReadGroupDictionary.h ${ApiIncludeDir})
-ExportHeader(APIHeaders SamSequence.h ${ApiIncludeDir})
-ExportHeader(APIHeaders SamSequenceDictionary.h ${ApiIncludeDir})
+include( ../ExportHeader.cmake )
+set( ApiIncludeDir "api" )
+ExportHeader( APIHeaders api_global.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders BamAlgorithms.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders BamAlignment.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders BamAux.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders BamConstants.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders BamIndex.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders BamMultiReader.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders BamReader.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders BamWriter.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders IBamIODevice.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders SamConstants.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders SamHeader.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders SamProgram.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders SamProgramChain.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders SamReadGroup.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders SamReadGroupDictionary.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders SamSequence.h ${ApiIncludeDir} )
+ExportHeader( APIHeaders SamSequenceDictionary.h ${ApiIncludeDir} )
-set(AlgorithmsIncludeDir "api/algorithms")
-ExportHeader(AlgorithmsHeaders algorithms/Sort.h ${AlgorithmsIncludeDir})
+set( AlgorithmsIncludeDir "api/algorithms" )
+ExportHeader( AlgorithmsHeaders algorithms/Sort.h ${AlgorithmsIncludeDir} )
bool Jump(const BamTools::BamRegion& region, bool* hasAlignmentsInRegion);
// loads existing data from file into memory
bool Load(const std::string& filename);
+ BamIndex::IndexType Type(void) const { return BamIndex::STANDARD; }
public:
// returns format's file extension
static const std::string Extension(void);
bool Jump(const BamTools::BamRegion& region, bool* hasAlignmentsInRegion);
// loads existing data from file into memory
bool Load(const std::string& filename);
+ BamIndex::IndexType Type(void) const { return BamIndex::BAMTOOLS; }
public:
// returns format's file extension
static const std::string Extension(void);
# ==========================
# list third-party subdirectories to build in
-add_subdirectory (jsoncpp)
-
+add_subdirectory( gtest-1.6.0 )
+add_subdirectory( jsoncpp )
# ==========================
# add compiler definitions
-add_definitions(-DBAMTOOLS_JSONCPP_LIBRARY) # (for proper exporting of library symbols)
+add_definitions( -DBAMTOOLS_JSONCPP_LIBRARY ) # (for proper exporting of library symbols)
add_definitions( -fPIC ) # (attempt to force PIC compiling on CentOS, not being set on shared libs by CMake)
# create jsoncpp library
-add_library ( jsoncpp SHARED
- json_reader.cpp
- json_value.cpp
- json_writer.cpp
- )
+add_library( jsoncpp SHARED
+ json_reader.cpp
+ json_value.cpp
+ json_writer.cpp
+ )
# set jsoncpp library properties
set_target_properties( jsoncpp PROPERTIES
# ==========================
# set include path
-include_directories ( ${BamTools_SOURCE_DIR}/src/api
- ${BamTools_SOURCE_DIR}/src/utils
- ${BamTools_SOURCE_DIR}/src/third_party
- )
+include_directories( ${BamTools_SOURCE_DIR}/src/api
+ ${BamTools_SOURCE_DIR}/src/utils
+ ${BamTools_SOURCE_DIR}/src/third_party
+ )
# compile main bamtools application
-add_executable ( bamtools_cmd
- bamtools_convert.cpp
- bamtools_count.cpp
- bamtools_coverage.cpp
- bamtools_filter.cpp
- bamtools_header.cpp
- bamtools_index.cpp
- bamtools_merge.cpp
- bamtools_random.cpp
- bamtools_resolve.cpp
- bamtools_revert.cpp
- bamtools_sort.cpp
- bamtools_split.cpp
- bamtools_stats.cpp
- bamtools.cpp
- )
+add_executable( bamtools_cmd
+ bamtools_convert.cpp
+ bamtools_count.cpp
+ bamtools_coverage.cpp
+ bamtools_filter.cpp
+ bamtools_header.cpp
+ bamtools_index.cpp
+ bamtools_merge.cpp
+ bamtools_random.cpp
+ bamtools_resolve.cpp
+ bamtools_revert.cpp
+ bamtools_sort.cpp
+ bamtools_split.cpp
+ bamtools_stats.cpp
+ bamtools.cpp
+ )
# set BamTools application properties
set_target_properties( bamtools_cmd PROPERTIES
OUTPUT_NAME "bamtools"
)
# make version info available in application
-configure_file(bamtools_version.h.in ${BamTools_SOURCE_DIR}/src/toolkit/bamtools_version.h)
+configure_file( bamtools_version.h.in ${BamTools_SOURCE_DIR}/src/toolkit/bamtools_version.h )
# define libraries to link
-target_link_libraries ( bamtools_cmd BamTools BamTools-utils jsoncpp )
+target_link_libraries( bamtools_cmd BamTools BamTools-utils jsoncpp )
# set application install destinations
install( TARGETS bamtools_cmd DESTINATION "bin")
# ==========================
# list include paths
-include_directories (${BamTools_SOURCE_DIR}/src/api)
+include_directories( ${BamTools_SOURCE_DIR}/src/api )
# add compiler definitions
-add_definitions(-DBAMTOOLS_UTILS_LIBRARY) # (for proper exporting of library symbols)
+add_definitions( -DBAMTOOLS_UTILS_LIBRARY ) # (for proper exporting of library symbols)
add_definitions( -fPIC ) # (attempt to force PIC compiling on CentOS, not being set on shared libs by CMake)
# create BamTools utils library
-add_library ( BamTools-utils SHARED
- bamtools_fasta.cpp
- bamtools_options.cpp
- bamtools_pileup_engine.cpp
- bamtools_utilities.cpp
- )
+add_library( BamTools-utils SHARED
+ bamtools_fasta.cpp
+ bamtools_options.cpp
+ bamtools_pileup_engine.cpp
+ bamtools_utilities.cpp
+ )
# link BamTools-utils library with BamTools automatically
-target_link_libraries ( BamTools-utils BamTools )
+target_link_libraries( BamTools-utils BamTools )
# set BamTools library properties
set_target_properties( BamTools-utils PROPERTIES