B
    Ì‹dF  ã               @   s    d Z ddlZddlZddlmZmZmZ ddlmZ ddl	m
Z
 yddlmZ dZW n ek
rl   dZY nX dZi add	d
„Zedkrœedƒ ddlmZ dS )z’Build a Pyrex file from .pyx source to .so loadable module using
the installed distutils infrastructure. Call:

out_fname = pyx_to_dll("foo.pyx")
é    N)ÚDistutilsArgErrorÚDistutilsErrorÚCCompilerError)Ú	Extension)Úgrok_environment_error)Úold_build_extTFc       $   	   C   s  t j | ¡s tdt j | ¡ ƒ‚t j t j | ¡¡\}}	|s„t j |	¡\}
}|dks\t|ƒ‚tsv| dt|ƒ … d } t	|
| gd}|dkri }|s¢t j 
|d¡}|}x<|j d¡ddd	… D ]"}t j |¡\}}||kr¾d}P q¾W | d
g ¡}tsþd|krd}nd}|dg}|r | d¡ |r‚|r‚| d|g¡ |jdksT|j d¡r‚t|dƒslddi|_nd|jkr‚d|jd< tr˜|r˜| d¡ | ¡ }| d|| dœ¡ ddlm} ||ƒ}|jsÖg |_|j |¡ tròdti|_| d¡}||_| ¡ }| |¡ y| ¡ }W n tk
r8   ‚ Y nX trPt dƒ | !¡  |sZt‚yJ| d¡}| "¡  | #¡ d }|j$r¢t j 
t j %| ¡t j &|¡¡}|r¤|}t j '|¡}t( |d¡\}}}||krÚ|}nÊt j &|¡}x®|dk rˆ|d7 }t j 
|j)|d|  ¡} yTddl*}!yt j +| ¡r6t  ,| ¡ W n t-k
rR   wèY nX |! .|| ¡ | }W n t/k
r€   wèY nX P qèW t0d| ƒ‚|||ft(|< |S  t1k
rÆ   t2 3d¡ Y nH t/t j4fk
r   t2 5¡ d }"t6|"ƒ}#trt2j7 8|#d  ¡ ‚ Y nX dS )!zUCompile a PYX file to a DLL and return the name of the generated .so
       or .dll .zCould not find %s)z.pyxz.pyNz.c)ÚnameÚsourcesZ_pyxbldÚ.éþÿÿÿéÿÿÿÿÚscript_argsz	--verbosez--quietÚ	build_extz--forcez--build-libÚ__init__z	.__init__Úcython_directivesZset_initial_pathZ
SOURCEFILEz--pyrex-c-in-temp)Úscript_namer   r   )ÚDistributionÚbuildz%options (after parsing command line):)NNr   éd   é   z	.reload%sz#reload count for %s reached maximumÚ
)9ÚosÚpathÚexistsÚAssertionErrorÚabspathÚsplitÚsplitextÚ
HAS_CYTHONÚlenr   Újoinr   ÚgetÚDEBUGÚappendÚextendÚendswithÚhasattrr   ÚcopyÚupdateÚdistutils.distr   Úext_modulesr   ÚcmdclassÚget_command_objÚ
build_baseÚfind_config_filesÚparse_config_filesÚparse_command_liner   ÚprintÚdump_option_dictsÚrun_commandsÚget_outputsÚinplaceÚdirnameÚbasenameÚgetmtimeÚ_reloadsÚ	build_libÚshutilÚisfileÚunlinkÚOSErrorÚcopy2ÚIOErrorÚImportErrorÚKeyboardInterruptÚsysÚexitÚerrorÚexc_infor   ÚstderrÚwrite)$ÚfilenameÚextZforce_rebuildZbuild_in_tempZpyxbuild_dirZ
setup_argsZreload_supportr5   r   r   ÚmodnameÚ	extensionZpackage_base_dirÚpackage_nameZpnamer   ÚquietÚargsZsargsr   Údistr   ZcfgfilesÚokZobj_build_extZso_pathZorg_pathÚ	timestampZlast_timestampZ	last_pathÚcountr7   Zr_pathr;   ÚexcrE   © rU   ú_/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/pyximport/pyxbuild.pyÚ
pyx_to_dll   sÄ     











rW   Ú__main__z	dummy.pyxr   )Útest)Nr   FNNFF)Ú__doc__r   rC   Údistutils.errorsr   r   r   Údistutils.extensionr   Údistutils.utilr   ZCython.Distutils.old_build_extr   r   r   rA   r"   r9   rW   Ú__name__Ú rY   rU   rU   rU   rV   Ú<module>   s$   
 
 