| cmake_minimum_required (VERSION 3.5) |
| project (utf8_range C CXX) |
| |
| # option() honor variables |
| if (POLICY CMP0077) |
| cmake_policy(SET CMP0077 NEW) |
| endif (POLICY CMP0077) |
| |
| option (utf8_range_ENABLE_TESTS "Build test suite" ON) |
| option (utf8_range_ENABLE_INSTALL "Configure installation" ON) |
| |
| ## |
| # Create the lightweight C library |
| add_library (utf8_range STATIC |
| naive.c |
| range2-neon.c |
| range2-sse.c |
| ) |
| |
| ## |
| # A heavier-weight C++ wrapper that supports Abseil. |
| add_library (utf8_validity STATIC utf8_validity.cc) |
| |
| # Load Abseil dependency. |
| if (NOT TARGET absl::strings) |
| if (NOT ABSL_ROOT_DIR) |
| find_package(absl REQUIRED CONFIG) |
| else () |
| set(ABSL_ENABLE_INSTALL ${utf8_range_ENABLE_INSTALL}) |
| set(ABSL_PROPAGATE_CXX_STD ON) |
| add_subdirectory(${ABSL_ROOT_DIR} third_party/abseil-cpp) |
| endif () |
| endif () |
| target_link_libraries(utf8_validity PUBLIC absl::strings) |
| |
| # Configure tests. |
| if (utf8_range_ENABLE_TESTS) |
| enable_testing() |
| |
| find_package(GTest REQUIRED) |
| |
| add_executable(tests utf8_validity_test.cc) |
| target_link_libraries(tests utf8_validity GTest::gmock_main) |
| |
| add_test(NAME utf8_validity_test COMMAND tests) |
| |
| add_custom_target(check |
| COMMAND tests |
| DEPENDS tests |
| ) |
| endif () |
| |
| # Configure installation. |
| if (utf8_range_ENABLE_INSTALL) |
| include(CMakePackageConfigHelpers) |
| include(GNUInstallDirs) |
| |
| install(EXPORT ${PROJECT_NAME}-targets |
| DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" |
| NAMESPACE utf8_range:: |
| ) |
| install(TARGETS utf8_validity utf8_range EXPORT ${PROJECT_NAME}-targets |
| RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} |
| LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} |
| ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} |
| ) |
| |
| configure_package_config_file( |
| cmake/${PROJECT_NAME}-config.cmake.in |
| "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake" |
| INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" |
| ) |
| install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake" |
| DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" |
| ) |
| |
| # Install public headers explicitly. |
| install(FILES utf8_range.h utf8_validity.h |
| DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} |
| ) |
| endif () |