py311-cython/setup.py
2025-11-20 14:25:12 +01:00

54 lines
1.1 KiB
Python

import os
import sys
from Cython.Build import cythonize
from Cython.Compiler import Options
from setuptools import setup
Options.docstrings = False
Options.embed_pos_in_docstring = False
Options.annotate = False
Options.fast_fail = True
DEBUG = bool(os.getenv("DOPT_DEBUG", None))
linetrace_opt: bool = False
if DEBUG:
linetrace_opt = True
ext_modules = cythonize(
[""], # !! add Cython modules here
compiler_directives={
"language_level": 3,
"boundscheck": False,
"wraparound": False,
"embedsignature": False,
"annotation_typing": True,
"linetrace": linetrace_opt,
},
)
if DEBUG:
ext_modules[0].define_macros.append(("CYTHON_TRACE", "1"))
compiler_args: list[str] = []
linker_args: list[str] = []
if sys.platform.startswith("win") and not DEBUG:
c_args = ("/O2", "/GL", "/Gy")
l_args = ("/LTCG", "/OPT:REF", "/OPT:ICF")
else:
c_args = tuple()
l_args = tuple()
compiler_args.extend(c_args)
linker_args.extend(l_args)
for ext in ext_modules:
ext.extra_compile_args.extend(compiler_args)
ext.extra_link_args.extend(linker_args)
setup(ext_modules=ext_modules)