Mercurial > libbuf
diff CMakeLists.txt @ 29:5cbb723ad2a9
cmake: initial support
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 06 Feb 2022 17:26:18 +0100 |
parents | |
children | 5493466d6e56 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CMakeLists.txt Sun Feb 06 17:26:18 2022 +0100 @@ -0,0 +1,90 @@ +# +# CMakeLists.txt -- basic CMake build for libbuf +# +# Copyright (c) 2013-2022 David Demelier <markand@malikania.fr> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +cmake_minimum_required(VERSION 3.20) +project( + libbuf + VERSION "1.0.0" + DESCRIPTION "Minimalist dynamic string library for C99" + HOMEPAGE_URL "http://projects.malikania.fr/libbuf" + LANGUAGES C +) + +include(CMakePackageConfigHelpers) +include(GNUInstallDirs) + +add_library(libbuf-static STATIC buf.c buf.h) +target_include_directories(libbuf-static PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) +install( + TARGETS libbuf-static + EXPORT buf-targets + ARCHIVE DESTINATION lib +) + +if (NOT CMAKE_C_COMPILER_ID MATCHES "MSVC" OR NOT BUILD_SHARED_LIBS) + set_target_properties(libbuf-static PROPERTIES OUTPUT_NAME buf) +else () + set_target_properties(libbuf-static PROPERTIES OUTPUT_NAME buf-static) +endif () + +if (BUILD_SHARED_LIBS) + add_library(libbuf-shared SHARED buf.c buf.h buf.def) + target_include_directories(libbuf-shared PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) + set_target_properties( + libbuf-shared + PROPERTIES + OUTPUT_NAME buf + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR} + ) + install( + TARGETS libbuf-shared + EXPORT buf-targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ) +endif () + +configure_file( + ${PROJECT_SOURCE_DIR}/buf.pc.in + ${PROJECT_BINARY_DIR}/buf.pc + @ONLY +) + +write_basic_package_version_file( + ${PROJECT_BINARY_DIR}/buf-config-version.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion +) + +install(FILES ${PROJECT_SOURCE_DIR}/buf.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(FILES ${PROJECT_BINARY_DIR}/buf.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +install(FILES ${PROJECT_SOURCE_DIR}/libbuf.3 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3) +install( + EXPORT buf-targets + FILE buf-targets.cmake + NAMESPACE buf:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/buf +) +install( + FILES + ${PROJECT_BINARY_DIR}/buf-config-version.cmake + ${PROJECT_SOURCE_DIR}/buf-config.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/buf +)