B
    ›³ëbÚ  ã               @   sN   d Z ddlZddlZddlZddlmZmZ dZdd„ Z	dd„ Z
dd
d„ZdS )z%Dependency scanner for program files.é    Né   )ÚScannerBaseÚFindPathDirsc              K   s   t dƒ| d< ttdf| Ž}|S )zaReturn a prototype Scanner instance for scanning executable
    files for static-lib dependenciesZLIBPATHZpath_functionÚProgramScanner)r   r   Úscan)ÚkwargsZps© r   ú1lib/python3.7/site-packages/SCons/Scanner/Prog.pyr   "   s    r   c             C   sh   t j |¡r,|  |¡}t j |¡rd| ¡ }n8t j |¡r^g }x|D ]}|t| |ƒ7 }qBW |}n|g}|S )z5Substitute environment variables and split into list.)ÚSConsÚUtilÚ	is_StringÚsubstÚsplitZis_SequenceÚ_subst_libs)ÚenvÚlibsZ_libsÚlr   r   r	   r   )   s    


r   r   c             C   sn  y|d }W n t k
r    g S X t||ƒ}y|d }tj |¡sH|g}W n t k
rd   dg}Y nX y|d }tj |¡s‚|g}W n t k
rž   dg}Y nX g }x8t|j|ƒD ](}x"t|j|ƒD ]}| ||f¡ qÄW q²W g }	t|ƒrð|ƒ }tj	j
j}
tjj}xf|D ]^}tj |¡rZxH|D ]4\}}||||ƒ}|
||td}|r |	 |¡ q W n
|	 |¡ qW |	S )zÒScans program files for static-library dependencies.

    It will search the LIBPATH environment variable
    for libraries specified in the LIBS variable, returning any
    files it finds as dependencies.
    ZLIBSZLIBPREFIXESÚ ZLIBSUFFIXES)Úverbose)ÚKeyErrorr   r
   r   Zis_ListÚmapr   ÚappendÚcallableZNodeZFSÚ	find_fileÚ
adjustixesr   Úprint_find_libs)Znoder   Zlibpathr   ÚprefixÚsuffixZpairsZsufZprefÚresultr   r   Úlibr   r   r   r	   r   9   sF    




r   )r   )Ú__doc__Z
SCons.Noder
   ZSCons.Node.FSZ
SCons.Utilr   r   r   r   r   r   r   r   r   r   r	   Ú<module>   s   