K i'ddlmZddlmZmZddlmZddlZddlZddl Z ddl Z ddl m Z m Z mZGddZGd d eZd ZGd d eZGddeZy)) annotations)CallableOptional) OrderedDictN)find_binary_of_command unique_list CompileErrorceZdZUdZded<ded<dZded<ded<d ed <d ed <ded < ddZeddZdZ dZ 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. strenviron_key_compilerenviron_key_flagsLDFLAGSenviron_key_ldflagszdict[str, str] compiler_dictztuple[None | str, ...] standardsz)dict[str, Callable[[Optional[str]], str]] std_formatercompiler_name_vendor_mappingNc z t|tr tdt||_||_|xsg|_tjj|jr>|xj tj|jjz c_||_ |r|\|_ |_ntjj|jrtj|j|_|j j#D]#\}}||jvs||_||_ nt|j j#d\|_|_ t'j(d|jd|jn| tjjdd}|j+|\|_ |_|_|jAtdj-dj/|j j1| xsg|_| xsg|_|xsg|_|xsg|_| xsg|_| xs|j<d|_||_ |j@r&ttCd|j |_n)d |j vr|j jEd |j>rB|j jE|jF|j|j>|xsgtItjJtjj|jLd jDcgc] }|d k7r| c}z|_'| tQjRd }tQjRd }| d ur\tUtI|jV|r tYdtUtI|jV|ry|jEdy| dur\tUtI|jV|rytUtI|jV|r tYd|jEdyd}t|j-| ycc}w)Nz2Expected argument sources to be a list of strings.rz*failed to determine what kind of compiler z is, assuming SYMPY_COMPILER_VENDORz No compiler found (searched: {})z, c |dk7S)N-cxs j/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/utilities/_compilation/runners.pyz)CompilerRunner.__init__..os qDyrzno-strict-aliasing$zstrict-aliasing$Tz4Strict aliasing cannot be both enforced and disabledz-fstrict-aliasingFz-fno-strict-aliasingz:Expected argument strict_aliasing to be True/False, got {})- isinstancer ValueErrorlistsourcesoutflagsosenvirongetrsplitcwd compiler_namecompiler_binaryrritemscompiler_vendorwarningswarn find_compilerformatjoinvaluesdefineundef include_dirs libraries library_dirsrstd run_linkerfilterappendrmapstriprlinklinerecompileanymatchr )selfr$r%r&r<compilerr+r8r9r:r;r6r7strict_aliasingpreferred_vendorrAkwargskvlfnsa_resa_remsgs r__init__zCompilerRunner.__init__Gs gs #QR RG} [b ::>>$00 1 JJ"**T%;%;<BBD DJ 7? 4D  4 ZZ^^D55 6#%::d.G.G#HD **002 J1,,,+,D()*D&  J <@@R@R@X@X@Z;[\];^8$d&8 #33T5G5GIJ '#%::>>2I4#P MQM_M_`pMq JD  4d6J##+ !C!J!J499UYUgUgUnUnUpKq!rssl [b (.B"b(.B+$..+$ ??f%8$**EFDJ4::% !!$' 88 JJ  $d//""$$(HH. /"R IIrzz~~d&>&>CIIK: ,2 2X-/,   &ZZ 56FJJ12E$&s6<</0&']^^U[[%01LL!45 E)s6<</03u{{E23*+abb %;<R O!<==) ' ,sR8ct|jj}|r%||vr|g|z}ntdj |t |Dcgc]}|j|c}\}}|||j |fScc}w)z/ Identify a suitable C/fortran/other compiler. zUnknown vendor {})r#rkeysr"r3rr)clsrI candidatesrnamepaths rr2zCompilerRunner.find_compilers#++0023 :-./ :  !4!;!;->q-A,VW dT3;;DAAA-WsBc|jg|jz|jDcgc]}d|z c}z|jDcgc]}d|z c}z|jDcgc]}d|z c}z|j z}|j rK||jDcgc]}d|z c}|jDcgc]}d|z c}z|jzz }g}tjddj|D]I}tj|||vs|j|dj!|}t#||Scc}wcc}wcc}wcc}wcc}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&r7r6r8r$r<r:r9rArBfindallr4r'getenvr>r3r )rFrcmdcountedenvvarrPs rr\zCompilerRunner.cmdsX ! ! " JJ !ZZ (T!V ( )"[[ )T!V ) *".. /T!V /  0 LL    ?? T%6%67T!V7%)^^4T!V45MM" #Cjj#? ,Fyy ((NN6*@GGOC&s++  ,  ! ) ) /84s E E$ E E9 E"c t|j|_|jjd|jgtj j }|j|d<tjdj|jd|jtjtjtj|}|j} |djd|_|j$|_|j&dk7rcd j)dj|j|jt+|j&|j }t-||j |j&fS#t"$r|djd|_YwxYw) Nz-oPWDrYT)shellr+stdinstdoutstderrenvrzutf-8z iso-8859-1z3Error executing '{}' in {} (exited status {}): {} )r r&extendr%r'r(copyr+ subprocessPopenr4r\PIPESTDOUT communicatedecode cmd_outerrUnicodeDecodeError returncodecmd_returncoder3r r )rFrepcommrPs rrunzCompilerRunner.runsY ,  4*+jjooXXE    SXXdhhj1#'!%#-??$.OO$.$5$5!$  &}} ;"1gnnW5DO ll   ! #IPP$dhhD4G4G0H$//Cs# # 3 333" ;"1gnn\:DO ;s-F!!"GG) NTN.NNNNNNNNN)N) __name__ __module__ __qualname____doc____annotations__rrQ classmethodr2r\rtrrrr r sq$L(("!&%<;#10UXX\SWI>V B B.4rr ceZdZdZdZegdZdZdjdjdjdZ ddd dZ y ) CCompilerRunnerCCCFLAGS))gnugcc)intelicc)llvmclang)c89c90c99c11-std={})rrrrrrN rvrwrxrrrrrr3rrrrrr}r}s[ !M -I!!L$ rr}c0ddivrfd}|Sd}|S)Ng++)zWimplicit-interfacec&D]}||vsyy)NFTr)rnw cmplr_name not_welcomes rfltrz_mk_flag_filter..fltrs&!*- !7  !rcy)NTrrs rrz_mk_flag_filter..fltrsrr)rrrs` @r_mk_flag_filterrs,23K[   K  KrceZdZdZdZegdZdZdjdjdjdZ ddd dZ y ) CppCompilerRunnerCXXCXXFLAGS))rr)ricpc)rclang++)zc++98zc++0xr)rrrrrrNrrrrrrs[ "!M#I  ##L$ rrcDeZdZdZdZdZdddZeddgZd d dZ y ) FortranCompilerRunnerFCFFLAGS)Nf77f95f2003f2008c:|dS|dk(rdSdj|S)Nz-std=gnurz -std=legacyrr3rs rrzFortranCompilerRunner.!s&AIjAQVJ=\e\l\lmn\orc2|dSdj|ddS)Nz -stand f08z -stand f{}rrs rrzFortranCompilerRunner."s!19<,:M:MaPRPSf:Ur)gfortranifort)rr)rrrrN) rvrwrxrrrrrrrrrrrrsJ 6IpUL  !M $ rr) __future__rtypingrr collectionsrr'rBrhr0utilrr r r r}rrrrrrrsZ"%#  D4D4Nn4 6Nr