1#
2# Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff dot com)
3#
4# Distributed under the Boost Software License, Version 1.0. (See accompanying
5# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6#
7
8import feature ;
9
10lib socket ; # SOLARIS, QNXNTO
11lib nsl ; # SOLARIS
12lib ws2_32 ; # NT
13lib mswsock ; # NT
14lib ipv6 ; # HPUX
15lib network ; # HAIKU
16
17local USE_SELECT =
18  <define>BOOST_ASIO_DISABLE_DEV_POLL
19  <define>BOOST_ASIO_DISABLE_EPOLL
20  <define>BOOST_ASIO_DISABLE_KQUEUE
21  <define>BOOST_ASIO_DISABLE_IOCP
22  ;
23
24project
25  : requirements
26    <library>/boost/date_time//boost_date_time
27    <library>/boost/system//boost_system
28    <library>/boost/chrono//boost_chrono
29    <library>/boost/regex//boost_regex
30    <define>BOOST_ALL_NO_LIB=1
31    <threading>multi
32    <target-os>linux:<define>_XOPEN_SOURCE=600
33    <target-os>linux:<define>_GNU_SOURCE=1
34    <target-os>solaris:<define>_XOPEN_SOURCE=500
35    <target-os>solaris:<define>__EXTENSIONS__
36    <target-os>solaris:<library>socket
37    <target-os>solaris:<library>nsl
38    <target-os>windows:<define>_WIN32_WINNT=0x0501
39    <target-os>windows,<toolset>cw:<library>ws2_32
40    <target-os>windows,<toolset>cw:<library>mswsock
41    <target-os>windows,<toolset>gcc:<library>ws2_32
42    <target-os>windows,<toolset>gcc:<library>mswsock
43    <target-os>windows,<toolset>gcc-cygwin:<define>__USE_W32_SOCKETS
44    <target-os>hpux,<toolset>gcc:<define>_XOPEN_SOURCE_EXTENDED
45    <target-os>hpux:<library>ipv6
46    <target-os>qnxnto:<library>socket
47    <target-os>haiku:<library>network
48  ;
49
50test-suite "asio" :
51  [ link awaitable.cpp ]
52  [ link awaitable.cpp : $(USE_SELECT) : awaitable_select ]
53  [ link basic_datagram_socket.cpp ]
54  [ link basic_datagram_socket.cpp : $(USE_SELECT) : basic_datagram_socket_select ]
55  [ link basic_deadline_timer.cpp ]
56  [ link basic_deadline_timer.cpp : $(USE_SELECT) : basic_deadline_timer_select ]
57  [ link basic_raw_socket.cpp ]
58  [ link basic_raw_socket.cpp : $(USE_SELECT) : basic_raw_socket_select ]
59  [ link basic_seq_packet_socket.cpp ]
60  [ link basic_seq_packet_socket.cpp : $(USE_SELECT) : basic_seq_packet_socket_select ]
61  [ link basic_signal_set.cpp ]
62  [ link basic_signal_set.cpp : $(USE_SELECT) : basic_signal_set_select ]
63  [ link basic_socket_acceptor.cpp ]
64  [ link basic_socket_acceptor.cpp : $(USE_SELECT) : basic_socket_acceptor_select ]
65  [ link basic_stream_socket.cpp ]
66  [ link basic_stream_socket.cpp : $(USE_SELECT) : basic_stream_socket_select ]
67  [ link basic_streambuf.cpp ]
68  [ link basic_streambuf.cpp : $(USE_SELECT) : basic_streambuf_select ]
69  [ link basic_waitable_timer.cpp ]
70  [ link basic_waitable_timer.cpp : $(USE_SELECT) : basic_waitable_timer_select ]
71  [ run buffer.cpp ]
72  [ run buffer.cpp : : : $(USE_SELECT) : buffer_select ]
73  [ run buffered_read_stream.cpp ]
74  [ run buffered_read_stream.cpp : : : $(USE_SELECT) : buffered_read_stream_select ]
75  [ run buffered_stream.cpp ]
76  [ run buffered_stream.cpp : : : $(USE_SELECT) : buffered_stream_select ]
77  [ run buffered_write_stream.cpp ]
78  [ run buffered_write_stream.cpp : : : $(USE_SELECT) : buffered_write_stream_select ]
79  [ run buffers_iterator.cpp ]
80  [ run buffers_iterator.cpp : : : $(USE_SELECT) : buffers_iterator_select ]
81  [ link co_spawn.cpp ]
82  [ link co_spawn.cpp : $(USE_SELECT) : co_spawn_select ]
83  [ link completion_condition.cpp ]
84  [ link completion_condition.cpp : $(USE_SELECT) : completion_condition_select ]
85  [ run compose.cpp ]
86  [ run compose.cpp : : : $(USE_SELECT) : compose_select ]
87  [ link connect.cpp ]
88  [ link connect.cpp : $(USE_SELECT) : connect_select ]
89  [ link coroutine.cpp ]
90  [ link coroutine.cpp : $(USE_SELECT) : coroutine_select ]
91  [ run deadline_timer.cpp ]
92  [ run deadline_timer.cpp : : : $(USE_SELECT) : deadline_timer_select ]
93  [ link detached.cpp ]
94  [ link detached.cpp : $(USE_SELECT) : detached_select ]
95  [ run error.cpp ]
96  [ run error.cpp : : : $(USE_SELECT) : error_select ]
97  [ link generic/basic_endpoint.cpp : : generic_basic_endpoint ]
98  [ link generic/basic_endpoint.cpp : $(USE_SELECT) : generic_basic_endpoint_select ]
99  [ link generic/datagram_protocol.cpp : : generic_datagram_protocol ]
100  [ link generic/datagram_protocol.cpp : $(USE_SELECT) : generic_datagram_protocol_select ]
101  [ link generic/raw_protocol.cpp : : generic_raw_protocol ]
102  [ link generic/raw_protocol.cpp : $(USE_SELECT) : generic_raw_protocol_select ]
103  [ link generic/seq_packet_protocol.cpp : : generic_seq_packet_protocol ]
104  [ link generic/seq_packet_protocol.cpp : $(USE_SELECT) : generic_seq_packet_protocol_select ]
105  [ link generic/stream_protocol.cpp : : generic_stream_protocol ]
106  [ link generic/stream_protocol.cpp : $(USE_SELECT) : generic_stream_protocol_select ]
107  [ link high_resolution_timer.cpp ]
108  [ link high_resolution_timer.cpp : $(USE_SELECT) : high_resolution_timer_select ]
109  [ run io_context.cpp ]
110  [ run io_context.cpp : : : $(USE_SELECT) : io_context_select ]
111  [ run io_context_strand.cpp ]
112  [ run io_context_strand.cpp : : : $(USE_SELECT) : io_context_strand_select ]
113  [ link ip/address.cpp : : ip_address ]
114  [ link ip/address.cpp : $(USE_SELECT) : ip_address_select ]
115  [ link ip/address_v4.cpp : : ip_address_v4 ]
116  [ link ip/address_v4.cpp : $(USE_SELECT) : ip_address_v4_select ]
117  [ link ip/address_v6.cpp : : ip_address_v6 ]
118  [ link ip/address_v6.cpp : $(USE_SELECT) : ip_address_v6_select ]
119  [ link ip/basic_endpoint.cpp : : ip_basic_endpoint ]
120  [ link ip/basic_endpoint.cpp : $(USE_SELECT) : ip_basic_endpoint_select ]
121  [ link ip/basic_resolver.cpp : : ip_basic_resolver ]
122  [ link ip/basic_resolver.cpp : $(USE_SELECT) : ip_basic_resolver_select ]
123  [ link ip/basic_resolver_entry.cpp : : ip_basic_resolver_entry ]
124  [ link ip/basic_resolver_entry.cpp : $(USE_SELECT) : ip_basic_resolver_entry_select ]
125  [ link ip/basic_resolver_iterator.cpp : : ip_basic_resolver_iterator ]
126  [ link ip/basic_resolver_iterator.cpp : $(USE_SELECT) : ip_basic_resolver_iterator_select ]
127  [ link ip/basic_resolver_query.cpp  : : ip_basic_resolver_query ]
128  [ link ip/basic_resolver_query.cpp : $(USE_SELECT) : ip_basic_resolver_query_select ]
129  [ run ip/host_name.cpp : : : : ip_host_name ]
130  [ run ip/host_name.cpp : : : $(USE_SELECT) : ip_host_name_select ]
131  [ run ip/icmp.cpp : : : : ip_icmp ]
132  [ run ip/icmp.cpp : : : $(USE_SELECT) : ip_icmp_select ]
133  [ run ip/multicast.cpp : : : : ip_multicast ]
134  [ run ip/multicast.cpp : : : $(USE_SELECT) : ip_multicast_select ]
135  [ link ip/resolver_query_base.cpp : : ip_resolver_query_base ]
136  [ link ip/resolver_query_base.cpp : $(USE_SELECT) : ip_resolver_query_base_select ]
137  [ run ip/tcp.cpp : : : : ip_tcp ]
138  [ run ip/tcp.cpp : : : $(USE_SELECT) : ip_tcp_select ]
139  [ run ip/udp.cpp : : : : ip_udp ]
140  [ run ip/udp.cpp : : : $(USE_SELECT) : ip_udp_select ]
141  [ run ip/unicast.cpp : : : : ip_unicast ]
142  [ run ip/unicast.cpp : : : $(USE_SELECT) : ip_unicast_select ]
143  [ run ip/v6_only.cpp : : : : ip_v6_only ]
144  [ run ip/v6_only.cpp : : : $(USE_SELECT) : ip_v6_only_select ]
145  [ run is_read_buffered.cpp ]
146  [ run is_read_buffered.cpp : : : $(USE_SELECT) : is_read_buffered_select ]
147  [ run is_write_buffered.cpp ]
148  [ run is_write_buffered.cpp : : : $(USE_SELECT) : is_write_buffered_select ]
149  [ link local/basic_endpoint.cpp : : local_basic_endpoint ]
150  [ link local/basic_endpoint.cpp : $(USE_SELECT) : local_basic_endpoint_select ]
151  [ link local/connect_pair.cpp : : local_connect_pair ]
152  [ link local/connect_pair.cpp : $(USE_SELECT) : local_connect_pair_select ]
153  [ link local/datagram_protocol.cpp : : local_datagram_protocol ]
154  [ link local/datagram_protocol.cpp : $(USE_SELECT) : local_datagram_protocol_select ]
155  [ link local/stream_protocol.cpp : : local_stream_protocol ]
156  [ link local/stream_protocol.cpp : $(USE_SELECT) : local_stream_protocol_select ]
157  [ link placeholders.cpp ]
158  [ link placeholders.cpp : $(USE_SELECT) : placeholders_select ]
159  [ link posix/basic_descriptor.cpp : : posix_basic_descriptor ]
160  [ link posix/basic_descriptor.cpp : $(USE_SELECT) : posix_basic_descriptor_select ]
161  [ link posix/basic_stream_descriptor.cpp : : posix_basic_stream_descriptor ]
162  [ link posix/basic_stream_descriptor.cpp : $(USE_SELECT) : posix_basic_stream_descriptor_select ]
163  [ link posix/descriptor_base.cpp : : posix_descriptor_base ]
164  [ link posix/descriptor_base.cpp : $(USE_SELECT) : posix_descriptor_base_select ]
165  [ link posix/stream_descriptor.cpp : : posix_stream_descriptor ]
166  [ link posix/stream_descriptor.cpp : $(USE_SELECT) : posix_stream_descriptor_select ]
167  [ run read.cpp ]
168  [ run read.cpp : : : $(USE_SELECT) : read_select ]
169  [ run read_at.cpp ]
170  [ run read_at.cpp : : : $(USE_SELECT) : read_at_select ]
171  [ run read_until.cpp ]
172  [ run read_until.cpp : : : $(USE_SELECT) : read_until_select ]
173  [ link redirect_error.cpp ]
174  [ link redirect_error.cpp : $(USE_SELECT) : redirect_error_select ]
175  [ run signal_set.cpp ]
176  [ run signal_set.cpp : : : $(USE_SELECT) : signal_set_select ]
177  [ run socket_base.cpp ]
178  [ run socket_base.cpp : : : $(USE_SELECT) : socket_base_select ]
179  [ link steady_timer.cpp ]
180  [ link steady_timer.cpp : $(USE_SELECT) : steady_timer_select ]
181  [ run strand.cpp ]
182  [ run strand.cpp : : : $(USE_SELECT) : strand_select ]
183  [ run streambuf.cpp ]
184  [ run streambuf.cpp : : : $(USE_SELECT) : streambuf_select ]
185  [ link system_timer.cpp ]
186  [ link system_timer.cpp : $(USE_SELECT) : system_timer_select ]
187  [ link system_context.cpp ]
188  [ link system_context.cpp : $(USE_SELECT) : system_context_select ]
189  [ link system_executor.cpp ]
190  [ link system_executor.cpp : $(USE_SELECT) : system_executor_select ]
191  [ link this_coro.cpp ]
192  [ link this_coro.cpp : $(USE_SELECT) : this_coro_select ]
193  [ link time_traits.cpp ]
194  [ link time_traits.cpp : $(USE_SELECT) : time_traits_select ]
195  [ link ts/buffer.cpp : : ts_buffer ]
196  [ link ts/buffer.cpp : $(USE_SELECT) : ts_buffer_select ]
197  [ link ts/executor.cpp : : ts_executor ]
198  [ link ts/executor.cpp : $(USE_SELECT) : ts_executor_select ]
199  [ link ts/internet.cpp : : ts_internet ]
200  [ link ts/internet.cpp : $(USE_SELECT) : ts_internet_select ]
201  [ link ts/io_context.cpp : : ts_io_context ]
202  [ link ts/io_context.cpp : $(USE_SELECT) : ts_io_context_select ]
203  [ link ts/net.cpp : : ts_net ]
204  [ link ts/net.cpp : $(USE_SELECT) : ts_net_select ]
205  [ link ts/netfwd.cpp : : ts_netfwd ]
206  [ link ts/netfwd.cpp : $(USE_SELECT) : ts_netfwd_select ]
207  [ link ts/socket.cpp : : ts_socket ]
208  [ link ts/socket.cpp : $(USE_SELECT) : ts_socket_select ]
209  [ link ts/timer.cpp : : ts_timer ]
210  [ link ts/timer.cpp : $(USE_SELECT) : ts_timer_select ]
211  [ link use_awaitable.cpp ]
212  [ link use_awaitable.cpp : $(USE_SELECT) : use_awaitable_select ]
213  [ link wait_traits.cpp ]
214  [ link wait_traits.cpp : $(USE_SELECT) : wait_traits_select ]
215  [ link windows/basic_object_handle.cpp : : windows_basic_object_handle ]
216  [ link windows/basic_object_handle.cpp : $(USE_SELECT) : windows_basic_object_handle_select ]
217  [ link windows/basic_overlapped_handle.cpp : : windows_basic_overlapped_handle ]
218  [ link windows/basic_overlapped_handle.cpp : $(USE_SELECT) : windows_basic_overlapped_handle_select ]
219  [ link windows/basic_random_access_handle.cpp : : windows_basic_random_access_handle ]
220  [ link windows/basic_random_access_handle.cpp : $(USE_SELECT) : windows_basic_random_access_handle_select ]
221  [ link windows/basic_stream_handle.cpp : : windows_basic_stream_handle ]
222  [ link windows/basic_stream_handle.cpp : $(USE_SELECT) : windows_basic_stream_handle_select ]
223  [ link windows/object_handle.cpp : : windows_object_handle ]
224  [ link windows/object_handle.cpp : $(USE_SELECT) : windows_object_handle_select ]
225  [ link windows/overlapped_ptr.cpp : : windows_overlapped_ptr ]
226  [ link windows/overlapped_ptr.cpp : $(USE_SELECT) : windows_overlapped_ptr_select ]
227  [ link windows/random_access_handle.cpp : : windows_random_access_handle ]
228  [ link windows/random_access_handle.cpp : $(USE_SELECT) : windows_random_access_handle_select ]
229  [ link windows/stream_handle.cpp : : windows_stream_handle ]
230  [ link windows/stream_handle.cpp : $(USE_SELECT) : windows_stream_handle_select ]
231  [ run write.cpp ]
232  [ run write.cpp : : : $(USE_SELECT) : write_select ]
233  [ run write_at.cpp ]
234  [ run write_at.cpp : : : $(USE_SELECT) : write_at_select ]
235  ;
236