o ?Og=3@sj ddlZddlZddlmZddlmZddlmZddlm Z dddZ Gd d d eZ d d d Z dS)N)Command)DistutilsExecError)customize_compiler)logz.cz.cxx)czc++c@seZdZdZgdZddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ d(ddZ  d(ddZd)ddZ  d*ddZ  d*dd Z  !d+d"d#Zdddgfd$d%Z  d)d&d'ZdS),configzprepare to build) )z compiler=Nzspecify the compiler type)zcc=Nzspecify the compiler executable)z include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link with)z library-dirs=Lz.directories to search for external C libraries)noisyNz1show every action (compile, link, run, ...) taken)z dump-sourceNz=dump generated source files before attempting to compile themcCs4d|_d|_d|_d|_d|_d|_d|_g|_dS)N)compilerZcc include_dirs libraries library_dirsr dump_source temp_filesselfr?/opt/alt/python310/lib64/python3.10/distutils/command/config.pyinitialize_options3s zconfig.initialize_optionscCs|jdur |jjp g|_nt|jtr|jtj|_|jdur$g|_n t|jtr/|jg|_|jdur9g|_dSt|jtrI|jtj|_dSdSN) rZ distribution isinstancestrsplitospathseprrrrrrfinalize_optionsBs        zconfig.finalize_optionscCsdSrrrrrrrunRsz config.runcCs ddlm}m}t|j|s>||j|jdd|_t|j|jr(|j|j|j r2|j |j |j r@|j |j dSdSdS)Nr) CCompiler new_compilerr)rdry_runZforce) distutils.ccompilerr"r#rrr$rrZset_include_dirsrZ set_librariesrZset_library_dirs)rr"r#rrr_check_compilerYs  zconfig._check_compilercCsdt|}t|d4}|r|D] }|d|q|d|||ddkr7|dWd|SWd|S1sBwY|S)NZ _configtestwz#include <%s>  )LANG_EXTopenwrite)rbodyheaderslangfilenamefileheaderrrr_gen_temp_sourcefileks        zconfig._gen_temp_sourcefilecCs<||||}d}|j||g|jj|||d||fS)Nz _configtest.ir)r3rextendrZ preprocess)rr-r.rr/srcoutrrr _preprocessws zconfig._preprocesscCs\||||}|jrt|d||j|g\}|j||g|jj|g|d||fS)Nzcompiling '%s':r4)r3r dump_filerZobject_filenamesrr5compile)rr-r.rr/r6objrrr_compile~szconfig._compilec Csr|||||\}}tjtj|d} |jj|g| |||d|jjdur.| |jj} |j | ||| fS)Nr)rrZ target_lang) r<rpathsplitextbasenamerZlink_executableZ exe_extensionrappend) rr-r.rrrr/r6r;progrrr_links     z config._linkc GsP|s|j}g|_tdd||D]}zt|Wqty%YqwdS)Nz removing: %s )rrinfojoinrremoveOSError)r filenamesr0rrr_cleans z config._cleanNrcCsR ddlm}|d}z |||||Wn |y"d}Ynw||S)Nr CompileErrorTF)r%rKr&r8rIrr-r.rr/rKokrrrtry_cpps  zconfig.try_cppc Cs ||||||\}}t|trt|}t|}d} |} | dkr*n || r2d} nq!Wdn1s=wY| | S)NFT) r&r8rrrer:r+readlinesearchrI) rpatternr-r.rr/r6r7r1matchlinerrr search_cpps&     zconfig.search_cppcCsd ddlm}|z |||||d}Wn |y"d}Ynwt|r)dp*d||S)NrrJTFsuccess!failure.)r%rKr&r<rrDrIrLrrr try_compiles  zconfig.try_compilec Csp ddlm}m}|z|||||||d} Wn ||fy(d} Ynwt| r/dp0d|| SNr)rK LinkErrorTFrWrX)r%rKr[r&rBrrDrI) rr-r.rrrr/rKr[rMrrrtry_links zconfig.try_linkc Cs ddlm}m}|z|||||||\} } } || gd} Wn||tfy2d} Ynwt| r9dp:d| | SrZ) r%rKr[r&rBZspawnrrrDrI) rr-r.rrrr/rKr[r6r;ZexerMrrrtry_runs  zconfig.try_runrc Csv |g}|r|d||d|r|d|n|d||dd|d}||||||S)Nz int %s ();z int main () {z %s();z %s;}r()r&r@rEr\) rfuncr.rrrZdeclZcallr-rrr check_funcs    zconfig.check_funccCs" ||d|||g||S)Nzint main (void) { })r&r\)rZlibraryrr.rZother_librariesrrr check_lib4s   zconfig.check_libcCs |jd|g|dS)Nz /* No body */)r-r.r)rN)rr2rrr/rrr check_headerBs zconfig.check_header)NNNr)NNr)NNNNr)NNNNrr)__name__ __module__ __qualname__ descriptionZ user_optionsrr r!r&r3r8r<rBrIrNrVrYr\r]r`rarbrrrrrs@        rcCsR |dur td|nt|t|}zt|W|dS|w)Nz%s)rrDr+readclose)r0headr1rrrr9Ks r9r) rrPZdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr*rr9rrrrs     8