o
    ;i@                     @  s|   d dl mZ d dlZd dlZddlmZ ddlmZmZ ddl	m
Z
mZmZmZ dddZdddZd ddZd!ddZdS )"    )annotationsN   )checkout_nccl)CMake	USE_NINJA)check_env_flagcheck_negative_env_flagIS_64BIT
IS_WINDOWSvc_archstrreturndict[str, str]c                 C  sD   zddl m} |j| W S  ty!   ddlm} ||  Y S w )Nr   )	distutils)_msvccompiler)
setuptoolsr   r   _get_vc_envAttributeErrorZsetuptools._distutils)r   r   r    r   5/home/app/PyTorch/pytorch/tools/build_pytorch_libs.pyr      s   r   envc                 C  s   t rdnd}t dkr,d}d}tdd t dD }||k r,d	}td
 td t|}dd | D }|  D ]\}}|	 }||vrM|||< q=|S )Nx64x86ZARM64Z	x64_arm64)
   r   iU  c                 s  s    | ]}t |V  qd S )N)int).0version_partr   r   r   	<genexpr>&   s    
z*_overlay_windows_vcvars.<locals>.<genexpr>.	x86_arm64zmWarning: 32-bit toolchain will be used, but 64-bit linker is recommended to avoid out-of-memory linker error!zLWarning: Please consider upgrading to Win11, where x64 emulation is enabled!c                 S  s   i | ]	\}}|  |qS r   )upper)r   kvr   r   r   
<dictcomp>9   s    z+_overlay_windows_vcvars.<locals>.<dictcomp>)
r	   platformmachinetupleversionsplitprintr   itemsr    )r   r   Zwin11_1st_versionZcurrent_win_versionZvc_envr!   r"   ukr   r   r   _overlay_windows_vcvars   s.   r,   c                  C  s6   t j } trtrt| } | dd | dd | S )NCCZclCXX)osenvironcopyr
   r   r,   
setdefault)my_envr   r   r   _create_build_envA   s   
r4   r'   
str | Nonecmake_python_librarybuild_pythonboolrerun_cmake
cmake_onlycmaker   Nonec                 C  sX   t  }tdstdstdst  td }|| ||||| |r%d S || d S )NUSE_CUDAUSE_NCCLUSE_SYSTEM_NCCLZ
BUILD_TEST)r4   r   r   r   Zgeneratebuild)r'   r6   r7   r9   r:   r;   r3   Z
build_testr   r   r   build_pytorchP   s   
rA   )r   r   r   r   )r   r   r   r   )r   r   )r'   r5   r6   r5   r7   r8   r9   r8   r:   r8   r;   r   r   r<   )
__future__r   r/   r$   Zoptional_submodulesr   Zsetup_helpers.cmaker   r   Zsetup_helpers.envr   r   r	   r
   r   r,   r4   rA   r   r   r   r   <module>   s    


$