1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- 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
|