1361469ad541e72994cacb88e4e0f98ea74d23735yuta.### cmake file for building libdivsufsort Package ###
24b612dd9f9fa2ad7953815331ced1183112ed42eyuta.cmake_minimum_required(VERSION 2.4.4)
30b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
40b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.include(AppendCompilerFlags)
50b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.
60b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.## Project information ##
70b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.project(libdivsufsort C)
8361469ad541e72994cacb88e4e0f98ea74d23735yuta.set(PROJECT_VENDOR "Yuta Mori")
9361469ad541e72994cacb88e4e0f98ea74d23735yuta.set(PROJECT_CONTACT "yuta.256@gmail.com")
10735637c650fd24b2a84ad4f5827ff75b603f05bfYuta Moriset(PROJECT_URL "https://github.com/y-256/libdivsufsort")
11361469ad541e72994cacb88e4e0f98ea74d23735yuta.set(PROJECT_DESCRIPTION "A lightweight suffix sorting library")
1279858ed9e32ea21f007d75883183e6a00b39a492yuta.include(VERSION.cmake)
130b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.
14361469ad541e72994cacb88e4e0f98ea74d23735yuta.## CPack configuration ##
15361469ad541e72994cacb88e4e0f98ea74d23735yuta.set(CPACK_GENERATOR "TGZ;TBZ2;ZIP")
16361469ad541e72994cacb88e4e0f98ea74d23735yuta.set(CPACK_SOURCE_GENERATOR "TGZ;TBZ2;ZIP")
17361469ad541e72994cacb88e4e0f98ea74d23735yuta.include(ProjectCPack)
18361469ad541e72994cacb88e4e0f98ea74d23735yuta.
190b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.## Project options ##
200b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.option(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON)
210b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.option(BUILD_EXAMPLES "Build examples" ON)
22a844abd2925b6820947c8887e314a44435b884dayuta.option(BUILD_DIVSUFSORT64 "Build libdivsufsort64" OFF)
23361469ad541e72994cacb88e4e0f98ea74d23735yuta.option(USE_OPENMP "Use OpenMP for parallelization" OFF)
247ce18b071a5fd6a76570bcc38e17b7f7dffe00f4yuta.option(WITH_LFS "Enable Large File Support" ON)
250b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.
264b612dd9f9fa2ad7953815331ced1183112ed42eyuta.## Installation directories ##
274b612dd9f9fa2ad7953815331ced1183112ed42eyuta.set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32 or 64)")
284b612dd9f9fa2ad7953815331ced1183112ed42eyuta.
294b612dd9f9fa2ad7953815331ced1183112ed42eyuta.set(CMAKE_INSTALL_RUNTIMEDIR "" CACHE PATH "Specify the output directory for dll runtimes (default is bin)")
304b612dd9f9fa2ad7953815331ced1183112ed42eyuta.if(NOT CMAKE_INSTALL_RUNTIMEDIR)
314b612dd9f9fa2ad7953815331ced1183112ed42eyuta.  set(CMAKE_INSTALL_RUNTIMEDIR "${CMAKE_INSTALL_PREFIX}/bin")
324b612dd9f9fa2ad7953815331ced1183112ed42eyuta.endif(NOT CMAKE_INSTALL_RUNTIMEDIR)
334b612dd9f9fa2ad7953815331ced1183112ed42eyuta.
344b612dd9f9fa2ad7953815331ced1183112ed42eyuta.set(CMAKE_INSTALL_LIBDIR "" CACHE PATH "Specify the output directory for libraries (default is lib)")
354b612dd9f9fa2ad7953815331ced1183112ed42eyuta.if(NOT CMAKE_INSTALL_LIBDIR)
364b612dd9f9fa2ad7953815331ced1183112ed42eyuta.  set(CMAKE_INSTALL_LIBDIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
374b612dd9f9fa2ad7953815331ced1183112ed42eyuta.endif(NOT CMAKE_INSTALL_LIBDIR)
384b612dd9f9fa2ad7953815331ced1183112ed42eyuta.
394b612dd9f9fa2ad7953815331ced1183112ed42eyuta.set(CMAKE_INSTALL_INCLUDEDIR "" CACHE PATH "Specify the output directory for header files (default is include)")
404b612dd9f9fa2ad7953815331ced1183112ed42eyuta.if(NOT CMAKE_INSTALL_INCLUDEDIR)
414b612dd9f9fa2ad7953815331ced1183112ed42eyuta.  set(CMAKE_INSTALL_INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include")
424b612dd9f9fa2ad7953815331ced1183112ed42eyuta.endif(NOT CMAKE_INSTALL_INCLUDEDIR)
434b612dd9f9fa2ad7953815331ced1183112ed42eyuta.
444b612dd9f9fa2ad7953815331ced1183112ed42eyuta.set(CMAKE_INSTALL_PKGCONFIGDIR "" CACHE PATH "Specify the output directory for pkgconfig files (default is lib/pkgconfig)")
454b612dd9f9fa2ad7953815331ced1183112ed42eyuta.if(NOT CMAKE_INSTALL_PKGCONFIGDIR)
464b612dd9f9fa2ad7953815331ced1183112ed42eyuta.  set(CMAKE_INSTALL_PKGCONFIGDIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
474b612dd9f9fa2ad7953815331ced1183112ed42eyuta.endif(NOT CMAKE_INSTALL_PKGCONFIGDIR)
484b612dd9f9fa2ad7953815331ced1183112ed42eyuta.
490b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.## Build type ##
500b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.if(NOT CMAKE_BUILD_TYPE)
510b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  set(CMAKE_BUILD_TYPE "Release")
520b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
530b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  set(CMAKE_VERBOSE_MAKEFILE ON)
540b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.endif(NOT CMAKE_BUILD_TYPE)
550b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.
560b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.## Compiler options ##
570b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.if(MSVC)
580b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  append_c_compiler_flags("/W4" "VC" CMAKE_C_FLAGS)
590b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  append_c_compiler_flags("/Oi;/Ot;/Ox;/Oy" "VC" CMAKE_C_FLAGS_RELEASE)
60361469ad541e72994cacb88e4e0f98ea74d23735yuta.  if(USE_OPENMP)
61361469ad541e72994cacb88e4e0f98ea74d23735yuta.    append_c_compiler_flags("/openmp" "VC" CMAKE_C_FLAGS)
62361469ad541e72994cacb88e4e0f98ea74d23735yuta.  endif(USE_OPENMP)
630b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.elseif(BORLAND)
640b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  append_c_compiler_flags("-w" "BCC" CMAKE_C_FLAGS)
650b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  append_c_compiler_flags("-Oi;-Og;-Os;-Ov;-Ox" "BCC" CMAKE_C_FLAGS_RELEASE)
660b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.else(MSVC)
670b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  if(CMAKE_COMPILER_IS_GNUCC)
680b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.    append_c_compiler_flags("-Wall" "GCC" CMAKE_C_FLAGS)
690b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.    append_c_compiler_flags("-fomit-frame-pointer" "GCC" CMAKE_C_FLAGS_RELEASE)
70361469ad541e72994cacb88e4e0f98ea74d23735yuta.    if(USE_OPENMP)
71361469ad541e72994cacb88e4e0f98ea74d23735yuta.      append_c_compiler_flags("-fopenmp" "GCC" CMAKE_C_FLAGS)
72361469ad541e72994cacb88e4e0f98ea74d23735yuta.    endif(USE_OPENMP)
730b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  else(CMAKE_COMPILER_IS_GNUCC)
740b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.    append_c_compiler_flags("-Wall" "UNKNOWN" CMAKE_C_FLAGS)
750b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.    append_c_compiler_flags("-fomit-frame-pointer" "UNKNOWN" CMAKE_C_FLAGS_RELEASE)
76361469ad541e72994cacb88e4e0f98ea74d23735yuta.    if(USE_OPENMP)
77361469ad541e72994cacb88e4e0f98ea74d23735yuta.      append_c_compiler_flags("-fopenmp;-openmp;-omp" "UNKNOWN" CMAKE_C_FLAGS)
78361469ad541e72994cacb88e4e0f98ea74d23735yuta.    endif(USE_OPENMP)
790b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  endif(CMAKE_COMPILER_IS_GNUCC)
800b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.endif(MSVC)
810b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.
820b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.## Add definitions ##
830b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.add_definitions(-DHAVE_CONFIG_H=1 -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS)
840b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.
850b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.## Add subdirectories ##
86361469ad541e72994cacb88e4e0f98ea74d23735yuta.add_subdirectory(pkgconfig)
870b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.add_subdirectory(include)
880b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.add_subdirectory(lib)
890b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.if(BUILD_EXAMPLES)
900b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  add_subdirectory(examples)
910b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.endif(BUILD_EXAMPLES)
920b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.
930b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.## Add 'uninstall' target ##
940b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.CONFIGURE_FILE(
950b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/cmake_uninstall.cmake.in"
960b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  "${CMAKE_CURRENT_BINARY_DIR}/CMakeModules/cmake_uninstall.cmake"
970b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  IMMEDIATE @ONLY)
980b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.ADD_CUSTOM_TARGET(uninstall
990b0d08bc414f9152b0f7afac36b56b4b30e2679fyuta.  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/CMakeModules/cmake_uninstall.cmake")
100