Ë
    óÿæiý'  ã                  ó¼   — d dl mZ d dlmZmZ d dlmZ d dlZd dlZd dl	Z	d dl
Z
ddlmZmZmZ  G d„ d«      Z G d	„ d
e«      Zd„ Z G d„ de«      Z G d„ de«      Zy)é    )Úannotations)ÚCallableÚOptional)ÚOrderedDictNé   )Úfind_binary_of_commandÚunique_listÚCompileErrorc                  óˆ   — e Zd ZU dZded<   ded<   dZded<   ded<   d	ed
<   ded<   ded<   	 	 	 dd„Zedd„«       Zd„ Z	d„ Z
y)ÚCompilerRunnera’   CompilerRunner base class.

    Parameters
    ==========

    sources : list of str
        Paths to sources.
    out : str
    flags : iterable of str
        Compiler flags.
    run_linker : bool
    compiler_name_exe : (str, str) tuple
        Tuple of compiler name &  command to call.
    cwd : str
        Path of root of relative paths.
    include_dirs : list of str
        Include directories.
    libraries : list of str
        Libraries to link against.
    library_dirs : list of str
        Paths to search for shared libraries.
    std : str
        Standard string, e.g. ``'c++11'``, ``'c99'``, ``'f2003'``.
    define: iterable of strings
        macros to define
    undef : iterable of strings
        macros to undefine
    preferred_vendor : string
        name of preferred vendor e.g. 'gnu' or 'intel'

    Methods
    =======

    run():
        Invoke compilation as a subprocess.

    ÚstrÚenviron_key_compilerÚenviron_key_flagsÚLDFLAGSÚenviron_key_ldflagszdict[str, str]Úcompiler_dictztuple[None | str, ...]Ú	standardsz)dict[str, Callable[[Optional[str]], str]]Ústd_formaterÚcompiler_name_vendor_mappingNc                óz	  — t        |t        «      rt        d«      ‚t        |«      | _        || _        |xs g | _        t        j                  j                  | j                  «      r>| xj                  t        j                  | j                     j                  «       z  c_        || _        |r|\  | _        | _        �n�t        j                  j                  | j                  «      rÅt        j                  | j                     | _        | j                   j#                  «       D ]#  \  }}|| j                  v sŒ|| _        || _         n÷ t        | j                   j#                  «       «      d   \  | _        | _        t'        j(                  d| j                  ›d| j                  ›�«       n“|€ t        j                  j                  dd «      }| j+                  |«      \  | _        | _        | _        | j                  €At        dj-                  dj/                  | j                   j1                  «       «      «      «      ‚|xs g | _        |xs g | _        |xs g | _        |xs g | _        |	xs g | _        |
xs | j<                  d   | _        || _         | j@                  r&t        tC        d„ | j                  «      «      | _        n)d	| j                  vr| j                  jE                  d	«       | j>                  rB| j                  jE                   | jF                  | j                     | j>                  «      «       |xs g tI        t        jJ                  t        j                  j                  | jL                  d
«      j                  «       «      D �cg c]	  }|d
k7  r|‘Œ c}z   | _'        |��tQ        jR                  d«      }tQ        jR                  d«      }|du r\tU        tI        |jV                  |«      «      rtY        d«      ‚tU        tI        |jV                  |«      «      ry |jE                  d«       y |du r\tU        tI        |jV                  |«      «      ry tU        tI        |jV                  |«      «      rtY        d«      ‚|jE                  d«       y d}t        |j-                  |«      «      ‚y c c}w )Nz2Expected argument sources to be a list of strings.r   z*failed to determine what kind of compiler z is, assuming ÚSYMPY_COMPILER_VENDORz No compiler found (searched: {})z, c                ó   — | dk7  S )Nú-c© ©Úxs    úy/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/sympy/utilities/_compilation/runners.pyÚ<lambda>z)CompilerRunner.__init__.<locals>.<lambda>o   s   € ¨q°Dªyó    r   Ú zno-strict-aliasing$zstrict-aliasing$Tz4Strict aliasing cannot be both enforced and disabledz-fstrict-aliasingFz-fno-strict-aliasingz:Expected argument strict_aliasing to be True/False, got {})-Ú
isinstancer   Ú
ValueErrorÚlistÚsourcesÚoutÚflagsÚosÚenvironÚgetr   ÚsplitÚcwdÚcompiler_nameÚcompiler_binaryr   r   ÚitemsÚcompiler_vendorÚwarningsÚwarnÚfind_compilerÚformatÚjoinÚvaluesÚdefineÚundefÚinclude_dirsÚ	librariesÚlibrary_dirsr   ÚstdÚ
run_linkerÚfilterÚappendr   ÚmapÚstripr   ÚlinklineÚreÚcompileÚanyÚmatchr
   )Úselfr$   r%   r&   r<   Úcompilerr+   r8   r9   r:   r;   r6   r7   Ústrict_aliasingÚpreferred_vendorrA   ÚkwargsÚkÚvÚlfÚnsa_reÚsa_reÚmsgs                          r   Ú__init__zCompilerRunner.__init__G   sØ  € ô �gœsÔ#ÜÐQÓRÐRÜ˜G“}ˆŒØˆŒØ’[˜bˆŒ
Ü�:‰:�>‰>˜$×0Ñ0Ô1Ø�JŠJœ"Ÿ*™* T×%;Ñ%;Ñ<×BÑBÓDÑD�JØˆŒÙØ7?Ñ4ˆDÔ Ö 4Ü�Z‰Z�^‰^˜D×5Ñ5Ô6Ü#%§:¡:¨d×.GÑ.GÑ#HˆDÔ Ø×*Ñ*×0Ñ0Ö2‘��1Ø˜×,Ñ,Ò,Ø+,�DÔ(Ø)*�DÔ&Ùð	 3ô <@À×@RÑ@R×@XÑ@XÓ@ZÓ;[Ð\]Ñ;^Ñ8�Ô$ dÔ&8Ü—’Ø#×3Ó3°T×5GÒ5GðIõ Jð  Ð'Ü#%§:¡:§>¡>Ð2IÈ4Ó#PÐ ØMQ×M_ÑM_Ð`pÓMqÑJˆDÔ Ô 4°dÔ6JØ×#Ñ#Ð+Ü Ð!C×!JÑ!JÈ4Ï9É9ÐUY×UgÑUg×UnÑUnÓUpÓKqÓ!rÓsÐsØ’l ˆŒØ’[˜bˆŒ
Ø(Ò.¨BˆÔØ"š bˆŒØ(Ò.¨BˆÔØÒ+˜$Ÿ.™.¨Ñ+ˆŒØ$ˆŒØ�?Š?äœfÑ%8¸$¿*¹*ÓEÓFˆD�Jà˜4Ÿ:™:Ñ%Ø—
‘
×!Ñ! $Ô'à�8Š8Ø�J‰J×Ñð $˜d×/Ñ/Ø×"Ñ"ñ$Ø$(§H¡Hó.ô /ð "š R¼Ü�I‰I”r—z‘z—~‘~ d×&>Ñ&>ÀÓC×IÑIÓKô:
ó ,ñ :
°2à�2ŠXò -/ð :
ñ ,ñ ˆŒð Ñ&Ü—Z‘ZÐ 5Ó6ˆFÜ—J‘JÐ1Ó2ˆEØ $Ñ&Ü”s˜6Ÿ<™<¨Ó/Ô0Ü&Ð']Ó^Ð^Üœ˜UŸ[™[¨%Ó0Ô1Øà—L‘LÐ!4Õ5Ø  EÑ)Ü”s˜6Ÿ<™<¨Ó/Ô0Øäœ3˜uŸ{™{¨EÓ2Ô3Ü*Ð+aÓbÐbàŸ™Ð%;Õ<àR�Ü  §¡¨OÓ!<Ó=Ð=ð) 'ùò	,s   ÎR8c                ó  — t        | j                  j                  «       «      }|r%||v r|g|z   }nt        dj	                  |«      «      ‚t        |D �cg c]  }| j                  |   ‘Œ c}«      \  }}||| j                  |   fS c c}w )z/ Identify a suitable C/fortran/other compiler. zUnknown vendor {})r#   r   Úkeysr"   r3   r   r   )ÚclsrI   Ú
candidatesr   ÚnameÚpaths         r   r2   zCompilerRunner.find_compiler’   s“   € ô ˜#×+Ñ+×0Ñ0Ó2Ó3ˆ
ÙØ :Ñ-Ø.Ð/°
Ñ:‘
ä Ð!4×!;Ñ!;Ð<LÓ!MÓNÐNÜ+É:Ó,VÉ:Àa¨S×->Ñ->¸qÓ-AÈ:Ñ,VÓW‰
ˆˆdØ�T˜3×;Ñ;¸DÑAÐAÐAùò -Ws   ÁBc                óÎ  — | j                   g| j                  z   | j                  D �cg c]  }d|z   ‘Œ	 c}z   | j                  D �cg c]  }d|z   ‘Œ	 c}z   | j                  D �cg c]  }d|z   ‘Œ	 c}z   | j
                  z   }| j                  rK|| j                  D �cg c]  }d|z   ‘Œ	 c}| j                  D �cg c]  }d|z   ‘Œ	 c}z   | j                  z   z  }g }t        j                  ddj                  |«      «      D ]I  }t        j                  |«      �Œ||vsŒ|j                  |«       dj!                  |«      }t#        |«      ‚ |S c c}w c c}w c c}w c c}w c c}w )	zD List of arguments (str) to be passed to e.g. ``subprocess.Popen``. z-Uz-Dz-Iz-Lz-lz\$\{(\w+)\}Ú z$Environment variable '{}' undefined.)r-   r&   r7   r6   r8   r$   r<   r:   r9   rA   rB   Úfindallr4   r'   Úgetenvr>   r3   r
   )rF   r   ÚcmdÚcountedÚenvvarrP   s         r   r\   zCompilerRunner.cmdž   sl  € ð ×!Ñ!Ð"Ø�J‰Jñà!ŸZšZÓ(™Z˜ˆT�!‹V˜ZÑ(ñ)ð "Ÿ[š[Ó)™[˜ˆT�!‹V˜[Ñ)ñ*ð "×.Ò.Ó/Ñ.˜ˆT�!‹VÐ.Ñ/ñ	0ð
 �L‰Lñð 	ð �?Š?Ø T×%6Ò%6Ó7Ñ%6 �T˜!“VÐ%6Ñ7Ø%)§^¢^Ó4¡^ �T˜!“V ^Ñ4ñ5à—M‘Mñ"ñ #ˆCð ˆÜ—j‘j °·±¸#³Ö?ˆFÜ�y‰y˜Ó Ñ(Ø Ò(Ø—N‘N 6Ô*Ø@×GÑGÈÓO�CÜ& sÓ+Ð+ð @ð ˆ
ùò! )ùÚ)ùÚ/ùò 8ùÚ4s   ¨EÁEÁ$EÂEÂ9E"c           	     ó’  — t        | j                  «      | _        | j                  j                  d| j                  g«       t        j
                  j                  «       }| j                  |d<   t        j                  dj                  | j                  «       «      d| j                  t        j                  t        j                  t        j                  |¬«      }|j                  «       }	 |d   j                  d«      | _        |j$                  | _        | j&                  dk7  rcd	j)                  dj                  | j                  «       «      | j                  t+        | j&                  «      | j                   «      }t-        |«      ‚| j                   | j&                  fS # t"        $ r |d   j                  d«      | _        Y Œ¿w xY w)
Nz-oÚPWDrY   T)Úshellr+   ÚstdinÚstdoutÚstderrÚenvr   zutf-8z
iso-8859-1z3Error executing '{}' in {} (exited status {}):
 {}
)r	   r&   Úextendr%   r'   r(   Úcopyr+   Ú
subprocessÚPopenr4   r\   ÚPIPEÚSTDOUTÚcommunicateÚdecodeÚ
cmd_outerrÚUnicodeDecodeErrorÚ
returncodeÚcmd_returncoder3   r   r
   )rF   re   ÚpÚcommrP   s        r   ÚrunzCompilerRunner.runµ   sY  € Ü  §¡Ó,ˆŒ
ð 	�
‰
×Ñ˜4 §¡Ð*Ô+Ü�j‰j�o‰oÓˆØ—X‘XˆˆE‰
ô ×Ñ˜SŸX™X d§h¡h£jÓ1Ø#'Ø!%§¡Ü#-§?¡?Ü$.§O¡OÜ$.×$5Ñ$5Ø!$ô&ˆð �}‰}‹ˆð	;Ø" 1™gŸn™n¨WÓ5ˆDŒOð  Ÿl™lˆÔð ×Ñ !Ò#ØI×PÑPØ—‘˜Ÿ™›Ó$ d§h¡h´°D×4GÑ4GÓ0HÈ$Ï/É/óˆCô ˜sÓ#Ð#à�‰ × 3Ñ 3Ð3Ð3øô "ò 	;Ø" 1™gŸn™n¨\Ó:ˆDŽOð	;ús   Ã-F! Æ!"GÇG)NTNÚ.NNNNNNNNN)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   rQ   Úclassmethodr2   r\   rt   r   r   r   r   r      sq   … ñ$ðL ÓØÓØ(Ð˜Ó(ð "Ó!ð &Ó%ð <Ó;ð #1Ó0àUXØX\ØSWóI>ðV ò	Bó ð	Bòó.4r   r   c                  ó€   — e Zd ZdZdZ eg d¢«      ZdZdj                  dj                  dj                  dœZ	ddd	dœZ
y
)ÚCCompilerRunnerÚCCÚCFLAGS))ÚgnuÚgcc)ÚintelÚicc)ÚllvmÚclang)Úc89Úc90Úc99Úc11ú-std={})r�   rƒ   r…   r€   r‚   r„   N©rv   rw   rx   r   r   r   r   r   r3   r   r   r   r   r   r}   r}   Ö   s[   „ àÐØ Ðáò !ó €Mð -€Ið ×ÑØ×ÑØ×!Ñ!ñ€Lð ØØñ$Ñ r   r}   c                ó0   ‡ ‡— ddiŠ‰ ‰v rˆ ˆfd„}|S d„ }|S )Núg++)zWimplicit-interfacec                ó&   •— ‰‰   D ]  }|| v sŒ y y)NFTr   )r   ÚnwÚ
cmplr_nameÚnot_welcomes     €€r   Úfltrz_mk_flag_filter.<locals>.fltró   s!   ø€ Ø! *Ô-�Ø˜’7Ù ð .ð r   c                 ó   — y)NTr   r   s    r   r’   z_mk_flag_filter.<locals>.fltrù   s   € Ør   r   )r�   r’   r‘   s   ` @r   Ú_mk_flag_filterr”   ð   s,   ù€ ØÐ2Ð3€KØ�[Ñ õ	ð €Kò	à€Kr   c                  ó€   — e Zd ZdZdZ eg d¢«      ZdZdj                  dj                  dj                  dœZ	ddd	dœZ
y
)ÚCppCompilerRunnerÚCXXÚCXXFLAGS))r€   r�   )r‚   Úicpc)r„   úclang++)zc++98zc++0xrŠ   )r�   r™   rš   r€   r‚   r„   Nr‹   r   r   r   r–   r–   þ   s[   „ à ÐØ"Ðáò !ó €Mð #€Ið ×ÑØ× Ñ Ø×#Ñ#ñ€Lð ØØñ$Ñ r   r–   c                  óD   — e Zd ZdZdZdZd„ d„ dœZ eddg«      Zd	d
dœZ	y)ÚFortranCompilerRunnerÚFCÚFFLAGS)NÚf77Úf95Úf2003Úf2008c                ó:   — | €dS | dk(  rdS dj                  | «      S )Nz-std=gnurŸ   z-std=legacyrŠ   ©r3   r   s    r   r   zFortranCompilerRunner.<lambda>!  s)   € ¨A¨I˜jÐoÈAÐQVÊJ¸=ÐoÐ\e×\lÑ\lÐmnÓ\oÐor   c                ó2   — | €dS dj                  | dd  «      S )Nz
-stand f08z
-stand f{}éþÿÿÿr¤   r   s    r   r   zFortranCompilerRunner.<lambda>"  s#   € ¨1¨9˜<ÐU¸,×:MÑ:MÈaÐPRÐPSÈfÓ:UÐUr   )ÚgfortranÚifort)r€   r§   )r‚   r¨   r€   r‚   N)
rv   rw   rx   r   r   r   r   r   r   r   r   r   r   rœ   rœ     sJ   „ àÐØ Ðà6€Iñ pÙUñ€Lñ
  ØØð!ó €Mð Øñ$Ñ r   rœ   )Ú
__future__r   Útypingr   r   Úcollectionsr   r'   rB   rh   r0   Úutilr   r	   r
   r   r}   r”   r–   rœ   r   r   r   Ú<module>r­      sZ   ðÝ "ß %å #Û 	Û 	Û Û ÷ñ ÷
D4ñ D4ôN�nô ò4ô˜ô ô6˜Nõ r   