
    5d	                     f    d dl Z d dlmZ d dlmZ  e            ZddZd Zd Zd Z	d	 Z
d
 Zd ZdS )    N)Path)DefaultEnvironmentFc                     |                                  D ]S}|                                r t          j        |||j        z  ||           6t          j        |||j        z             Td S )N)iterdiris_dirshutilcopytreenamecopy2)srcdstsymlinksignoreitems        ED:\Marlin\Marlin-2.1.2.1\buildroot\share\PlatformIO\scripts\marlin.pyr	   r	      sm     0 0;;== 	0OD#	/8VDDDDLsTY////	0 0    c                     t           d                                         }|D ].}|d         | k    r t           d                             |           /t           d                             | |f           d S )N
CPPDEFINESr   )envcopyremoveappend)fieldvalueenvdefsdefines       r   replace_definer      ss    ,$$&&G - -!9$$V,,,eU^,,,,,r   c                 &    t          d|            d S )NVECT_TAB_ADDRr   addresss    r   relocate_firmwarer#      s    ?G,,,,,r   c                 &    t          d|            d S )NVECT_TAB_OFFSETr    r!   s    r   relocate_vtabr&      s    $g.....r   c                    t          t          d|                                                     }t          t          d                   D ]6\  }}d|v rd|z   t          d         |<   |dk    r|t          d         |dz   <   7d S )Nz$buildroot/share/PlatformIO/ldscripts	LINKFLAGSz-Wl,-Tz-T   )strr   resolve	enumerater   )ldnameapathiflags       r   custom_ld_scriptr1   "   s    ;VDDLLNNOOES-.. , ,4t"*U"2CQT\\&+CQU#	, ,r   c                 \   dd l }g d}|d         }d|v r|d         }t          |d         j                  }|                    d          }t          |d         j        j        |                              d          }	|                                j        }
d}	 ||
k     r|                    d          }d|cxk    rd	k     rLn nIt          t          |          ||d
z           z            }|j
        d         dk    rt          |d          }|	                    |           |dz  }||
k     |                                 |	                                 |                                 d S # |                                 |	                                 |                                 w xY w)Nr   )             A                  -                  &         3   J         
         <      r9         >   MARLIN_FEATURESFIRMWARE_BINrbwbr)   i@  i@y        latin1)sysr   pathopendirstatst_sizereadchrordversion_infobyteswritecloseunlink)sourcetargetr   new_namerY   keymffwpathfwfileenfilelengthpositionbytes                r   encrypt_mksrr   ,   s   JJJ K  K  KC 
	B>(:X&).!!F[[F&)-$h//44T::F[[]]"FH;;q>>Dh&&&&&&&&&3t99s8b='99::#A&** x00DLLMH  	 	s   BE- ->F+c                 r    t                               t          t          dd                    |            d S )Nz
$BUILD_DIRz${PROGNAME}.bin)r   AddPostActionr*   r   )actions    r   add_post_actionrv   H   s1    c$|->??@@&IIIIIr   )FN)r   pathlibr   SCons.Scriptr   r   r	   r   r#   r&   r1   rr   rv    r   r   <module>rz      s   
        + + + + + +0 0 0 0- - -- - -/ / /, , ,  8K K K K Kr   