a
    Þe	  ã                   @   sl   d dl Z d dlZd dlmZ eƒ Zd dlmZ ddd„Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )é    N)ÚDefaultEnvironment)ÚjoinFc                 C   sR   t  | ¡D ]B}t| |ƒ}t||ƒ}t j |¡r@t ||||¡ q
t ||¡ q
d S )N)ÚosÚlistdirr   ÚpathÚisdirÚshutilÚcopytreeÚcopy2)ÚsrcÚdstÚsymlinksÚignoreÚitemÚsÚd© r   úCD:\CREALITY_CR4NTxxC10\buildroot\share\PlatformIO\scripts\marlin.pyr	      s    

r	   c                 C   s>   t d D ]}|d | krt d  |¡ qt d  | |f¡ d S )NÚ
CPPDEFINESr   )ÚenvÚremoveÚappend)ÚfieldÚvalueÚdefiner   r   r   Úreplace_define   s    r   c                 C   s   t d| ƒ d S )NZVECT_TAB_ADDR©r   ©Úaddressr   r   r   Úrelocate_firmware   s    r   c                 C   s   t d| ƒ d S )NZVECT_TAB_OFFSETr   r   r   r   r   Úrelocate_vtab    s    r    c                 C   s\   t j d|  ¡}ttd ƒD ]:\}}d|v r>d| td |< q|dkr|td |d < qd S )Nz%buildroot/share/PlatformIO/ldscripts/Ú	LINKFLAGSz-Wl,-Tz-Té   )r   r   ÚabspathÚ	enumerater   )ZldnameZapathÚiÚflagr   r   r   Úcustom_ld_script$   s    r'   c              	   C   s  dd l }g d¢}|d }d|v r(|d }|d j}t|dƒ}t|d jjd | dƒ}	tj |¡}
d}z„||
k rÎ| d¡}|d	krº|d
k rºtt|ƒ||d@  A ƒ}|j	d dkrºt
|dƒ}|	 |¡ |d7 }qhW | ¡  |	 ¡  t |¡ n| ¡  |	 ¡  t |¡ 0 d S )Nr   ) é£   é½   é­   é   éA   é   é»   é   éÜ   é€   é-   éÐ   éÒ   éÄ   é›   é   é&   éë   éã   é3   éJ   é   éä   é
   é³   é±   é<   é“   r.   é¯   é÷   é>   ÚMARLIN_FEATURESZFIRMWARE_BINÚrbú/Úwbr"   i@  i@y  é   é   Úlatin1)Úsysr   ÚopenÚdirr   ÚgetsizeÚreadÚchrÚordÚversion_infoÚbytesÚwriteÚcloser   )ÚsourceÚtargetr   Únew_namerN   ÚkeyÚmfZfwpathZfwfileZenfileÚlengthÚpositionÚbyter   r   r   Úencrypt_mks.   s0    




þra   c                 C   s   t  tddƒ| ¡ d S )Nz
$BUILD_DIRz${PROGNAME}.bin)r   ÚAddPostActionr   )Úactionr   r   r   Úadd_post_actionJ   s    rd   )FN)r   r   ÚSCons.Scriptr   r   Úos.pathr   r	   r   r   r    r'   ra   rd   r   r   r   r   Ú<module>   s   
	
