| ### cmake file for building sais Package ### |
| cmake_minimum_required(VERSION 2.4.2) |
| set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") |
| include(AppendCompilerFlags) |
| |
| ## SVN revision ## |
| set(SVN_REVISION "") |
| if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn") |
| execute_process(COMMAND svn info --xml |
| WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" |
| OUTPUT_VARIABLE SVN_INFO ERROR_QUIET) |
| if(SVN_INFO) |
| string(REGEX MATCH "<entry[^>]+" SVN_REVISION "${SVN_INFO}") |
| string(REGEX REPLACE "^.*revision=\"([0-9]+)\".*$" "\\1" SVN_REVISION "${SVN_REVISION}") |
| endif(SVN_INFO) |
| endif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn") |
| |
| ## Project information ## |
| project(libdivsufsort C) |
| file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" PROJECT_VERSION_FULL) |
| string(REGEX REPLACE "[\n\r]" "" PROJECT_VERSION_FULL "${PROJECT_VERSION_FULL}") |
| string(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+$" "\\1" PROJECT_VERSION_MAJOR "${PROJECT_VERSION_FULL}") |
| string(REGEX REPLACE "^[0-9]+\\.([0-9]+)\\.[0-9]+$" "\\1" PROJECT_VERSION_MINOR "${PROJECT_VERSION_FULL}") |
| string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+)$" "\\1" PROJECT_VERSION_PATCH "${PROJECT_VERSION_FULL}") |
| set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") |
| math(EXPR LIBRARY_VERSION_MAJOR "1 + ${PROJECT_VERSION_MAJOR}") |
| set(LIBRARY_VERSION_MINOR "${PROJECT_VERSION_MINOR}") |
| set(LIBRARY_VERSION_PATCH "${PROJECT_VERSION_PATCH}") |
| set(LIBRARY_VERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}") |
| set(LIBRARY_VERSION_FULL "${LIBRARY_VERSION}.${LIBRARY_VERSION_PATCH}") |
| if(SVN_REVISION) |
| set(PROJECT_VERSION_FULL "${PROJECT_VERSION_FULL}-svn-r${SVN_REVISION}") |
| endif(SVN_REVISION) |
| |
| ## Project options ## |
| option(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON) |
| option(BUILD_EXAMPLES "Build examples" ON) |
| |
| ## Build type ## |
| if(NOT CMAKE_BUILD_TYPE) |
| set(CMAKE_BUILD_TYPE "Release") |
| elseif(CMAKE_BUILD_TYPE STREQUAL "Debug") |
| set(CMAKE_VERBOSE_MAKEFILE ON) |
| endif(NOT CMAKE_BUILD_TYPE) |
| |
| ## Compiler options ## |
| if(MSVC) |
| append_c_compiler_flags("/W4" "VC" CMAKE_C_FLAGS) |
| append_c_compiler_flags("/Oi;/Ot;/Ox;/Oy" "VC" CMAKE_C_FLAGS_RELEASE) |
| elseif(BORLAND) |
| append_c_compiler_flags("-w" "BCC" CMAKE_C_FLAGS) |
| append_c_compiler_flags("-Oi;-Og;-Os;-Ov;-Ox" "BCC" CMAKE_C_FLAGS_RELEASE) |
| else(MSVC) |
| if(CMAKE_COMPILER_IS_GNUCC) |
| append_c_compiler_flags("-Wall" "GCC" CMAKE_C_FLAGS) |
| append_c_compiler_flags("-fomit-frame-pointer" "GCC" CMAKE_C_FLAGS_RELEASE) |
| else(CMAKE_COMPILER_IS_GNUCC) |
| append_c_compiler_flags("-Wall" "UNKNOWN" CMAKE_C_FLAGS) |
| append_c_compiler_flags("-fomit-frame-pointer" "UNKNOWN" CMAKE_C_FLAGS_RELEASE) |
| endif(CMAKE_COMPILER_IS_GNUCC) |
| endif(MSVC) |
| |
| ## Add definitions ## |
| add_definitions(-DHAVE_CONFIG_H=1 -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS) |
| |
| ## Add subdirectories ## |
| add_subdirectory(include) |
| add_subdirectory(lib) |
| if(BUILD_EXAMPLES) |
| add_subdirectory(examples) |
| endif(BUILD_EXAMPLES) |
| |
| ## Add 'uninstall' target ## |
| CONFIGURE_FILE( |
| "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/cmake_uninstall.cmake.in" |
| "${CMAKE_CURRENT_BINARY_DIR}/CMakeModules/cmake_uninstall.cmake" |
| IMMEDIATE @ONLY) |
| ADD_CUSTOM_TARGET(uninstall |
| "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/CMakeModules/cmake_uninstall.cmake") |