JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB  f|;@sdZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZejdkr~ddlZGd d 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 seZdZdZddgdgdgddgdgddgddZejddd krNd ged <d d d dddgZdZdZ dZ dZ dZ dZ ZZeZejdkrdZfddZd.ddZddZd/d d!Zd0d"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd1d,d-ZZS)2 UnixCCompilerZunixNZccz-sharedZarz-cr) preprocessorcompiler compiler_so compiler_cxx linker_so linker_exearchiverranlibr rz.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%scygwinz.execsFt|j||||\}}}td}|r<||kr<|||||fS)z'Remove standard library path from rpathZLIBDIR)super __class__ _fix_lib_argsrget_config_varremove)self libraries library_dirsruntime_library_dirsZlibdir)r| d|g|rN|| dd<|r\| || ||js~|dks~t||r|r|tj |y| | Wn*t k r} z t | Wdd} ~ XYnXdS)Nz-or)Z_fix_compile_argsrrextendappendZforcermkpathospathdirnamespawnrr) rsourceZ output_fileZmacrosZ include_dirs extra_preargsextra_postargs fixed_argsignorepp_optsZpp_argsmsgr!r!r" preprocess_s$      zUnixCCompiler.preprocessc Csp|j}tjdkr t|||}y ||||d|g|Wn*tk rj}z t|Wdd}~XYnXdS)Nr z-o)rsysplatform _osx_supportcompiler_fixupr)rr) robjsrcZextZcc_argsr,r/rr0r!r!r"_compileys   zUnixCCompiler._compilerc Cs|||\}}|j||d}|||r|tj|||j|g||j |j ry||j |gWqt k r}z t |Wdd}~XYqXn t d|dS)N) output_dirzskipping %s (up-to-date))_fix_object_argslibrary_filename _need_linkr%r&r'r(r)robjectsrrr r debug)rr=Zoutput_libnamer9r> target_langoutput_filenamer0r!r!r"create_static_libs zUnixCCompiler.create_static_libc Cs|||\}}||||}|\}}}t||||}t|ttdfsPtd|dk rftj ||}| ||r||j |d|g}| rdg|dd<| r| |dd<| r| | | tj|y|tjkr|jdd}n|jdd}| dkrv|jrvd}tj|ddkrDd}xd||krB|d7}q(Wtj||d kr`d}nd}|j||||<tjd krt||}|||Wn,tk r}z t|Wdd}~XYnXn td |dS) Nz%'output_dir' must be a string or Nonez-oz-grzc++env=Z ld_so_aixr zskipping %s (up-to-date))r:rr isinstancestrtype TypeErrorr&r'joinr<r=r#r%r(rZ EXECUTABLErrrbasenamer2r3r4r5r)rr r r>)rZ target_descr=r@r9rrr Zexport_symbolsr>r+r,Z build_tempr?r-Zlib_optsZld_argsZlinkerioffsetr0r!r!r"linksN      zUnixCCompiler.linkcCsd|S)Nz-Lr!)rdirr!r!r"library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)NZgcczg++r!)rZ compiler_namer!r!r"_is_gccszUnixCCompiler._is_gcccCstjtd}tjdddkr,d|StjdddkrFd|Stjddd krz||rnd d|gSd d|gS||rtd d krd|Sd|Snd|SdS)NZCCrr z-LZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZGNULDZyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r&r'rJrrr2r3rP)rrNrr!r!r"runtime_library_dir_options     z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr!)rlibr!r!r"library_optionszUnixCCompiler.library_optioncCs|j|dd}|j|dd}|j|dd}|j|dd}tjdkrptd}td|} | dkrfd } n | d } x|D]} tj | |} tj | |} tj | |}tj | |}tjdkrD| d s| d rD| d sDtj | | d d|} tj | | d d|} tj | | d d|}tj | | d d|}tj | rV| Stj |rh|Stj | rz| Stj |rx|SqxWdS)Nshared)Zlib_typedylib xcode_stubstaticr ZCFLAGSz-isysroot\s*(\S+)/rCz/System/z/usr/z /usr/local/) r;r2r3rrresearchgroupr&r'rI startswithexists)rdirsrTr>Zshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrNrVrWrYrXr!r!r"find_library_files>       zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesr2r3Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr1r8rArMrOrPrSrUrb __classcell__r!r!)rr"r -sF       >*r )__doc__r&r2r[Z distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r3r4r r!r!r!r"s