f;dZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZejdkrddlZGd d e ZdS) a9distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwinc eZdZdZddgdgdgddgdgddgddZejddd krd ged <gd Zd Zd Z dZ dZ dZ dxZ xZZeZejdkrdZfdZ ddZdZ d dZ d!dZdZdZdZdZd"dZxZS)# UnixCCompilerunixNccz-sharedarz-cr) preprocessorcompiler compiler_so compiler_cxx linker_so linker_exearchiverranlibr r)z.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%scygwinz.exect|||\}}}tjd}|r||vr|||||fS)z'Remove standard library path from rpathLIBDIR)super _fix_lib_argsrget_config_varremove)self libraries library_dirsruntime_library_dirslibdir __class__s >/opt/alt/python311/lib64/python3.11/distutils/unixccompiler.pyr zUnixCCompiler._fix_lib_argsUsq8=8M8M |%99;9;5 >#g-  0 NND+. / / /  ('GBQBK  + NN> * * *v : (,fk0J0J, : BGOOK88999 ( 7#####% ( ( ("3''' ( -,sC++ D 5DD c|j}tjdkrtj|||z} |||z|d|gz|zdS#t $r}t|d}~wwxYw)Nr r,)rsysplatform _osx_supportcompiler_fixupr5rr ) r#objsrcextcc_argsr;r>rr@s r)_compilezUnixCCompiler._compilexs& <8 # #&5k4;n4LNNK $ JJ{W,T3/??%& ' ' ' ' '! $ $ $s## # $s!A A2A--A2rc|||\}}|||}|||r|tj|||j|gz|z|j z|j rB ||j |gzdS#t$r}t|d}~wwxYwdStjd|dS)N) output_dirskipping %s (up-to-date))_fix_object_argslibrary_filename _need_linkr1r2r3r4r5robjectsrrr r debug)r#rRoutput_libnamerMrS target_langoutput_filenamer@s r)create_static_libzUnixCCompiler.create_static_libs,"33GZHH  ! !.Z ! H H  ??7O 4 4 C KK88 9 9 9 JJt}'()!%. / / /{ ((JJt{o->>?????)((("3--'( ( ( I0/ B B B B Bs*C C(C##C(c|||\}}||||}|\}}}t||||}t|tt dfst d| tj ||}| ||r||j z|zd|gz}| rdg|dd<| r| |dd<| r| | | tj| |tjkr|jdd}n|jdd}| dkr|jrd}tj|ddkrd}d||vr|dz }d||vtj||d krd}nd}|j||||z<t*jd krt/j||}|||zdS#t4$r}t7|d}~wwxYwt9jd |dS) Nz%'output_dir' must be a string or Noner,z-grzc++env= ld_so_aixr rN)rOr r isinstancestrtype TypeErrorr2r3joinrQrRr.r1r4r EXECUTABLErrrbasenamerCrDrErFr5rr r rS)r# target_descrRrVrMr$r%r&export_symbolsrSr:r; build_temprUr<lib_optsld_argslinkerioffsetr@s r)linkzUnixCCompiler.links #33GZHH'' <(<>> 8B5 z(UnixCCompiler._is_gcc..s(MMT4=(MMMMMMr*)gcczg++clang)any)r#rws `r)_is_gcczUnixCCompiler._is_gccs'MMMM5LMMMMMMr*ctjtjd}t jdddkrd|zSt jdddkrd|zSt jddd kr#||rd d|zgSd d|zgS||r"tjd d krd|zSd|zSd|zS)NCCrr rnfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sGNULDyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r2r3rcrr!rCrDr|)r#rprs r)runtime_library_dir_optionz(UnixCCompiler.runtime_library_dir_options7##I$) cz!r*c d|zS)Nz-lro)r#libs r)library_optionzUnixCCompiler.library_optionrrr*c||d}||d}||d}||d}tjdkrgtjd}t jd|} | 'tjtjd } n| d } |D]} tj | |} tj | |} tj | |}tj | |}tjdkr| d s*| d r| d stj | | d d|} tj | | d d|} tj | | d d|}tj | | d d|}tj | r| cStj |r|cStj | r| cStj |r|cSdS)Nshared)lib_typedylib xcode_stubstaticr CFLAGSz-isysroot\s*(\S+)r~rZz/System/z/usr/z /usr/local/)rPrCrDrr!researchrE_default_sysrootgroupr2r3ra startswithexists)r#dirsrrSshared_fdylib_f xcode_stub_fstatic_fcflagsmsysrootrprrrrs r)find_library_filezUnixCCompiler.find_library_files~((x(@@''g'>>,,S<,HH ((x(@@ <8 # #&-h77F .77Ay&7 8PQU8V8VWW''!**  CW\\#x00FGLLg..EW\\#x00Fc<88J|x''z**(w''(03}0M0M(gs122wAA Wc!""gw??gs122wAAW\\'3qrr7LII w~~e$$   ++ !!!!''  ''   tr*)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__ compiler_type executablesrCrDsrc_extensions obj_extensionstatic_lib_extensionshared_lib_extensiondylib_lib_extensionxcode_stub_lib_extensionstatic_lib_formatshared_lib_formatdylib_lib_formatxcode_stub_lib_format exe_extensionr rArKrWrlrqr|rrr __classcell__)r(s@r)rr-sM%)%)F%)F%)F%)9$5%)F%)5M$(K |BQB8##!) H:99NM "%?HHH),<, |x =====;?IM((((4 $ $ $AECCCC6:>599=?C <C<C<C<CDNNN("("("T????????r*r)__doc__r2rCr distutilsrdistutils.dep_utilrdistutils.ccompilerrrrdistutils.errorsrr r r r rDrError*r)rs0  $$$$$$8888888888;;;;;;;;;;;;<8$eeeeeIeeeeer*