Spaces:
Sleeping
Sleeping
import os | |
from .compilation import compile_run_strings | |
from .util import CompilerNotFoundError | |
def has_fortran(): | |
if not hasattr(has_fortran, 'result'): | |
try: | |
(stdout, stderr), info = compile_run_strings( | |
[('main.f90', ( | |
'program foo\n' | |
'print *, "hello world"\n' | |
'end program' | |
))], clean=True | |
) | |
except CompilerNotFoundError: | |
has_fortran.result = False | |
if os.environ.get('SYMPY_STRICT_COMPILER_CHECKS', '0') == '1': | |
raise | |
else: | |
if info['exit_status'] != os.EX_OK or 'hello world' not in stdout: | |
if os.environ.get('SYMPY_STRICT_COMPILER_CHECKS', '0') == '1': | |
raise ValueError("Failed to compile test program:\n%s\n%s\n" % (stdout, stderr)) | |
has_fortran.result = False | |
else: | |
has_fortran.result = True | |
return has_fortran.result | |
def has_c(): | |
if not hasattr(has_c, 'result'): | |
try: | |
(stdout, stderr), info = compile_run_strings( | |
[('main.c', ( | |
'#include <stdio.h>\n' | |
'int main(){\n' | |
'printf("hello world\\n");\n' | |
'return 0;\n' | |
'}' | |
))], clean=True | |
) | |
except CompilerNotFoundError: | |
has_c.result = False | |
if os.environ.get('SYMPY_STRICT_COMPILER_CHECKS', '0') == '1': | |
raise | |
else: | |
if info['exit_status'] != os.EX_OK or 'hello world' not in stdout: | |
if os.environ.get('SYMPY_STRICT_COMPILER_CHECKS', '0') == '1': | |
raise ValueError("Failed to compile test program:\n%s\n%s\n" % (stdout, stderr)) | |
has_c.result = False | |
else: | |
has_c.result = True | |
return has_c.result | |
def has_cxx(): | |
if not hasattr(has_cxx, 'result'): | |
try: | |
(stdout, stderr), info = compile_run_strings( | |
[('main.cxx', ( | |
'#include <iostream>\n' | |
'int main(){\n' | |
'std::cout << "hello world" << std::endl;\n' | |
'}' | |
))], clean=True | |
) | |
except CompilerNotFoundError: | |
has_cxx.result = False | |
if os.environ.get('SYMPY_STRICT_COMPILER_CHECKS', '0') == '1': | |
raise | |
else: | |
if info['exit_status'] != os.EX_OK or 'hello world' not in stdout: | |
if os.environ.get('SYMPY_STRICT_COMPILER_CHECKS', '0') == '1': | |
raise ValueError("Failed to compile test program:\n%s\n%s\n" % (stdout, stderr)) | |
has_cxx.result = False | |
else: | |
has_cxx.result = True | |
return has_cxx.result | |