from pathlib import Path import sys from setuptools import Extension, setup ROOT = Path(__file__).resolve().parent.parent PY_ROOT = Path(__file__).resolve().parent if sys.platform != "linux": raise RuntimeError("omnisocket Python extension can only be built on Linux") COMMON_SOURCES = [ ROOT / "src" / "omni_common.c", ROOT / "src" / "protocol.c", ROOT / "src" / "latencylog.c", ROOT / "src" / "tx_timestamp_debug.c", ROOT / "src" / "kcp_packet_debug.c", ROOT / "src" / "kcp_session_stats.c", ROOT / "src" / "linux_timestamping.c", ROOT / "src" / "interactive.c", ROOT / "src" / "transport_udp.c", ROOT / "src" / "transport_kcp.c", ROOT / "src" / "server_udp_relay.c", ROOT / "src" / "server_udp_hub.c", ROOT / "src" / "server_kcp_hub.c", ROOT / "src" / "peer_udp_client.c", ROOT / "src" / "peer_kcp_client.c", ROOT / "third_party" / "cjson" / "cJSON.c", ROOT / "third_party" / "kcp" / "ikcp.c", ] setup( name="omnisocket", version="0.1.0", packages=["omnisocket"], ext_modules=[ Extension( "omnisocket._omnisocket", sources=[ str(PY_ROOT / "omnisocket" / "_omnisocket.c"), str(PY_ROOT / "omnisocket" / "omnisocket_client.c"), *[str(path) for path in COMMON_SOURCES], ], include_dirs=[ str(ROOT / "include"), str(ROOT / "third_party" / "cjson"), str(ROOT / "third_party" / "kcp"), str(PY_ROOT / "omnisocket"), ], define_macros=[("_GNU_SOURCE", None)], extra_compile_args=["-std=c11", "-O2", "-pthread"], extra_link_args=["-pthread"], ) ], )