Your IP : 13.59.58.68
3
\V � @ sT d Z ddlZddlmZ ddlT ddlmZ ddlmZ dd� Z G d d
� d
e�Z
dS )z�distutils.command.build_clib
Implements the Distutils 'build_clib' command, to build a C/C++ library
that is included in the module distribution and needed by an extension
module.� N)�Command)�*)�customize_compiler)�logc C s ddl m} | � d S )Nr )�show_compilers)�distutils.ccompilerr )r � r �4/usr/lib64/python3.6/distutils/command/build_clib.pyr s r c @ sl e Zd ZdZd"d#d$d%d&gZddgZdddefgZdd� Zdd� Z dd� Z
dd� Zdd� Zdd� Z
d d!� ZdS )'�
build_clibz/build C/C++ libraries used by Python extensions�build-clib=�b�%directory to build C/C++ libraries to�build-temp=�t�,directory to put temporary build by-products�debug�g�"compile with debugging information�force�f�2forcibly build everything (ignore file timestamps)� compiler=�c�specify the compiler typez
help-compilerNzlist available compilersc C s: d | _ d | _d | _d | _d | _d | _d | _d| _d | _d S )Nr ) r
�
build_temp� libraries�include_dirs�define�undefr r �compiler)�selfr r r �initialize_options4 s zbuild_clib.initialize_optionsc C sh | j dddd d
d� | jj| _| jr0| j| j� | jd krH| jjpDg | _t| jt�rd| jjtj �| _d S )NZbuildr r
r r r )r r
)r r )r r )r r )r r )
Zset_undefined_optionsZdistributionr �check_library_listr �
isinstance�str�split�os�pathsep)r r r r �finalize_optionsD s
zbuild_clib.finalize_optionsc C s� | j s
d S ddlm} || j| j| jd�| _t| j� | jd k rN| jj| j� | j d k rzx | j D ]\}}| jj
||� q`W | jd k r�x| jD ]}| jj|� q�W | j
| j � d S )Nr )�new_compiler)r �dry_runr )r r r) r r* r r r Zset_include_dirsr Zdefine_macror Zundefine_macro�build_libraries)r r) �name�valueZmacror r r �run^ s
zbuild_clib.runc C s� t |t�std��x�|D ]|}t |t� r<t|�dkr<td��|\}}t |t�sVtd��d|ksrtjdkr�tj|kr�td|d ��t |t�std��qW d S )
a` Ensure that the list of libraries is valid.
`library` is presumably provided as a command option 'libraries'.
This method checks that it is a list of 2-tuples, where the tuples
are (library_name, build_info_dict).
Raise DistutilsSetupError if the structure is invalid anywhere;
just returns otherwise.
z+'libraries' option must be a list of tuples� z*each element of 'libraries' must a 2-tuplezNfirst element of each tuple in 'libraries' must be a string (the library name)�/z;bad library name '%s': may not contain directory separatorsr zMsecond element of each tuple in 'libraries' must be a dictionary (build info)N) r# �list�DistutilsSetupError�tuple�lenr$ r&