1*1b37a2a7SPierre Jolivet#!/usr/bin/env python3 2f46a955bSLisandro Dalcin"""Run Cython with custom options.""" 3f46a955bSLisandro Dalcinimport os 4f46a955bSLisandro Dalcinimport sys 55808f684SSatish Balay 6f46a955bSLisandro Dalcinappdir = os.path.dirname(os.path.abspath(__file__)) 7f46a955bSLisandro Dalcinsys.path.insert(0, appdir) 8f46a955bSLisandro Dalcin 955a74a43SLisandro Dalcinimport cyautodoc # noqa: F401,E402 10f46a955bSLisandro Dalcinfrom Cython.Compiler.Main import main as cython_main # noqa: E402 11f46a955bSLisandro Dalcin 12f46a955bSLisandro Dalcin 13f46a955bSLisandro Dalcindef cythonize(args=None): 14f46a955bSLisandro Dalcin """Run `cython --3str --cleanup 3 <args>...`.""" 15f46a955bSLisandro Dalcin if args is None: 16f46a955bSLisandro Dalcin argv = sys.argv[:] 17a9c71d45SLisandro Dalcin else: 18f46a955bSLisandro Dalcin argv = [os.path.abspath(__file__)] + list(args) 19f46a955bSLisandro Dalcin 20f46a955bSLisandro Dalcin if '--cleanup' not in argv: 21f46a955bSLisandro Dalcin argv[1:1] = ['--cleanup', '3'] 22f46a955bSLisandro Dalcin if '--3str' not in argv: 23f46a955bSLisandro Dalcin argv[1:1] = ['--3str'] 24f46a955bSLisandro Dalcin 25f46a955bSLisandro Dalcin cwd = os.getcwd() 26f46a955bSLisandro Dalcin sys_argv = sys.argv[:] 275808f684SSatish Balay try: 28f46a955bSLisandro Dalcin sys.argv[:] = argv 29f46a955bSLisandro Dalcin cython_main(command_line=1) 305808f684SSatish Balay return 0 31f46a955bSLisandro Dalcin except SystemExit as exc: 32f46a955bSLisandro Dalcin return exc.code 335808f684SSatish Balay finally: 345808f684SSatish Balay os.chdir(cwd) 35f46a955bSLisandro Dalcin sys.argv[:] = sys_argv 36f46a955bSLisandro Dalcin 37f46a955bSLisandro Dalcin 38f46a955bSLisandro Dalcindef main(): 39f46a955bSLisandro Dalcin """Entry-point to run Cython with custom options.""" 40f46a955bSLisandro Dalcin args = sys.argv[1:] 41f46a955bSLisandro Dalcin if not args: 42f46a955bSLisandro Dalcin topdir = os.path.dirname(appdir) 43f46a955bSLisandro Dalcin srcdir = os.path.join(topdir, 'src') 44f46a955bSLisandro Dalcin source = os.path.join('petsc4py', 'PETSc.pyx') 45f46a955bSLisandro Dalcin target = os.path.join('petsc4py', 'PETSc.c') 46f46a955bSLisandro Dalcin args += ['--working', srcdir] 47f46a955bSLisandro Dalcin args += [source, '--output-file', target] 48f46a955bSLisandro Dalcin sys.exit(cythonize(args)) 495808f684SSatish Balay 505808f684SSatish Balay 515808f684SSatish Balayif __name__ == "__main__": 52f46a955bSLisandro Dalcin main() 53