File: //lib/python3.10/distutils/__pycache__/ccompiler.cpython-310.pyc
o
    ��bc:�  �                   @   s�   d Z ddlZddlZddlZddlT ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddl
mZmZ dd	lmZ G d
d� d�ZdZdd
d�Zdddddd�Zdd� Zddd�Zdd� Zdd� ZdS )z�distutils.ccompiler
Contains CCompiler, an abstract base class that defines the interface
for the Distutils compiler abstraction model.�    N)�*)�spawn)�	move_file)�mkpath)�newer_group)�split_quoted�execute)�logc                   @   sd  e Zd ZdZdZdZdZdZdZdZ	dZ
dZdddddd�Zg d�Z
drd	d
�Zdd� Zd
d� Zdd� Zdd� Zdsdd�Zdd� Zdd� Zdd� Zdd� Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� Zd'd(� Zd)d*� Zd+d,� Zd-d.� Z d/d0� Z!dsd1d2�Z"d3d4� Z#d5d6� Z$d7d8� Z%d9d:� Z&		dtd;d<�Z'			dud=d>�Z(d?d@� Z)		dvdAdB�Z*dCZ+dDZ,dEZ-										dwdFdG�Z.										dwdHdI�Z/										dwdJdK�Z0								dxdLdM�Z1dNdO� Z2dPdQ� Z3dRdS� Z4		dydTdU�Z5dzdVdW�Z6d{dYdZ�Z7d{d[d\�Z8d{d]d^�Z9	_	Xd|d`da�Z:d}dcdd�Z;dedf� Z<dgdh� Z=d~didj�Z>dkdl� Z?dmdn� Z@ddpdq�ZAdS )��	CCompilera�  Abstract base class to define the interface that must be implemented
    by real compiler classes.  Also has some utility methods used by
    several compiler classes.
    The basic idea behind a compiler abstraction class is that each
    instance can be used for all the compile/link steps in building a
    single project.  Thus, attributes common to all of those compile and
    link steps -- include directories, macros to define, libraries to link
    against, etc. -- are attributes of the compiler instance.  To allow for
    variability in how individual files are treated, most of those
    attributes may be varied on a per-compilation or per-link basis.
    N�c�c++�objc)�.cz.ccz.cppz.cxxz.m)r   r
   r   r   c                 C   sb   || _ || _|| _d | _g | _g | _g | _g | _g | _g | _	| j
�� D ]}| �|| j
| � q#d S �N)
�dry_run�force�verbose�
output_dir�macros�include_dirs�	libraries�library_dirs�runtime_library_dirs�objects�executables�keys�set_executable)�selfr   r   r   �key� r   �*/usr/lib/python3.10/distutils/ccompiler.py�__init__U   s   �zCCompiler.__init__c                 K   s<