File: C:/Users/fred/anaconda3/Lib/site-packages/astropy/utils/xml/setup_package.py
# Licensed under a 3-clause BSD style license - see LICENSE.rst
import os
import sys
from collections import defaultdict
from os.path import join
from setuptools import Extension
from extension_helpers import pkg_config
def get_extensions(build_type="release"):
XML_DIR = "astropy/utils/xml/src"
cfg = defaultdict(list)
cfg["sources"] = [join(XML_DIR, "iterparse.c")]
if int(os.environ.get("ASTROPY_USE_SYSTEM_EXPAT", 0)) or int(
os.environ.get("ASTROPY_USE_SYSTEM_ALL", 0)
):
for k, v in pkg_config(["expat"], ["expat"]).items():
cfg[k].extend(v)
else:
EXPAT_DIR = "cextern/expat/lib"
cfg["sources"].extend(
[
join(EXPAT_DIR, fn)
for fn in ["xmlparse.c", "xmlrole.c", "xmltok.c", "xmltok_impl.c"]
]
)
cfg["include_dirs"].extend([XML_DIR, EXPAT_DIR])
if sys.platform.startswith("linux"):
# This is to ensure we only export the Python entry point
# symbols and the linker won't try to use the system expat in
# place of ours.
cfg["extra_link_args"].extend(
[f"-Wl,--version-script={join(XML_DIR, 'iterparse.map')}"]
)
cfg["define_macros"].append(("HAVE_EXPAT_CONFIG_H", 1))
if sys.byteorder == "big":
cfg["define_macros"].append(("BYTEORDER", "4321"))
else:
cfg["define_macros"].append(("BYTEORDER", "1234"))
if sys.platform != "win32":
cfg["define_macros"].append(("HAVE_UNISTD_H", None))
return [Extension("astropy.utils.xml._iterparser", **cfg)]