]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/leaf/meson.build
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / leaf / meson.build
1 # Copyright 2018-2022 Emil Dotchevski and Reverge Studios, Inc.
2
3 # Distributed under the Boost Software License, Version 1.0. (See accompanying
4 # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6 project('leaf', 'cpp', default_options : ['cpp_std=c++17', 'b_pch=false'], license : 'boost')
7
8 option_leaf_hpp = get_option('leaf_hpp')
9 option_boost = get_option('leaf_boost_examples')
10 option_lua = get_option('leaf_lua_examples')
11 option_diagnostics = get_option('leaf_diagnostics')
12 option_exceptions = (get_option('cpp_eh')!='none')
13 option_enable_unit_tests = get_option('leaf_enable_unit_tests')
14 option_enable_examples = get_option('leaf_enable_examples')
15 option_enable_benchmarks = get_option('leaf_enable_benchmarks')
16 option_embedded = get_option('leaf_embedded')
17
18 if not option_enable_examples
19 if option_boost
20 error('The option leaf_boost_examples requires leaf_enable_examples. Aborting.')
21 endif
22 if option_lua
23 error('The option leaf_lua_examples requires leaf_enable_examples. Aborting.')
24 endif
25 endif
26
27 compiler = meson.get_compiler('cpp')
28 compiler_id = compiler.get_id()
29 if not meson.is_subproject()
30 if option_boost
31 add_global_arguments(
32 '-DBOOST_LEAF_BOOST_AVAILABLE',
33 language:'cpp' )
34 endif
35 if compiler_id=='clang'
36 if get_option('buildtype')!='debug'
37 add_global_arguments(
38 '-Wno-unused-variable',
39 language:'cpp' )
40 endif
41 add_global_arguments(
42 '-fdiagnostics-absolute-paths',
43 '-Wno-dangling-else',
44 '-Wno-non-virtual-dtor',
45 '-Wno-delete-non-abstract-non-virtual-dtor',
46 language:'cpp' )
47 elif compiler_id=='gcc'
48 if get_option('buildtype')!='debug'
49 add_global_arguments(
50 '-Wno-unused-variable',
51 language:'cpp' )
52 endif
53 add_global_arguments(
54 '-Wno-dangling-else',
55 '-Wno-non-virtual-dtor',
56 '-Wno-misleading-indentation',
57 language:'cpp' )
58 elif host_machine.system()=='emscripten'
59 add_global_arguments(
60 '-s', 'WASM=1',
61 '-s', 'USE_PTHREADS=1',
62 '-s', 'EXIT_RUNTIME=1',
63 '-s', 'PROXY_TO_PTHREAD=1',
64 '-s', 'DISABLE_EXCEPTION_CATCHING=0',
65 language:'cpp' )
66 add_global_link_arguments(
67 '-s', 'EXPORT_ALL=1',
68 '-s', 'WASM=1',
69 '-s', 'USE_PTHREADS=1',
70 '-s', 'EXIT_RUNTIME=1',
71 '-s', 'PROXY_TO_PTHREAD=1',
72 '-s', 'DISABLE_EXCEPTION_CATCHING=0',
73 '-s', 'INITIAL_MEMORY=268435456',
74 language:'cpp' )
75 endif
76 endif
77
78 dep_boost = [ ]
79 if option_boost # Requires that LEAF resides under boost_root/libs/leaf.
80 dep_boost = declare_dependency(include_directories: '../..')
81 endif
82
83 dep_lua = [ ]
84 if option_lua
85 dep_lua = subproject('lua').get_variable('all')
86 endif
87
88 defines = [ '-DBOOST_LEAF_CFG_DIAGNOSTICS=' + option_diagnostics.to_string() ]
89
90 if option_embedded
91 defines += '-DBOOST_LEAF_EMBEDDED'
92 endif
93
94 dep_thread = dependency('threads')
95
96 leaf = declare_dependency( include_directories: 'include', compile_args: defines )
97
98 #################################
99
100 if option_enable_unit_tests
101
102 tests = [
103 'accumulate_basic_test',
104 'accumulate_nested_error_exception_test',
105 'accumulate_nested_error_result_test',
106 'accumulate_nested_new_error_exception_test',
107 'accumulate_nested_new_error_result_test',
108 'accumulate_nested_success_exception_test',
109 'accumulate_nested_success_result_test',
110 'BOOST_LEAF_AUTO_test',
111 'BOOST_LEAF_ASSIGN_test',
112 'BOOST_LEAF_CHECK_test',
113 'capture_exception_async_test',
114 'capture_exception_result_async_test',
115 'capture_exception_state_test',
116 'capture_exception_unload_test',
117 'capture_result_async_test',
118 'capture_result_state_test',
119 'context_activator_test',
120 'context_deduction_test',
121 'capture_result_unload_test',
122 'ctx_handle_all_test',
123 'ctx_handle_some_test',
124 'ctx_remote_handle_all_test',
125 'ctx_remote_handle_some_test',
126 'defer_basic_test',
127 'defer_nested_error_exception_test',
128 'defer_nested_error_result_test',
129 'defer_nested_new_error_exception_test',
130 'defer_nested_new_error_result_test',
131 'defer_nested_success_exception_test',
132 'defer_nested_success_result_test',
133 'diagnostic_info_test',
134 'diagnostic_info_test2',
135 'e_errno_test',
136 'e_LastError_test',
137 'error_code_test',
138 'error_id_test',
139 'exception_test',
140 'exception_to_result_test',
141 'function_traits_test',
142 'handle_all_other_result_test',
143 'handle_all_test',
144 'handle_basic_test',
145 'handle_some_other_result_test',
146 'handle_some_test',
147 'match_test',
148 'match_member_test',
149 'match_value_test',
150 'multiple_errors_test',
151 'optional_test',
152 'preload_basic_test',
153 'preload_exception_test',
154 'preload_nested_error_exception_test',
155 'preload_nested_error_result_test',
156 'preload_nested_new_error_exception_test',
157 'preload_nested_new_error_result_test',
158 'preload_nested_success_exception_test',
159 'preload_nested_success_result_test',
160 'print_test',
161 'result_bad_result_test',
162 'result_implicit_conversion_test',
163 'result_load_test',
164 'result_ref_test',
165 'result_state_test',
166 'tls_array_alloc_test1',
167 'tls_array_alloc_test2',
168 'tls_array_alloc_test3',
169 'tls_array_test',
170 'to_variant_test',
171 'try_catch_error_id_test',
172 'try_catch_system_error_test',
173 'try_catch_test',
174 'try_exception_and_result_test',
175 ]
176 if option_boost and option_exceptions
177 tests += [
178 'boost_exception_test'
179 ]
180 endif
181
182 dep_test_single_header = []
183 if option_leaf_hpp
184 dep_test_single_header = declare_dependency(compile_args: ['-DBOOST_LEAF_TEST_SINGLE_HEADER'])
185 endif
186
187 foreach t : tests
188 test(t, executable(t, 'test/'+t+'.cpp', dependencies: [leaf, dep_thread, dep_boost, dep_test_single_header]) )
189 endforeach
190
191 header_tests = [
192 '_hpp_capture_test',
193 '_hpp_common_test',
194 '_hpp_config_test',
195 '_hpp_context_test',
196 '_hpp_error_test',
197 '_hpp_exception_test',
198 '_hpp_handle_errors_test',
199 '_hpp_on_error_test',
200 '_hpp_pred_test',
201 '_hpp_result_test',
202 '_hpp_to_variant_test',
203 '_hpp_leaf_test',
204 ]
205 foreach t : header_tests
206 test(t, executable(t, 'test/'+t+'.cpp', dependencies: [leaf, dep_thread, dep_boost]) )
207 endforeach
208
209 endif
210
211 #################################
212
213 if option_enable_examples
214
215 print_file_examples = [
216 'print_file_result'
217 ]
218 if option_exceptions
219 print_file_examples += [
220 'print_file_eh'
221 ]
222 endif
223 if option_boost
224 print_file_examples += [
225 'print_file_outcome_result'
226 ]
227 endif
228
229 foreach e : print_file_examples
230 executable(e, 'example/print_file/'+e+'.cpp', dependencies: [leaf, dep_thread, dep_boost] )
231 endforeach
232
233 endif
234
235 #################################
236
237 if option_enable_examples
238
239 examples = [
240 'capture_in_result',
241 'error_log',
242 'error_trace',
243 'print_half'
244 ]
245 if option_exceptions
246 examples += [
247 'capture_in_exception',
248 'exception_to_result'
249 ]
250 if option_lua
251 examples += [
252 'lua_callback_eh'
253 ]
254 endif
255 if option_boost
256 examples += [
257 # 'asio_beast_leaf_rpc' #FIXME
258 ]
259 endif
260 endif
261 if option_lua
262 examples += [
263 'lua_callback_result'
264 ]
265 endif
266
267 foreach e : examples
268 executable(e, 'example/'+e+'.cpp', dependencies: [leaf, dep_thread, dep_boost, dep_lua] )
269 endforeach
270
271 endif
272
273 #################################
274
275 if option_enable_benchmarks
276
277 if get_option('optimization')=='0'
278 error('The option leaf_enable_benchmarks requires optimizations to be enabled. Aborting.')
279 endif
280
281 if option_exceptions
282 error('The option leaf_enable_benchmarks requires the built-in option cpp_eh set to none. Aborting.')
283 endif
284
285 dep_tl_expected = subproject('tl_expected').get_variable('headers')
286 executable('deep_stack_tl', 'benchmark/deep_stack_other.cpp', override_options: ['cpp_std=c++17'], cpp_args: '-DBENCHMARK_WHAT=0', dependencies: [dep_tl_expected] )
287 executable('deep_stack_leaf', 'benchmark/deep_stack_leaf.cpp', dependencies: [leaf], override_options: ['cpp_std=c++17'], cpp_args: '-DBOOST_LEAF_CFG_DIAGNOSTICS=0')
288 if option_boost
289 executable('deep_stack_result', 'benchmark/deep_stack_other.cpp', dependencies: [dep_boost], override_options: ['cpp_std=c++17'], cpp_args: '-DBENCHMARK_WHAT=1' )
290 executable('deep_stack_outcome', 'benchmark/deep_stack_other.cpp', dependencies: [dep_boost], override_options: ['cpp_std=c++17'], cpp_args: '-DBENCHMARK_WHAT=2' )
291 endif
292
293 endif