B { `Õ ã@sšddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z dgZ Gdd„deƒZ edkr–dd lmZe  d ¡eed d  ¡ƒdS) éN)Ú FCompiler)Úfind_executable)Úmake_temp_file)ÚlogÚ IBMFCompilerc@sheZdZdZdZdZddgdgddgdgd gd d gd gd œZdd„Zdd„Zdd„Z dd„Z dd„Z dS)rÚibmzIBM XL Fortran Compilerzo(xlf\(1\)\s*|)IBM XL Fortran ((Advanced Edition |)Version |Enterprise Edition V|for AIX, V)(?P[^\s*]*)zz -qversionÚxlfZxlf90z-qfixedZxlf95Úarz-crÚranlib)Z version_cmdZ compiler_f77Z compiler_fixZ compiler_f90Ú linker_soÚarchiverr c sþtj|f|ž|Ž}|dkr˜tj d¡r˜tdƒ}tdƒ}tj |¡r˜tj |¡r˜yt   |ddg¡}Wnt t j fk r|YnXt  d|¡}|r˜| d¡}d‰|dkrútj ˆ¡rútt ˆ¡ƒ}| ¡‡fd d „|Dƒ}|rúd d lm} | |d ƒ|_}|S) NÚaixÚlslpprz-LcZxlfcmpz xlfcmp:(?P\d+([.]\d+)+)Úversionz/etc/opt/ibmcmp/xlfc s(g|] }tj tj ˆ|d¡¡r|‘qS)zxlf.cfg)ÚosÚpathÚisfileÚjoin)Ú.0Úd)Úxlf_dir©úA/tmp/pip-unpacked-wheel-4iou4664/numpy/distutils/fcompiler/ibm.pyú 5sz,IBMFCompiler.get_version..r)Ú LooseVersion)rÚ get_versionÚsysÚplatformÚ startswithrrrÚexistsÚ subprocessÚ check_outputÚOSErrorÚCalledProcessErrorÚreÚsearchÚgroupÚisdirÚsortedÚlistdirÚreverseZdistutils.versionrr) ÚselfÚargsÚkwdsrrrÚoÚmÚlrr)rrrs*   zIBMFCompiler.get_versioncCsdgS)Nz -qextnamer)r+rrrÚ get_flags;szIBMFCompiler.get_flagscCsdgS)Nz-gr)r+rrrÚget_flags_debug>szIBMFCompiler.get_flags_debugc Csèg}tjdkr| d¡n | d¡|jddgd}|dk rätj d¡rNd}nd |}td d \}}t d |¡t|d ƒL}t   d¡j }x8|D]0}||ƒ} | r¶|  d|   d¡¡q|  |¡qWWdQRX| ¡| d|¡|S)NÚdarwinz/-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 Úrz"\s*crt\s*[=]\s*(?P.*)/crt1.ozcrt = %s/bundle1.o rz-F)rrÚappendrrrrÚinfoÚopenr$ÚcompileÚmatchÚwriter&Úclose) r+ÚoptrZxlf_cfgÚfoZnew_cfgÚfiZ crt1_matchÚliner/rrrÚget_flags_linker_soAs*       z IBMFCompiler.get_flags_linker_socCsdgS)Nz-O3r)r+rrrÚ get_flags_opt[szIBMFCompiler.get_flags_optN) Ú__name__Ú __module__Ú __qualname__Ú compiler_typeÚ descriptionZversion_patternZ executablesrr1r2rBrCrrrrr s Ú__main__)Úcustomized_fcompilerér)Úcompiler)rr$rr Znumpy.distutils.fcompilerrZnumpy.distutils.exec_commandrZnumpy.distutils.misc_utilrÚ distutilsrZ compilersrrDZnumpy.distutilsrJÚ set_verbosityÚprintrrrrrÚs    Q