PROJECT(SWIFT)
CMAKE_MINIMUM_REQUIRED(VERSION 2.2)
MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY)

# ----------------------------------------------------------------------------
# Setup version number

SET(SWIFT_VERSION_MAJOR "1")
SET(SWIFT_VERSION_MINOR "0")
SET(SWIFT_VERSION_PATCH "0")
SET(
    SWIFT_VERSION
    "${SWIFT_VERSION_MAJOR}.${SWIFT_VERSION_MINOR}.${SWIFT_VERSION_PATCH}"
)


# ----------------------------------------------------------------------------
# Setup options

OPTION(BUILD_TESTING "Build tests" ON)
SET(SWIFT_BUILD_TESTING ${BUILD_TESTING})



# ----------------------------------------------------------------------------
# Set CMake module path

SET(
    CMAKE_MODULE_PATH
    ${SWIFT_SOURCE_DIR}/config
    ${CMAKE_MODULE_PATH}
)

# ----------------------------------------------------------------------------
# Find Boost C++ Libraries

FIND_PACKAGE(BOOST)

BOOST_USE(program_options)
BOOST_USE(iostreams)
BOOST_USE(signals)

IF (NOT BOOST_FOUND)
    MESSAGE(FATAL_ERROR "Boost C++ libraries not found")
ENDIF(NOT BOOST_FOUND)

INCLUDE_DIRECTORIES(
    ${BOOST_INCLUDE_DIR}
)

# ----------------------------------------------------------------------------
# Dispatch build into the subdirectories

SUBDIRS(
    common
    swift
)

IF (SWIFT_BUILD_TESTING)
    SUBDIRS(tests)
ENDIF (SWIFT_BUILD_TESTING)

# ----------------------------------------------------------------------------
# Set include paths

INCLUDE_DIRECTORIES(
    ${SWIFT_SOURCE_DIR}/common
)

# ----------------------------------------------------------------------------
# Setup 'package' and 'package_source' targets

IF (EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
    SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Swift is a fast sequence alignment tool")
    SET(CPACK_PACKAGE_VENDOR "Kim Roland Rasmussen")
    SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.txt")
    SET(CPACK_PACKAGE_VERSION_MAJOR "${SWIFT_VERSION_MAJOR}")
    SET(CPACK_PACKAGE_VERSION_MINOR "${SWIFT_VERSION_MINOR}")
    SET(CPACK_PACKAGE_VERSION_PATCH "${SWIFT_VERSION_PATCH}")
    SET(CPACK_PACKAGE_VERSION "${SWIFT_VERSION}")
    SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
    SET(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}")

    SET(CPACK_SOURCE_PACKAGE_FILE_NAME "swift-${SWIFT_VERSION}-src")
    SET(CPACK_SOURCE_GENERATOR TGZ)
    SET(CPACK_SOURCE_STRIP_FILES "")
    SET(
        CPACK_SOURCE_IGNORE_FILES
        "/\\\\.svn/"
        "/testdriver/"
        "release/"
        "build/"
        "html/"
        "xml/"
        "latex/"
        ".*~"
    )

    SET(
        CPACK_PACKAGE_FILE_NAME
        "swift-${SWIFT_VERSION}-${CPACK_SYSTEM_NAME}-bin"
    )
    SET(CPACK_GENERATOR TGZ)
    SET(CPACK_STRIP_FILES "bin/swift")
    SET(CPACK_PACKAGE_EXECUTABLES "swift" "Swift")

    INCLUDE(CPack)
ENDIF (EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")


# Set a default build type
IF(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
  SET(CMAKE_BUILD_TYPE Release CACHE STRING "Default build type: Release, changeable to Debug None RelWithDebInfo" FORCE)
  SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -fomit-frame-pointer -pipe" CACHE STRING "Some optimizations" FORCE)
  SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -Wall" CACHE STRING "No optimization" FORCE)
ENDIF(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
