o 6a @sddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z dgZ GdddeZ edkrMdd lmZe d eed d dSdS) 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 -qversionxlfxlf90z-qfixedxlf95arz-crranlib) version_cmd compiler_f77 compiler_fix compiler_f90 linker_soarchiverr c stj|g|Ri|}|durNtjdrNtd}td}tj|rNtj|rNz t |ddg}Wn t t j fy@Ynwt d|}|rN|d}d|durtjrtt}|fd d |D}|rd d lm} | |d |_}|S) Naixlslpprz-Lcxlfcmpz xlfcmp:(?P\d+([.]\d+)+)versionz/etc/opt/ibmcmp/xlfc s(g|]}tjtj|dr|qS)zxlf.cfg)ospathisfilejoin).0dxlf_dir?/usr/lib/python3/dist-packages/numpy/distutils/fcompiler/ibm.py 5s(z,IBMFCompiler.get_version..r) LooseVersion)r get_versionsysplatform startswithrrrexists subprocess check_outputOSErrorCalledProcessErrorresearchgroupisdirsortedlistdirreversedistutils.versionr"r) selfargskwdsrrromlr"rrr r#s*  zIBMFCompiler.get_versioncCdgS)Nz -qextnamerr4rrr get_flags;zIBMFCompiler.get_flagscCr:)Nz-grr;rrr get_flags_debug>r=zIBMFCompiler.get_flags_debugc Csg}tjdkr |dn|d|jddgd}|durztjdr'd}nd |}td d \}}td |t|d )}t dj }|D]}||} | rZ| d| dqG| |qGWdn1sjwY||d||S)Ndarwinz/-Wl,-bundle,-flat_namespace,-undefined,suppressz-bsharedr() ok_statusrz /etc/xlf.cfgz/etc/opt/ibmcmp/xlf/%s/xlf.cfgz_xlf.cfg)suffixz Creating rz \s*crt\s*=\s*(?P.*)/crt1.ozcrt = %s/bundle1.o rz-F)r$r%appendr#r&rrinfoopenr,compilematchwriter.close) r4optrxlf_cfgfonew_cfgfi crt1_matchliner8rrr get_flags_linker_soAs.       z IBMFCompiler.get_flags_linker_socCr:)Nz-O3rr;rrr get_flags_opt[r=zIBMFCompiler.get_flags_optN) __name__ __module__ __qualname__ compiler_type descriptionversion_pattern executablesr#r<r>rRrSrrrr r s"  __main__)customized_fcompilerr)compiler)rr,r$r(numpy.distutils.fcompilerrnumpy.distutils.exec_commandrnumpy.distutils.misc_utilr distutilsr compilersrrTnumpy.distutilsr\ set_verbosityprintr#rrrr s    Q