diff options
| author | luncliff <luncliff@gmail.com> | 2020-04-10 18:17:04 +0900 |
|---|---|---|
| committer | luncliff <luncliff@gmail.com> | 2020-04-10 18:17:04 +0900 |
| commit | 7e6235bd3adca2a87f245a33657baabaa2c92993 (patch) | |
| tree | e2d4b966062be2332d833ad10f261fab0e28f228 /ports/cppcoro | |
| parent | dfdb2095fbef21060df6205bd2875ede4a585a7d (diff) | |
| download | vcpkg-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.txt | 355 | ||||
| -rw-r--r-- | ports/cppcoro/CONTROL | 8 | ||||
| -rw-r--r-- | ports/cppcoro/portfile.cmake | 14 |
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
|
