59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
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"],
|
|
)
|
|
],
|
|
)
|