<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.13">
  <compounddef id="setup_8py" kind="file" language="Python">
    <compoundname>setup.py</compoundname>
    <innernamespace refid="namespacebinary__c-python_1_1setup">binary_c-python::setup</innernamespace>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <programlisting>
<codeline lineno="1"><highlight class="keyword">from</highlight><highlight class="normal"><sp/>distutils.core<sp/></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>setup,<sp/>Extension</highlight></codeline>
<codeline lineno="2"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>os</highlight></codeline>
<codeline lineno="3"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>subprocess</highlight></codeline>
<codeline lineno="4"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>re</highlight></codeline>
<codeline lineno="5"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>sys</highlight></codeline>
<codeline lineno="6"><highlight class="normal"></highlight></codeline>
<codeline lineno="7"><highlight class="normal"></highlight><highlight class="comment">#<sp/>binary_c<sp/>must<sp/>be<sp/>installed.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="8"><highlight class="normal"></highlight></codeline>
<codeline lineno="9"><highlight class="normal">binary_c_config<sp/>=<sp/>os.environ[</highlight><highlight class="stringliteral">&apos;BINARY_C&apos;</highlight><highlight class="normal">]+</highlight><highlight class="stringliteral">&apos;/binary_c-config&apos;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="10"><highlight class="normal"></highlight></codeline>
<codeline lineno="11"><highlight class="normal">binary_c_incdirs<sp/>=<sp/>subprocess.run([binary_c_config,</highlight><highlight class="stringliteral">&apos;incdirs_list&apos;</highlight><highlight class="normal">],stdout=subprocess.PIPE).stdout.decode(</highlight><highlight class="stringliteral">&apos;utf-8&apos;</highlight><highlight class="normal">).split()</highlight></codeline>
<codeline lineno="12"><highlight class="normal">binary_c_libdirs<sp/>=<sp/>subprocess.run([binary_c_config,</highlight><highlight class="stringliteral">&apos;libdirs_list&apos;</highlight><highlight class="normal">],stdout=subprocess.PIPE).stdout.decode(</highlight><highlight class="stringliteral">&apos;utf-8&apos;</highlight><highlight class="normal">).split()</highlight></codeline>
<codeline lineno="13"><highlight class="normal">binary_c_cflags<sp/>=<sp/><sp/>subprocess.run([binary_c_config,</highlight><highlight class="stringliteral">&apos;cflags&apos;</highlight><highlight class="normal">],stdout=subprocess.PIPE).stdout.decode(</highlight><highlight class="stringliteral">&apos;utf-8&apos;</highlight><highlight class="normal">).split()</highlight></codeline>
<codeline lineno="14"><highlight class="normal"></highlight><highlight class="comment">#<sp/>binary_c_cflags.remove(&apos;-fvisibility=hidden&apos;)</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="15"><highlight class="normal">binary_c_libs<sp/>=<sp/>subprocess.run([binary_c_config,</highlight><highlight class="stringliteral">&apos;libs_list&apos;</highlight><highlight class="normal">],stdout=subprocess.PIPE).stdout.decode(</highlight><highlight class="stringliteral">&apos;utf-8&apos;</highlight><highlight class="normal">).split()</highlight></codeline>
<codeline lineno="16"><highlight class="normal"></highlight></codeline>
<codeline lineno="17"><highlight class="normal"></highlight><highlight class="comment">#<sp/>create<sp/>list<sp/>of<sp/>tuples<sp/>of<sp/>defined<sp/>macros</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="18"><highlight class="normal">binary_c_define_macros<sp/>=<sp/>[]</highlight></codeline>
<codeline lineno="19"><highlight class="normal">defines<sp/>=<sp/>subprocess.run([binary_c_config,</highlight><highlight class="stringliteral">&apos;define_macros&apos;</highlight><highlight class="normal">],stdout=subprocess.PIPE).stdout.decode(</highlight><highlight class="stringliteral">&apos;utf-8&apos;</highlight><highlight class="normal">).split()</highlight></codeline>
<codeline lineno="20"><highlight class="normal">lone<sp/>=<sp/>re.compile(</highlight><highlight class="stringliteral">&apos;^-D(.+)$&apos;</highlight><highlight class="normal">)</highlight></codeline>
<codeline lineno="21"><highlight class="normal">partner<sp/>=<sp/>re.compile(</highlight><highlight class="stringliteral">&apos;^-D(.+)=(.+)$&apos;</highlight><highlight class="normal">)</highlight></codeline>
<codeline lineno="22"><highlight class="normal"></highlight></codeline>
<codeline lineno="23"><highlight class="normal"></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>x<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>defines:</highlight></codeline>
<codeline lineno="24"><highlight class="normal"><sp/><sp/><sp/><sp/>y<sp/>=<sp/>partner.match(x)</highlight></codeline>
<codeline lineno="25"><highlight class="normal"><sp/><sp/><sp/><sp/>if(y):</highlight></codeline>
<codeline lineno="26"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>binary_c_define_macros.extend([(y.group(1),y.group(2))])</highlight></codeline>
<codeline lineno="27"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="28"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>y<sp/>=<sp/>lone.match(x)</highlight></codeline>
<codeline lineno="29"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if(y):</highlight></codeline>
<codeline lineno="30"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>binary_c_define_macros.extend([(y.group(1),</highlight><highlight class="keywordtype">None</highlight><highlight class="normal">)])</highlight></codeline>
<codeline lineno="31"><highlight class="normal"></highlight><highlight class="comment">#<sp/>add<sp/>API<sp/>header<sp/>file</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="32"><highlight class="normal">API_h<sp/>=<sp/>os.environ[</highlight><highlight class="stringliteral">&apos;BINARY_C&apos;</highlight><highlight class="normal">]<sp/>+<sp/></highlight><highlight class="stringliteral">&apos;/src/API/binary_c_API.h&apos;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="33"><highlight class="normal">binary_c_define_macros.extend([(</highlight><highlight class="stringliteral">&apos;BINARY_C_API_H&apos;</highlight><highlight class="normal">,API_h)])</highlight></codeline>
<codeline lineno="34"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="35"><highlight class="normal">setup(</highlight></codeline>
<codeline lineno="36"><highlight class="normal"><sp/><sp/><sp/><sp/>name=</highlight><highlight class="stringliteral">&apos;binary_c&apos;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="37"><highlight class="normal"><sp/><sp/><sp/><sp/>version=</highlight><highlight class="stringliteral">&apos;1.0&apos;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="38"><highlight class="normal"><sp/><sp/><sp/><sp/>description=</highlight><highlight class="stringliteral">&apos;This<sp/>is<sp/>a<sp/>python<sp/>API<sp/>for<sp/>binary_c<sp/>by<sp/>Rob<sp/>Izzard<sp/>and<sp/>collaborators&apos;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="39"><highlight class="normal"><sp/><sp/><sp/><sp/>author=</highlight><highlight class="stringliteral">&apos;Jeff<sp/>Andrews<sp/>and<sp/>Robert<sp/>Izzard<sp/>and<sp/>David<sp/>Hendriks&apos;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="40"><highlight class="normal"><sp/><sp/><sp/><sp/>author_email=</highlight><highlight class="stringliteral">&apos;andrews@physics.uoc.gr<sp/>and<sp/>r.izzard@surrey.ac.uk<sp/>and<sp/>rob.izzard@gmail.com<sp/>and<sp/>dhendriks93@gmail.com&apos;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="41"><highlight class="normal">license=</highlight><highlight class="stringliteral">&apos;&apos;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="42"><highlight class="normal"><sp/><sp/><sp/><sp/>ext_modules=[Extension(</highlight><highlight class="stringliteral">&quot;binary_c&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="43"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[</highlight><highlight class="stringliteral">&quot;binary_c_python.c&quot;</highlight><highlight class="normal">],</highlight></codeline>
<codeline lineno="44"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>libraries<sp/>=<sp/>[</highlight><highlight class="stringliteral">&apos;binary_c&apos;</highlight><highlight class="normal">]<sp/>+<sp/>binary_c_libs<sp/>+<sp/>[</highlight><highlight class="stringliteral">&apos;binary_c_api&apos;</highlight><highlight class="normal">],</highlight></codeline>
<codeline lineno="45"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>include_dirs<sp/>=<sp/>[os.environ[</highlight><highlight class="stringliteral">&apos;BINARY_C&apos;</highlight><highlight class="normal">]<sp/>+<sp/></highlight><highlight class="stringliteral">&apos;/src&apos;</highlight><highlight class="normal">,<sp/>os.environ[</highlight><highlight class="stringliteral">&apos;BINARY_C&apos;</highlight><highlight class="normal">]<sp/>+<sp/></highlight><highlight class="stringliteral">&apos;/src/API&apos;</highlight><highlight class="normal">]<sp/>+<sp/>binary_c_incdirs,</highlight></codeline>
<codeline lineno="46"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>library_dirs<sp/>=<sp/>[os.environ[</highlight><highlight class="stringliteral">&apos;BINARY_C&apos;</highlight><highlight class="normal">]<sp/>+<sp/></highlight><highlight class="stringliteral">&apos;/src&apos;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&apos;./&apos;</highlight><highlight class="normal">]<sp/>+<sp/>binary_c_libdirs,</highlight></codeline>
<codeline lineno="47"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>runtime_library_dirs<sp/>=<sp/>[os.environ[</highlight><highlight class="stringliteral">&apos;BINARY_C&apos;</highlight><highlight class="normal">]+</highlight><highlight class="stringliteral">&apos;/src&apos;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&apos;./&apos;</highlight><highlight class="normal">]<sp/>+<sp/>binary_c_libdirs,</highlight></codeline>
<codeline lineno="48"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>define_macros<sp/>=<sp/>[]<sp/>+<sp/>binary_c_define_macros,</highlight></codeline>
<codeline lineno="49"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>extra_objects<sp/>=<sp/>[],</highlight></codeline>
<codeline lineno="50"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>extra_compile_args<sp/>=<sp/>[],</highlight></codeline>
<codeline lineno="51"><highlight class="normal"></highlight></codeline>
<codeline lineno="52"><highlight class="normal"><sp/><sp/><sp/><sp/>)]<sp/><sp/></highlight><highlight class="comment">#<sp/>binary_c<sp/>must<sp/>be<sp/>loaded</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="53"><highlight class="normal">)</highlight></codeline>
    </programlisting>
    <location file="setup.py"/>
  </compounddef>
</doxygen>