B
    bz                 @   sL   d Z ddlmZ ddlZddlZddlZddgZdd Zd	d
 Z	dd Z
dS )zSCons.Tool.gcc

Tool-specific initialization for gcc.

There normally shouldn't be any need to import this module directly.
It will usually be imported through the generic SCons.Tool.Tool()
selection method.

   )cc    Ngccr   c             C   s   d| kr|  tptd | d< t|  | d dkrFtjd| d< ntjd| d< t| | d }|rp|| d< d	| d
< d| d< dS )zBAdd Builders and construction variables for gcc to an Environment.CCr   ZPLATFORM)cygwinZwin32z$CCFLAGSZ	SHCCFLAGSz$CCFLAGS -fPICZ	CCVERSIONz-MMD -MF ${TARGET}.dZ
CCDEPFLAGSr   ZNINJA_DEPFILE_PARSE_FORMATN)Detect	compilersr   generateSConsUtilCLVardetect_version)envversion r   -lib/python3.7/site-packages/SCons/Tool/gcc.pyr	   +   s    
r	   c             C   s   t | | | dtS )Nr   )r   r   getr   )r   r   r   r   existsA   s    r   c          	   C   s   d}|  |}|s|S tjj| tj|dg ddtjd8}| dkrN|S tj	|j
 }x|j
 rnqbW W dQ R X td|}|r|d}|S )zLReturn the version of the GNU compiler, or None if it is not a GNU compiler.Nz	--versiondevnull)stdinstderrstdoutr   z[0-9]+(\.[0-9]+)+)Zsubstr
   ZActionZ_subprocr   r   
subprocessPIPEwaitZto_strr   readlineresearchgroup)r   r   r   pipelinematchr   r   r   r   F   s"    

r   )__doc__ r   r   r   Z
SCons.Utilr
   r   r	   r   r   r   r   r   r   <module>    s   