a ÕDOg=3ã@shddlZddlZddlmZddlmZddlmZddlm Z dddœZ Gd d „d eƒZ d d d „Z dS)éN)ÚCommand)ÚDistutilsExecError)Úcustomize_compiler)Úlogz.cz.cxx)Úczc++c@s¸eZdZdZgd¢Zdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z d(dd„Zd)dd„Zd*dd„Zd+dd„Zd,dd „Zd-d"d#„Zdddgfd$d%„Zd.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_files©Úself©rú=/opt/alt/python39/lib64/python3.9/distutils/command/config.pyÚinitialize_options3szconfig.initialize_optionscCs|jdur|jjpg|_nt|jtƒr6|j tj¡|_|jdurHg|_nt|jtƒr^|jg|_|jdurpg|_nt|jtƒrŒ|j tj¡|_dS©N) rZ distributionÚ isinstanceÚstrÚsplitÚosÚpathseprrrrrrÚfinalize_optionsBs       zconfig.finalize_optionscCsdSrrrrrrÚrunRsz config.runcCszddlm}m}t|j|ƒsv||j|jdd|_t|jƒ|jrN|j |j¡|j rb|j  |j ¡|j rv|j  |j ¡dS)Nr)Ú CCompilerÚ new_compilerr)rÚdry_runZforce) Údistutils.ccompilerr"r#rrr$rrZset_include_dirsrZ set_librariesrZset_library_dirs)rr"r#rrrÚ_check_compilerYs ÿ zconfig._check_compilercCs€dt|}t|dƒV}|r>|D]}| d|¡q | d¡| |¡|ddkr^| d¡Wdƒn1sr0Y|S)NZ _configtestÚwz#include <%s> Ú éÿÿÿÿ)ÚLANG_EXTÚopenÚwrite)rÚbodyÚheadersÚlangÚfilenameÚfileÚheaderrrrÚ_gen_temp_sourcefileks     (zconfig._gen_temp_sourcefilecCs<| |||¡}d}|j ||g¡|jj|||d||fS)Nz _configtest.i©r)r3rÚextendrZ preprocess)rr-r.rr/ÚsrcÚoutrrrÚ _preprocessws zconfig._preprocesscCs\| |||¡}|jr"t|d|ƒ|j |g¡\}|j ||g¡|jj|g|d||fS)Nzcompiling '%s':r4)r3rÚ dump_filerZobject_filenamesrr5Úcompile)rr-r.rr/r6ÚobjrrrÚ_compile~szconfig._compilec Csr| ||||¡\}}tj tj |¡¡d} |jj|g| |||d|jjdur\| |jj} |j  | ¡||| fS)Nr)rrZ target_lang) r<rÚpathÚsplitextÚbasenamerZlink_executableZ exe_extensionrÚappend) rr-r.rrrr/r6r;ÚprogrrrÚ_link‡s ý   z config._linkc GsR|s|j}g|_t dd |¡¡|D]&}zt |¡Wq&tyJYq&0q&dS)Nz removing: %sú )rrÚinfoÚjoinrÚremoveÚOSError)rÚ filenamesr0rrrÚ_clean–s z config._cleanNrcCsPddlm}| ¡d}z| ||||¡Wn|yBd}Yn0| ¡|S)Nr©Ú CompileErrorTF)r%rKr&r8rI©rr-r.rr/rKÚokrrrÚtry_cpp¬s   zconfig.try_cppc CsŒ| ¡| ||||¡\}}t|tƒr0t |¡}t|ƒ8}d} | ¡} | dkrPqb| | ¡r>d} qbq>Wdƒn1sv0Y|  ¡| S)NFÚT) r&r8rrÚrer:r+ÚreadlineÚsearchrI) rÚpatternr-r.rr/r6r7r1ÚmatchÚlinerrrÚ search_cpp¾s     "zconfig.search_cppcCsbddlm}| ¡z| ||||¡d}Wn|yBd}Yn0t |rPdpRd¡| ¡|S)NrrJTFúsuccess!úfailure.)r%rKr&r<rrDrIrLrrrÚ try_compileÚs   zconfig.try_compilec Csnddlm}m}| ¡z| ||||||¡d} Wn||fyNd} Yn0t | r\dp^d¡| ¡| S©Nr)rKÚ LinkErrorTFrWrX)r%rKr[r&rBrrDrI) rr-r.rrrr/rKr[rMrrrÚtry_linkês ÿ zconfig.try_linkc Cs‚ddlm}m}| ¡z.| ||||||¡\} } } | | g¡d} Wn||tfybd} Yn0t | rpdprd¡|  ¡| SrZ) r%rKr[r&rBZspawnrrrDrI) rr-r.rrrr/rKr[r6r;ZexerMrrrÚtry_runýs ÿ   zconfig.try_runrc Cst| ¡g}|r| d|¡| d¡|r<| d|¡n| d|¡| d¡d |¡d}| |||||¡S)Nz int %s ();z int main () {z %s();z %s;Ú}r()r&r@rEr\) rÚfuncr.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)NNNr)NNr)NNNNr)NNNNr)NNNNrr)NNr)Ú__name__Ú __module__Ú __qualname__Z descriptionZ user_optionsrr r!r&r3r8r<rBrIrNrVrYr\r]r`rarbrrrrrs>   ÿ  ÿ ÿ ÿ ÿ ÿrcCsR|durt d|¡n t |¡t|ƒ}zt | ¡¡W| ¡n | ¡0dS)Nz%s)rrDr+ÚreadÚclose)r0Úheadr1rrrr9Ks r9)N) rrPZdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr*rr9rrrrÚ s     8