]> git.proxmox.com Git - ceph.git/blame - ceph/src/seastar/cmake/SeastarDependencies.cmake
import quincy beta 17.1.0
[ceph.git] / ceph / src / seastar / cmake / SeastarDependencies.cmake
CommitLineData
9f95a23c
TL
1#
2# This file is open source software, licensed to you under the terms
3# of the Apache License, Version 2.0 (the "License"). See the NOTICE file
4# distributed with this work for additional information regarding copyright
5# ownership. You may not use this file except in compliance with the License.
6#
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing,
12# software distributed under the License is distributed on an
13# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14# KIND, either express or implied. See the License for the
15# specific language governing permissions and limitations
16# under the License.
17#
18
19#
20# Copyright (C) 2019 Scylladb, Ltd.
21#
22
23#
24# CMake bundles `FindBoost.cmake`, which is coupled to the Boost version. If
25# we're on a system without a recent enough version of `FindBoost.cmake`, then
26# we need to use the one bundled with Seastar.
27#
28# The "real" FIND_PACKAGE invocation for Boost is inside SEASTAR_FIND_DEPENDENCIES.
29#
30
31# Be consistent in results from FindBoost.cmake.
32# This is required because cmake-boost may return to Boost_{component}_LIBRARY:
f67539c2
TL
33# - /usr/lib64/libboost_foo.so
34# - Boost::foo
9f95a23c
TL
35set (Boost_NO_BOOST_CMAKE ON)
36
37# This is the minimum version of Boost we need the CMake-bundled `FindBoost.cmake` to know about.
f67539c2 38find_package (Boost 1.64 MODULE)
9f95a23c
TL
39
40#
41# Iterate through the dependency list defined below and execute `find_package`
42# with the corresponding configuration for each 3rd-party dependency.
43#
44macro (seastar_find_dependencies)
45 #
46 # List of Seastar dependencies that is meant to be used
47 # both in Seastar configuration and by clients which
48 # consume Seastar via SeastarConfig.cmake.
49 #
50 set (_seastar_all_dependencies
51 # Public dependencies.
52 Boost
53 c-ares
54 cryptopp
55 dpdk # No version information published.
56 fmt
57 lz4
58 # Private and private/public dependencies.
59 Concepts
60 GnuTLS
61 LinuxMembarrier
9f95a23c
TL
62 Sanitizers
63 StdAtomic
9f95a23c
TL
64 hwloc
65 lksctp-tools # No version information published.
66 numactl # No version information published.
67 rt
68 yaml-cpp)
69
70 # Arguments to `find_package` for each 3rd-party dependency.
71 # Note that the version specification is a "minimal" version requirement.
72
73 # `unit_test_framework` is not required in the case we are building Seastar
74 # without the testing library, however the component is always specified as required
75 # to keep the CMake code minimalistic and easy-to-use.
76 set (_seastar_dep_args_Boost
77 1.64.0
78 COMPONENTS
20effc67 79 filesystem
9f95a23c
TL
80 program_options
81 thread
82 unit_test_framework
83 REQUIRED)
84
85 set (_seastar_dep_args_c-ares 1.13 REQUIRED)
86 set (_seastar_dep_args_cryptopp 5.6.5 REQUIRED)
87 set (_seastar_dep_args_fmt 5.0.0 REQUIRED)
88 set (_seastar_dep_args_lz4 1.7.3 REQUIRED)
89 set (_seastar_dep_args_GnuTLS 3.3.26 REQUIRED)
9f95a23c 90 set (_seastar_dep_args_StdAtomic REQUIRED)
9f95a23c
TL
91 set (_seastar_dep_args_hwloc 1.11.2)
92 set (_seastar_dep_args_lksctp-tools REQUIRED)
93 set (_seastar_dep_args_rt REQUIRED)
94 set (_seastar_dep_args_yaml-cpp 0.5.1 REQUIRED)
95
96 foreach (third_party ${_seastar_all_dependencies})
97 find_package ("${third_party}" ${_seastar_dep_args_${third_party}})
98 endforeach ()
99endmacro ()