introduce build parameters

This commit is contained in:
saces 2026-03-04 11:23:54 +01:00
parent 92782f1352
commit 5600b8056b
4 changed files with 58 additions and 19 deletions

View file

@ -7,7 +7,11 @@ lib_list = [
"mxclient",
]
if os.getenv("PYGOMX_LINK_OLM"):
# keep defaults in sync with setup.py
if (
os.getenv("PYGOMX_BUILD_MODE", "static") == "static"
and os.getenv("PYGOMX_OLM_FLAVOR", colm) == "colm"
):
lib_list += ["olm"]
print(f"liblist: {lib_list}")

View file

@ -1,3 +1,4 @@
import os
import subprocess
from contextlib import suppress
from setuptools import Command, setup
@ -12,12 +13,45 @@ class CustomCommand(Command):
pass
def run(self) -> None:
# configure the go build via env vars
# keep defaults in sync with build_ffi.py
go_tags_str = os.getenv("PYGOMX_GO_TAGS")
if go_tags_str and len(go_tags_str.strip()) > 0:
go_tags = go_tags_str.split(",")
else:
go_tags = []
match os.getenv("PYGOMX_BUILD_MODE", "static"):
case "static":
build_mode_name = "c-archive"
build_mode_ext = ".a"
case "shared":
build_mode_name = "c-shared"
build_mode_ext = ".so"
case _:
raise ValueError("Invalid PYGOMX_BUILD_MODE.")
match os.getenv("PYGOMX_OLM_FLAVOR", "colm"):
case "none":
go_tags += ["nocrypto"]
case "colm":
go_tags += ["colm"]
case "goolm":
go_tags += ["goolm"]
case "vodozemac":
go_tags += ["vodozemac"]
raise ValueError("Vodozemac not supported (yet).")
case _:
raise ValueError("Invalid PYGOMX_OLM_FLAVOR.")
go_call = [
"go",
"build",
"-buildmode=c-archive",
f"-buildmode=${build_mode_name}",
"-tags",
",".join(go_tags),
"-o",
"../pygomx-module/libmxclient.a",
f"../pygomx-module/libmxclient${build_mode_ext}",
".",
]
subprocess.call(go_call, cwd="../libmxclient")