|
31 | 31 | from sage.repl.user_globals import get_globals
|
32 | 32 | from sage.misc.sage_ostools import restore_cwd, redirection
|
33 | 33 | from sage.cpython.string import str_to_bytes
|
| 34 | +from sage.misc.cachefunc import cached_function |
34 | 35 |
|
35 |
| -cblas_pc = pkgconfig.parse(get_cblas_pc_module_name()) |
36 |
| -cblas_libs = list(cblas_pc['libraries']) |
37 |
| -cblas_library_dirs = list(cblas_pc['library_dirs']) |
38 |
| -cblas_include_dirs = list(cblas_pc['include_dirs']) |
39 |
| - |
40 |
| -standard_libs = [ |
41 |
| - 'mpfr', 'gmp', 'gmpxx', 'pari', 'm', |
42 |
| - 'ec', 'gsl', |
43 |
| -] + cblas_libs + [ |
44 |
| - 'ntl'] |
| 36 | +@cached_function |
| 37 | +def _standard_libs_libdirs_incdirs_aliases(): |
| 38 | + r""" |
| 39 | + Return the list of libraries and library directories. |
45 | 40 |
|
46 |
| -standard_libdirs = [os.path.join(SAGE_LOCAL, "lib")] + cblas_library_dirs |
| 41 | + EXAMPLES:: |
47 | 42 |
|
| 43 | + sage: from sage.misc.cython import _standard_libs_libdirs_incdirs_aliases |
| 44 | + sage: _standard_libs_libdirs_incdirs_aliases() |
| 45 | + (['mpfr', 'gmp', 'gmpxx', 'pari', ...], |
| 46 | + [...], |
| 47 | + [...], |
| 48 | + {...}) |
| 49 | + """ |
| 50 | + aliases = cython_aliases() |
| 51 | + standard_libs = [ |
| 52 | + 'mpfr', 'gmp', 'gmpxx', 'pari', 'm', |
| 53 | + 'ec', 'gsl', |
| 54 | + ] + aliases["CBLAS_LIBRARIES"] + [ |
| 55 | + 'ntl'] |
| 56 | + standard_libdirs = [os.path.join(SAGE_LOCAL, "lib")] + aliases["CBLAS_LIBDIR"] + aliases["NTL_LIBDIR"] |
| 57 | + standard_incdirs = sage_include_directories() + aliases["CBLAS_INCDIR"] + aliases["NTL_INCDIR"] |
| 58 | + return standard_libs, standard_libdirs, standard_incdirs, aliases |
48 | 59 |
|
49 | 60 | ################################################################
|
50 | 61 | # If the user attaches a .spyx file and changes it, we have
|
@@ -266,7 +277,8 @@ def cython(filename, verbose=0, compile_message=False,
|
266 | 277 |
|
267 | 278 | # Add current working directory to includes. This is needed because
|
268 | 279 | # we cythonize from a different directory. See Trac #24764.
|
269 |
| - includes = [os.getcwd()] + sage_include_directories() |
| 280 | + standard_libs, standard_libdirs, standard_includes, aliases = _standard_libs_libdirs_incdirs_aliases() |
| 281 | + includes = [os.getcwd()] + standard_includes |
270 | 282 |
|
271 | 283 | # Now do the actual build, directly calling Cython and distutils
|
272 | 284 | from Cython.Build import cythonize
|
@@ -325,7 +337,7 @@ def cython(filename, verbose=0, compile_message=False,
|
325 | 337 | with restore_cwd(target_dir):
|
326 | 338 | try:
|
327 | 339 | ext, = cythonize([ext],
|
328 |
| - aliases=cython_aliases(), |
| 340 | + aliases=aliases, |
329 | 341 | include_path=includes,
|
330 | 342 | compiler_directives=directives,
|
331 | 343 | quiet=(verbose <= 0),
|
|
0 commit comments