Skip to content

Commit 07bb85e

Browse files
authored
Merge pull request #15 from Garcia6l20/add_cmake_support
Add cmake support
2 parents f6fb710 + e0cd46a commit 07bb85e

File tree

5 files changed

+22
-7
lines changed

5 files changed

+22
-7
lines changed

CMakeLists.txt

+5-4
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ set(CMAKE_CXX_EXTENSIONS OFF)
55
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
66

77
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
8-
include(CTest)
98

109
add_subdirectory(lib)
10+
11+
enable_testing()
1112
if(BUILD_TESTING)
1213
add_subdirectory(test)
1314
endif()
@@ -20,10 +21,10 @@ configure_file(cmake/cppcoroConfig.cmake
2021
COPYONLY)
2122

2223
set(config_package_location lib/cmake/cppcoro)
23-
install(DIRECTORY include
24-
DESTINATION .
24+
install(DIRECTORY include/cppcoro
25+
DESTINATION include
2526
COMPONENT Devel)
26-
install(FILES cmake/FindCppcoroCoroutines.cmake
27+
install(FILES cmake/FindCoroutines.cmake
2728
DESTINATION ${config_package_location}
2829
COMPONENT Devel)
2930
install(EXPORT cppcoroTargets

cmake/FindCoroutines.cmake

+4
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,15 @@ cmake_push_check_state()
110110
set(CMAKE_REQUIRED_QUIET ${Coroutines_FIND_QUIETLY})
111111

112112
check_cxx_compiler_flag(/await _CXX_COROUTINES_SUPPORTS_MS_FLAG)
113+
check_cxx_compiler_flag(/await:heapelide _CXX_COROUTINES_SUPPORTS_MS_HEAPELIDE_FLAG)
113114
check_cxx_compiler_flag(-fcoroutines-ts _CXX_COROUTINES_SUPPORTS_TS_FLAG)
114115
check_cxx_compiler_flag(-fcoroutines _CXX_COROUTINES_SUPPORTS_CORO_FLAG)
115116

116117
if(_CXX_COROUTINES_SUPPORTS_MS_FLAG)
117118
set(_CXX_COROUTINES_EXTRA_FLAGS "/await")
119+
if(_CXX_COROUTINES_SUPPORTS_MS_HEAPELIDE_FLAG AND CMAKE_SIZEOF_VOID_P GREATER_EQUAL 8)
120+
list(APPEND _CXX_COROUTINES_EXTRA_FLAGS "/await:heapelide")
121+
endif()
118122
elseif(_CXX_COROUTINES_SUPPORTS_TS_FLAG)
119123
set(_CXX_COROUTINES_EXTRA_FLAGS "-fcoroutines-ts")
120124
elseif(_CXX_COROUTINES_SUPPORTS_CORO_FLAG)

cmake/cppcoroConfig.cmake

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
22

33
include(CMakeFindDependencyMacro)
4-
find_dependency(CppcoroCoroutines QUIET REQUIRED)
4+
find_dependency(Coroutines QUIET REQUIRED)
55

66
include("${CMAKE_CURRENT_LIST_DIR}/cppcoroTargets.cmake")

lib/CMakeLists.txt

+11-1
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,14 @@ if(WIN32)
144144
socket_recv_from_operation.cpp
145145
)
146146
list(APPEND sources ${win32Sources})
147+
148+
list(APPEND libraries Ws2_32 Mswsock Synchronization)
149+
list(APPEND compile_options /EHsc)
150+
151+
if("${MSVC_VERSION}" VERSION_GREATER_EQUAL 1900)
152+
# TODO remove this when experimental/non-experimental include are fixed
153+
list(APPEND compile_definition _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING=1)
154+
endif()
147155
endif()
148156

149157
add_library(cppcoro
@@ -158,9 +166,11 @@ target_include_directories(cppcoro PUBLIC
158166
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
159167
$<INSTALL_INTERFACE:include>)
160168
target_compile_features(cppcoro PUBLIC cxx_std_20)
169+
target_compile_definitions(cppcoro PUBLIC ${compile_definition})
170+
target_compile_options(cppcoro PUBLIC ${compile_options})
161171

162172
find_package(Coroutines COMPONENTS Experimental Final REQUIRED)
163-
target_link_libraries(cppcoro PUBLIC std::coroutines)
173+
target_link_libraries(cppcoro PUBLIC std::coroutines ${libraries})
164174

165175
install(TARGETS cppcoro EXPORT cppcoroTargets
166176
LIBRARY DESTINATION lib

test/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/doctest/doctest.cmake)
55

66
find_package(Threads REQUIRED)
77

8-
add_library(tests-main SHARED
8+
add_library(tests-main STATIC
99
main.cpp
1010
counted.cpp
1111
)

0 commit comments

Comments
 (0)