Author: Ronan Lamy <ronan.l...@gmail.com> Branch: Changeset: r86944:16d4af61e753 Date: 2016-09-07 17:44 +0100 http://bitbucket.org/pypy/pypy/changeset/16d4af61e753/
Log: factor common code between compile_extension_module() and compile_extension_module_applevel() diff --git a/pypy/module/cpyext/test/test_cpyext.py b/pypy/module/cpyext/test/test_cpyext.py --- a/pypy/module/cpyext/test/test_cpyext.py +++ b/pypy/module/cpyext/test/test_cpyext.py @@ -53,6 +53,26 @@ libraries=libraries) return soname +def get_extra_args(space): + state = space.fromcache(State) + api_library = state.api_lib + if sys.platform == 'win32': + libraries = [api_library] + # '%s' undefined; assuming extern returning int + compile_extra = ["/we4013"] + # prevent linking with PythonXX.lib + w_maj, w_min = space.fixedview(space.sys.get('version_info'), 5)[:2] + link_extra = ["/NODEFAULTLIB:Python%d%d.lib" % + (space.int_w(w_maj), space.int_w(w_min))] + else: + libraries = [] + if sys.platform.startswith('linux'): + compile_extra = ["-Werror", "-g", "-O0", "-Wp,-U_FORTIFY_SOURCE", "-fPIC"] + link_extra = ["-g"] + else: + compile_extra = link_extra = None + + def compile_extension_module(space, modname, include_dirs=[], source_files=None, source_strings=None): """ @@ -82,17 +102,21 @@ link_extra = ["-g"] else: compile_extra = link_extra = None + from pypy.module.imp.importing import get_so_extension + ext = get_so_extension(space) + include_extra = api.include_dirs + extra_libs = libraries + return _compile_ext(modname, include_dirs, source_files, source_strings, include_extra, compile_extra, link_extra, extra_libs, ext) +def _compile_ext(modname, include_dirs, source_files, source_strings, include_extra, compile_extra, link_extra, extra_libs, ext): modname = modname.split('.')[-1] soname = create_so(modname, - include_dirs=api.include_dirs + include_dirs, + include_dirs=include_extra + include_dirs, source_files=source_files, source_strings=source_strings, compile_extra=compile_extra, link_extra=link_extra, - libraries=libraries) - from pypy.module.imp.importing import get_so_extension - ext = get_so_extension(space) + libraries=extra_libs) pydname = soname.new(purebasename=modname, ext=ext) soname.rename(pydname) return str(pydname) @@ -128,18 +152,11 @@ compile_extra = [ "-O0", "-g", "-Werror=implicit-function-declaration", "-fPIC"] link_extra = None + ext = get_so_suffix() + include_extra = [space.include_dir] + extra_libs = None + return _compile_ext(modname, include_dirs, source_files, source_strings, include_extra, compile_extra, link_extra, extra_libs, ext) - modname = modname.split('.')[-1] - soname = create_so(modname, - include_dirs=[space.include_dir] + include_dirs, - source_files=source_files, - source_strings=source_strings, - compile_extra=compile_extra, - link_extra=link_extra) - ext = get_so_suffix() - pydname = soname.new(purebasename=modname, ext=ext) - soname.rename(pydname) - return str(pydname) def freeze_refcnts(self): rawrefcount._dont_free_any_more() _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit