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