annotate CMakeLists.txt @ 31:57c06f7b7d01 1.0.0

misc: update README.md
author David Demelier <markand@malikania.fr>
date Mon, 28 Mar 2022 21:26:18 +0200
parents 5cbb723ad2a9
children 5493466d6e56
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 #
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 # CMakeLists.txt -- basic CMake build for libbuf
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 #
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 # Copyright (c) 2013-2022 David Demelier <markand@malikania.fr>
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 #
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 # Permission to use, copy, modify, and/or distribute this software for any
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 # purpose with or without fee is hereby granted, provided that the above
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 # copyright notice and this permission notice appear in all copies.
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 #
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 #
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 cmake_minimum_required(VERSION 3.20)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 project(
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 libbuf
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 VERSION "1.0.0"
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 DESCRIPTION "Minimalist dynamic string library for C99"
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 HOMEPAGE_URL "http://projects.malikania.fr/libbuf"
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 LANGUAGES C
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 )
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 include(CMakePackageConfigHelpers)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 include(GNUInstallDirs)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 add_library(libbuf-static STATIC buf.c buf.h)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 target_include_directories(libbuf-static PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 install(
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 TARGETS libbuf-static
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 EXPORT buf-targets
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 ARCHIVE DESTINATION lib
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 )
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 if (NOT CMAKE_C_COMPILER_ID MATCHES "MSVC" OR NOT BUILD_SHARED_LIBS)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 set_target_properties(libbuf-static PROPERTIES OUTPUT_NAME buf)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 else ()
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 set_target_properties(libbuf-static PROPERTIES OUTPUT_NAME buf-static)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 endif ()
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
44
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 if (BUILD_SHARED_LIBS)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 add_library(libbuf-shared SHARED buf.c buf.h buf.def)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 target_include_directories(libbuf-shared PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 set_target_properties(
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 libbuf-shared
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 PROPERTIES
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 OUTPUT_NAME buf
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 VERSION ${PROJECT_VERSION}
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 SOVERSION ${PROJECT_VERSION_MAJOR}
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 )
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 install(
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 TARGETS libbuf-shared
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 EXPORT buf-targets
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 )
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 endif ()
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 configure_file(
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 ${PROJECT_SOURCE_DIR}/buf.pc.in
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 ${PROJECT_BINARY_DIR}/buf.pc
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 @ONLY
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 )
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
69
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 write_basic_package_version_file(
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 ${PROJECT_BINARY_DIR}/buf-config-version.cmake
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 VERSION ${PROJECT_VERSION}
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 COMPATIBILITY SameMajorVersion
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 )
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
75
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 install(FILES ${PROJECT_SOURCE_DIR}/buf.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 install(FILES ${PROJECT_BINARY_DIR}/buf.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 install(FILES ${PROJECT_SOURCE_DIR}/libbuf.3 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3)
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 install(
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 EXPORT buf-targets
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 FILE buf-targets.cmake
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 NAMESPACE buf::
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/buf
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 )
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 install(
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 FILES
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 ${PROJECT_BINARY_DIR}/buf-config-version.cmake
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 ${PROJECT_SOURCE_DIR}/buf-config.cmake
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/buf
5cbb723ad2a9 cmake: initial support
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 )