Mini Shell
a
�DOg:� � @ 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
@ s 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!dtd1d2�Z"d3d4� Z#d5d6� Z$d7d8� Z%d9d:� Z&dud;d<�Z'dvd=d>�Z(d?d@� Z)dwdAdB�Z*dCZ+dDZ,dEZ-dxdFdG�Z.dydHdI�Z/dzdJdK�Z0d{dLdM�Z1dNdO� Z2dPdQ� Z3dRdS� Z4d|dTdU�Z5d}dVdW�Z6d~dYdZ�Z7dd[d\�Z8d�d]d^�Z9d�d`da�Z:d�dcdd�Z;dedf� Z<dgdh� Z=d�didj�Z>dkdl� Z?dmdn� Z@d�dpdq�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
| � qFd 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/lib64/python3.9/distutils/ccompiler.py�__init__U s zCCompiler.__init__c K s<