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 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
|
# CMake script for Bio++ Remote Acnuc Access
# Author: Sylvain Gaillard and Julien Dutheil
# Created: 11/09/2009
# Global parameters
cmake_minimum_required(VERSION 2.6)
project(bpp-raa C CXX)
if(NOT DEFINED CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
endif(NOT DEFINED CMAKE_BUILD_TYPE)
set(CMAKE_CXX_FLAGS "-Wall")
IF(NOT NO_DEP_CHECK)
SET(NO_DEP_CHECK FALSE CACHE BOOL
"Disable dependencies check for building distribution only."
FORCE)
ENDIF(NOT NO_DEP_CHECK)
IF(NO_DEP_CHECK)
MESSAGE("-- Dependencies checking disabled. Only distribution can be built.")
ELSE(NO_DEP_CHECK)
# Libtool-like version number
# CURRENT:REVISION:AGE => file.so.(C-A).A.R
# current: The most recent interface number that this library implements.
# revision: The implementation number of the current interface.
# age: The difference between the newest and oldest interfaces that this
# library implements.
# In other words, the library implements all the interface numbers in the
# range from number current - age to current.
set(BPPRAA_VERSION_CURRENT "2")
set(BPPRAA_VERSION_REVISION "1")
set(BPPRAA_VERSION_AGE "1")
# Effective version number computation
math(EXPR BPPRAA_VERSION_MAJOR "${BPPRAA_VERSION_CURRENT} -
${BPPRAA_VERSION_AGE}")
set(BPPRAA_VERSION_MINOR ${BPPRAA_VERSION_AGE})
set(BPPRAA_VERSION_PATCH ${BPPRAA_VERSION_REVISION})
set(BPPRAA_VERSION "${BPPRAA_VERSION_MAJOR}.${BPPRAA_VERSION_MINOR}.${BPPRAA_VERSION_PATCH}")
# Set the CMAKE_PREFIX_PATH for the find_library fonction when using non
# standard install location
IF(CMAKE_INSTALL_PREFIX)
SET(CMAKE_PREFIX_PATH "${CMAKE_INSTALL_PREFIX}" ${CMAKE_PREFIX_PATH})
ENDIF(CMAKE_INSTALL_PREFIX)
#here is a useful function:
MACRO(IMPROVED_FIND_LIBRARY OUTPUT_LIBS lib_name include_to_find)
#start:
FIND_PATH(${lib_name}_INCLUDE_DIR ${include_to_find})
SET(${lib_name}_NAMES ${lib_name} ${lib_name}lib ${lib_name}dll)
FIND_LIBRARY(${lib_name}_LIBRARY NAMES ${${lib_name}_NAMES} PATH_SUFFIXES lib${LIB_SUFFIX})
IF(${lib_name}_LIBRARY)
MESSAGE("-- Library ${lib_name} found here:")
MESSAGE(" includes : ${${lib_name}_INCLUDE_DIR}")
MESSAGE(" libraries: ${${lib_name}_LIBRARY}")
ELSE(${lib_name}_LIBRARY)
MESSAGE(FATAL_ERROR "${lib_name} required but not found.")
ENDIF(${lib_name}_LIBRARY)
#add the dependency:
INCLUDE_DIRECTORIES(${${lib_name}_INCLUDE_DIR})
SET(${OUTPUT_LIBS} ${${OUTPUT_LIBS}} ${${lib_name}_LIBRARY})
ENDMACRO(IMPROVED_FIND_LIBRARY)
#Find the Bio++ libraries:
IMPROVED_FIND_LIBRARY(LIBS bpp-seq Bpp/Seq/Alphabet/Alphabet.h)
#Not explicitely needed:
#IMPROVED_FIND_LIBRARY(LIBS bpp-core Bpp/Clonable.h)
# Find the zlib installation
find_package(ZLIB REQUIRED)
include_directories(${ZLIB_INCLUDE_DIR})
set(LIBS ${LIBS} ${ZLIB_LIBRARIES})
# Subdirectories
add_subdirectory(src)
# Doxygen
find_package(Doxygen)
if (DOXYGEN_FOUND)
ADD_CUSTOM_TARGET (apidoc cp Doxyfile ${CMAKE_BINARY_DIR}/Doxyfile-build
COMMAND echo "OUTPUT_DIRECTORY=${CMAKE_BINARY_DIR}" >> ${CMAKE_BINARY_DIR}/Doxyfile-build
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile-build
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
ADD_CUSTOM_TARGET (apidoc-stable cp Doxyfile ${CMAKE_BINARY_DIR}/Doxyfile-stable
COMMAND echo "OUTPUT_DIRECTORY=${CMAKE_BINARY_DIR}" >> ${CMAKE_BINARY_DIR}/Doxyfile-stable
COMMAND echo "HTML_HEADER=header.html" >> ${CMAKE_BINARY_DIR}/Doxyfile-stable
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile-stable
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
endif (DOXYGEN_FOUND)
ENDIF(NO_DEP_CHECK)
# Packager
set(CPACK_PACKAGE_NAME "libbpp-raa")
set(CPACK_PACKAGE_VENDOR "Bio++ Development Team")
set(CPACK_PACKAGE_VERSION "2.2.0")
set(CPACK_PACKAGE_VERSION_MAJOR "2")
set(CPACK_PACKAGE_VERSION_MINOR "2")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The Bio++ Remote Acnuc Access library")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING.txt")
set(CPACK_RESOURCE_FILE_AUTHORS "${CMAKE_SOURCE_DIR}/AUTHORS.txt")
set(CPACK_RESOURCE_FILE_INSTALL "${CMAKE_SOURCE_DIR}/INSTALL.txt")
set(CPACK_SOURCE_GENERATOR "TGZ")
SET(CPACK_SOURCE_IGNORE_FILES
"CMakeFiles"
"Makefile"
"_CPack_Packages"
"CMakeCache.txt"
".*\\\\.cmake"
".*\\\\.git"
".*\\\\.gz"
".*\\\\.deb"
".*\\\\.rpm"
".*\\\\.dmg"
".*\\\\.sh"
".*\\\\..*\\\\.swp"
"src/\\\\..*"
"src/libbpp*"
"debian/tmp"
"debian/libbpp.*/"
"debian/libbpp.*\\\\.so.*"
"debian/libbpp.*\\\\.a"
"debian/libbpp.*\\\\.substvars"
"debian/libbpp.*\\\\.debhelper"
"debian/debhelper\\\\.log"
"html"
"Raa.tag"
"Testing"
"build-stamp"
"install_manifest.txt"
"DartConfiguration.tcl"
${CPACK_SOURCE_IGNORE_FILES}
)
IF (MACOS)
SET(CPACK_GENERATOR "Bundle")
ENDIF()
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
SET(CPACK_DEBSOURCE_PACKAGE_FILE_NAME "lib${CMAKE_PROJECT_NAME}_${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}.orig")
INCLUDE(CPack)
#This adds the 'dist' target
ADD_CUSTOM_TARGET(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
# 'clean' is not (yet) a first class target. However, we need to clean the directories before building the sources:
IF("${CMAKE_GENERATOR}" MATCHES "Make")
ADD_CUSTOM_TARGET(make_clean
COMMAND ${CMAKE_MAKE_PROGRAM} clean
WORKING_DIRECTORY ${CMAKE_CURRENT_DIR}
)
ADD_DEPENDENCIES(dist make_clean)
ENDIF()
IF(NOT NO_DEP_CHECK)
IF (UNIX)
#This creates deb packages:
ADD_CUSTOM_TARGET(origdist COMMAND cp ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz ../${CPACK_DEBSOURCE_PACKAGE_FILE_NAME}.tar.gz)
ADD_DEPENDENCIES(origdist dist)
ADD_CUSTOM_TARGET(deb dpkg-buildpackage -uc -us -i${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz)
ADD_DEPENDENCIES(deb origdist)
#This creates rpm packages:
ADD_CUSTOM_TARGET(rpm rpmbuild -ta ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz)
ADD_DEPENDENCIES(rpm dist)
ENDIF()
ENDIF(NOT NO_DEP_CHECK)
|