# CMake script for Bio++ Sequence library # Author: Sylvain Gaillard and Julien Dutheil # Created: 20/08/2009 # Global parameters CMAKE_MINIMUM_REQUIRED(VERSION 2.6) PROJECT(bpp-seq CXX) IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE) ENDIF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_CXX_FLAGS "-Wall -Weffc++ -Wshadow") IF(NOT NO_VIRTUAL_COV) SET(NO_VIRTUAL_COV FALSE CACHE BOOL "Disable covariant return type with virtual inheritance, for compilers that do not support it." FORCE) ENDIF(NOT NO_VIRTUAL_COV) IF(NO_VIRTUAL_COV) MESSAGE("-- Covariant return with virtual inheritance disabled.") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNO_VIRTUAL_COV=1") ENDIF(NO_VIRTUAL_COV) 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(BPPSEQ_VERSION_CURRENT "10") SET(BPPSEQ_VERSION_REVISION "2") SET(BPPSEQ_VERSION_AGE "1") # Effective version number computation math(EXPR BPPSEQ_VERSION_MAJOR "${BPPSEQ_VERSION_CURRENT} - ${BPPSEQ_VERSION_AGE}") SET(BPPSEQ_VERSION_MINOR ${BPPSEQ_VERSION_AGE}) SET(BPPSEQ_VERSION_PATCH ${BPPSEQ_VERSION_REVISION}) SET(BPPSEQ_VERSION "${BPPSEQ_VERSION_MAJOR}.${BPPSEQ_VERSION_MINOR}.${BPPSEQ_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) 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-core Bpp/Clonable.h) # Subdirectories ADD_SUBDIRECTORY(src) # Doxygen FIND_PACKAGE(Doxygen) IF (DOXYGEN_FOUND) ADD_CUSTOM_TARGET (apidoc ${DOXYGEN_EXECUTABLE} Doxyfile) ADD_CUSTOM_TARGET (apidoc-stable cp Doxyfile Doxyfile-stable COMMAND echo "HTML_HEADER=header.html" >> Doxyfile-stable COMMAND ${DOXYGEN_EXECUTABLE} Doxyfile-stable ) ENDIF (DOXYGEN_FOUND) ENDIF(NO_DEP_CHECK) # Packager SET(CPACK_PACKAGE_NAME "libbpp-seq") SET(CPACK_PACKAGE_VENDOR "Bio++ Development Team") SET(CPACK_PACKAGE_VERSION "2.0.3") SET(CPACK_PACKAGE_VERSION_MAJOR "2") SET(CPACK_PACKAGE_VERSION_MINOR "0") SET(CPACK_PACKAGE_VERSION_PATCH "3") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The Bio++ Sequence 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" "Seq.tag" "Testing" "build-stamp" "genIncludes.py" "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) 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() SET(CTEST_UPDATE_TYPE git) ENABLE_TESTING() INCLUDE(CTest) IF (BUILD_TESTING) ADD_SUBDIRECTORY(test) ENDIF(BUILD_TESTING) ENDIF(NOT NO_DEP_CHECK)