Mercurial
comparison seobeo/BUILD @ 124:dbf14f84d51c
Refactor Seobeo and mrjunejune build files so it works.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Thu, 08 Jan 2026 07:31:32 -0800 |
| parents | 7b1719fa918c |
| children | f236c895604e |
comparison
equal
deleted
inserted
replaced
| 123:3f4ec30e42e0 | 124:dbf14f84d51c |
|---|---|
| 1 load("@rules_cc//cc:cc_binary.bzl", "cc_binary") | |
| 2 load("@rules_cc//cc:cc_library.bzl", "cc_library") | 1 load("@rules_cc//cc:cc_library.bzl", "cc_library") |
| 3 load("@rules_cc//cc:cc_test.bzl", "cc_test") | 2 |
| 4 | 3 # File group |
| 5 filegroup( | 4 filegroup( |
| 6 name = "seobeo_hdrs", | 5 name = "seobeo_hdrs", |
| 7 srcs = [ | 6 srcs = [ |
| 8 "seobeo.h", | 7 "seobeo.h", |
| 9 "seobeo_internal.h", | 8 "seobeo_internal.h", |
| 10 "snapshot_creator.h", | 9 "snapshot_creator.h", |
| 11 ], | 10 ], |
| 12 visibility = ["//visibility:public"], | 11 visibility = ["//visibility:public"], |
| 13 ) | 12 ) |
| 14 | 13 |
| 15 alias( | 14 # Minimal TCP/SSL handling only (no HTTP, no WebSocket) |
| 16 name = "seobeo_server", | 15 alias( |
| 17 actual = select({ | 16 name = "seobeo_min", |
| 18 "//config:macos": ":seobeo_server_macos", | 17 actual = select({ |
| 19 "//config:linux": ":seobeo_server_linux", | 18 "//config:macos": ":seobeo_min_macos", |
| 20 "//conditions:default": ":seobeo_server_linux", | 19 "//config:linux": ":seobeo_min_linux", |
| 21 }), | 20 "//conditions:default": ":seobeo_min_linux", |
| 22 visibility = ["//visibility:public"], | 21 }), |
| 23 ) | 22 visibility = ["//visibility:public"], |
| 24 | 23 ) |
| 25 alias( | 24 |
| 26 name = "seobeo_server_dev", | 25 cc_library( |
| 27 actual = select({ | 26 name = "seobeo_min_macos", |
| 28 "//config:macos": ":seobeo_server_macos_dev", | 27 srcs = [ |
| 29 "//config:linux": ":seobeo_server_linux_dev", | 28 "s_network.c", |
| 30 "//conditions:default": ":seobeo_server_linux_dev", | 29 "s_logging.c", |
| 31 }), | 30 "s_ssl.c", |
| 32 visibility = ["//visibility:public"], | 31 "os/s_macos_edge.c", |
| 33 ) | 32 ], |
| 34 | 33 hdrs = [":seobeo_hdrs"], |
| 35 cc_library( | 34 deps = [ |
| 36 name = "seobeo_server_macos", | 35 "//dowa:dowa", |
| 37 srcs = [ | 36 "@openssl//:ssl", |
| 38 "s__network.c", | 37 ], |
| 39 "s_web.c", | 38 target_compatible_with = [ |
| 39 "@platforms//os:osx", | |
| 40 ], | |
| 41 visibility = ["//visibility:public"], | |
| 42 ) | |
| 43 | |
| 44 cc_library( | |
| 45 name = "seobeo_min_linux", | |
| 46 srcs = [ | |
| 47 "s_network.c", | |
| 48 "s_logging.c", | |
| 49 "s_ssl.c", | |
| 50 "os/s_linux_edge.c", | |
| 51 ], | |
| 52 hdrs = [":seobeo_hdrs"], | |
| 53 deps = [ | |
| 54 "//dowa:dowa", | |
| 55 "@openssl//:ssl", | |
| 56 ], | |
| 57 target_compatible_with = [ | |
| 58 "@platforms//os:linux", | |
| 59 ], | |
| 60 visibility = ["//visibility:public"], | |
| 61 ) | |
| 62 | |
| 63 # TCP Server with HTTP (no WebSocket, no SSL) | |
| 64 alias( | |
| 65 name = "seobeo_tcp_server", | |
| 66 actual = select({ | |
| 67 "//config:macos": ":seobeo_tcp_server_macos", | |
| 68 "//config:linux": ":seobeo_tcp_server_linux", | |
| 69 "//conditions:default": ":seobeo_tcp_server_linux", | |
| 70 }), | |
| 71 visibility = ["//visibility:public"], | |
| 72 ) | |
| 73 | |
| 74 cc_library( | |
| 75 name = "seobeo_tcp_server_macos", | |
| 76 srcs = [ | |
| 77 "s_network.c", | |
| 78 "s_web.c", | |
| 79 "s_logging.c", | |
| 40 "s_ssl.c", | 80 "s_ssl.c", |
| 41 "os/s_macos_edge.c", | 81 "os/s_macos_edge.c", |
| 42 ], | 82 ], |
| 43 hdrs = [":seobeo_hdrs"], | 83 hdrs = [":seobeo_hdrs"], |
| 44 deps = [ | 84 deps = [ |
| 50 ], | 90 ], |
| 51 visibility = ["//visibility:public"], | 91 visibility = ["//visibility:public"], |
| 52 ) | 92 ) |
| 53 | 93 |
| 54 cc_library( | 94 cc_library( |
| 55 name = "seobeo_server_macos_dev", | 95 name = "seobeo_tcp_server_linux", |
| 56 srcs = [ | 96 srcs = [ |
| 57 "s_network.c", | 97 "s_network.c", |
| 58 "s_web.c", | 98 "s_web.c", |
| 59 "s_ssl.c", | 99 "s_logging.c", |
| 60 "os/s_macos_edge.c", | |
| 61 ], | |
| 62 hdrs = [":seobeo_hdrs"], | |
| 63 deps = [ | |
| 64 "//dowa:dowa", | |
| 65 ], | |
| 66 defines = ["SEOBEO_NO_SSL", "SEOBEO_ENABLE_DEBUG"], | |
| 67 target_compatible_with = [ | |
| 68 "@platforms//os:osx", | |
| 69 ], | |
| 70 visibility = ["//visibility:public"], | |
| 71 ) | |
| 72 | |
| 73 cc_library( | |
| 74 name = "seobeo_server_linux", | |
| 75 srcs = [ | |
| 76 "s_network.c", | |
| 77 "s_web.c", | |
| 78 "s_ssl.c", | 100 "s_ssl.c", |
| 79 "os/s_linux_edge.c", | 101 "os/s_linux_edge.c", |
| 80 ], | 102 ], |
| 81 hdrs = [":seobeo_hdrs"], | 103 hdrs = [":seobeo_hdrs"], |
| 82 deps = [ | 104 deps = [ |
| 87 "@platforms//os:linux", | 109 "@platforms//os:linux", |
| 88 ], | 110 ], |
| 89 visibility = ["//visibility:public"], | 111 visibility = ["//visibility:public"], |
| 90 ) | 112 ) |
| 91 | 113 |
| 92 cc_library( | 114 # TCP Server with HTTP + WebSocket |
| 93 name = "seobeo_server_linux_dev", | 115 alias( |
| 94 srcs = [ | 116 name = "seobeo_tcp_server_ws", |
| 95 "s_network.c", | 117 actual = select({ |
| 96 "s_web.c", | 118 "//config:macos": ":seobeo_tcp_server_ws_macos", |
| 97 "s_ssl.c", | 119 "//config:linux": ":seobeo_tcp_server_ws_linux", |
| 98 "os/s_linux_edge.c", | 120 "//conditions:default": ":seobeo_tcp_server_ws_linux", |
| 99 ], | 121 }), |
| 100 hdrs = [":seobeo_hdrs"], | 122 visibility = ["//visibility:public"], |
| 101 deps = [ | 123 ) |
| 102 "//dowa:dowa", | 124 |
| 103 ], | 125 cc_library( |
| 104 defines = ["SEOBEO_NO_SSL", "SEOBEO_ENABLE_DEBUG"], | 126 name = "seobeo_tcp_server_ws_macos", |
| 105 target_compatible_with = [ | 127 srcs = [ |
| 106 "@platforms//os:linux", | 128 "s_network.c", |
| 107 ], | 129 "s_web.c", |
| 108 visibility = ["//visibility:public"], | 130 "s_logging.c", |
| 109 ) | 131 "s_ssl.c", |
| 110 | 132 "s_websocket_server.c", |
| 111 # Client target with SSL support (full functionality) | 133 "os/s_macos_edge.c", |
| 112 alias( | 134 ], |
| 113 name = "seobeo_client", | 135 hdrs = [":seobeo_hdrs"], |
| 114 actual = select({ | 136 deps = [ |
| 115 "//config:macos": ":seobeo_client_macos", | 137 "//dowa:dowa", |
| 116 "//config:linux": ":seobeo_client_linux", | 138 "@openssl//:ssl", |
| 117 "//conditions:default": ":seobeo_client_linux", | 139 ], |
| 118 }), | 140 defines = ["SEOBEO_WEBSOCKET_SERVER"], |
| 119 visibility = ["//visibility:public"], | 141 target_compatible_with = [ |
| 120 ) | 142 "@platforms//os:osx", |
| 121 | 143 ], |
| 122 cc_library( | 144 visibility = ["//visibility:public"], |
| 123 name = "seobeo_client_macos", | 145 ) |
| 124 srcs = [ | 146 |
| 125 "s_network.c", | 147 cc_library( |
| 126 "s_web.c", | 148 name = "seobeo_tcp_server_ws_linux", |
| 149 srcs = [ | |
| 150 "s_network.c", | |
| 151 "s_web.c", | |
| 152 "s_logging.c", | |
| 153 "s_ssl.c", | |
| 154 "s_websocket_server.c", | |
| 155 "os/s_linux_edge.c", | |
| 156 ], | |
| 157 hdrs = [":seobeo_hdrs"], | |
| 158 deps = [ | |
| 159 "//dowa:dowa", | |
| 160 "@openssl//:ssl", | |
| 161 ], | |
| 162 defines = ["SEOBEO_WEBSOCKET_SERVER"], | |
| 163 target_compatible_with = [ | |
| 164 "@platforms//os:linux", | |
| 165 ], | |
| 166 visibility = ["//visibility:public"], | |
| 167 ) | |
| 168 | |
| 169 # TCP Client with HTTP | |
| 170 alias( | |
| 171 name = "seobeo_tcp_client", | |
| 172 actual = select({ | |
| 173 "//config:macos": ":seobeo_tcp_client_macos", | |
| 174 "//config:linux": ":seobeo_tcp_client_linux", | |
| 175 "//conditions:default": ":seobeo_tcp_client_linux", | |
| 176 }), | |
| 177 visibility = ["//visibility:public"], | |
| 178 ) | |
| 179 | |
| 180 cc_library( | |
| 181 name = "seobeo_tcp_client_macos", | |
| 182 srcs = [ | |
| 183 "s_network.c", | |
| 184 "s_logging.c", | |
| 185 "s_ssl.c", | |
| 186 "s_http_client.c", | |
| 187 "snapshot_creator.c", | |
| 188 "os/s_macos_edge.c", | |
| 189 ], | |
| 190 hdrs = [":seobeo_hdrs"], | |
| 191 deps = [ | |
| 192 "//dowa:dowa", | |
| 193 "@openssl//:ssl", | |
| 194 ], | |
| 195 target_compatible_with = [ | |
| 196 "@platforms//os:osx", | |
| 197 ], | |
| 198 visibility = ["//visibility:public"], | |
| 199 ) | |
| 200 | |
| 201 cc_library( | |
| 202 name = "seobeo_tcp_client_linux", | |
| 203 srcs = [ | |
| 204 "s_network.c", | |
| 205 "s_logging.c", | |
| 206 "s_ssl.c", | |
| 207 "s_http_client.c", | |
| 208 "snapshot_creator.c", | |
| 209 "os/s_linux_edge.c", | |
| 210 ], | |
| 211 hdrs = [":seobeo_hdrs"], | |
| 212 deps = [ | |
| 213 "//dowa:dowa", | |
| 214 "@openssl//:ssl", | |
| 215 ], | |
| 216 target_compatible_with = [ | |
| 217 "@platforms//os:linux", | |
| 218 ], | |
| 219 visibility = ["//visibility:public"], | |
| 220 ) | |
| 221 | |
| 222 # TCP Client with HTTP + WebSocket | |
| 223 alias( | |
| 224 name = "seobeo_tcp_client_ws", | |
| 225 actual = select({ | |
| 226 "//config:macos": ":seobeo_tcp_client_ws_macos", | |
| 227 "//config:linux": ":seobeo_tcp_client_ws_linux", | |
| 228 "//conditions:default": ":seobeo_tcp_client_ws_linux", | |
| 229 }), | |
| 230 visibility = ["//visibility:public"], | |
| 231 ) | |
| 232 | |
| 233 cc_library( | |
| 234 name = "seobeo_tcp_client_ws_macos", | |
| 235 srcs = [ | |
| 236 "s_network.c", | |
| 237 "s_logging.c", | |
| 238 "s_ssl.c", | |
| 239 "s_http_client.c", | |
| 240 "s_websocket.c", | |
| 241 "snapshot_creator.c", | |
| 242 "os/s_macos_edge.c", | |
| 243 ], | |
| 244 hdrs = [":seobeo_hdrs"], | |
| 245 deps = [ | |
| 246 "//dowa:dowa", | |
| 247 "@openssl//:ssl", | |
| 248 ], | |
| 249 target_compatible_with = [ | |
| 250 "@platforms//os:osx", | |
| 251 ], | |
| 252 visibility = ["//visibility:public"], | |
| 253 ) | |
| 254 | |
| 255 cc_library( | |
| 256 name = "seobeo_tcp_client_ws_linux", | |
| 257 srcs = [ | |
| 258 "s_network.c", | |
| 259 "s_logging.c", | |
| 260 "s_ssl.c", | |
| 261 "s_http_client.c", | |
| 262 "s_websocket.c", | |
| 263 "snapshot_creator.c", | |
| 264 "os/s_linux_edge.c", | |
| 265 ], | |
| 266 hdrs = [":seobeo_hdrs"], | |
| 267 deps = [ | |
| 268 "//dowa:dowa", | |
| 269 "@openssl//:ssl", | |
| 270 ], | |
| 271 target_compatible_with = [ | |
| 272 "@platforms//os:linux", | |
| 273 ], | |
| 274 visibility = ["//visibility:public"], | |
| 275 ) | |
| 276 | |
| 277 # All combined only used this if you don't want to deal with imports and what not... | |
| 278 alias( | |
| 279 name = "seobeo", | |
| 280 actual = select({ | |
| 281 "//config:macos": ":seobeo_macos", | |
| 282 "//config:linux": ":seobeo_linux", | |
| 283 "//conditions:default": ":seobeo_linux", | |
| 284 }), | |
| 285 visibility = ["//visibility:public"], | |
| 286 ) | |
| 287 | |
| 288 cc_library( | |
| 289 name = "seobeo_macos", | |
| 290 srcs = [ | |
| 291 "s_network.c", | |
| 292 "s_web.c", | |
| 293 "s_logging.c", | |
| 127 "s_ssl.c", | 294 "s_ssl.c", |
| 128 "s_http_client.c", | 295 "s_http_client.c", |
| 129 "s_websocket.c", | 296 "s_websocket.c", |
| 130 "s_websocket_server.c", | 297 "s_websocket_server.c", |
| 131 "snapshot_creator.c", | 298 "snapshot_creator.c", |
| 134 hdrs = [":seobeo_hdrs"], | 301 hdrs = [":seobeo_hdrs"], |
| 135 deps = [ | 302 deps = [ |
| 136 "//dowa:dowa", | 303 "//dowa:dowa", |
| 137 "@openssl//:ssl", | 304 "@openssl//:ssl", |
| 138 ], | 305 ], |
| 139 target_compatible_with = [ | 306 defines = ["SEOBEO_WEBSOCKET_SERVER"], |
| 140 "@platforms//os:osx", | 307 target_compatible_with = [ |
| 141 ], | 308 "@platforms//os:osx", |
| 142 visibility = ["//visibility:public"], | 309 ], |
| 143 ) | 310 visibility = ["//visibility:public"], |
| 144 | 311 ) |
| 145 cc_library( | 312 |
| 146 name = "seobeo_client_linux", | 313 cc_library( |
| 147 srcs = [ | 314 name = "seobeo_linux", |
| 148 "s_network.c", | 315 srcs = [ |
| 149 "s_web.c", | 316 "s_network.c", |
| 317 "s_web.c", | |
| 318 "s_logging.c", | |
| 150 "s_ssl.c", | 319 "s_ssl.c", |
| 151 "s_http_client.c", | 320 "s_http_client.c", |
| 152 "s_websocket.c", | 321 "s_websocket.c", |
| 153 "s_websocket_server.c", | 322 "s_websocket_server.c", |
| 154 "snapshot_creator.c", | 323 "snapshot_creator.c", |
| 157 hdrs = [":seobeo_hdrs"], | 326 hdrs = [":seobeo_hdrs"], |
| 158 deps = [ | 327 deps = [ |
| 159 "//dowa:dowa", | 328 "//dowa:dowa", |
| 160 "@openssl//:ssl", | 329 "@openssl//:ssl", |
| 161 ], | 330 ], |
| 162 target_compatible_with = [ | 331 defines = ["SEOBEO_WEBSOCKET_SERVER"], |
| 163 "@platforms//os:linux", | 332 target_compatible_with = [ |
| 164 ], | 333 "@platforms//os:linux", |
| 165 visibility = ["//visibility:public"], | 334 ], |
| 166 ) | 335 visibility = ["//visibility:public"], |
| 167 | 336 ) |
| 168 # Default target for backward compatibility (points to client with SSL) | 337 |
| 169 alias( | 338 # Names I often use |
| 170 name = "seobeo", | 339 alias( |
| 171 actual = ":seobeo_client", | 340 name = "seobeo_server", |
| 172 visibility = ["//visibility:public"], | 341 actual = ":seobeo_tcp_server", |
| 173 ) | 342 visibility = ["//visibility:public"], |
| 174 | 343 ) |
| 175 # Examples | 344 |
| 176 cc_binary( | 345 alias( |
| 177 name = "websocket_server_example", | 346 name = "seobeo_client", |
| 178 srcs = ["examples/websocket_server_example.c"], | 347 actual = ":seobeo", |
| 179 deps = [":seobeo_client"], | 348 visibility = ["//visibility:public"], |
| 180 visibility = ["//visibility:public"], | 349 ) |
| 181 ) | |
| 182 | |
| 183 # Tests | |
| 184 cc_test( | |
| 185 name = "seobeo_client_test", | |
| 186 srcs = ["tests/seobeo_client_test.c"], | |
| 187 deps = [":seobeo_client"], | |
| 188 visibility = ["//visibility:public"], | |
| 189 ) | |
| 190 | |
| 191 cc_test( | |
| 192 name = "seobeo_websocket_test", | |
| 193 srcs = ["tests/seobeo_websocket_test.c"], | |
| 194 deps = [":seobeo_client"], | |
| 195 size = "small", | |
| 196 timeout = "short", | |
| 197 visibility = ["//visibility:public"], | |
| 198 ) | |
| 199 | |
| 200 cc_test( | |
| 201 name = "seobeo_websocket_server_test", | |
| 202 srcs = ["tests/seobeo_web_server_test.c"], | |
| 203 deps = [":seobeo_client"], | |
| 204 data = [ | |
| 205 ":websocket_server_example", | |
| 206 ], | |
| 207 size = "large", | |
| 208 timeout = "long", | |
| 209 args = ["$(location //seobeo:websocket_server_example)"], | |
| 210 ) |