\d9dZddlZddlZddlZddlmZddlmZddlm 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 xZZeZejdkrdZ ddZdZ ddZ d dZdZdZdZdZd!dZdS)" 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.exec|d||}|\}}}t||} |j| z} |r| d|g|r|| dd<|r| || ||js|t ||rm|r2|tj | | | dS#t$r} t| d} ~ wwxYwdS)N-or)_fix_compile_argsrrextendappendforcermkpathospathdirnamespawnrr ) selfsource output_filemacros include_dirs extra_preargsextra_postargs fixed_argsignorepp_optspp_argsmsgs (..\python\lib\distutils\unixccompiler.py preprocesszUnixCCompiler.preprocessUs;++D&,GG '1$ (>>#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_fixupr'rr ) r(objsrcextcc_argsr.r1rr3s r4_compilezUnixCCompiler._compileos& <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_linkr#r$r%r&r'robjectsrrr r debug)r(rFoutput_libnamerArG target_langoutput_filenamer3s r4create_static_libzUnixCCompiler.create_static_libzs,"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 Nonerz-grzc++env= ld_so_aixr rB)rC _fix_lib_argsr isinstancestrtype TypeErrorr$r%joinrErFr r#r&r EXECUTABLErrrbasenamer7r8r9r:r'rr r rG)r( target_descrFrJrA libraries library_dirsruntime_library_dirsexport_symbolsrGr-r. build_temprIr/lib_optsld_argslinkerioffsetr3s r4linkzUnixCCompiler.links #33GZHH'' <(<>> 8B5 z(UnixCCompiler._is_gcc..s(MMT4=(MMMMMMrk)gcczg++clang)any)r(rps `r4_is_gcczUnixCCompiler._is_gccs'MMMM5LMMMMMMrkctjtjd}t jdddkrd|zSt jdddkrd|zSt jddd kr#||rd d|zgSd d|zgS||r"tjd d krd|zSd|zSd|zS)NCCrr rffreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sGNULDyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r$r%rXrget_config_varr7r8ru)r(rhrs r4runtime_library_dir_optionz(UnixCCompiler.runtime_library_dir_options7##I$) cz!rkc d|zS)Nz-lrg)r(libs r4library_optionzUnixCCompiler.library_optionrjrkc||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+)rwrNz/System/z/usr/z /usr/local/)rDr7r8rr}researchr9_default_sysrootgroupr$r%rV startswithexists)r(dirsrrGshared_fdylib_f xcode_stub_fstatic_fcflagsmsysrootrhrrrrs r4find_library_filezUnixCCompiler.find_library_file s~((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$$   ++ !!!!''  ''   trk)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__ compiler_type executablesr7r8src_extensions obj_extensionstatic_lib_extensionshared_lib_extensiondylib_lib_extensionxcode_stub_lib_extensionstatic_lib_formatshared_lib_formatdylib_lib_formatxcode_stub_lib_format exe_extensionr5r?rKrdrirur~rrrgrkr4rr-sM%)%)F%)F%)F%)9$5%)F%)5M$(K |BQB8##!) H:99NM "%?HHH),<, |x :>IM((((4 $ $ $AECCCC6:>599=?C <C<C<C<CDNNN("("("T??????rkr)__doc__r$r7r distutilsrdistutils.dep_utilrdistutils.ccompilerrrrdistutils.errorsrr r r r r8r9rrgrkr4rs0  $$$$$$8888888888;;;;;;;;;;;;<8$\\\\\I\\\\\rk