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