
    GJj                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
Z
 ee
j                  d          Z G d de      Z G d de	      Zy)	    N)Path)	Extension)	build_extc                   .     e Zd Zddededdf fdZ xZS )CMakeExtensionname	sourcedirreturnNc                     t         |   |g        t        j                  t	        |      j                               | _        y )N)sources)super__init__osfspathr   resolver	   )selfr   r	   	__class__s      W/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/mlx/extension.pyr   zCMakeExtension.__init__   s2    r*4	?#:#:#<=    ) )__name__
__module____qualname__strr   __classcell__r   s   @r   r   r      s"    >S >S >$ > >r   r   c                   0     e Zd ZdeddfdZd fdZ xZS )
CMakeBuildextr
   Nc                    t        j                         | j                  |j                        z  }|j                  j                         }| j                  )t        t        j                  j                  dd            n| j                  }|rdnd}d| t        j                   d| dg}g }dt        j                  v r6|t        j                  d   j                  d	      D cg c]  }|s|	 c}z  }t        j                  j                  d
      rZt!        j"                  dt        j                  j                  dd            }	|	r$|dj%                  dj'                  |	            gz  }dt        j                  vr|dt        j(                          gz  }t        | j*                        |j                  z  }
|
j-                         s|
j/                  d       t0        t        j                  d<   t3        j4                  d|j6                  g||
d       t3        j4                  dddg||
d       y c c}w )NDEBUGr   DebugReleasez!-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=z-DCMAKE_BUILD_TYPE=z-DBUILD_SHARED_LIBS=ON
CMAKE_ARGS darwinz-arch (\S+)	ARCHFLAGSr   z-DCMAKE_OSX_ARCHITECTURES={};CMAKE_BUILD_PARALLEL_LEVELz-jT)parentsMLX_DIRcmake)cwdcheckz--build.)r   r-   get_ext_fullpathr   parentr   debugintr   environgetsepsplitsysplatform
startswithrefindallformatjoin	cpu_count
build_tempexistsmkdir	_MLX_PATH
subprocessrunr	   )r   r   ext_fullpathextdirr2   cfg
cmake_args
build_argsitemarchsr@   s              r   build_extensionzCMakeBuild.build_extension   s   xxzD$9$9#(($CC$$,,.37::3EBJJNN7A./4::gI 0xx@!#'$


 
 2::%BJJ|,D,J,J3,OX,ODSW4,OXXJ<<""8,JJ~rzz~~k2/NOE=DDSXXe_UVV
 (rzz9R/011J$//*SXX5
  "T* !*

9cmm1j1z	
 	i2z2
$	
/ Ys   &H<.H<c                    t         |           | j                  r| j                  D ]  }t	        |t
              s| j                  d      }| j                  ||      \  }}t        t        |      j                  j                               }t        t        |      j                  j                               }| j                  ||        y y )Nbuild_py)r   rE   inplace
extensions
isinstancer   get_finalized_command_get_inplace_equivalentr   r   r1   r   	copy_tree)r   r   rO   inplace_fileregular_fileinplace_dirregular_dirr   s          r   rE   zCMakeBuild.runH   s     <<c>2#99*EH151M1M #2.L, #&d<&8&?&?&G&G&I"JK"%d<&8&?&?&G&G&I"JKNN;< ' r   )r
   N)r   r   r   r   rM   rE   r   r   s   @r   r   r      s!    -
> -
d -
^= =r   r   )r   r;   rD   r8   pathlibr   
setuptoolsr   setuptools.command.build_extr   mlxr   __path__rC   r   r    r   r   <module>r`      sK    
 	  
    2 
Q 	>Y >@= @=r   