#
# 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)
#

import os ;

if [ os.name ] = SOLARIS
{
  lib socket ;
  lib nsl ;
}
else if [ os.name ] = NT
{
  lib ws2_32 ;
  lib mswsock ;
}
else if [ os.name ] = HPUX
{
  lib ipv6 ;
}

project
  : requirements
    <library>/boost/system//boost_system
    <library>/boost/thread//boost_thread
    <define>BOOST_ALL_NO_LIB=1
    <threading>multi
    <os>SOLARIS:<library>socket
    <os>SOLARIS:<library>nsl
    <os>NT:<define>_WIN32_WINNT=0x0501
    <os>NT,<toolset>gcc:<library>ws2_32
    <os>NT,<toolset>gcc:<library>mswsock
    <os>NT,<toolset>gcc-cygwin:<define>__USE_W32_SOCKETS
    <os>HPUX,<toolset>gcc:<define>_XOPEN_SOURCE_EXTENDED
    <os>HPUX:<library>ipv6
  ;

exe async_tcp_echo_server : async_tcp_echo_server.cpp ;
exe async_udp_echo_server : async_udp_echo_server.cpp ;
exe blocking_tcp_echo_client : blocking_tcp_echo_client.cpp ;
exe blocking_tcp_echo_server : blocking_tcp_echo_server.cpp ;
exe blocking_udp_echo_client : blocking_udp_echo_client.cpp ;
exe blocking_udp_echo_server : blocking_udp_echo_server.cpp ;
