#
# Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot 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)
#

subproject libs/asio/example/timeouts ;

project boost : $(BOOST_ROOT) ;

if $(UNIX)
{
  switch $(JAMUNAME)
  {
  case SunOS* :
    {
      SOCKET_LIBS = <find-library>socket <find-library>nsl ;
    }
  }
}

template asio_timeouts_example
  : <lib>@boost/libs/thread/build/boost_thread
    <lib>@boost/libs/system/build/boost_system
  : <include>$(BOOST_ROOT)
    <include>../../../..
    <define>BOOST_ALL_NO_LIB=1
    <threading>multi
    <mingw><*><find-library>ws2_32
    <mingw><*><find-library>mswsock
    $(SOCKET_LIBS)
  ;

exe async_tcp_client
  : <template>asio_timeouts_example
    async_tcp_client.cpp
  ;

exe blocking_tcp_client
  : <template>asio_timeouts_example
    blocking_tcp_client.cpp
  ;

exe blocking_udp_client
  : <template>asio_timeouts_example
    blocking_udp_client.cpp
  ;

exe server
  : <template>asio_timeouts_example
    server.cpp
  ;
