o Xai8@sdZddlZddlZddlZddlZddlmZddlmZddl m Z m Z m Z ddl mZmZmZmZddlmZejdkrCddlZGd 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 kr'd ged <gd Zd Zd Z dZ dZ dZ dZ ZZeZejdkrDdZ  d'ddZddZ d(ddZ    d)ddZddZdd Zd!d"Zd#d$Zd*d%d&ZdS)+ 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 Cs|d||}|\}}}t||} |j| } |r| d|g|r'|| dd<|r.| || ||js?|dus?t||rc|rJ|tj |z| | WdSt yb} zt | d} ~ wwdS)N-or)Z_fix_compile_argsrrextendappendforcermkpathospathdirnamespawnrr) selfsourceZ output_fileZmacros include_dirs extra_preargsextra_postargs fixed_argsignorepp_optsZpp_argsmsgr-/builddir/build/BUILDROOT/alt-python310-setuptools-58.3.0-4.el8.x86_64/opt/alt/python310/lib/python3.10/site-packages/setuptools/_distutils/unixccompiler.py preprocessUs*      zUnixCCompiler.preprocessc Csd|j}tjdkrt|||}z||||d|g|WdSty1}zt|d}~ww)Nr r)rsysplatform _osx_supportcompiler_fixupr#rr) r$objsrcextZcc_argsr(r+rr,r-r-r._compileos  zUnixCCompiler._compilerc Cs|||\}}|j||d}|||rN|tj|||j|g||j |j rLz ||j |gWdSt yK}zt |d}~wwdSt d|dS)N) output_dirskipping %s (up-to-date))_fix_object_argslibrary_filename _need_linkrr r!r"r#robjectsrrr r debug)r$r=Zoutput_libnamer8r> target_langoutput_filenamer,r-r-r.create_static_libzs*   zUnixCCompiler.create_static_libc Cs|||\}}||||}|\}}}t||||}t|ttdfs(td|dur3tj ||}| ||r||j |d|g}| rMdg|dd<| rU| |dd<| r\| | | tj|zf|tjkrs|jdd}n|jdd}| dkr|jrd}tj|ddkrd}d||vr|d7}d||vstj||d krd}nd}|j||||<tjd krt||}|||WdSty}zt|d}~wwtd |dS) Nz%'output_dir' must be a string or Nonerz-grzc++env=Z ld_so_aixr r9)r:Z _fix_lib_argsr isinstancestrtype TypeErrorr r!joinr<r=rrr"rZ EXECUTABLErrrbasenamer0r1r2r3r#rr r r>)r$Z target_descr=r@r8 libraries library_dirsruntime_library_dirsexport_symbolsr>r'r(Z build_tempr?r)Zlib_optsZld_argsZlinkerioffsetr,r-r-r.links`         zUnixCCompiler.linkcCd|S)N-Lr-)r$dirr-r-r.library_dir_optionz UnixCCompiler.library_dir_optioncCsd|vpd|vS)Ngcczg++r-)r$Z compiler_namer-r-r._is_gccszUnixCCompiler._is_gcccCstjttdd}tjdddkr4ddl m }m }|}|r0||ddgkr0d|Sd |Stjdd d krAd |Stjddd kr[| |rUdd |gSdd |gStddkrfd|Sd|S)NCCrrr )get_macosx_target_ver split_version z -Wl,-rpath,rSZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sGNULDyesz-Wl,--enable-new-dtags,-Rz-Wl,-R) r r!rJshlexsplitrget_config_varr0r1distutils.utilrZr[rX)r$rTrrZr[Zmacosx_target_verr-r-r.runtime_library_dir_options    z(UnixCCompiler.runtime_library_dir_optioncCrR)Nz-lr-)r$libr-r-r.library_optionrVzUnixCCompiler.library_optioncCs|j|dd}|j|dd}|j|dd}|j|dd}tjdkr8td}td|} | dur3d } n| d } |D]} tj | |} tj | |} tj | |}tj | |}tjdkr| d sl| d r| d stj | | d d|} tj | | d d|} tj | | d d|}tj | | d d|}tj | r| Stj |r|Stj | r| Stj |r|Sq:dS)Nshared)Zlib_typedylib xcode_stubstaticr CFLAGSz-isysroot\s*(\S+)/rCz/System/z/usr/z /usr/local/) r;r0r1rrcresearchgroupr r!rI startswithexists)r$dirsrfr>Zshared_fZdylib_fZ xcode_stub_fZstatic_fcflagsmZsysrootrTrhrirkrjr-r-r.find_library_filesH         zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__ compiler_typeZ executablesr0r1Zsrc_extensionsZ obj_extensionZstatic_lib_extensionshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionr/r7rArQrUrXrergrvr-r-r-r.r -sN      B'r )__doc__r r0rnra distutilsrdistutils.dep_utilrZdistutils.ccompilerrrrdistutils.errorsrrr r r r1r2r r-r-r-r.s