File: //lib64/python3.6/distutils/command/__pycache__/build_clib.cpython-36.opt-2.pyc
3
  \V  �               @   sP   d dl Z d dlmZ d dlT d dlmZ d dlmZ dd� ZG dd	� d	e�Z	dS )
�    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 )	Nz+'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))	r#   �list�DistutilsSetupError�tuple�lenr$   r&