a ;jg @sddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z dgZ GdddeZ edkrdd lmZe d eed d dS) N) FCompiler)find_executable)make_temp_file)log IBMFCompilerc@sheZdZdZdZdZddgdgddgdgd gd d gd gd ZddZddZddZ ddZ ddZ dS)ribmzIBM XL Fortran Compilerzo(xlf\(1\)\s*|)IBM XL Fortran ((Advanced Edition |)Version |Enterprise Edition V|for AIX, V)(?P[^\s*]*)zz -qversionxlfZxlf90z-qfixedZxlf95arz-crranlib)Z version_cmdZ compiler_f77Z compiler_fixZ compiler_f90 linker_soarchiverr c stj|g|Ri|}|durtjdrtd}td}tj|rtj|rzt |ddg}Wnt t j fyYn0t d|}|r|d}d|durtjrtt}|fd d |D}|rd d lm} | |d |_}|S) Naixlslpprz-LcZxlfcmpz xlfcmp:(?P\d+([.]\d+)+)versionz/etc/opt/ibmcmp/xlfc s(g|] }tjtj|dr|qS)zxlf.cfg)ospathisfilejoin).0dZxlf_dirG/usr/local/lib/python3.9/site-packages/numpy/distutils/fcompiler/ibm.py 5z,IBMFCompiler.get_version..r) LooseVersion)r get_versionsysplatform startswithrrrexists subprocess check_outputOSErrorCalledProcessErrorresearchgroupisdirsortedlistdirreverseZdistutils.versionrr) selfargskwdsrrromlrrrrrs(  zIBMFCompiler.get_versioncCsdgS)Nz -qextnamerr,rrr get_flags;szIBMFCompiler.get_flagscCsdgS)Nz-grr2rrrget_flags_debug>szIBMFCompiler.get_flags_debugc Csg}tjdkr|dn |d|jddgd}|durtjdrNd}nd |}td d \}}td |t|R}t d j }|D]0}||} | r| d| dq| |qWdn1s0Y||d||S)Ndarwinz/-Wl,-bundle,-flat_namespace,-undefined,suppressz-bsharedr()Z ok_statusr z /etc/xlf.cfgz/etc/opt/ibmcmp/xlf/%s/xlf.cfgz_xlf.cfg)suffixz Creating z \s*crt\s*=\s*(?P.*)/crt1.ozcrt = %s/bundle1.o rz-F)rrappendrrrrinfoopenr%compilematchwriter'close) r,optrZxlf_cfgfoZnew_cfgfiZ crt1_matchliner0rrrget_flags_linker_soAs*      *z IBMFCompiler.get_flags_linker_socCsdgS)Nz-O3rr2rrr get_flags_opt[szIBMFCompiler.get_flags_optN) __name__ __module__ __qualname__ compiler_type descriptionZversion_patternZ executablesrr3r4rCrDrrrrr s  __main__)customized_fcompilerr)compiler)rr%rr!Znumpy.distutils.fcompilerrZnumpy.distutils.exec_commandrZnumpy.distutils.misc_utilr distutilsrZ compilersrrEZnumpy.distutilsrK set_verbosityprintrrrrrs    Q