U e5d=3 ã @ sh d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm Z dddœZ G d d „ d eƒZd dd„ZdS )é N)ÚCommand)ÚDistutilsExecError)Úcustomize_compiler)Úlogz.cz.cxx)Úczc++c @ sÆ e Zd ZdZdddddddd d g Zdd„ Zd d„ Zdd„ Zdd„ Zdd„ Z dd„ Z dd„ Zdd„ Zdd„ Z d0dd „Zd1d!d"„Zd2d#d$„Zd3d%d&„Zd4d'd(„Zd5d*d+„Zdddg fd,d-„Zd6d.d/„ZdS )7Ú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)zdump-sourceNz=dump generated source files before attempting to compile themc C s4 d | _ d | _d | _d | _d | _d| _d| _g | _d S )Né )ÚcompilerZccÚinclude_dirsÚ librariesÚlibrary_dirsr Údump_sourceÚ temp_files©Úself© r ú0/usr/lib64/python3.8/distutils/command/config.pyÚinitialize_options3 s zconfig.initialize_optionsc C s� | j d kr| jj pg | _ nt| j tƒr6| j tj¡| _ | jd krHg | _nt| jtƒr^| jg| _| jd krpg | _nt| jtƒrŒ| j tj¡| _d S ©N) r ZdistributionÚ isinstanceÚstrÚsplitÚosÚpathsepr r r r r r Úfinalize_optionsB s zconfig.finalize_optionsc C s d S r r r r r r ÚrunR s z config.runc C sz ddl m}m} t| j|ƒsv|| j| jdd�| _t| jƒ | jrN| j | j¡ | j rb| j | j ¡ | jrv| j | j¡ d S )Nr )Ú CCompilerÚnew_compilerr )r Údry_runZforce) Údistutils.ccompilerr" r# r r r$ r r Zset_include_dirsr Z set_librariesr Zset_library_dirs)r r" r# r r r Ú_check_compilerY s ÿ zconfig._check_compilerc C sl dt | }t|dƒ�L}|r>|D ]}| d| ¡ q | d¡ | |¡ |d dkr^| d¡ W 5 Q R X |S )NZ_configtestÚwz#include <%s> Ú éÿÿÿÿ)ÚLANG_EXTÚopenÚwrite)r ÚbodyÚheadersÚlangÚfilenameÚfileÚheaderr r r Ú_gen_temp_sourcefilek s zconfig._gen_temp_sourcefilec C s<