File: //lib64/python3.9/distutils/command/__pycache__/build_ext.cpython-39.opt-1.pyc
a
    �DOg�{  �                   @   s�   d Z ddlZddlZddlZddlZddlmZ ddlT ddlm	Z	m
Z
 ddlmZ ddlm
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ e�d�Zd
d� ZG dd� de�ZdS )z�distutils.command.build_ext
Implements the Distutils 'build_ext' command, for building extension
modules (currently limited to C extensions, should accommodate C++
extensions ASAP).�    N)�Command)�*)�customize_compiler�get_python_version)�get_config_h_filename)�newer_group)�	Extension)�get_platform)�log)�	USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$c                  C   s   ddl m}  | �  d S )Nr   ��show_compilers)�distutils.ccompilerr
   r   � r   �3/usr/lib64/python3.9/distutils/command/build_ext.pyr
      s    r
   c                   @   s  e Zd ZdZdej Zddddde�  fdd	d
de fdd
dddde fddddddddddgZg d�Z	ddde
fgZd d!� Zd"d#� Z
d$d%� Zd&d'� Zd(d)� Zd*d+� Zd,d-� Zd.d/� Zd0d1� Zejd2d3� �Zd4d5� Zd6d7� Zd8d9� Zd:d;� Zd<d=� Zd>d?� Zd@dA� ZdBdC� ZdS )D�	build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s'))z
build-lib=�bz(directory for compiled extension modules)zbuild-temp=�tz1directory for temporary files (build by-products)z
plat-name=�pz>platform name to cross-compile for, if supported (default: %s))�inplace�iziignore build-lib and put compiled extensions into the source directory alongside your pure Python modulesz
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 withz
library-dirs=�Lz.directories to search for external C libraries)zrpath=�Rz7directories to search for shared C libraries at runtime)z
link-objects=�Oz2extra explicit link objects to include in the link)�debug�gz'compile/link with debugging information)�force�fz2forcibly build everything (ignore file timestamps))z	compiler=�czspecify the compiler type)z	parallel=�jznumber of parallel build jobs)�swig-cppNz)make SWIG create C++ files (default is C))z
swig-opts=Nz!list of SWIG command line options)zswig=Nzpath to the SWIG executable)�userNz#add user include, library and rpath)r   r   r    r$   r%   z
help-compilerNzlist available compilersc                 C   s�   d | _ d | _d | _d | _d| _d | _d | _d | _d | _d | _	d | _
d | _d | _d | _
d | _d | _d | _d | _d | _d | _d | _d S )Nr   )�
extensions�	build_lib�	plat_name�
build_tempr   �package�include_dirs�define�undef�	libraries�library_dirs�rpath�link_objectsr   r    �compiler�swig�swig_cpp�	swig_optsr%   �parallel��selfr   r   r   �initialize_optionsj   s*    zbuild_ext.initialize_optionsc           
   
   C   s�  ddl m} | �ddddddd	d
� | jd u r8| jj| _| jj| _|�� }|jdd�}| j	d u rn| jj	pjg | _	t
| j	t�r�| j	�t
j�| _	tjtjkr�| j	�t
j�tjd
�� | j	�|�t
jj�� ||kr�| j	�|�t
jj�� | �d� | �d� | jd u �rg | _| jd u �rg | _nt
| jt��r:| j�t
j�| _| jd u �rNg | _nt
| jt��rl| j�t
j�| _t
jdk�rh| j�t
j�tjd�� tjtjk�r�| j�t
j�tjd�� | j�r�t
j�| jd�| _nt
j�| jd�| _| j	�t
j�t� �� t tdd �}|�r| j�|� | j!dk�r*d}n| j!dd � }t
j�tjd�}|�r\t
j�||�}| j�|� tj"d d� dk�r�tj#�$t
j�tjd���r�| j�t
j�tjddt%�  d�� n| j�d� |�&d��r�|j'�s�| j�|�&d �� n| j�d� | j(�r| j(�d!�}d"d#� |D �| _(| j)�r4| j)�d!�| _)| j*d u �rHg | _*n| j*�d$�| _*| j+�r�t
j�t,d
�}t
j�t,d�}	t
j�-|��r�| j	�|� t
j�-|	��r�| j�|	� | j�|	� t
| j.t��r�zt/| j.�| _.W n t0�y�   t1d%��Y n0 d S )&Nr   )�	sysconfigZbuild)r'