a
    e
                     @   sB   d dl Z d dlZd dlZdZd Zdd Zi Zd	ddZdd ZdS )
    N   c                 C   s   t rt|  d S )N)verboseprint)str r   ID:\CREALITY_CR4NTxxC10\buildroot\share\PlatformIO\scripts\preprocessor.pyblab	   s    r   c           	      C   s   |pd}|t v rt | S | d}| |}t| }d| d g}|d D ]@}t|tr||d|d  d t|d  g7 }qJ|d| g7 }qJ|d	g7 }||g }d
|}t| t	j
|dd }|t |< |S )Nz8buildroot/share/PlatformIO/scripts/common-dependencies.hBUILD_FLAGS"
CPPDEFINESz-Dr   =r   z"-D__MARLIN_DEPS__ -w -dM -E -x c++ T)shell)preprocessor_cachegetParseFlagsExtendedsearch_compiler
isinstancetupler   joinr   
subprocesscheck_output
splitlines)	envfnfilenamebuild_flagscxxcmdsZdepcmddefine_listr   r   r   run_preprocessor   s$    


$


r!   c           	   
   C   s  t j| d | d }t j|d}z| d}td |W S    Y n0 tst j|rtd t|d}| W  d    S 1 s0    Y  t	
| d }d	}| d
 dkrd}|d7 }|d7 }nd}|d7 }| d d |D ]}t	||t	j sqt |D ]}||sqt jj||g}tst j|rtd t|d}|| W d    n1 sv0    Y  |    S q| d}td|  |S )NPROJECT_BUILD_DIRPIOENVz	.gcc_pathZ
custom_gcczGetting compiler from envzGetting g++ path from cacherPROJECT_PACKAGES_DIRzg++PLATFORMwin32;z.*\\binz.exe:z/.+/binENVPATHzCaching g++ for current envzw+CXXz(Couldn't find a compiler! Fallback to %s)ospathr   GetProjectOptionr   nocacheexistsopenreadreescapesplitsearch
IGNORECASElistdirendswithsepwriter   )	r   ZENV_BUILD_PATHZGCC_PATH_CACHEfilepathfZ
path_regexgccZpath_separatorZpathdirr   r   r   r   4   sF    
&
*
r   )N)	r   r-   r4   r0   r   r   r   r!   r   r   r   r   r   <module>   s   
"