]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/iostreams/CMakeLists.txt
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / iostreams / CMakeLists.txt
1 # Copyright 2020, 2021 Peter Dimov
2 # Distributed under the Boost Software License, Version 1.0.
3 # https://www.boost.org/LICENSE_1_0.txt
4
5 cmake_minimum_required(VERSION 3.5...3.16)
6
7 project(boost_iostreams VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
8
9 add_library(boost_iostreams
10 src/file_descriptor.cpp
11 src/mapped_file.cpp
12 )
13
14 function(boost_iostreams_option name description package version found target) # sources...
15
16 find_package(${package} ${version} QUIET)
17
18 if(${found} AND TARGET ${target})
19
20 option(${name} ${description} ON)
21
22 else()
23
24 option(${name} ${description} OFF)
25
26 endif()
27
28 if(${name})
29
30 find_package(${package} ${version} REQUIRED)
31 target_sources(boost_iostreams PRIVATE ${ARGN})
32 target_link_libraries(boost_iostreams PRIVATE ${target})
33
34 endif()
35
36 endfunction()
37
38 boost_iostreams_option(BOOST_IOSTREAMS_ENABLE_ZLIB "Boost.Iostreams: Enable ZLIB support" ZLIB "" ZLIB_FOUND ZLIB::ZLIB src/zlib.cpp src/gzip.cpp)
39 boost_iostreams_option(BOOST_IOSTREAMS_ENABLE_BZIP2 "Boost.Iostreams: Enable BZip2 support" BZip2 "" BZIP2_FOUND BZip2::BZip2 src/bzip2.cpp)
40 boost_iostreams_option(BOOST_IOSTREAMS_ENABLE_LZMA "Boost.Iostreams: Enable LZMA support" LibLZMA "" LIBLZMA_FOUND LibLZMA::LibLZMA src/lzma.cpp)
41 boost_iostreams_option(BOOST_IOSTREAMS_ENABLE_ZSTD "Boost.Iostreams: Enable Zstd support" zstd "1.0" zstd_FOUND zstd::libzstd_shared src/zstd.cpp)
42
43 include(CheckCXXSourceCompiles)
44
45 function(iostreams_check var source incs libs defs)
46
47 set(CMAKE_REQUIRED_INCLUDES "${incs}")
48 list(APPEND CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/build")
49 set(CMAKE_REQUIRED_LIBRARIES "${libs}")
50 set(CMAKE_REQUIRED_DEFINITIONS "${defs}")
51 check_cxx_source_compiles("#include \"${source}\"" ${var})
52 set(${var} ${${var}} PARENT_SCOPE)
53
54 endfunction()
55
56 set(_lzma_mt "")
57
58 if(BOOST_IOSTREAMS_ENABLE_LZMA)
59
60 iostreams_check(BOOST_IOSTREAMS_HAS_LZMA_CPUTHREADS has_lzma_cputhreads.cpp "" "LibLZMA::LibLZMA" "")
61
62 if(BOOST_IOSTREAMS_HAS_LZMA_CPUTHREADS)
63 set(_lzma_mt " (multithreaded)")
64 else()
65 target_compile_definitions(boost_iostreams PRIVATE BOOST_IOSTREAMS_LZMA_NO_MULTITHREADED=1)
66 endif()
67
68 endif()
69
70 message(STATUS "Boost.Iostreams: ZLIB ${BOOST_IOSTREAMS_ENABLE_ZLIB}, BZip2 ${BOOST_IOSTREAMS_ENABLE_BZIP2}, LZMA ${BOOST_IOSTREAMS_ENABLE_LZMA}${_lzma_mt}, Zstd ${BOOST_IOSTREAMS_ENABLE_ZSTD}")
71
72 unset(_lzma_mt)
73
74 add_library(Boost::iostreams ALIAS boost_iostreams)
75
76 target_include_directories(boost_iostreams PUBLIC include)
77
78 target_link_libraries(boost_iostreams
79 PUBLIC
80 Boost::assert
81 Boost::config
82 Boost::core
83 Boost::detail
84 Boost::function
85 Boost::integer
86 Boost::iterator
87 Boost::mpl
88 Boost::preprocessor
89 Boost::random
90 Boost::range
91 Boost::regex
92 Boost::smart_ptr
93 Boost::static_assert
94 Boost::throw_exception
95 Boost::type_traits
96 Boost::utility
97 PRIVATE
98 Boost::numeric_conversion
99 )
100
101 target_compile_definitions(boost_iostreams
102 PUBLIC BOOST_IOSTREAMS_NO_LIB
103 # Source files already define BOOST_IOSTREAMS_SOURCE
104 # PRIVATE BOOST_IOSTREAMS_SOURCE
105 )
106
107 if(BUILD_SHARED_LIBS)
108 target_compile_definitions(boost_iostreams PUBLIC BOOST_IOSTREAMS_DYN_LINK)
109 else()
110 target_compile_definitions(boost_iostreams PUBLIC BOOST_IOSTREAMS_STATIC_LINK)
111 endif()
112
113 if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
114
115 add_subdirectory(test)
116
117 endif()