From 9b60a39671bfc8a7b46316337cc60796df4b591e Mon Sep 17 00:00:00 2001 From: "L. E. Segovia" Date: Wed, 22 Jun 2022 21:11:51 -0300 Subject: [PATCH] Add CMake toolchain --- CMakeLists.txt | 71 +++++++++++++++++++++++++++++++++++++++++++ cmake/PkgConfig.cmake | 46 ++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 cmake/PkgConfig.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b1f769c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,71 @@ +# SPDX-FileCopyrightText: 2022 Microsoft Corporation +# SPDX-FileCopyrightText: 2022 L. E. Segovia +# SPDX-License-Ref: MIT + +cmake_minimum_required(VERSION 3.8.0) + +project(libunibreak VERSION 5.0 LANGUAGES C) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") + +include(GNUInstallDirs) + +set(libunibreak_srcs + src/linebreak.c + src/linebreakdata.c + src/linebreakdef.c + src/wordbreak.c + src/wordbreakdata.c + src/graphemebreak.c + src/graphemebreakdata.c + src/emojidef.c + src/unibreakbase.c + src/unibreakdef.c +) + +include_directories(src) + +add_library(unibreak STATIC ${libunibreak_srcs}) + +set_target_properties(unibreak PROPERTIES POSITION_INDEPENDENT_CODE ON) + +include(PkgConfig) + +install( + TARGETS unibreak + EXPORT libunibreak + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) + +if(NOT DISABLE_INSTALL_HEADERS) + install( + FILES + src/emojidef.h + src/graphemebreak.h + src/graphemebreakdef.h + src/linebreak.h + src/linebreakdef.h + src/test_skips.h + src/unibreakbase.h + src/unibreakdef.h + src/wordbreak.h + src/wordbreakdef.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ) +endif() + +install(EXPORT libunibreak + NAMESPACE libunibreak:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/unibreak +) + +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + VERSION ${PACKAGE_VERSION} + COMPATIBILITY AnyNewerVersion) + +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/unibreak) diff --git a/cmake/PkgConfig.cmake b/cmake/PkgConfig.cmake new file mode 100644 index 0000000..1021d79 --- /dev/null +++ b/cmake/PkgConfig.cmake @@ -0,0 +1,46 @@ +# pkg-config support +# +# Copyright © 2015 Open Microscopy Environment / University of Dundee +# Copyright © 2021 Roger Leigh +# Copyright © 2022 L. E. Segovia +# Written by Roger Leigh +# +# Permission to use, copy, modify, distribute, and sell this software and +# its documentation for any purpose is hereby granted without fee, provided +# that (i) the above copyright notices and this permission notice appear in +# all copies of the software and related documentation, and (ii) the names of +# Sam Leffler and Silicon Graphics may not be used in any advertising or +# publicity relating to the software without the specific, prior written +# permission of Sam Leffler and Silicon Graphics. +# +# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, +# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY +# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. +# +# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR +# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, +# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF +# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +# OF THIS SOFTWARE. + +# Generate pkg-config file +set(prefix "${CMAKE_INSTALL_PREFIX}") +set(exec_prefix "\${prefix}") +if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}") + set(libdir "${CMAKE_INSTALL_LIBDIR}") +else() + set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") +endif() +if(IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}") + set(includedir "${CMAKE_INSTALL_INCLUDEDIR}") +else() + set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") +endif() +set(VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libunibreak.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/libunibreak.pc @ONLY) + +# Install pkg-config file +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libunibreak.pc + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") -- 2.37.3