yuta.256 | 361469a | 2008-07-10 20:35:01 +0000 | [diff] [blame] | 1 | ### cmake file for building libdivsufsort Package ### |
yuta.256 | 4b612dd | 2011-12-12 15:28:34 +0000 | [diff] [blame] | 2 | cmake_minimum_required(VERSION 2.4.4) |
yuta.256 | 0b0d08b | 2008-07-03 11:34:07 +0000 | [diff] [blame] | 3 | set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") |
| 4 | include(AppendCompilerFlags) |
| 5 | |
yuta.256 | 0b0d08b | 2008-07-03 11:34:07 +0000 | [diff] [blame] | 6 | ## Project information ## |
| 7 | project(libdivsufsort C) |
yuta.256 | 361469a | 2008-07-10 20:35:01 +0000 | [diff] [blame] | 8 | set(PROJECT_VENDOR "Yuta Mori") |
| 9 | set(PROJECT_CONTACT "yuta.256@gmail.com") |
Yuta Mori | 735637c | 2015-03-21 02:04:01 +0900 | [diff] [blame] | 10 | set(PROJECT_URL "https://github.com/y-256/libdivsufsort") |
yuta.256 | 361469a | 2008-07-10 20:35:01 +0000 | [diff] [blame] | 11 | set(PROJECT_DESCRIPTION "A lightweight suffix sorting library") |
yuta.256 | 79858ed | 2015-02-19 13:38:17 +0000 | [diff] [blame] | 12 | include(VERSION.cmake) |
yuta.256 | 0b0d08b | 2008-07-03 11:34:07 +0000 | [diff] [blame] | 13 | |
yuta.256 | 361469a | 2008-07-10 20:35:01 +0000 | [diff] [blame] | 14 | ## CPack configuration ## |
| 15 | set(CPACK_GENERATOR "TGZ;TBZ2;ZIP") |
| 16 | set(CPACK_SOURCE_GENERATOR "TGZ;TBZ2;ZIP") |
| 17 | include(ProjectCPack) |
| 18 | |
yuta.256 | 0b0d08b | 2008-07-03 11:34:07 +0000 | [diff] [blame] | 19 | ## Project options ## |
| 20 | option(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON) |
| 21 | option(BUILD_EXAMPLES "Build examples" ON) |
yuta.256 | a844abd | 2008-07-27 21:14:31 +0000 | [diff] [blame] | 22 | option(BUILD_DIVSUFSORT64 "Build libdivsufsort64" OFF) |
yuta.256 | 361469a | 2008-07-10 20:35:01 +0000 | [diff] [blame] | 23 | option(USE_OPENMP "Use OpenMP for parallelization" OFF) |
yuta.256 | 7ce18b0 | 2008-07-12 20:11:47 +0000 | [diff] [blame] | 24 | option(WITH_LFS "Enable Large File Support" ON) |
yuta.256 | 0b0d08b | 2008-07-03 11:34:07 +0000 | [diff] [blame] | 25 | |
yuta.256 | 4b612dd | 2011-12-12 15:28:34 +0000 | [diff] [blame] | 26 | ## Installation directories ## |
| 27 | set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32 or 64)") |
| 28 | |
| 29 | set(CMAKE_INSTALL_RUNTIMEDIR "" CACHE PATH "Specify the output directory for dll runtimes (default is bin)") |
| 30 | if(NOT CMAKE_INSTALL_RUNTIMEDIR) |
| 31 | set(CMAKE_INSTALL_RUNTIMEDIR "${CMAKE_INSTALL_PREFIX}/bin") |
| 32 | endif(NOT CMAKE_INSTALL_RUNTIMEDIR) |
| 33 | |
| 34 | set(CMAKE_INSTALL_LIBDIR "" CACHE PATH "Specify the output directory for libraries (default is lib)") |
| 35 | if(NOT CMAKE_INSTALL_LIBDIR) |
| 36 | set(CMAKE_INSTALL_LIBDIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}") |
| 37 | endif(NOT CMAKE_INSTALL_LIBDIR) |
| 38 | |
| 39 | set(CMAKE_INSTALL_INCLUDEDIR "" CACHE PATH "Specify the output directory for header files (default is include)") |
| 40 | if(NOT CMAKE_INSTALL_INCLUDEDIR) |
| 41 | set(CMAKE_INSTALL_INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include") |
| 42 | endif(NOT CMAKE_INSTALL_INCLUDEDIR) |
| 43 | |
| 44 | set(CMAKE_INSTALL_PKGCONFIGDIR "" CACHE PATH "Specify the output directory for pkgconfig files (default is lib/pkgconfig)") |
| 45 | if(NOT CMAKE_INSTALL_PKGCONFIGDIR) |
| 46 | set(CMAKE_INSTALL_PKGCONFIGDIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig") |
| 47 | endif(NOT CMAKE_INSTALL_PKGCONFIGDIR) |
| 48 | |
yuta.256 | 0b0d08b | 2008-07-03 11:34:07 +0000 | [diff] [blame] | 49 | ## Build type ## |
| 50 | if(NOT CMAKE_BUILD_TYPE) |
| 51 | set(CMAKE_BUILD_TYPE "Release") |
| 52 | elseif(CMAKE_BUILD_TYPE STREQUAL "Debug") |
| 53 | set(CMAKE_VERBOSE_MAKEFILE ON) |
| 54 | endif(NOT CMAKE_BUILD_TYPE) |
| 55 | |
| 56 | ## Compiler options ## |
| 57 | if(MSVC) |
| 58 | append_c_compiler_flags("/W4" "VC" CMAKE_C_FLAGS) |
| 59 | append_c_compiler_flags("/Oi;/Ot;/Ox;/Oy" "VC" CMAKE_C_FLAGS_RELEASE) |
yuta.256 | 361469a | 2008-07-10 20:35:01 +0000 | [diff] [blame] | 60 | if(USE_OPENMP) |
| 61 | append_c_compiler_flags("/openmp" "VC" CMAKE_C_FLAGS) |
| 62 | endif(USE_OPENMP) |
yuta.256 | 0b0d08b | 2008-07-03 11:34:07 +0000 | [diff] [blame] | 63 | elseif(BORLAND) |
| 64 | append_c_compiler_flags("-w" "BCC" CMAKE_C_FLAGS) |
| 65 | append_c_compiler_flags("-Oi;-Og;-Os;-Ov;-Ox" "BCC" CMAKE_C_FLAGS_RELEASE) |
| 66 | else(MSVC) |
| 67 | if(CMAKE_COMPILER_IS_GNUCC) |
| 68 | append_c_compiler_flags("-Wall" "GCC" CMAKE_C_FLAGS) |
| 69 | append_c_compiler_flags("-fomit-frame-pointer" "GCC" CMAKE_C_FLAGS_RELEASE) |
yuta.256 | 361469a | 2008-07-10 20:35:01 +0000 | [diff] [blame] | 70 | if(USE_OPENMP) |
| 71 | append_c_compiler_flags("-fopenmp" "GCC" CMAKE_C_FLAGS) |
| 72 | endif(USE_OPENMP) |
yuta.256 | 0b0d08b | 2008-07-03 11:34:07 +0000 | [diff] [blame] | 73 | else(CMAKE_COMPILER_IS_GNUCC) |
| 74 | append_c_compiler_flags("-Wall" "UNKNOWN" CMAKE_C_FLAGS) |
| 75 | append_c_compiler_flags("-fomit-frame-pointer" "UNKNOWN" CMAKE_C_FLAGS_RELEASE) |
yuta.256 | 361469a | 2008-07-10 20:35:01 +0000 | [diff] [blame] | 76 | if(USE_OPENMP) |
| 77 | append_c_compiler_flags("-fopenmp;-openmp;-omp" "UNKNOWN" CMAKE_C_FLAGS) |
| 78 | endif(USE_OPENMP) |
yuta.256 | 0b0d08b | 2008-07-03 11:34:07 +0000 | [diff] [blame] | 79 | endif(CMAKE_COMPILER_IS_GNUCC) |
| 80 | endif(MSVC) |
| 81 | |
| 82 | ## Add definitions ## |
| 83 | add_definitions(-DHAVE_CONFIG_H=1 -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS) |
| 84 | |
| 85 | ## Add subdirectories ## |
yuta.256 | 361469a | 2008-07-10 20:35:01 +0000 | [diff] [blame] | 86 | add_subdirectory(pkgconfig) |
yuta.256 | 0b0d08b | 2008-07-03 11:34:07 +0000 | [diff] [blame] | 87 | add_subdirectory(include) |
| 88 | add_subdirectory(lib) |
| 89 | if(BUILD_EXAMPLES) |
| 90 | add_subdirectory(examples) |
| 91 | endif(BUILD_EXAMPLES) |
| 92 | |
| 93 | ## Add 'uninstall' target ## |
| 94 | CONFIGURE_FILE( |
| 95 | "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/cmake_uninstall.cmake.in" |
| 96 | "${CMAKE_CURRENT_BINARY_DIR}/CMakeModules/cmake_uninstall.cmake" |
| 97 | IMMEDIATE @ONLY) |
| 98 | ADD_CUSTOM_TARGET(uninstall |
| 99 | "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/CMakeModules/cmake_uninstall.cmake") |