From 741c9ec440028c0959343bfee1e05da44cdd287c Mon Sep 17 00:00:00 2001 From: Konstantin Podsvirov Date: Thu, 22 Mar 2018 23:39:21 +0300 Subject: [PATCH] Add CMake Project Now implemented: - standalote installation as asio package; - export asio::standalone library; - optional building and installation cpp11 and cpp14 examples; - import from buildtree. --- asio/CMakeLists.txt | 42 +++ asio/asio-config.cmake | 1 + asio/include/CMakeLists.txt | 504 +++++++++++++++++++++++++ asio/src/CMakeLists.txt | 4 + asio/src/examples/CMakeLists.txt | 35 ++ asio/src/examples/cpp11/CMakeLists.txt | 72 ++++ asio/src/examples/cpp14/CMakeLists.txt | 48 +++ 7 files changed, 706 insertions(+) create mode 100644 asio/CMakeLists.txt create mode 100644 asio/asio-config.cmake create mode 100644 asio/include/CMakeLists.txt create mode 100644 asio/src/CMakeLists.txt create mode 100644 asio/src/examples/CMakeLists.txt create mode 100644 asio/src/examples/cpp11/CMakeLists.txt create mode 100644 asio/src/examples/cpp14/CMakeLists.txt diff --git a/asio/CMakeLists.txt b/asio/CMakeLists.txt new file mode 100644 index 0000000000..7bf682ce16 --- /dev/null +++ b/asio/CMakeLists.txt @@ -0,0 +1,42 @@ +# Minimum supported CMake version +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +# Project +project(asio + VERSION 1.12.0 + LANGUAGES CXX) + +# Options +set(asio_BUILD_EXAMPLES OFF CACHE BOOL "Build asio examples") + +# Installation configuration +include(GNUInstallDirs) +if(NOT DEFINED CMAKE_INSTALL_CMAKEDIR) + set(CMAKE_INSTALL_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/asio) +endif() + +# Interface library +add_subdirectory(include) + +# Sources +add_subdirectory(src) + +# Installation +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/asio-config-version.cmake" + VERSION ${${PROJECT_NAME}_VERSION} + COMPATIBILITY AnyNewerVersion) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/asio-config-version.cmake + DESTINATION ${CMAKE_INSTALL_CMAKEDIR}) +install(EXPORT asio-targets + DESTINATION ${CMAKE_INSTALL_CMAKEDIR} + NAMESPACE asio::) +install(FILES asio-config.cmake DESTINATION ${CMAKE_INSTALL_CMAKEDIR}) + +# Buildtree export +configure_file(asio-config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/asio-config.cmake COPYONLY) +export(EXPORT asio-targets + NAMESPACE asio:: + FILE ${CMAKE_CURRENT_BINARY_DIR}/asio-targets.cmake) diff --git a/asio/asio-config.cmake b/asio/asio-config.cmake new file mode 100644 index 0000000000..57659c2434 --- /dev/null +++ b/asio/asio-config.cmake @@ -0,0 +1 @@ +include(${CMAKE_CURRENT_LIST_DIR}/asio-targets.cmake) diff --git a/asio/include/CMakeLists.txt b/asio/include/CMakeLists.txt new file mode 100644 index 0000000000..b951f17ae6 --- /dev/null +++ b/asio/include/CMakeLists.txt @@ -0,0 +1,504 @@ +# List of public headers +# find . -name "*.*pp" | sed -e 's/^\.\// /' | sort +set(asio_PUBLIC_HEADERS + asio.hpp + asio/associated_allocator.hpp + asio/associated_executor.hpp + asio/async_result.hpp + asio/basic_datagram_socket.hpp + asio/basic_deadline_timer.hpp + asio/basic_io_object.hpp + asio/basic_raw_socket.hpp + asio/basic_seq_packet_socket.hpp + asio/basic_serial_port.hpp + asio/basic_signal_set.hpp + asio/basic_socket.hpp + asio/basic_socket_acceptor.hpp + asio/basic_socket_iostream.hpp + asio/basic_socket_streambuf.hpp + asio/basic_stream_socket.hpp + asio/basic_streambuf.hpp + asio/basic_streambuf_fwd.hpp + asio/basic_waitable_timer.hpp + asio/bind_executor.hpp + asio/buffer.hpp + asio/buffered_read_stream.hpp + asio/buffered_read_stream_fwd.hpp + asio/buffered_stream.hpp + asio/buffered_stream_fwd.hpp + asio/buffered_write_stream.hpp + asio/buffered_write_stream_fwd.hpp + asio/buffers_iterator.hpp + asio/completion_condition.hpp + asio/connect.hpp + asio/coroutine.hpp + asio/datagram_socket_service.hpp + asio/deadline_timer.hpp + asio/deadline_timer_service.hpp + asio/defer.hpp + asio/detail/array.hpp + asio/detail/array_fwd.hpp + asio/detail/assert.hpp + asio/detail/atomic_count.hpp + asio/detail/base_from_completion_cond.hpp + asio/detail/bind_handler.hpp + asio/detail/buffer_resize_guard.hpp + asio/detail/buffer_sequence_adapter.hpp + asio/detail/buffered_stream_storage.hpp + asio/detail/call_stack.hpp + asio/detail/chrono.hpp + asio/detail/chrono_time_traits.hpp + asio/detail/completion_handler.hpp + asio/detail/concurrency_hint.hpp + asio/detail/conditionally_enabled_event.hpp + asio/detail/conditionally_enabled_mutex.hpp + asio/detail/config.hpp + asio/detail/consuming_buffers.hpp + asio/detail/cstddef.hpp + asio/detail/cstdint.hpp + asio/detail/date_time_fwd.hpp + asio/detail/deadline_timer_service.hpp + asio/detail/dependent_type.hpp + asio/detail/descriptor_ops.hpp + asio/detail/descriptor_read_op.hpp + asio/detail/descriptor_write_op.hpp + asio/detail/dev_poll_reactor.hpp + asio/detail/epoll_reactor.hpp + asio/detail/event.hpp + asio/detail/eventfd_select_interrupter.hpp + asio/detail/executor_op.hpp + asio/detail/fd_set_adapter.hpp + asio/detail/fenced_block.hpp + asio/detail/functional.hpp + asio/detail/gcc_arm_fenced_block.hpp + asio/detail/gcc_hppa_fenced_block.hpp + asio/detail/gcc_sync_fenced_block.hpp + asio/detail/gcc_x86_fenced_block.hpp + asio/detail/global.hpp + asio/detail/handler_alloc_helpers.hpp + asio/detail/handler_cont_helpers.hpp + asio/detail/handler_invoke_helpers.hpp + asio/detail/handler_tracking.hpp + asio/detail/handler_type_requirements.hpp + asio/detail/handler_work.hpp + asio/detail/hash_map.hpp + asio/detail/impl/buffer_sequence_adapter.ipp + asio/detail/impl/descriptor_ops.ipp + asio/detail/impl/dev_poll_reactor.hpp + asio/detail/impl/dev_poll_reactor.ipp + asio/detail/impl/epoll_reactor.hpp + asio/detail/impl/epoll_reactor.ipp + asio/detail/impl/eventfd_select_interrupter.ipp + asio/detail/impl/handler_tracking.ipp + asio/detail/impl/kqueue_reactor.hpp + asio/detail/impl/kqueue_reactor.ipp + asio/detail/impl/null_event.ipp + asio/detail/impl/pipe_select_interrupter.ipp + asio/detail/impl/posix_event.ipp + asio/detail/impl/posix_mutex.ipp + asio/detail/impl/posix_thread.ipp + asio/detail/impl/posix_tss_ptr.ipp + asio/detail/impl/reactive_descriptor_service.ipp + asio/detail/impl/reactive_serial_port_service.ipp + asio/detail/impl/reactive_socket_service_base.ipp + asio/detail/impl/resolver_service_base.ipp + asio/detail/impl/scheduler.ipp + asio/detail/impl/select_reactor.hpp + asio/detail/impl/select_reactor.ipp + asio/detail/impl/service_registry.hpp + asio/detail/impl/service_registry.ipp + asio/detail/impl/signal_set_service.ipp + asio/detail/impl/socket_ops.ipp + asio/detail/impl/socket_select_interrupter.ipp + asio/detail/impl/strand_executor_service.hpp + asio/detail/impl/strand_executor_service.ipp + asio/detail/impl/strand_service.hpp + asio/detail/impl/strand_service.ipp + asio/detail/impl/throw_error.ipp + asio/detail/impl/timer_queue_ptime.ipp + asio/detail/impl/timer_queue_set.ipp + asio/detail/impl/win_event.ipp + asio/detail/impl/win_iocp_handle_service.ipp + asio/detail/impl/win_iocp_io_context.hpp + asio/detail/impl/win_iocp_io_context.ipp + asio/detail/impl/win_iocp_serial_port_service.ipp + asio/detail/impl/win_iocp_socket_service_base.ipp + asio/detail/impl/win_mutex.ipp + asio/detail/impl/win_object_handle_service.ipp + asio/detail/impl/win_static_mutex.ipp + asio/detail/impl/win_thread.ipp + asio/detail/impl/win_tss_ptr.ipp + asio/detail/impl/winrt_ssocket_service_base.ipp + asio/detail/impl/winrt_timer_scheduler.hpp + asio/detail/impl/winrt_timer_scheduler.ipp + asio/detail/impl/winsock_init.ipp + asio/detail/io_control.hpp + asio/detail/is_buffer_sequence.hpp + asio/detail/is_executor.hpp + asio/detail/keyword_tss_ptr.hpp + asio/detail/kqueue_reactor.hpp + asio/detail/limits.hpp + asio/detail/local_free_on_block_exit.hpp + asio/detail/macos_fenced_block.hpp + asio/detail/memory.hpp + asio/detail/mutex.hpp + asio/detail/noncopyable.hpp + asio/detail/null_event.hpp + asio/detail/null_fenced_block.hpp + asio/detail/null_global.hpp + asio/detail/null_mutex.hpp + asio/detail/null_reactor.hpp + asio/detail/null_signal_blocker.hpp + asio/detail/null_socket_service.hpp + asio/detail/null_static_mutex.hpp + asio/detail/null_thread.hpp + asio/detail/null_tss_ptr.hpp + asio/detail/object_pool.hpp + asio/detail/old_win_sdk_compat.hpp + asio/detail/op_queue.hpp + asio/detail/operation.hpp + asio/detail/pipe_select_interrupter.hpp + asio/detail/pop_options.hpp + asio/detail/posix_event.hpp + asio/detail/posix_fd_set_adapter.hpp + asio/detail/posix_global.hpp + asio/detail/posix_mutex.hpp + asio/detail/posix_signal_blocker.hpp + asio/detail/posix_static_mutex.hpp + asio/detail/posix_thread.hpp + asio/detail/posix_tss_ptr.hpp + asio/detail/push_options.hpp + asio/detail/reactive_descriptor_service.hpp + asio/detail/reactive_null_buffers_op.hpp + asio/detail/reactive_serial_port_service.hpp + asio/detail/reactive_socket_accept_op.hpp + asio/detail/reactive_socket_connect_op.hpp + asio/detail/reactive_socket_recv_op.hpp + asio/detail/reactive_socket_recvfrom_op.hpp + asio/detail/reactive_socket_recvmsg_op.hpp + asio/detail/reactive_socket_send_op.hpp + asio/detail/reactive_socket_sendto_op.hpp + asio/detail/reactive_socket_service.hpp + asio/detail/reactive_socket_service_base.hpp + asio/detail/reactive_wait_op.hpp + asio/detail/reactor.hpp + asio/detail/reactor_fwd.hpp + asio/detail/reactor_op.hpp + asio/detail/reactor_op_queue.hpp + asio/detail/recycling_allocator.hpp + asio/detail/regex_fwd.hpp + asio/detail/resolve_endpoint_op.hpp + asio/detail/resolve_op.hpp + asio/detail/resolve_query_op.hpp + asio/detail/resolver_service.hpp + asio/detail/resolver_service_base.hpp + asio/detail/scheduler.hpp + asio/detail/scheduler_operation.hpp + asio/detail/scheduler_thread_info.hpp + asio/detail/scoped_lock.hpp + asio/detail/scoped_ptr.hpp + asio/detail/select_interrupter.hpp + asio/detail/select_reactor.hpp + asio/detail/service_registry.hpp + asio/detail/signal_blocker.hpp + asio/detail/signal_handler.hpp + asio/detail/signal_init.hpp + asio/detail/signal_op.hpp + asio/detail/signal_set_service.hpp + asio/detail/socket_holder.hpp + asio/detail/socket_ops.hpp + asio/detail/socket_option.hpp + asio/detail/socket_select_interrupter.hpp + asio/detail/socket_types.hpp + asio/detail/solaris_fenced_block.hpp + asio/detail/static_mutex.hpp + asio/detail/std_event.hpp + asio/detail/std_fenced_block.hpp + asio/detail/std_global.hpp + asio/detail/std_mutex.hpp + asio/detail/std_static_mutex.hpp + asio/detail/std_thread.hpp + asio/detail/strand_executor_service.hpp + asio/detail/strand_service.hpp + asio/detail/string_view.hpp + asio/detail/thread.hpp + asio/detail/thread_context.hpp + asio/detail/thread_group.hpp + asio/detail/thread_info_base.hpp + asio/detail/throw_error.hpp + asio/detail/throw_exception.hpp + asio/detail/timer_queue.hpp + asio/detail/timer_queue_base.hpp + asio/detail/timer_queue_ptime.hpp + asio/detail/timer_queue_set.hpp + asio/detail/timer_scheduler.hpp + asio/detail/timer_scheduler_fwd.hpp + asio/detail/tss_ptr.hpp + asio/detail/type_traits.hpp + asio/detail/variadic_templates.hpp + asio/detail/wait_handler.hpp + asio/detail/wait_op.hpp + asio/detail/win_event.hpp + asio/detail/win_fd_set_adapter.hpp + asio/detail/win_fenced_block.hpp + asio/detail/win_global.hpp + asio/detail/win_iocp_handle_read_op.hpp + asio/detail/win_iocp_handle_service.hpp + asio/detail/win_iocp_handle_write_op.hpp + asio/detail/win_iocp_io_context.hpp + asio/detail/win_iocp_null_buffers_op.hpp + asio/detail/win_iocp_operation.hpp + asio/detail/win_iocp_overlapped_op.hpp + asio/detail/win_iocp_overlapped_ptr.hpp + asio/detail/win_iocp_serial_port_service.hpp + asio/detail/win_iocp_socket_accept_op.hpp + asio/detail/win_iocp_socket_connect_op.hpp + asio/detail/win_iocp_socket_recv_op.hpp + asio/detail/win_iocp_socket_recvfrom_op.hpp + asio/detail/win_iocp_socket_recvmsg_op.hpp + asio/detail/win_iocp_socket_send_op.hpp + asio/detail/win_iocp_socket_service.hpp + asio/detail/win_iocp_socket_service_base.hpp + asio/detail/win_iocp_thread_info.hpp + asio/detail/win_iocp_wait_op.hpp + asio/detail/win_mutex.hpp + asio/detail/win_object_handle_service.hpp + asio/detail/win_static_mutex.hpp + asio/detail/win_thread.hpp + asio/detail/win_tss_ptr.hpp + asio/detail/winapp_thread.hpp + asio/detail/wince_thread.hpp + asio/detail/winrt_async_manager.hpp + asio/detail/winrt_async_op.hpp + asio/detail/winrt_resolve_op.hpp + asio/detail/winrt_resolver_service.hpp + asio/detail/winrt_socket_connect_op.hpp + asio/detail/winrt_socket_recv_op.hpp + asio/detail/winrt_socket_send_op.hpp + asio/detail/winrt_ssocket_service.hpp + asio/detail/winrt_ssocket_service_base.hpp + asio/detail/winrt_timer_scheduler.hpp + asio/detail/winrt_utils.hpp + asio/detail/winsock_init.hpp + asio/detail/work_dispatcher.hpp + asio/detail/wrapped_handler.hpp + asio/dispatch.hpp + asio/error.hpp + asio/error_code.hpp + asio/execution_context.hpp + asio/executor.hpp + asio/executor_work_guard.hpp + asio/experimental.hpp + asio/experimental/co_spawn.hpp + asio/experimental/detached.hpp + asio/experimental/impl/co_spawn.hpp + asio/experimental/impl/detached.hpp + asio/experimental/impl/redirect_error.hpp + asio/experimental/redirect_error.hpp + asio/generic/basic_endpoint.hpp + asio/generic/datagram_protocol.hpp + asio/generic/detail/endpoint.hpp + asio/generic/detail/impl/endpoint.ipp + asio/generic/raw_protocol.hpp + asio/generic/seq_packet_protocol.hpp + asio/generic/stream_protocol.hpp + asio/handler_alloc_hook.hpp + asio/handler_continuation_hook.hpp + asio/handler_invoke_hook.hpp + asio/handler_type.hpp + asio/high_resolution_timer.hpp + asio/impl/buffered_read_stream.hpp + asio/impl/buffered_write_stream.hpp + asio/impl/connect.hpp + asio/impl/defer.hpp + asio/impl/dispatch.hpp + asio/impl/error.ipp + asio/impl/error_code.ipp + asio/impl/execution_context.hpp + asio/impl/execution_context.ipp + asio/impl/executor.hpp + asio/impl/executor.ipp + asio/impl/handler_alloc_hook.ipp + asio/impl/io_context.hpp + asio/impl/io_context.ipp + asio/impl/post.hpp + asio/impl/read.hpp + asio/impl/read_at.hpp + asio/impl/read_until.hpp + asio/impl/serial_port_base.hpp + asio/impl/serial_port_base.ipp + asio/impl/spawn.hpp + asio/impl/src.cpp + asio/impl/src.hpp + asio/impl/system_context.hpp + asio/impl/system_context.ipp + asio/impl/system_executor.hpp + asio/impl/thread_pool.hpp + asio/impl/thread_pool.ipp + asio/impl/use_future.hpp + asio/impl/write.hpp + asio/impl/write_at.hpp + asio/io_context.hpp + asio/io_context_strand.hpp + asio/io_service.hpp + asio/io_service_strand.hpp + asio/ip/address.hpp + asio/ip/address_v4.hpp + asio/ip/address_v4_iterator.hpp + asio/ip/address_v4_range.hpp + asio/ip/address_v6.hpp + asio/ip/address_v6_iterator.hpp + asio/ip/address_v6_range.hpp + asio/ip/bad_address_cast.hpp + asio/ip/basic_endpoint.hpp + asio/ip/basic_resolver.hpp + asio/ip/basic_resolver_entry.hpp + asio/ip/basic_resolver_iterator.hpp + asio/ip/basic_resolver_query.hpp + asio/ip/basic_resolver_results.hpp + asio/ip/detail/endpoint.hpp + asio/ip/detail/impl/endpoint.ipp + asio/ip/detail/socket_option.hpp + asio/ip/host_name.hpp + asio/ip/icmp.hpp + asio/ip/impl/address.hpp + asio/ip/impl/address.ipp + asio/ip/impl/address_v4.hpp + asio/ip/impl/address_v4.ipp + asio/ip/impl/address_v6.hpp + asio/ip/impl/address_v6.ipp + asio/ip/impl/basic_endpoint.hpp + asio/ip/impl/host_name.ipp + asio/ip/impl/network_v4.hpp + asio/ip/impl/network_v4.ipp + asio/ip/impl/network_v6.hpp + asio/ip/impl/network_v6.ipp + asio/ip/multicast.hpp + asio/ip/network_v4.hpp + asio/ip/network_v6.hpp + asio/ip/resolver_base.hpp + asio/ip/resolver_query_base.hpp + asio/ip/resolver_service.hpp + asio/ip/tcp.hpp + asio/ip/udp.hpp + asio/ip/unicast.hpp + asio/ip/v6_only.hpp + asio/is_executor.hpp + asio/is_read_buffered.hpp + asio/is_write_buffered.hpp + asio/local/basic_endpoint.hpp + asio/local/connect_pair.hpp + asio/local/datagram_protocol.hpp + asio/local/detail/endpoint.hpp + asio/local/detail/impl/endpoint.ipp + asio/local/stream_protocol.hpp + asio/packaged_task.hpp + asio/placeholders.hpp + asio/posix/basic_descriptor.hpp + asio/posix/basic_stream_descriptor.hpp + asio/posix/descriptor.hpp + asio/posix/descriptor_base.hpp + asio/posix/stream_descriptor.hpp + asio/posix/stream_descriptor_service.hpp + asio/post.hpp + asio/raw_socket_service.hpp + asio/read.hpp + asio/read_at.hpp + asio/read_until.hpp + asio/seq_packet_socket_service.hpp + asio/serial_port.hpp + asio/serial_port_base.hpp + asio/serial_port_service.hpp + asio/signal_set.hpp + asio/signal_set_service.hpp + asio/socket_acceptor_service.hpp + asio/socket_base.hpp + asio/spawn.hpp + asio/ssl.hpp + asio/ssl/context.hpp + asio/ssl/context_base.hpp + asio/ssl/detail/buffered_handshake_op.hpp + asio/ssl/detail/engine.hpp + asio/ssl/detail/handshake_op.hpp + asio/ssl/detail/impl/engine.ipp + asio/ssl/detail/impl/openssl_init.ipp + asio/ssl/detail/io.hpp + asio/ssl/detail/openssl_init.hpp + asio/ssl/detail/openssl_types.hpp + asio/ssl/detail/password_callback.hpp + asio/ssl/detail/read_op.hpp + asio/ssl/detail/shutdown_op.hpp + asio/ssl/detail/stream_core.hpp + asio/ssl/detail/verify_callback.hpp + asio/ssl/detail/write_op.hpp + asio/ssl/error.hpp + asio/ssl/impl/context.hpp + asio/ssl/impl/context.ipp + asio/ssl/impl/error.ipp + asio/ssl/impl/rfc2818_verification.ipp + asio/ssl/impl/src.hpp + asio/ssl/rfc2818_verification.hpp + asio/ssl/stream.hpp + asio/ssl/stream_base.hpp + asio/ssl/verify_context.hpp + asio/ssl/verify_mode.hpp + asio/steady_timer.hpp + asio/strand.hpp + asio/stream_socket_service.hpp + asio/streambuf.hpp + asio/system_context.hpp + asio/system_error.hpp + asio/system_executor.hpp + asio/system_timer.hpp + asio/thread.hpp + asio/thread_pool.hpp + asio/time_traits.hpp + asio/ts/buffer.hpp + asio/ts/executor.hpp + asio/ts/internet.hpp + asio/ts/io_context.hpp + asio/ts/net.hpp + asio/ts/netfwd.hpp + asio/ts/socket.hpp + asio/ts/timer.hpp + asio/unyield.hpp + asio/use_future.hpp + asio/uses_executor.hpp + asio/version.hpp + asio/wait_traits.hpp + asio/waitable_timer_service.hpp + asio/windows/basic_handle.hpp + asio/windows/basic_object_handle.hpp + asio/windows/basic_random_access_handle.hpp + asio/windows/basic_stream_handle.hpp + asio/windows/object_handle.hpp + asio/windows/object_handle_service.hpp + asio/windows/overlapped_handle.hpp + asio/windows/overlapped_ptr.hpp + asio/windows/random_access_handle.hpp + asio/windows/random_access_handle_service.hpp + asio/windows/stream_handle.hpp + asio/windows/stream_handle_service.hpp + asio/write.hpp + asio/write_at.hpp + asio/yield.hpp +) + +# Install public headers + +foreach(header ${asio_PUBLIC_HEADERS}) + get_filename_component(path ${header} PATH) + install(FILES ${header} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${path}) +endforeach() + +# Standalone library + +add_library(standalone INTERFACE) + +target_include_directories(standalone INTERFACE + $ + $) + +target_compile_definitions(standalone INTERFACE ASIO_STANDALONE) + +install(TARGETS standalone EXPORT asio-targets) diff --git a/asio/src/CMakeLists.txt b/asio/src/CMakeLists.txt new file mode 100644 index 0000000000..aa5c1a4495 --- /dev/null +++ b/asio/src/CMakeLists.txt @@ -0,0 +1,4 @@ +# Examples +if(asio_BUILD_EXAMPLES) + add_subdirectory(examples) +endif() diff --git a/asio/src/examples/CMakeLists.txt b/asio/src/examples/CMakeLists.txt new file mode 100644 index 0000000000..e6fc8068e8 --- /dev/null +++ b/asio/src/examples/CMakeLists.txt @@ -0,0 +1,35 @@ +# Minimum supported CMake version +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +# Project +project(asio_examples + VERSION 1.11.0 + LANGUAGES CXX) + +# Options +set(asio_BUILD_EXAMPLES_CPP11 ON CACHE BOOL "Build asio C++11 examples") +set(asio_BUILD_EXAMPLES_CPP14 ON CACHE BOOL "Build asio C++14 examples") + +# Check asio targets +if(TARGET standalone) + add_library(asio::standalone ALIAS standalone) + set(asio_FOUND TRUE) +endif() + +# Find asio package +if(NOT asio_FOUND) + find_package(asio CONFIG REQUIRED) +endif() + +# Installation configuration +include(GNUInstallDirs) + +# C++11 examples +if(asio_BUILD_EXAMPLES_CPP11) + add_subdirectory(cpp11) +endif() + +# C++14 examples +if(asio_BUILD_EXAMPLES_CPP14) + add_subdirectory(cpp14) +endif() diff --git a/asio/src/examples/cpp11/CMakeLists.txt b/asio/src/examples/cpp11/CMakeLists.txt new file mode 100644 index 0000000000..4b73c49fef --- /dev/null +++ b/asio/src/examples/cpp11/CMakeLists.txt @@ -0,0 +1,72 @@ +set(target_prefix asio_cpp11_) + +set(noinst_PROGRAMS + allocation/server + buffers/reference_counted + chat/chat_client + chat/chat_server + echo/async_tcp_echo_server + echo/async_udp_echo_server + echo/blocking_tcp_echo_client + echo/blocking_tcp_echo_server + echo/blocking_udp_echo_client + echo/blocking_udp_echo_server + executors/actor + executors/bank_account_1 + executors/bank_account_2 + executors/fork_join + executors/pipeline + executors/priority_scheduler + futures/daytime_client + http/server/http_server + invocation/prioritised_handlers + iostreams/http_client + multicast/receiver + multicast/sender + nonblocking/third_party_lib) + +set(allocation_server_SOURCES allocation/server.cpp) +set(buffers_reference_counted_SOURCES buffers/reference_counted.cpp) +set(chat_chat_client_SOURCES chat/chat_client.cpp) +set(chat_chat_server_SOURCES chat/chat_server.cpp) +set(echo_async_tcp_echo_server_SOURCES echo/async_tcp_echo_server.cpp) +set(echo_async_udp_echo_server_SOURCES echo/async_udp_echo_server.cpp) +set(echo_blocking_tcp_echo_client_SOURCES echo/blocking_tcp_echo_client.cpp) +set(echo_blocking_tcp_echo_server_SOURCES echo/blocking_tcp_echo_server.cpp) +set(echo_blocking_udp_echo_client_SOURCES echo/blocking_udp_echo_client.cpp) +set(echo_blocking_udp_echo_server_SOURCES echo/blocking_udp_echo_server.cpp) +set(executors_actor_SOURCES executors/actor.cpp) +set(executors_bank_account_1_SOURCES executors/bank_account_1.cpp) +set(executors_bank_account_2_SOURCES executors/bank_account_2.cpp) +set(executors_fork_join_SOURCES executors/fork_join.cpp) +set(executors_pipeline_SOURCES executors/pipeline.cpp) +set(executors_priority_scheduler_SOURCES executors/priority_scheduler.cpp) +set(futures_daytime_client_SOURCES futures/daytime_client.cpp) +set(http_server_http_server_SOURCES + http/server/connection.cpp + http/server/connection_manager.cpp + http/server/main.cpp + http/server/mime_types.cpp + http/server/reply.cpp + http/server/request_handler.cpp + http/server/request_parser.cpp + http/server/server.cpp) +set(invocation_prioritised_handlers_SOURCES invocation/prioritised_handlers.cpp) +set(iostreams_http_client_SOURCES iostreams/http_client.cpp) +set(multicast_receiver_SOURCES multicast/receiver.cpp) +set(multicast_sender_SOURCES multicast/sender.cpp) +set(nonblocking_third_party_lib_SOURCES nonblocking/third_party_lib.cpp) + +foreach(program ${noinst_PROGRAMS}) + string(REPLACE "/" "_" target ${program}) + add_executable(${target_prefix}${target} ${${target}_SOURCES}) + set_target_properties(${target_prefix}${target} PROPERTIES + CXX_STANDARD 11) + target_link_libraries(${target_prefix}${target} + asio::standalone) + if(WIN32) + target_link_libraries(${target_prefix}${target} wsock32 ws2_32) + endif() + install(TARGETS ${target_prefix}${target} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +endforeach() diff --git a/asio/src/examples/cpp14/CMakeLists.txt b/asio/src/examples/cpp14/CMakeLists.txt new file mode 100644 index 0000000000..d2e1f022c3 --- /dev/null +++ b/asio/src/examples/cpp14/CMakeLists.txt @@ -0,0 +1,48 @@ +set(target_prefix asio_cpp14_) + +set(noinst_PROGRAMS + echo/async_tcp_echo_server + echo/async_udp_echo_server + echo/blocking_tcp_echo_client + echo/blocking_tcp_echo_server + echo/blocking_udp_echo_client + echo/blocking_udp_echo_server + executors/actor + executors/async_1 + executors/async_2 + executors/bank_account_1 + executors/bank_account_2 + executors/fork_join + executors/pipeline + executors/priority_scheduler + iostreams/http_client) + +set(echo_async_tcp_echo_server_SOURCES echo/async_tcp_echo_server.cpp) +set(echo_async_udp_echo_server_SOURCES echo/async_udp_echo_server.cpp) +set(echo_blocking_tcp_echo_client_SOURCES echo/blocking_tcp_echo_client.cpp) +set(echo_blocking_tcp_echo_server_SOURCES echo/blocking_tcp_echo_server.cpp) +set(echo_blocking_udp_echo_client_SOURCES echo/blocking_udp_echo_client.cpp) +set(echo_blocking_udp_echo_server_SOURCES echo/blocking_udp_echo_server.cpp) +set(executors_actor_SOURCES executors/actor.cpp) +set(executors_async_1_SOURCES executors/async_1.cpp) +set(executors_async_2_SOURCES executors/async_2.cpp) +set(executors_bank_account_1_SOURCES executors/bank_account_1.cpp) +set(executors_bank_account_2_SOURCES executors/bank_account_2.cpp) +set(executors_fork_join_SOURCES executors/fork_join.cpp) +set(executors_pipeline_SOURCES executors/pipeline.cpp) +set(executors_priority_scheduler_SOURCES executors/priority_scheduler.cpp) +set(iostreams_http_client_SOURCES iostreams/http_client.cpp) + +foreach(program ${noinst_PROGRAMS}) + string(REPLACE "/" "_" target ${program}) + add_executable(${target_prefix}${target} ${${target}_SOURCES}) + set_target_properties(${target_prefix}${target} PROPERTIES + CXX_STANDARD 14) + target_link_libraries(${target_prefix}${target} + asio::standalone) + if(WIN32) + target_link_libraries(${target_prefix}${target} wsock32 ws2_32) + endif() + install(TARGETS ${target_prefix}${target} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +endforeach()