
    ڏDj/                        d Z dZddlZddlZej                  dk  rddlmZ  G d d      ZnddlZd%d	Z ej                  d
      Z
 ed      Z ed      Z ed      Z ed      Zeek(  rdZn!ej                  j!                  edd       d   Z edej"                  j%                  dd            Z ed      dz   ej"                  j%                  dd      z   Z edej"                  j%                  de            Z ed      Z ed      Z ed      Z ej                  d      Zd Zd Zd Zd&dZd Zd Zd'dZ d'dZ!d(d Z"d! Z#d" Z$e%d#k(  r e$ejL                  d$d        yy))z
Compile a Python script into an executable that embeds CPython.
Requires CPython to be built as a shared library ('libpythonX.Y').

Basic usage:

    python -m Cython.Build.BuildExecutable [ARGS] somefile.py
T    N)   	   )	sysconfigc                   @    e Zd Zed        Z eej                        Zy)r   c                 8    | dk(  sJ t        j                         S )Ninclude)
_sysconfigget_python_inc)names    `C:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\Cython/Build/BuildExecutable.pyget_pathzsysconfig.get_path   s    9$$,,..    N)__name__
__module____qualname__staticmethodr   r	   get_config_var r   r   r   r      s&    		/ 
	/ &j&?&?@r   r    c                 4    t        j                  |       xs |S N)r   r   )r   defaults     r   r   r      s    ##D)4W4r   r   LIBDIRLIBPLLIBRARY	LDLIBRARYr   CCCFLAGS LINKCCLINKFORSHAREDLIBSSYSLIBSEXEc                 d    t         r*|r| |z  } t        j                  j                  | dz          y y )N
)DEBUGsysstderrwrite)msgargss     r   _debugr-   6   s,    *C

t$ r   c                     t        dt               t        dt               t        dt               t        dt               t        dt
               t        dt               t        dt               t        dt               t        d	t               t        d
t               t        dt               t        dt               y )Nz
INCDIR: %szLIBDIR1: %szLIBDIR2: %sz	PYLIB: %szPYLIB_DYN: %szCC: %sz
CFLAGS: %sz
LINKCC: %szLINKFORSHARED: %szLIBS: %szSYSLIBS: %szEXE_EXT: %s)r-   INCDIRLIBDIR1LIBDIR2PYLIB	PYLIB_DYNr   r   r    r!   r"   r#   EXE_EXTr   r   r   dump_configr5   =   s{    
< 
='"
='"
;
?I&
8R
< 
< 
.
:t
='"
='"r   c                     g }d }t        |       D ]L  \  }}|j                  d      r|j                  |       n"|dv r|j                  |       n|}| |dz   d  }  n|}N t        d      ||| fS )N-)z-Xz--directive   zno input file provided)	enumerate
startswithappend
ValueError)r,   cy_argslast_argiarg
input_files         r   _parse_argsrB   L   s    GHD/ 33>>#NN3..NN3J!:D3 122w$$r   c                     |rdj                  |       } t        |        nt        dj                  |              dd l}|j                  | |      }|rt	        j
                  |       y y )Nr   r   shell)joinr-   
subprocesscallr(   exit)cmdrE   rG   
returncodes       r   runcmdrL   _   sR    hhsmssxx}E2J r   c           	      V   t        t        d| t        z   | dz   dt        z   dt        z   gt
        xr	 dt
        z   xs( t        j                  j                  t        t              gz   t        j                         z   t        j                         z   t        j                         z          y )N-o.oz-Lz-l)rL   r    r4   r0   r1   r3   ospathrF   r2   r"   splitr#   r!   basenames    r   clinkrU   m   s    
FD(W,htmT'\4PW<X,T)^LWe0LMNZZ\#MMO,.;.A.A.CD Er   c           	      r    t        t        dd| dz   | dz   dt        z   gt        j	                         z          y )Nz-crN   rO   z.cz-I)rL   r   r/   r   rR   rS   s    r   ccompilerW   s   s.    
BdHTM8D=$-H6<<>YZr   c                     ddl m}m}m} |j	                  t        |xs d      d| gz         \  }}t        d|j                  |        |j                  ||      }|j                  dkD  rt        j                  d       y y )N   )VersionCmdLineMainr   z--embedzUsing Cython %s to compile %sr   r8   )CompilerrZ   r[   r\   parse_command_linelistr-   versioncompile
num_errorsr(   rI   )rA   optionsrZ   r[   r\   sourcesresults          r   	cycompilerf   w   sp    1111$w}"2ET^H_2_`GW
*GOOZH\\'7+F1 r   c                 r    t        t        j                  j                  |       gt	        |      z   d       y )NFrD   )rL   rP   rQ   abspathr_   )program_namer,   s     r   	exec_filerj      s%    
BGGOOL)*T$Z7uEr   c                 R   t         j                  j                  |       d   }|t        z   }|sJt         j                  j	                  |      t         j                  j	                  |       k(  rt        d      |st         j                  j                  |      rlt         j                  j                  |       rMt         j                  j                  |       t         j                  j                  |      k  rt        d|       |S t        | |       t        |       t        |       |S )zi
    Build an executable program from a Cython module.

    Returns the name of the executable file.
    r   z?Input and output file names are the same, refusing to overwritez'File is up to date, not regenerating %s)rP   rQ   splitextr4   rh   r<   existsgetmtimer-   rf   rW   rU   )rA   compiler_argsforcerT   exe_files        r   buildrr      s     ww
+A.H'!HRWW__X."''//*2MMZ[[bggnnX.277>>*3M  ,0@0@0JJ8(Cj-(X	(OOr   c                 8    t        |       \  }} t        ||        y)z
    Build an executable program from a Cython module and run it.

    Arguments after the module name will be passed verbatimly to the program.
    N)_buildrj   )r,   ri   s     r   build_and_runru      s      L$lD!r   c                 @    t        |       \  }}} t        ||      }|| fS r   )rB   rr   )r,   rA   r=   ri   s       r   rt   rt      s*     +D 1JW-Lr   __main__r8   )r   )T)r   )r   F)'__doc__r'   r(   rP   version_info	distutilsr   r	   r   r   r/   r0   r1   r2   r3   rQ   rl   environgetr   r   r    r!   r"   r#   r4   r-   r5   rB   rL   rU   rW   rf   rj   rr   ru   rt   r   argvr   r   r   <module>r~      s   	 
 	f1A A 5 
		I	&

"

!y!;'	I  12/2ID"**..r23		!C	'"**..2*F	F	"**..2">	?/f

#
")
"
"5
)%#%&E[F(" z
388AB< r   