aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/boost-asio/0001-add-options.patch
blob: 95c2a1143ddd25dcf95e783f64be4db98c3bce7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d8e02fcec..e6e6d66e6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,6 +12,8 @@ project(boost_asio VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
 
 add_library(boost_asio_core INTERFACE)
 add_library(Boost::asio_core ALIAS boost_asio_core)
+set(boost_asio_install_targets boost_asio_core)
+set(boost_asio_aliases Boost::asio_core)
 
 target_include_directories(boost_asio_core INTERFACE include)
 
@@ -27,47 +29,60 @@ target_link_libraries(boost_asio_core
 target_compile_features(boost_asio_core INTERFACE cxx_std_11)
 
 # deadline_timer support
+option(BOOST_ASIO_SUPPORT_DEADLINE_TIMER "Support deadline_timer" ON)
 
-add_library(boost_asio_deadline_timer INTERFACE)
-add_library(Boost::asio_deadline_timer ALIAS boost_asio_deadline_timer)
+if (BOOST_ASIO_SUPPORT_DEADLINE_TIMER)
+  add_library(boost_asio_deadline_timer INTERFACE)
+  add_library(Boost::asio_deadline_timer ALIAS boost_asio_deadline_timer)
+  list(APPEND boost_asio_install_targets boost_asio_deadline_timer)
+  list(APPEND boost_asio_aliases Boost::asio_deadline_timer)
 
-target_include_directories(boost_asio_deadline_timer INTERFACE include)
+  target_include_directories(boost_asio_deadline_timer INTERFACE include)
 
-target_link_libraries(boost_asio_deadline_timer
-  INTERFACE
-    Boost::asio_core
-    Boost::date_time
-)
+  target_link_libraries(boost_asio_deadline_timer
+    INTERFACE
+      Boost::asio_core # Internal dependency (this comment disables adding the internal library to the dependency list in BoostRoot.cmake)
+      $<TARGET_NAME_IF_EXISTS:Boost::date_time>
+  )
 
-target_compile_features(boost_asio_deadline_timer INTERFACE cxx_std_11)
+  target_compile_features(boost_asio_deadline_timer INTERFACE cxx_std_11)
+else()
+  target_compile_definitions(boost_asio_core INTERFACE BOOST_ASIO_DISABLE_BOOST_DATE_TIME)
+endif()
 
 # spawn (stackful coroutines) support
+option(BOOST_ASIO_SUPPORT_SPAWN "Support spawn (stackful coroutines)" ON)
 
-add_library(boost_asio_spawn INTERFACE)
-add_library(Boost::asio_spawn ALIAS boost_asio_spawn)
+if (BOOST_ASIO_SUPPORT_SPAWN)
+  add_library(boost_asio_spawn INTERFACE)
+  add_library(Boost::asio_spawn ALIAS boost_asio_spawn)
+  list(APPEND boost_asio_install_targets boost_asio_spawn)
+  list(APPEND boost_asio_aliases Boost::asio_spawn)
 
-target_include_directories(boost_asio_spawn INTERFACE include)
+  target_include_directories(boost_asio_spawn INTERFACE include)
 
-target_link_libraries(boost_asio_spawn
-  INTERFACE
-    Boost::asio_core
-    Boost::context
-)
+  target_link_libraries(boost_asio_spawn
+    INTERFACE
+      Boost::asio_core # Internal dependency
+      $<TARGET_NAME_IF_EXISTS:Boost::context>
+  )
 
-target_compile_features(boost_asio_spawn INTERFACE cxx_std_11)
+  target_compile_features(boost_asio_spawn INTERFACE cxx_std_11)
+else()
+  target_compile_definitions(boost_asio_core INTERFACE BOOST_ASIO_DISABLE_BOOST_CONTEXT_FIBER)
+endif()
 
 # the works
 
 add_library(boost_asio INTERFACE)
 add_library(Boost::asio ALIAS boost_asio)
+list(APPEND boost_asio_install_targets boost_asio)
 
 target_include_directories(boost_asio INTERFACE include)
 
 target_link_libraries(boost_asio
   INTERFACE
-    Boost::asio_core
-    Boost::asio_deadline_timer
-    Boost::asio_spawn
+    ${boost_asio_aliases}
 )
 
 target_compile_features(boost_asio INTERFACE cxx_std_11)
@@ -75,10 +90,7 @@ target_compile_features(boost_asio INTERFACE cxx_std_11)
 if (BOOST_SUPERPROJECT_VERSION AND NOT CMAKE_VERSION VERSION_LESS 3.13)
   boost_install(
     TARGETS
-      boost_asio_core
-      boost_asio_deadline_timer
-      boost_asio_spawn
-      boost_asio
+      ${boost_asio_install_targets}
     VERSION
       "${BOOST_SUPERPROJECT_VERSION}"
     HEADER_DIRECTORY