B
     S]                 @   sT   d Z ddlZddlZddlmZ ddlmZ ddlmZ dd Z	G dd	 d	eZ
dS )
zBdistutils.command.build

Implements the Distutils 'build' command.    N)Command)DistutilsOptionError)get_platformc              C   s   ddl m}  |   d S )Nr   )show_compilers)Zdistutils.ccompilerr   )r    r   (lib/python3.7/distutils/command/build.pyr      s    r   c               @   s   e Zd ZdZdddddddd	d
e  fdddddgZddgZdddefgZdd Z	dd Z
dd Zdd Zdd Zdd  Zd!d" Zd#efd$efd%efd&efgZdS )'buildz"build everything needed to install)zbuild-base=bz base directory for build library)zbuild-purelib=Nz2build directory for platform-neutral distributions)zbuild-platlib=Nz3build directory for platform-specific distributions)z
build-lib=NzWbuild directory for all distribution (defaults to either build-purelib or build-platlib)zbuild-scripts=Nzbuild directory for scripts)zbuild-temp=tztemporary build directoryz
plat-name=pz6platform name to build for, if supported (default: %s))z	compiler=czspecify the compiler type)z	parallel=jznumber of parallel build jobs)debuggz;compile extensions and libraries with debugging information)forcefz2forcibly build everything (ignore file timestamps))zexecutable=ez5specify final destination interpreter path (build.py)r   r   zhelp-compilerNzlist available compilersc             C   sL   d| _ d | _d | _d | _d | _d | _d | _d | _d | _d| _	d | _
d | _d S )Nr   r   )
build_basebuild_purelibbuild_platlib	build_lib
build_tempbuild_scriptsZcompiler	plat_namer   r   
executableparallel)selfr   r   r   initialize_options8   s    zbuild.initialize_optionsc             C   sb  | j d krt | _ ntjdkr&tdd| j ftjd d  }ttdrR|d7 }| jd krntj	
| jd| _| jd krtj	
| jd| | _| jd kr| jjr| j| _n| j| _| jd krtj	
| jd| | _| jd krtj	
| jd	tjd d  | _| jd kr tjr tj	tj| _t| jtr^yt| j| _W n tk
r\   td
Y nX d S )NntzW--plat-name only supported on Windows (try using './configure --help' on your platform)z	.%s-%d.%d   Zgettotalrefcountz-pydebuglibZtempzscripts-%d.%dzparallel should be an integer)r   r   osnamer   sysversion_infohasattrr   pathjoinr   r   r   distributionZext_modulesr   r   r   normpath
isinstancer   strint
ValueError)r   Zplat_specifierr   r   r   finalize_optionsH   s<    












zbuild.finalize_optionsc             C   s    x|   D ]}| | q
W d S )N)Zget_sub_commandsZrun_command)r   Zcmd_namer   r   r   run   s    z	build.runc             C   s
   | j  S )N)r(   has_pure_modules)r   r   r   r   r0      s    zbuild.has_pure_modulesc             C   s
   | j  S )N)r(   has_c_libraries)r   r   r   r   r1      s    zbuild.has_c_librariesc             C   s
   | j  S )N)r(   has_ext_modules)r   r   r   r   r2      s    zbuild.has_ext_modulesc             C   s
   | j  S )N)r(   has_scripts)r   r   r   r   r3      s    zbuild.has_scriptsZbuild_pyZ
build_clibZ	build_extr   )__name__
__module____qualname__Zdescriptionr   Zuser_optionsZboolean_optionsr   Zhelp_optionsr   r.   r/   r0   r1   r2   r3   Zsub_commandsr   r   r   r   r      s:   
8r   )__doc__r#   r!   Zdistutils.corer   Zdistutils.errorsr   Zdistutils.utilr   r   r   r   r   r   r   <module>   s   