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 )