+eU5@sdZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZejdkrddlZnGd 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 seZdZdZidd6dgd6dgd6dgd6ddgd 6dgd 6d d gd 6dd6Zejdddkrdgedr?r%r'r*rZ EXECUTABLErrrbasenamer4r5r6r7r+rr r r@)rZ target_descr?rBr;r r!r"Zexport_symbolsr@r-r.Z build_temprAr/Zlib_optsZld_argsZlinkerir2r#r#r$linksH     "zUnixCCompiler.linkcCsd|S)Nz-Lr#)rdirr#r#r$library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)Ngcczg++r#)rZ compiler_namer#r#r$_is_gccszUnixCCompiler._is_gcccCstjjtjd}tjdddkr<d|Stjdddkr|j|rrdd|gSdd|gStjdd d kstjddd krd |gS|j|rtjd dkrd|Sd|Snd|SdS)NCCrr z-Lzhp-uxz-Wl,+sz+sZirix646Zosf1V5z-rpathGNULDyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r(r)rLrrr4r5rR)rrOrr#r#r$runtime_library_dir_options2  z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr#)rlibr#r#r$library_optionszUnixCCompiler.library_optioncCs|j|dd}|j|dd}|j|dd}tjdkrtjd}tjd|}|dkrd} q|jd } nx5|D]-} tj j | |} tj j | |} tj j | |} tjdkr| j d s| j d r| j d  rtj j | | d d|} tj j | | d d|} tj j | | d d|} ntj j | r| Stj j | r| Stj j | r| SqWdS) NZlib_typeshareddylibstaticr CFLAGSz-isysroot\s+(\S+)/rEz/System/z/usr/z /usr/local/) r=r4r5rrresearchgroupr(r)rK startswithexists)rdirsrYr@Zshared_fZdylib_fZstatic_fZcflagsmZsysrootrOr[r\r]r#r#r$find_library_file s4   ""%zUnixCCompiler.find_library_file)__name__ __module__ __qualname__Z compiler_typeZ executablesr4r5Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZ exe_extensionrr3r:rCrNrPrRrXrZrgr#r#)rr$r -sB             6   * r )__doc__r(r4r`Z distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r5r6r r#r#r#r$s$"