o )a8@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)+ UnixCCompilerZunixNZccz-sharedZarz-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_fileZmacrosZ include_dirs extra_preargsextra_postargs fixed_argsignorepp_optsZpp_argsmsgr)V/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!objsrcZextZcc_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_linkrrrrr robjectsrrr r debug)r!r8Zoutput_libnamer3r9 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 r4)r5Z _fix_lib_argsr isinstancestrtype TypeErrorrrjoinr7r8rrrrZ EXECUTABLErrrbasenamer,r-r.r/r rr r r9)r!Z target_descr8r;r3Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr9r#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)NZgcczg++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)NZCCrrr )get_macosx_target_ver split_version z -Wl,-rpath,rJZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZGNULDZyesz-Wl,--enable-new-dtags,-Rz-Wl,-R) rrrEshlexsplitrget_config_varr,r-Zdistutils.utilrOrPrN)r!rKrrOrPZmacosx_target_verr)r)r*runtime_library_dir_options    z(UnixCCompiler.runtime_library_dir_optioncCrI)Nz-lr))r!libr)r)r*library_optionrMzUnixCCompiler.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 ZCFLAGSz-isysroot\s*(\S+)/r>z/System/z/usr/z /usr/local/) r6r,r-rrVresearchgrouprrrD startswithexists)r!dirsrXr9Zshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrKrZr[r]r\r)r)r*find_library_filesH         zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesr,r-Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionr+r2r<rHrLrNrWrYrfr)r)r)r*r -sN      B'r )__doc__rr,r_rTZ distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r-r.r r)r)r)r*s