-
Notifications
You must be signed in to change notification settings - Fork 8
/
CMakeLists.txt
104 lines (87 loc) · 3.28 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#
# Copyright (c) 2023 Vinnie Falco (vinnie.falco@gmail.com)
#
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
# Official repository: https://github.com/cppalliance/buffers
#
cmake_minimum_required(VERSION 3.8...3.16)
set(BOOST_BUFFERS_VERSION 1)
if(BOOST_SUPERPROJECT_VERSION)
set(BOOST_BUFFERS_VERSION ${BOOST_SUPERPROJECT_VERSION})
endif()
project(boost_buffers VERSION "${BOOST_BUFFERS_VERSION}" LANGUAGES CXX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
include(CTest)
option(BOOST_BUFFERS_INSTALL "Install boost::buffers files" ON)
option(BOOST_BUFFERS_BUILD_TESTS "Build boost::buffers tests" ${BUILD_TESTING})
set(BOOST_BUFFERS_IS_ROOT ON)
else()
set(BOOST_BUFFERS_BUILD_TESTS ${BUILD_TESTING})
set(BOOST_BUFFERS_IS_ROOT OFF)
endif()
include(GNUInstallDirs)
if(BOOST_BUFFERS_IS_ROOT)
set(BOOST_INCLUDE_LIBRARIES buffers core)
set(BOOST_EXCLUDE_LIBRARIES buffers)
set(CMAKE_FOLDER Dependencies)
add_subdirectory(../.. Dependencies/boost EXCLUDE_FROM_ALL)
unset(CMAKE_FOLDER)
endif()
function(boost_buffers_setup_properties target)
target_compile_features(${target} PUBLIC cxx_constexpr)
target_compile_definitions(${target} PUBLIC BOOST_BUFFERS_NO_LIB=1)
if(BOOST_SUPERPROJECT_VERSION)
target_include_directories(${target} PUBLIC "${PROJECT_SOURCE_DIR}/include")
else()
target_include_directories(${target}
PUBLIC
"$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
)
endif()
target_link_libraries(${target}
PUBLIC
Boost::assert
Boost::config
Boost::static_assert
Boost::system
PRIVATE
Boost::throw_exception
)
endfunction()
file(GLOB_RECURSE BOOST_BUFFERS_HEADERS CONFIGURE_DEPENDS
include/boost/*.hpp
include/boost/*.ipp
include/boost/*.natvis
)
file(GLOB_RECURSE BOOST_BUFFERS_SOURCES CONFIGURE_DEPENDS src/*.cpp)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/include/boost PREFIX "" FILES ${BOOST_BUFFERS_HEADERS})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/src PREFIX "buffers" FILES ${BOOST_BUFFERS_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "" FILES Jamfile)
add_library(boost_buffers ${BOOST_BUFFERS_HEADERS} ${BOOST_BUFFERS_SOURCES} build/Jamfile)
add_library(Boost::buffers ALIAS boost_buffers)
boost_buffers_setup_properties(boost_buffers)
target_compile_definitions(boost_buffers
PUBLIC
BOOST_BUFFERS_NO_LIB
)
if(BUILD_SHARED_LIBS)
target_compile_definitions(boost_buffers PUBLIC BOOST_BUFFERS_DYN_LINK=1)
else()
target_compile_definitions(boost_buffers PUBLIC BOOST_BUFFERS_STATIC_LINK=1)
endif()
target_compile_definitions(boost_buffers PRIVATE BOOST_BUFFERS_SOURCE)
if(BOOST_BUFFERS_INSTALL AND NOT BOOST_SUPERPROJECT_VERSION)
install(TARGETS boost_buffers
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
)
endif()
if(BOOST_BUFFERS_BUILD_TESTS)
add_subdirectory(test)
endif()