B
    ›³ëb[  ã               @   sˆ   d Z dZddlZddlZddlZddlZddlZddlZddl	m
Z
mZ ddlmZ e d¡Zdd„ ZG d	d
„ d
ƒZdd„ Zdd„ ZdS )a	  SCons.Tool.linkloc

Tool specification for the LinkLoc linker for the Phar Lap ETS embedded
operating system.

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.

z,__FILE__ __REVISION__ __DATE__ __DEVELOPER__é    N)Úmsvs_existsÚmerge_default_version)ÚaddPharLapPathsz(\s)@\s*([^\s]+)c          	   C   s\   y.t |  d¡dƒ}|  d¡| ¡  S Q R X W n( tk
rV   |  d¡d |  d¡ S X d S )Né   Úré   ú#)ÚopenÚgroupÚreadÚIOError)ÚmÚf© r   ú1lib/python3.7/site-packages/SCons/Tool/linkloc.pyÚrepl_linker_command2   s
    r   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚLinklocGeneratorc             C   s
   || _ d S )N)Úcmdline)Úselfr   r   r   r   Ú__init__@   s    zLinklocGenerator.__init__c             C   sJ   |r8d}|j | j||d}x|r2t t|¡\}}qW |S d| j d S d S )Nr   )ÚtargetÚsourcez${TEMPFILE('z')})Zsubstr   Ú_re_linker_commandÚsubnr   )r   Úenvr   r   Zfor_signatureZsubsZstrsubr   r   r   Ú__call__C   s    zLinklocGenerator.__call__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   ?   s   r   c             C   s¤   t j | ¡ t j | ¡ t| d< d| d< t j d¡| d< d| d< d| d	< d| d
< d| d< t j d¡| d< d| d< d| d< d| d< d| d< d| d< t| ƒ t| ƒ dS )zAAdd Builders and construction variables for ar to an Environment.ZSUBST_CMD_FILEz$LINKZSHLINKz
$LINKFLAGSZSHLINKFLAGSzX${SUBST_CMD_FILE("$SHLINK $SHLINKFLAGS $_LIBDIRFLAGS $_LIBFLAGS -dll $TARGET $SOURCES")}Z	SHLINKCOMNZSHLIBEMITTERZLDMODULEEMITTERÚlinklocZLINKÚ Z	LINKFLAGSzT${SUBST_CMD_FILE("$LINK $LINKFLAGS $_LIBDIRFLAGS $_LIBFLAGS -exe $TARGET $SOURCES")}ZLINKCOMz	-libpath ZLIBDIRPREFIXZLIBDIRSUFFIXz-lib ZLIBLINKPREFIXz
$LIBSUFFIXZLIBLINKSUFFIX)	ÚSConsZToolZcreateSharedLibBuilderZcreateProgBuilderr   ZUtilZCLVarr   r   )r   r   r   r   ÚgenerateN   s"    r"   c             C   s   t | ƒr|  d¡S dS d S )Nr   r   )r   ZDetect)r   r   r   r   Úexistsf   s    
r#   )Ú__doc__Z__revision__ÚreZSCons.Actionr!   ZSCons.DefaultsZSCons.ErrorsZ
SCons.ToolZ
SCons.UtilZSCons.Tool.MSCommonr   r   ZSCons.Tool.PharLapCommonr   Úcompiler   r   r   r"   r#   r   r   r   r   Ú<module>
   s   
