#!/usr/bin/env python # /// pyproject # [run] # dependencies = [ # "ziglang==0.11.0" # ] # /// import os import subprocess import sys def flag_filter(flag: str) -> bool: # Workaround for . if flag == "-latomic": return False if flag == "-lc": return False if flag == "-Wl,-melf_i386": return False if "self-contained" in flag and "crt" in flag: return False return True def main(): args = [flag for flag in sys.argv[1:] if flag_filter(flag)] zig_target = os.environ["ZIG_TARGET"] zig_cpu = os.environ.get("ZIG_CPU") if zig_cpu: zig_cpu_args = ["-mcpu=" + zig_cpu] args = [x for x in args if not x.startswith("-march")] else: zig_cpu_args = [] # Disable atomics and use locks instead in OpenSSL. # Zig toolchains do not provide atomics. # This is a workaround for args += ["-DBROKEN_CLANG_ATOMICS"] subprocess.run( [ sys.executable, "-m", "ziglang", "cc", "-target", zig_target, *zig_cpu_args, *args, ], check=True, ) main()