U
�AT^=3 c @ 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=ZIz.list of directories to search for header files)zdefine=ZDzC preprocessor macros to define)zundef=ZUz!C preprocessor macros to undefine)z
libraries=Zlz!external C libraries to link with)z
library-dirs=ZLz.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�strZsplit�osZpathsepr 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_configtestZwz#include <%s>
�
i����)�LANG_EXT�openZwrite)r �body�headers�lang�filename�file�headerr r r �_gen_temp_sourcefilek s
zconfig._gen_temp_sourcefilec C s<