
    '-e{                     n    d dl Z d dlZd dlmZ  e            Zd dlmZ ddZd Zd Z	d Z
d	 Zd
 Zd ZdS )    N)DefaultEnvironment)joinFc                    t          j        |           D ]n}t          | |          }t          ||          }t           j                            |          rt          j        ||||           Yt          j        ||           od S )N)oslistdirr   pathisdirshutilcopytreecopy2)srcdstsymlinksignoreitemsds          WD:\Marlin\SKR-mini-E3-V3.0-G0B1-Marlin-2.0\buildroot\share\PlatformIO\scripts\marlin.pyr   r      s    Z__  T
3oo!
3oo!W]]1 	?1a6****	<1     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    )))))r   c                 &    t          d|            d S )NVECT_TAB_OFFSETr#   r$   s    r   relocate_vtabr)   !   s    !7+++++r   c                     t           j                            d| z             }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   )r   r   abspath	enumerater   )ldnameapathiflags       r   custom_ld_scriptr3   %   s    	@6I	J	J#k*++ # #WQ!E)3{At||"3{AE	# #r   c                    dd l }g d}|d         j        }t          |d          }t          |d         j        j        dz   |z   d          }t          j                            |          }	d}
	 |
|	k     r|                    d          }|
dk    rO|
dk     rIt          t          |          ||
d	z           z            }|j	        d         d
k    rt          |d          }|                    |           |
dz  }
|
|	k     |                                 |                                 t	          j        |           d S # |                                 |                                 t	          j        |           w xY w)Nr   )             A                  -                  &         3   J         
         <      r;         >   rb/wbr,   i@  i@y        latin1)sysr   opendirr   getsizereadchrordversion_infobyteswritecloser   )sourcetargetr   new_namerZ   keyfwpathfwfileenfilelengthpositionbytes               r   encrypt_mksro   /   su    H  H  H
).
vt


vay}!C'(2D
9
9
'//&
!
!6
++a..4#oo(U**s4yy3x"}--..D
Q$!!T	<<q=8 	6 	,,...,,...)F 	,,...,,...)Fs   .BD< <>E:c                 X    t                               t          dd          |            d S )Nz
$BUILD_DIRz${PROGNAME}.bin)r   AddPostActionr   )actions    r   add_post_actionrs   G   s)    4&788&AAAAAr   )FN)r   r
   SCons.Scriptr   r   os.pathr   r   r    r&   r)   r3   ro   rs    r   r   <module>rw      s   
         + + + + + +         - - -* * *, , ,# # #  0C C C C Cr   