def build_extension(): # Return the un-cythonized extension. # This can be used to access things like `libraries` and `include_dirs` # and `define_macros` so we DRY. include_dirs = get_include_dirs() include_dirs.append(os.path.abspath(os.path.join('src', 'gevent', 'libev'))) if LIBEV_EMBED: include_dirs.append(dep_abspath('libev')) CORE = Extension(name='gevent.libev.corecext', sources=[ 'src/gevent/libev/corecext.pyx', 'src/gevent/libev/callbacks.c', ], include_dirs=include_dirs, libraries=list(LIBRARIES), define_macros=list(DEFINE_MACROS), depends=glob_many('src/gevent/libev/callbacks.*', 'src/gevent/libev/stathelper.c', 'src/gevent/libev/libev*.h', 'deps/libev/*.[ch]')) if WIN: CORE.define_macros.append(('EV_STANDALONE', '1')) # QQQ libev can also use -lm, however it seems to be added implicitly if LIBEV_EMBED: CORE.define_macros += [ ('LIBEV_EMBED', '1'), # we don't use void* data in the cython implementation; # the CFFI implementation does and removes this line. ('EV_COMMON', ''), # libev watchers that we don't use currently: ('EV_CLEANUP_ENABLE', '0'), ('EV_EMBED_ENABLE', '0'), ("EV_PERIODIC_ENABLE", '0'), # Time keeping. If possible, use the realtime and/or monotonic # clocks. On Linux, this can reduce the number of observable syscalls. # On older linux, such as the version in manylinux2010, this requires # linking to lib rt. We handle this in make-manylinux. Newer versions # generally don't need that. ("EV_USE_REALTIME", "1"), ("EV_USE_MONOTONIC", "1"), # use the builtin floor() function. Every modern platform should # have this, right? ("EV_USE_FLOOR", "1"), ] CORE.configure = configure_libev if os.environ.get('GEVENTSETUP_EV_VERIFY') is not None: CORE.define_macros.append( ('EV_VERIFY', os.environ['GEVENTSETUP_EV_VERIFY'])) # EV_VERIFY is implemented using assert(), which only works if # NDEBUG is *not* defined. distutils likes to define NDEBUG by default, # meaning that we get no verification in embedded mode. Since that's the # most common testing configuration, that's not good. CORE.undef_macros.append('NDEBUG') else: CORE.define_macros += [('LIBEV_EMBED', '0')] CORE.libraries.append('ev') CORE.configure = lambda *args: print("libev not embedded, not configuring") return CORE
def build_extension(): # Return the un-cythonized extension. # This can be used to access things like `libraries` and `include_dirs` # and `define_macros` so we DRY. include_dirs = get_include_dirs() include_dirs.append(os.path.abspath(os.path.join('src', 'gevent', 'libev'))) if LIBEV_EMBED: include_dirs.append(dep_abspath('libev')) CORE = Extension(name='gevent.libev.corecext', sources=[ 'src/gevent/libev/corecext.pyx', 'src/gevent/libev/callbacks.c', ], include_dirs=include_dirs, libraries=list(LIBRARIES), define_macros=list(DEFINE_MACROS), depends=glob_many('src/gevent/libev/callbacks.*', 'src/gevent/libev/stathelper.c', 'src/gevent/libev/libev*.h', 'deps/libev/*.[ch]')) if WIN: CORE.define_macros.append(('EV_STANDALONE', '1')) # QQQ libev can also use -lm, however it seems to be added implicitly if LIBEV_EMBED: CORE.define_macros += [ ('LIBEV_EMBED', '1'), # we don't use void* data in the cython implementation; # the CFFI implementation does and removes this line. ('EV_COMMON', ''), # libev watchers that we don't use currently: ('EV_CLEANUP_ENABLE', '0'), ('EV_EMBED_ENABLE', '0'), ("EV_PERIODIC_ENABLE", '0') ] CORE.configure = configure_libev if os.environ.get('GEVENTSETUP_EV_VERIFY') is not None: CORE.define_macros.append( ('EV_VERIFY', os.environ['GEVENTSETUP_EV_VERIFY'])) # EV_VERIFY is implemented using assert(), which only works if # NDEBUG is *not* defined. distutils likes to define NDEBUG by default, # meaning that we get no verification in embedded mode. Since that's the # most common testing configuration, that's not good. CORE.undef_macros.append('NDEBUG') else: CORE.define_macros += [('LIBEV_EMBED', '0')] CORE.libraries.append('ev') CORE.configure = lambda *args: print( "libev not embedded, not configuring") return CORE
def build_extension(): # Return the un-cythonized extension. # This can be used to access things like `libraries` and `include_dirs` # and `define_macros` so we DRY. CORE = Extension(name='gevent.libev.corecext', sources=[ 'src/gevent/libev/corecext.pyx', 'src/gevent/libev/callbacks.c', ], include_dirs=['src/gevent/libev'] + [dep_abspath('libev')] if LIBEV_EMBED else [], libraries=list(LIBRARIES), define_macros=list(DEFINE_MACROS), depends=glob_many('src/gevent/libev/callbacks.*', 'src/gevent/libev/stathelper.c', 'src/gevent/libev/libev*.h', 'deps/libev/*.[ch]')) if WIN: CORE.define_macros.append(('EV_STANDALONE', '1')) # QQQ libev can also use -lm, however it seems to be added implicitly if LIBEV_EMBED: CORE.define_macros += [ ('LIBEV_EMBED', '1'), # we don't use void* data in the cython implementation; # the CFFI implementation does and removes this line. ('EV_COMMON', ''), # libev watchers that we don't use currently: ('EV_CLEANUP_ENABLE', '0'), ('EV_EMBED_ENABLE', '0'), ("EV_PERIODIC_ENABLE", '0') ] CORE.configure = configure_libev if os.environ.get('GEVENTSETUP_EV_VERIFY') is not None: CORE.define_macros.append( ('EV_VERIFY', os.environ['GEVENTSETUP_EV_VERIFY'])) else: CORE.define_macros += [('LIBEV_EMBED', '0')] CORE.libraries.append('ev') CORE.configure = lambda *args: print( "libev not embedded, not configuring") return CORE
try: if os.path.exists('config.h'): return system(libev_configure_command) if sys.platform == 'darwin': make_universal_header('config.h', 'SIZEOF_LONG', 'SIZEOF_SIZE_T', 'SIZEOF_TIME_T') finally: os.chdir(cwd) CORE = Extension(name='gevent.libev.corecext', sources=['src/gevent/libev/gevent.corecext.c'], include_dirs=[dep_abspath('libev')] if LIBEV_EMBED else [], libraries=list(LIBRARIES), define_macros=list(DEFINE_MACROS), depends=glob_many('src/gevent/libev/callbacks.*', 'src/gevent/libev/stathelper.c', 'src/gevent/libev/libev*.h', 'deps/libev/*.[ch]')) if WIN: CORE.define_macros.append(('EV_STANDALONE', '1')) # QQQ libev can also use -lm, however it seems to be added implicitly if LIBEV_EMBED: CORE.define_macros += [ ('LIBEV_EMBED', '1'), ('EV_COMMON', ''), # we don't use void* data # libev watchers that we don't use currently: ('EV_CLEANUP_ENABLE', '0'), ('EV_EMBED_ENABLE', '0'),
if os.path.exists('ares_config.h') and os.path.exists('ares_build.h'): return try: system(ares_configure_command) except: with open('configure-output.txt', 'r') as t: print(t.read(), file=sys.stderr) raise finally: os.chdir(cwd) ARES = Extension(name='gevent.resolver.cares', sources=['src/gevent/resolver/cares.pyx'], include_dirs=get_include_dirs( *([dep_abspath('c-ares')] if CARES_EMBED else [])), libraries=list(LIBRARIES), define_macros=list(DEFINE_MACROS), depends=glob_many('src/gevent/resolver/cares_*.[ch]')) ares_required = RUNNING_ON_CI and RUNNING_FROM_CHECKOUT ARES.optional = not ares_required if CARES_EMBED: ARES.sources += glob_many('deps/c-ares/*.c') # Strip the standalone binaries that would otherwise # cause linking issues for bin_c in ('acountry', 'adig', 'ahost'): ARES.sources.remove('deps/c-ares' + os.sep + bin_c + '.c') ARES.configure = configure_ares if WIN:
system(ares_configure_command) except: with open('configure-output.txt', 'r') as t: print(t.read(), file=sys.stderr) raise if sys.platform == 'darwin': make_universal_header('ares_build.h', 'CARES_SIZEOF_LONG') make_universal_header('ares_config.h', 'SIZEOF_LONG', 'SIZEOF_SIZE_T', 'SIZEOF_TIME_T') finally: os.chdir(cwd) ARES = Extension(name='gevent.resolver.cares', sources=['src/gevent/resolver/cares.pyx'], include_dirs=['src/gevent/resolver'] + [dep_abspath('c-ares')] if CARES_EMBED else [], libraries=list(LIBRARIES), define_macros=list(DEFINE_MACROS), depends=glob_many('src/gevent/resolver/dnshelper.c', 'src/gevent/resolver/cares_*.[ch]')) ares_required = RUNNING_ON_CI and RUNNING_FROM_CHECKOUT ARES.optional = not ares_required if CARES_EMBED: ARES.sources += glob_many('deps/c-ares/*.c') # Strip the standalone binaries that would otherwise # cause linking issues for bin_c in ('acountry', 'adig', 'ahost'): ARES.sources.remove('deps/c-ares' + os.sep + bin_c + '.c') ARES.configure = configure_ares
os.chdir(bdir) try: if os.path.exists('config.h'): return system(libev_configure_command) if sys.platform == 'darwin': make_universal_header('config.h', 'SIZEOF_LONG', 'SIZEOF_SIZE_T', 'SIZEOF_TIME_T') finally: os.chdir(cwd) CORE = Extension(name='gevent.libev.corecext', sources=['src/gevent/libev/gevent.corecext.c'], include_dirs=[dep_abspath('libev')] if LIBEV_EMBED else [], libraries=list(LIBRARIES), define_macros=list(DEFINE_MACROS), depends=glob_many('src/gevent/libev/callbacks.*', 'src/gevent/libev/stathelper.c', 'src/gevent/libev/libev*.h', 'deps/libev/*.[ch]')) if WIN: CORE.define_macros.append(('EV_STANDALONE', '1')) # QQQ libev can also use -lm, however it seems to be added implicitly if LIBEV_EMBED: CORE.define_macros += [('LIBEV_EMBED', '1'), ('EV_COMMON', ''), # we don't use void* data # libev watchers that we don't use currently: ('EV_CLEANUP_ENABLE', '0'), ('EV_EMBED_ENABLE', '0'), ("EV_PERIODIC_ENABLE", '0')]
system(ares_configure_command) except: with open('configure-output.txt', 'r') as t: print(t.read(), file=sys.stderr) raise if sys.platform == 'darwin': make_universal_header('ares_build.h', 'CARES_SIZEOF_LONG') make_universal_header('ares_config.h', 'SIZEOF_LONG', 'SIZEOF_SIZE_T', 'SIZEOF_TIME_T') finally: os.chdir(cwd) ARES = Extension(name='gevent.ares', sources=['src/gevent/gevent.ares.c'], include_dirs=[dep_abspath('c-ares')] if CARES_EMBED else [], libraries=list(LIBRARIES), define_macros=list(DEFINE_MACROS), depends=glob_many('src/gevent/dnshelper.c', 'src/gevent/cares_*.[ch]')) ARES.optional = True if CARES_EMBED: ARES.sources += glob_many('deps/c-ares/*.c') # Strip the standalone binaries that would otherwise # cause linking issues for bin_c in ('acountry', 'adig', 'ahost'): try: ARES.sources.remove('deps/c-ares/' + bin_c + '.c') except ValueError: pass
except: with open('configure-output.txt', 'r') as t: print(t.read(), file=sys.stderr) raise if sys.platform == 'darwin': make_universal_header('ares_build.h', 'CARES_SIZEOF_LONG') make_universal_header('ares_config.h', 'SIZEOF_LONG', 'SIZEOF_SIZE_T', 'SIZEOF_TIME_T') finally: os.chdir(cwd) ARES = Extension(name='gevent.resolver.cares', sources=['src/gevent/resolver/cares.pyx'], include_dirs=['src/gevent/resolver'] + [dep_abspath('c-ares')] if CARES_EMBED else [], libraries=list(LIBRARIES), define_macros=list(DEFINE_MACROS), depends=glob_many('src/gevent/resolver/dnshelper.c', 'src/gevent/resolver/cares_*.[ch]')) ARES.optional = not RUNNING_ON_CI if CARES_EMBED: ARES.sources += glob_many('deps/c-ares/*.c') # Strip the standalone binaries that would otherwise # cause linking issues for bin_c in ('acountry', 'adig', 'ahost'): ARES.sources.remove('deps/c-ares' + os.sep + bin_c + '.c') ARES.configure = configure_ares if WIN: ARES.libraries += ['advapi32']