blob: 7859943934586cd7c4932c2d4062ec7e030e7f52 [file] [log] [blame]
yuta.256361469a2008-07-10 20:35:01 +00001### cmake file for building libdivsufsort Package ###
yuta.2564b612dd2011-12-12 15:28:34 +00002cmake_minimum_required(VERSION 2.4.4)
yuta.2560b0d08b2008-07-03 11:34:07 +00003set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
4include(AppendCompilerFlags)
5
yuta.2560b0d08b2008-07-03 11:34:07 +00006## Project information ##
7project(libdivsufsort C)
yuta.256361469a2008-07-10 20:35:01 +00008set(PROJECT_VENDOR "Yuta Mori")
9set(PROJECT_CONTACT "yuta.256@gmail.com")
Yuta Mori735637c2015-03-21 02:04:01 +090010set(PROJECT_URL "https://github.com/y-256/libdivsufsort")
yuta.256361469a2008-07-10 20:35:01 +000011set(PROJECT_DESCRIPTION "A lightweight suffix sorting library")
yuta.25679858ed2015-02-19 13:38:17 +000012include(VERSION.cmake)
yuta.2560b0d08b2008-07-03 11:34:07 +000013
yuta.256361469a2008-07-10 20:35:01 +000014## CPack configuration ##
15set(CPACK_GENERATOR "TGZ;TBZ2;ZIP")
16set(CPACK_SOURCE_GENERATOR "TGZ;TBZ2;ZIP")
17include(ProjectCPack)
18
yuta.2560b0d08b2008-07-03 11:34:07 +000019## Project options ##
20option(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON)
21option(BUILD_EXAMPLES "Build examples" ON)
yuta.256a844abd2008-07-27 21:14:31 +000022option(BUILD_DIVSUFSORT64 "Build libdivsufsort64" OFF)
yuta.256361469a2008-07-10 20:35:01 +000023option(USE_OPENMP "Use OpenMP for parallelization" OFF)
yuta.2567ce18b02008-07-12 20:11:47 +000024option(WITH_LFS "Enable Large File Support" ON)
yuta.2560b0d08b2008-07-03 11:34:07 +000025
yuta.2564b612dd2011-12-12 15:28:34 +000026## Installation directories ##
27set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32 or 64)")
28
29set(CMAKE_INSTALL_RUNTIMEDIR "" CACHE PATH "Specify the output directory for dll runtimes (default is bin)")
30if(NOT CMAKE_INSTALL_RUNTIMEDIR)
31 set(CMAKE_INSTALL_RUNTIMEDIR "${CMAKE_INSTALL_PREFIX}/bin")
32endif(NOT CMAKE_INSTALL_RUNTIMEDIR)
33
34set(CMAKE_INSTALL_LIBDIR "" CACHE PATH "Specify the output directory for libraries (default is lib)")
35if(NOT CMAKE_INSTALL_LIBDIR)
36 set(CMAKE_INSTALL_LIBDIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
37endif(NOT CMAKE_INSTALL_LIBDIR)
38
39set(CMAKE_INSTALL_INCLUDEDIR "" CACHE PATH "Specify the output directory for header files (default is include)")
40if(NOT CMAKE_INSTALL_INCLUDEDIR)
41 set(CMAKE_INSTALL_INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include")
42endif(NOT CMAKE_INSTALL_INCLUDEDIR)
43
44set(CMAKE_INSTALL_PKGCONFIGDIR "" CACHE PATH "Specify the output directory for pkgconfig files (default is lib/pkgconfig)")
45if(NOT CMAKE_INSTALL_PKGCONFIGDIR)
46 set(CMAKE_INSTALL_PKGCONFIGDIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
47endif(NOT CMAKE_INSTALL_PKGCONFIGDIR)
48
yuta.2560b0d08b2008-07-03 11:34:07 +000049## Build type ##
50if(NOT CMAKE_BUILD_TYPE)
51 set(CMAKE_BUILD_TYPE "Release")
52elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
53 set(CMAKE_VERBOSE_MAKEFILE ON)
54endif(NOT CMAKE_BUILD_TYPE)
55
56## Compiler options ##
57if(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.256361469a2008-07-10 20:35:01 +000060 if(USE_OPENMP)
61 append_c_compiler_flags("/openmp" "VC" CMAKE_C_FLAGS)
62 endif(USE_OPENMP)
yuta.2560b0d08b2008-07-03 11:34:07 +000063elseif(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)
66else(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.256361469a2008-07-10 20:35:01 +000070 if(USE_OPENMP)
71 append_c_compiler_flags("-fopenmp" "GCC" CMAKE_C_FLAGS)
72 endif(USE_OPENMP)
yuta.2560b0d08b2008-07-03 11:34:07 +000073 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.256361469a2008-07-10 20:35:01 +000076 if(USE_OPENMP)
77 append_c_compiler_flags("-fopenmp;-openmp;-omp" "UNKNOWN" CMAKE_C_FLAGS)
78 endif(USE_OPENMP)
yuta.2560b0d08b2008-07-03 11:34:07 +000079 endif(CMAKE_COMPILER_IS_GNUCC)
80endif(MSVC)
81
82## Add definitions ##
83add_definitions(-DHAVE_CONFIG_H=1 -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS)
84
85## Add subdirectories ##
yuta.256361469a2008-07-10 20:35:01 +000086add_subdirectory(pkgconfig)
yuta.2560b0d08b2008-07-03 11:34:07 +000087add_subdirectory(include)
88add_subdirectory(lib)
89if(BUILD_EXAMPLES)
90 add_subdirectory(examples)
91endif(BUILD_EXAMPLES)
92
93## Add 'uninstall' target ##
94CONFIGURE_FILE(
95 "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/cmake_uninstall.cmake.in"
96 "${CMAKE_CURRENT_BINARY_DIR}/CMakeModules/cmake_uninstall.cmake"
97 IMMEDIATE @ONLY)
98ADD_CUSTOM_TARGET(uninstall
99 "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/CMakeModules/cmake_uninstall.cmake")