aboutsummaryrefslogtreecommitdiff
path: root/ports/cppcoro
diff options
context:
space:
mode:
authorluncliff <luncliff@gmail.com>2020-04-10 18:17:04 +0900
committerluncliff <luncliff@gmail.com>2020-04-10 18:17:04 +0900
commit7e6235bd3adca2a87f245a33657baabaa2c92993 (patch)
treee2d4b966062be2332d833ad10f261fab0e28f228 /ports/cppcoro
parentdfdb2095fbef21060df6205bd2875ede4a585a7d (diff)
downloadvcpkg-7e6235bd3adca2a87f245a33657baabaa2c92993.tar.gz
vcpkg-7e6235bd3adca2a87f245a33657baabaa2c92993.zip
[cppcoro] embed CMakeLists.txt file
* copy the CMakeLists.txt file and start build with it * change version to 2020.2 For now the repo doesn't have any tags. Therefore its version followed the latest commit, which is made in 2020 Feb.
Diffstat (limited to 'ports/cppcoro')
-rw-r--r--ports/cppcoro/CMakeLists.txt355
-rw-r--r--ports/cppcoro/CONTROL8
-rw-r--r--ports/cppcoro/portfile.cmake14
3 files changed, 367 insertions, 10 deletions
diff --git a/ports/cppcoro/CMakeLists.txt b/ports/cppcoro/CMakeLists.txt
new file mode 100644
index 000000000..3f1a3ebae
--- /dev/null
+++ b/ports/cppcoro/CMakeLists.txt
@@ -0,0 +1,355 @@
+
+cmake_minimum_required(VERSION 3.8)
+project(cppcoro VERSION 2020.2 LANGUAGES CXX)
+
+add_library(cppcoro
+ lib/async_mutex.cpp
+ lib/lightweight_manual_reset_event.cpp
+ lib/async_auto_reset_event.cpp
+ lib/async_manual_reset_event.cpp
+ lib/auto_reset_event.cpp
+ lib/auto_reset_event.hpp
+ lib/cancellation_registration.cpp
+ lib/cancellation_source.cpp
+ lib/cancellation_state.cpp
+ lib/cancellation_state.hpp
+ lib/cancellation_token.cpp
+ lib/spin_mutex.cpp
+ lib/spin_mutex.hpp
+ lib/spin_wait.cpp
+ lib/spin_wait.hpp
+ lib/static_thread_pool.cpp
+ lib/ip_address.cpp
+ lib/ip_endpoint.cpp
+ lib/ipv4_address.cpp
+ lib/ipv4_endpoint.cpp
+ lib/ipv6_address.cpp
+ lib/ipv6_endpoint.cpp
+)
+
+set_target_properties(cppcoro
+PROPERTIES
+ CXX_STANDARD 17 # expect C++ Coroutines TS <experimental/coroutine>
+)
+
+if(APPLE)
+ message(STATUS "using sysroot: ${CMAKE_OSX_SYSROOT}")
+
+elseif(WIN32)
+ message(STATUS "using platform: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
+ # for now, build in single target
+ target_sources(cppcoro
+ PRIVATE
+ lib/win32.cpp
+ lib/file.cpp
+ lib/file_read_operation.cpp
+ lib/file_write_operation.cpp
+ lib/read_only_file.cpp
+ lib/read_write_file.cpp
+ lib/readable_file.cpp
+ lib/writable_file.cpp
+ lib/write_only_file.cpp
+ lib/socket.cpp
+ lib/socket_accept_operation.cpp
+ lib/socket_connect_operation.cpp
+ lib/socket_send_operation.cpp
+ lib/socket_send_to_operation.cpp
+ lib/socket_disconnect_operation.cpp
+ lib/socket_helpers.cpp
+ lib/socket_helpers.hpp
+ lib/socket_recv_from_operation.cpp
+ lib/socket_recv_operation.cpp
+ lib/io_service.cpp
+ )
+ list(APPEND detail_headers
+ include/cppcoro/detail/win32.hpp
+ include/cppcoro/detail/win32_overlapped_operation.hpp
+ )
+ list(APPEND net_headers
+ include/cppcoro/net/socket.hpp
+ include/cppcoro/net/socket_accept_operation.hpp
+ include/cppcoro/net/socket_connect_operation.hpp
+ include/cppcoro/net/socket_disconnect_operation.hpp
+ include/cppcoro/net/socket_recv_operation.hpp
+ include/cppcoro/net/socket_recv_from_operation.hpp
+ include/cppcoro/net/socket_send_operation.hpp
+ include/cppcoro/net/socket_send_to_operation.hpp
+ )
+ set_target_properties(cppcoro
+ PROPERTIES
+ WINDOWS_EXPORT_ALL_SYMBOLS true
+ )
+
+elseif(CMAKE_SYSTEM_NAME MATCHES Linux)
+ message(STATUS "using system: ${CMAKE_HOST_SYSTEM_VERSION}")
+
+endif()
+
+list(APPEND headers
+ include/cppcoro/awaitable_traits.hpp
+ include/cppcoro/is_awaitable.hpp
+ include/cppcoro/async_auto_reset_event.hpp
+ include/cppcoro/async_manual_reset_event.hpp
+ include/cppcoro/async_generator.hpp
+ include/cppcoro/async_mutex.hpp
+ include/cppcoro/async_latch.hpp
+ include/cppcoro/async_scope.hpp
+ include/cppcoro/broken_promise.hpp
+ include/cppcoro/cancellation_registration.hpp
+ include/cppcoro/cancellation_source.hpp
+ include/cppcoro/cancellation_token.hpp
+ include/cppcoro/task.hpp
+ include/cppcoro/sequence_barrier.hpp
+ include/cppcoro/sequence_traits.hpp
+ include/cppcoro/single_producer_sequencer.hpp
+ include/cppcoro/multi_producer_sequencer.hpp
+ include/cppcoro/shared_task.hpp
+ include/cppcoro/single_consumer_event.hpp
+ include/cppcoro/single_consumer_async_auto_reset_event.hpp
+ include/cppcoro/sync_wait.hpp
+ include/cppcoro/task.hpp
+ include/cppcoro/io_service.hpp
+ include/cppcoro/config.hpp
+ include/cppcoro/on_scope_exit.hpp
+ include/cppcoro/file_share_mode.hpp
+ include/cppcoro/file_open_mode.hpp
+ include/cppcoro/file_buffering_mode.hpp
+ include/cppcoro/file.hpp
+ include/cppcoro/fmap.hpp
+ include/cppcoro/when_all.hpp
+ include/cppcoro/when_all_ready.hpp
+ include/cppcoro/resume_on.hpp
+ include/cppcoro/schedule_on.hpp
+ include/cppcoro/generator.hpp
+ include/cppcoro/readable_file.hpp
+ include/cppcoro/recursive_generator.hpp
+ include/cppcoro/writable_file.hpp
+ include/cppcoro/read_only_file.hpp
+ include/cppcoro/write_only_file.hpp
+ include/cppcoro/read_write_file.hpp
+ include/cppcoro/file_read_operation.hpp
+ include/cppcoro/file_write_operation.hpp
+ include/cppcoro/static_thread_pool.hpp
+)
+
+list(APPEND detail_headers
+ include/cppcoro/detail/void_value.hpp
+ include/cppcoro/detail/when_all_ready_awaitable.hpp
+ include/cppcoro/detail/when_all_counter.hpp
+ include/cppcoro/detail/when_all_task.hpp
+ include/cppcoro/detail/get_awaiter.hpp
+ include/cppcoro/detail/is_awaiter.hpp
+ include/cppcoro/detail/any.hpp
+ include/cppcoro/detail/sync_wait_task.hpp
+ include/cppcoro/detail/unwrap_reference.hpp
+ include/cppcoro/detail/lightweight_manual_reset_event.hpp
+)
+
+list(APPEND net_headers
+ include/cppcoro/net/ip_address.hpp
+ include/cppcoro/net/ip_endpoint.hpp
+ include/cppcoro/net/ipv4_address.hpp
+ include/cppcoro/net/ipv4_endpoint.hpp
+ include/cppcoro/net/ipv6_address.hpp
+ include/cppcoro/net/ipv6_endpoint.hpp
+ include/cppcoro/net/socket.hpp
+)
+
+target_include_directories(cppcoro
+PUBLIC
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>
+)
+
+if(${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
+ if(WIN32)
+ target_compile_options(cppcoro
+ PUBLIC
+ /std:c++latest
+ -fms-compatibility -Xclang -fcoroutines-ts
+ )
+ target_compile_definitions(cppcoro
+ PUBLIC
+ _RESUMABLE_FUNCTIONS_SUPPORTED
+ )
+
+ else()
+ target_compile_options(cppcoro
+ PUBLIC
+ -std=c++1z -fcoroutines-ts
+ -stdlib=libc++
+ PRIVATE
+ -fPIC
+ )
+ target_link_libraries(cppcoro
+ PUBLIC
+ c++ pthread
+ PRIVATE
+ -Wall
+ )
+ endif()
+
+elseif(MSVC)
+ target_compile_options(cppcoro
+ PUBLIC
+ /std:c++latest /await
+ /W4
+ PRIVATE
+ "/analyze:max_paths 512"
+ )
+ if(CMAKE_GENERATOR_PLATFORM STREQUAL x64)
+ target_compile_options(cppcoro
+ PUBLIC
+ /await:heapelide
+ )
+ endif()
+
+endif()
+
+if(WIN32)
+ set_target_properties(cppcoro
+ PROPERTIES
+ WINDOWS_EXPORT_ALL_SYMBOLS True
+ )
+
+ target_link_libraries(cppcoro
+ PUBLIC
+ kernel32 synchronization ws2_32 mswsock
+ # msvcrt[d] msvcprt[d] vcruntime ucrt
+ )
+elseif(APPLE)
+
+elseif(CMAKE_SYSTEM_NAME MATCHES Linux)
+ target_link_libraries(cppcoro
+ PUBLIC
+ c++ # stdc++ # expect libc++ instead of libstdc++
+ )
+endif()
+
+install(FILES ${headers}
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/cppcoro
+)
+install(FILES ${detail_headers}
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/cppcoro/details
+)
+install(FILES ${net_headers}
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/cppcoro/net
+)
+install(TARGETS cppcoro
+ EXPORT ${PROJECT_NAME}-config
+ RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
+ LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
+)
+
+install(EXPORT ${PROJECT_NAME}-config
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}
+)
+
+include(CMakePackageConfigHelpers)
+set(VERSION_FILE_PATH ${CMAKE_BINARY_DIR}/cmake/${PROJECT_NAME}-config-version.cmake)
+write_basic_package_version_file(${VERSION_FILE_PATH}
+ VERSION ${PROJECT_VERSION}
+ COMPATIBILITY SameMajorVersion
+)
+
+install(FILES ${VERSION_FILE_PATH}
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}
+)
+
+if(NOT BUILD_TESTING)
+ return()
+endif()
+enable_testing()
+find_package(Threads REQUIRED)
+
+add_executable(cppcoro_test
+ test/main.cpp test/counted.cpp
+ test/generator_tests.cpp
+ # test/recursive_generator_tests.cpp # clang crash
+ test/async_generator_tests.cpp
+ test/async_auto_reset_event_tests.cpp
+ test/async_manual_reset_event_tests.cpp
+ test/async_mutex_tests.cpp
+ test/async_latch_tests.cpp
+ test/cancellation_token_tests.cpp
+ test/task_tests.cpp
+ test/sequence_barrier_tests.cpp
+ test/shared_task_tests.cpp
+ test/sync_wait_tests.cpp
+ test/single_consumer_async_auto_reset_event_tests.cpp
+ test/single_producer_sequencer_tests.cpp
+ test/multi_producer_sequencer_tests.cpp
+ test/when_all_tests.cpp
+ test/when_all_ready_tests.cpp
+ test/ip_address_tests.cpp
+ test/ip_endpoint_tests.cpp
+ test/ipv4_address_tests.cpp
+ test/ipv4_endpoint_tests.cpp
+ test/ipv6_address_tests.cpp
+ test/ipv6_endpoint_tests.cpp
+ test/static_thread_pool_tests.cpp
+)
+
+set_target_properties(cppcoro_test
+PROPERTIES
+ CXX_STANDARD 17 # follow that of `cppcoro` target
+)
+
+target_link_libraries(cppcoro_test
+PRIVATE
+ cppcoro
+ Threads::Threads
+)
+
+set(conan_path ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
+if(EXISTS ${conan_path})
+ include(${conan_path})
+ conan_basic_setup()
+ message(STATUS "using conan: ${conan_path}")
+
+ target_include_directories(cppcoro_test
+ PRIVATE
+ ${CONAN_INCLUDE_DIRS}
+ )
+ target_compile_options(cppcoro_test
+ PRIVATE
+ ${CONAN_DEFINES}
+ )
+ #
+ # 'doctest' is header-only library.
+ # we don't need these functions (and it requires CMake 3.13+)
+ #
+ # target_link_directories(cppcoro_test
+ # PRIVATE
+ # ${CONAN_LIB_DIRS}
+ # )
+ target_link_libraries(cppcoro_test
+ PRIVATE
+ ${CONAN_LIBS}
+ )
+else()
+ find_package(doctest CONFIG REQUIRED)
+ get_target_property(DOCTEST_INCLUDE_DIR doctest::doctest
+ INTERFACE_INCLUDE_DIRECTORIES
+ )
+ message(STATUS "using doctest: ${DOCTEST_INCLUDE_DIR}")
+ target_link_libraries(cppcoro_test
+ PRIVATE
+ doctest::doctest
+ )
+endif()
+
+if(WIN32)
+ target_sources(cppcoro_test
+ PRIVATE
+ test/scheduling_operator_tests.cpp
+ test/io_service_tests.cpp
+ test/file_tests.cpp
+ test/socket_tests.cpp
+ )
+else()
+
+endif()
+
+add_test(NAME test_all COMMAND cppcoro_test --duration=true ) \ No newline at end of file
diff --git a/ports/cppcoro/CONTROL b/ports/cppcoro/CONTROL
index 759974bb6..010bec558 100644
--- a/ports/cppcoro/CONTROL
+++ b/ports/cppcoro/CONTROL
@@ -1,5 +1,5 @@
Source: cppcoro
-Homepage: https://github.com/luncliff/cppcoro
-Version: 2020.04
-Description: A library of C++ coroutine abstractions for the coroutines TS
-Supports: !uwp
+Homepage: https://github.com/lewissbaker/cppcoro
+Version: 2020.2
+Description: A library of C++ coroutine abstractions for the Coroutines TS
+Supports: !(uwp|linux)
diff --git a/ports/cppcoro/portfile.cmake b/ports/cppcoro/portfile.cmake
index fa365a753..a79393082 100644
--- a/ports/cppcoro/portfile.cmake
+++ b/ports/cppcoro/portfile.cmake
@@ -1,14 +1,16 @@
-#
-# the repo is fork of https://github.com/lewissbaker/cppcoro to support CMake / VcPkg
-#
+
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
- REPO luncliff/cppcoro
- REF 2020.04
- SHA512 bd60a97911f4ee6c692e99817e9691cc5063be816c3a09a6100bc8f590f5b1e7b13a372a87e1710993b1bc177bbd99d779b2ebf16a367851b256e396bfd038da
+ REPO lewissbaker/cppcoro
+ REF 92892f31d0c41b8e34e6292d7c9d99228da5c501
+ SHA512 d1997b7449f1c5c0790575d0755ffbb5f9eef13a7610f3ec666a585bdbb93bb1553f79214c1023a1ef23aaeef64078ca6ee3784107645d7a75c7bba943c10b84
HEAD_REF master
)
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt
+ DESTINATION ${SOURCE_PATH}
+)
+
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA