view seobeo/BUILD @ 255:5ec271d612ae

[dowa] Enforce arena ownership Co-authored-by: Copilot <[email protected]>
author MrJuneJune <me@mrjunejune.com>
date Tue, 04 Aug 2026 15:12:18 -0700
parents 745fd127b2a1
children 609d3c6aff4e
line wrap: on
line source

load("@rules_cc//cc:cc_library.bzl", "cc_library")

# File group
filegroup(
  name = "seobeo_hdrs",
  srcs = [
    "seobeo.h",
    "seobeo_internal.h",
    "seobeo_worker.h",
    "snapshot_creator.h",
  ],
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_worker",
  srcs = ["s_worker.c"],
  hdrs = ["seobeo_worker.h"],
  deps = ["//dowa:dowa"],
  linkopts = ["-lpthread"],
  visibility = ["//visibility:public"],
)

# Minimal TCP/SSL handling only (no HTTP, no WebSocket)
alias(
  name = "seobeo_min",
  actual = select({
    "//config:macos":  ":seobeo_min_macos",
    "//config:linux":  ":seobeo_min_linux",
    "//conditions:default": ":seobeo_min_linux",
  }),
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_min_macos",
  srcs = [
    "s_network.c",
    "s_logging.c",
    "s_ssl.c",
    "os/s_macos_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  target_compatible_with = [
    "@platforms//os:osx",
  ],
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_min_linux",
  srcs = [
    "s_network.c",
    "s_logging.c",
    "s_ssl.c",
    "os/s_linux_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  target_compatible_with = [
    "@platforms//os:linux",
  ],
  visibility = ["//visibility:public"],
)

# TCP Server with HTTP (no WebSocket, no SSL)
alias(
  name = "seobeo_tcp_server",
  actual = select({
    "//config:macos":  ":seobeo_tcp_server_macos",
    "//config:linux":  ":seobeo_tcp_server_linux",
    "//conditions:default": ":seobeo_tcp_server_linux",
  }),
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_tcp_server_macos",
  srcs = [
    "s_network.c",
    "s_web.c",
    "s_logging.c",
    "s_ssl.c",
    "os/s_macos_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    "//dowa:dowa",
  ],
  defines = ["SEOBEO_NO_SSL"],
  target_compatible_with = [
    "@platforms//os:osx",
  ],
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_tcp_server_linux",
  srcs = [
    "s_network.c",
    "s_web.c",
    "s_logging.c",
    "s_ssl.c",
    "os/s_linux_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    "//dowa:dowa",
  ],
  defines = ["SEOBEO_NO_SSL"],
  target_compatible_with = [
    "@platforms//os:linux",
  ],
  visibility = ["//visibility:public"],
)

# TCP Server with HTTP + WebSocket
alias(
  name = "seobeo_tcp_server_ws",
  actual = select({
    "//config:macos":  ":seobeo_tcp_server_ws_macos",
    "//config:linux":  ":seobeo_tcp_server_ws_linux",
    "//conditions:default": ":seobeo_tcp_server_ws_linux",
  }),
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_tcp_server_ws_macos",
  srcs = [
    "s_network.c",
    "s_web.c",
    "s_logging.c",
    "s_ssl.c",
    "s_websocket_common.c",
    "s_websocket_server.c",
    "os/s_macos_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  defines = ["SEOBEO_WEBSOCKET_SERVER"],
  target_compatible_with = [
    "@platforms//os:osx",
  ],
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_tcp_server_ws_linux",
  srcs = [
    "s_network.c",
    "s_web.c",
    "s_logging.c",
    "s_ssl.c",
    "s_websocket_common.c",
    "s_websocket_server.c",
    "os/s_linux_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  defines = ["SEOBEO_WEBSOCKET_SERVER"],
  target_compatible_with = [
    "@platforms//os:linux",
  ],
  visibility = ["//visibility:public"],
)

# TCP Client with HTTP
alias(
  name = "seobeo_tcp_client",
  actual = select({
    "//config:macos":  ":seobeo_tcp_client_macos",
    "//config:linux":  ":seobeo_tcp_client_linux",
    "//conditions:default": ":seobeo_tcp_client_linux",
  }),
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_tcp_client_macos",
  srcs = [
    "s_network.c",
    "s_logging.c",
    "s_ssl.c",
    "s_http_client.c",
    "snapshot_creator.c",
    "os/s_macos_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  target_compatible_with = [
    "@platforms//os:osx",
  ],
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_tcp_client_linux",
  srcs = [
    "s_network.c",
    "s_logging.c",
    "s_ssl.c",
    "s_http_client.c",
    "snapshot_creator.c",
    "os/s_linux_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  target_compatible_with = [
    "@platforms//os:linux",
  ],
  visibility = ["//visibility:public"],
)

# TCP Client with HTTP + WebSocket
alias(
  name = "seobeo_tcp_client_ws",
  actual = select({
    "//config:macos":  ":seobeo_tcp_client_ws_macos",
    "//config:linux":  ":seobeo_tcp_client_ws_linux",
    "//conditions:default": ":seobeo_tcp_client_ws_linux",
  }),
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_tcp_client_ws_macos",
  srcs = [
    "s_network.c",
    "s_logging.c",
    "s_ssl.c",
    "s_http_client.c",
    "s_websocket_common.c",
    "s_websocket.c",
    "snapshot_creator.c",
    "os/s_macos_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  target_compatible_with = [
    "@platforms//os:osx",
  ],
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_tcp_client_ws_linux",
  srcs = [
    "s_network.c",
    "s_logging.c",
    "s_ssl.c",
    "s_http_client.c",
    "s_websocket_common.c",
    "s_websocket.c",
    "snapshot_creator.c",
    "os/s_linux_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  target_compatible_with = [
    "@platforms//os:linux",
  ],
  visibility = ["//visibility:public"],
)

# All combined  only used this if you don't want to deal with imports and what not...
alias(
  name = "seobeo",
  actual = select({
    "//config:macos":  ":seobeo_macos",
    "//config:linux":  ":seobeo_linux",
    "//conditions:default": ":seobeo_linux",
  }),
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_macos",
  srcs = [
    "s_network.c",
    "s_web.c",
    "s_logging.c",
    "s_ssl.c",
    "s_http_client.c",
    "s_websocket_common.c",
    "s_websocket.c",
    "s_websocket_server.c",
    "snapshot_creator.c",
    "os/s_macos_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    ":seobeo_worker",
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  defines = ["SEOBEO_WEBSOCKET_SERVER", "SEOBEO_ENABLE_DEBUG"],
  target_compatible_with = [
    "@platforms//os:osx",
  ],
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_linux",
  srcs = [
    "s_network.c",
    "s_web.c",
    "s_logging.c",
    "s_ssl.c",
    "s_http_client.c",
    "s_websocket_common.c",
    "s_websocket.c",
    "s_websocket_server.c",
    "snapshot_creator.c",
    "os/s_linux_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    ":seobeo_worker",
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  defines = ["SEOBEO_WEBSOCKET_SERVER", "SEOBEO_ENABLE_DEBUG"],
  target_compatible_with = [
    "@platforms//os:linux",
  ],
  visibility = ["//visibility:public"],
)

# Names I often use
alias(
  name = "seobeo_server",
  actual = ":seobeo_tcp_server",
  visibility = ["//visibility:public"],
)

alias(
  name = "seobeo_client",
  actual = ":seobeo_tcp_client_ws",
  visibility = ["//visibility:public"],
)

# ============================================================================
# Debug Builds (with SEOBEO_ENABLE_DEBUG defined)
# ============================================================================

# TCP Server with HTTP + WebSocket (DEBUG)
alias(
  name = "seobeo_tcp_server_ws_debug",
  actual = select({
    "//config:macos":  ":seobeo_tcp_server_ws_debug_macos",
    "//config:linux":  ":seobeo_tcp_server_ws_debug_linux",
    "//conditions:default": ":seobeo_tcp_server_ws_debug_linux",
  }),
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_tcp_server_ws_debug_macos",
  srcs = [
    "s_network.c",
    "s_web.c",
    "s_logging.c",
    "s_ssl.c",
    "s_websocket_common.c",
    "s_websocket_server.c",
    "os/s_macos_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  defines = ["SEOBEO_WEBSOCKET_SERVER", "SEOBEO_ENABLE_DEBUG"],
  target_compatible_with = [
    "@platforms//os:osx",
  ],
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_tcp_server_ws_debug_linux",
  srcs = [
    "s_network.c",
    "s_web.c",
    "s_logging.c",
    "s_ssl.c",
    "s_websocket_common.c",
    "s_websocket_server.c",
    "os/s_linux_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  defines = ["SEOBEO_WEBSOCKET_SERVER", "SEOBEO_ENABLE_DEBUG"],
  target_compatible_with = [
    "@platforms//os:linux",
  ],
  visibility = ["//visibility:public"],
)

# All combined (DEBUG)
alias(
  name = "seobeo_debug",
  actual = select({
    "//config:macos":  ":seobeo_debug_macos",
    "//config:linux":  ":seobeo_debug_linux",
    "//conditions:default": ":seobeo_debug_linux",
  }),
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_debug_macos",
  srcs = [
    "s_network.c",
    "s_web.c",
    "s_logging.c",
    "s_ssl.c",
    "s_http_client.c",
    "s_websocket_common.c",
    "s_websocket.c",
    "s_websocket_server.c",
    "snapshot_creator.c",
    "os/s_macos_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    ":seobeo_worker",
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  defines = ["SEOBEO_WEBSOCKET_SERVER", "SEOBEO_ENABLE_DEBUG"],
  target_compatible_with = [
    "@platforms//os:osx",
  ],
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_debug_linux",
  srcs = [
    "s_network.c",
    "s_web.c",
    "s_logging.c",
    "s_ssl.c",
    "s_http_client.c",
    "s_websocket_common.c",
    "s_websocket.c",
    "s_websocket_server.c",
    "snapshot_creator.c",
    "os/s_linux_edge.c",
  ],
  hdrs = [":seobeo_hdrs"],
  deps = [
    ":seobeo_worker",
    "//dowa:dowa",
    "@openssl//:ssl",
  ],
  defines = ["SEOBEO_WEBSOCKET_SERVER", "SEOBEO_ENABLE_DEBUG"],
  target_compatible_with = [
    "@platforms//os:linux",
  ],
  visibility = ["//visibility:public"],
)
# ============================================================================
# Testing Utilities
# ============================================================================

# Testing library with snapshot and test generation tools
alias(
  name = "seobeo_test",
  actual = select({
    "//config:macos":  ":seobeo_test_macos",
    "//config:linux":  ":seobeo_test_linux",
    "//conditions:default": ":seobeo_test_linux",
  }),
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_test_macos",
  srcs = [
    "snapshot_creator.c",
  ],
  hdrs = [
    "snapshot_creator.h",
  ],
  deps = [
    ":seobeo_tcp_client_macos",
  ],
  target_compatible_with = [
    "@platforms//os:osx",
  ],
  visibility = ["//visibility:public"],
)

cc_library(
  name = "seobeo_test_linux",
  srcs = [
    "snapshot_creator.c",
  ],
  hdrs = [
    "snapshot_creator.h",
  ],
  deps = [
    ":seobeo_tcp_client_linux",
  ],
  target_compatible_with = [
    "@platforms//os:linux",
  ],
  visibility = ["//visibility:public"],
)