
    PiS              	          d dl 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l	m
Z
 dedz  dedz  fdZd	ed
edefdZdedededz  fdZdededededz  fdZdededededz  fdZdededz  fdZe j        dededz  fd            ZdS )    N)supported_nvidia_headers)get_cuda_home_or_path)find_sub_dirs_all_sitepackages)
IS_WINDOWSpathreturnc                     | r<t           j                            t           j                            |                     S d S N)osr   normpathabspath)r   s    /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cuda/pathfinder/_headers/find_nvidia_headers.py	_abs_normr      s3     7w 5 56664    dirpathbasenamec                 |    t           j                            t           j                            | |                    S r
   )r   r   isfilejoin)r   r   s     r   _joined_isfiler      s&    7>>"',,w99:::r   sub_dir
h_basenamec                     t          t          |                     d                              D ]}t          ||          r|c S d S )N/)r   tuplesplitr   )r   r   hdr_dirs      r   _find_under_site_packagesr      sT     2%c8J8J2K2KLL  ':.. 	NNN	4r   libnameanchor_pointc                    |g}| dk    r|                     |            |                     d           t          j        j        | }| dk    rt          ret          j                            |dd          }t          j                            |d          }t          ||          r|S t          ||          r|S t          j                            |d          }t          ||          r|S t          ||          r|S d S )Nnvvmincludecccltargetsx64)appendr   r   r   r   r   )r   r   r    partsidir
cdir_ctk12
cdir_ctk13cdirs           r   _find_based_on_ctk_layoutr-   !   s    NE&W	LL7<D& 	"dIu==Jj&99Jj*55 "!!j*55 "!!w||D&))$
++ 	KdJ'' 4r   
ctk_layoutc                 *   t           j                            d          }|sd S t          rBt           j                            |d          }t           j                            |          sd S n|rVt          j        t           j                            |ddd                    }|sd S t          |          dk    rd S |d         }n t           j                            |d          }t           j        	                    |          }t          | ||          S )NCONDA_PREFIXLibraryr%   *r#      r   )r   environgetr   r   r   isdirgloblendirnamer-   )r   r   r.   conda_prefixr    targets_include_pathinclude_paths          r   _find_based_on_conda_layoutr=   7   s    :>>.11L t 5w||L)<<w}}\** 	4	  
	A#'9RW\\,	SVXa-b-b#c#c ' t'((A-- t/2LL7<<i@@Lw|44$Wj,GGGr   c                     t           j        |          }t           j        |          }|D ]}t          ||          x}r|c S t	          | |d          x}r|S t                      }|rt          | ||          x}r|S d S )NT)r   SUPPORTED_HEADERS_CTK&SUPPORTED_SITE_PACKAGE_HEADER_DIRS_CTKr   r=   r   r-   )r   r   candidate_dirsr,   r   	cuda_homeresults          r   _find_ctk_header_directoryrD   O   s    )?HJ-TU\]N  /jAAA7 	NNN	 .gz4HHHw %''I .w
INNN6 	M4r   c                 p   | t           j        v rt          t          |                     S t           j                            |           }|t          d|           t           j                            | g           }|D ]%}t          ||          x}rt          |          c S &t          | |d          x}rt          |          S t           j
                            | g           }|D ]K}t          t          j        |          d          D ]%}t          ||          rt          |          c c S &LdS )a  Locate the header directory for a supported NVIDIA library.

    Args:
        libname (str): The short name of the library whose headers are needed
            (e.g., ``"nvrtc"``, ``"cusolver"``, ``"nvshmem"``).

    Returns:
        str or None: Absolute path to the discovered header directory, or ``None``
        if the headers cannot be found.

    Raises:
        RuntimeError: If ``libname`` is not in the supported set.

    Search order:
        1. **NVIDIA Python wheels**

           - Scan installed distributions (``site-packages``) for header layouts
             shipped in NVIDIA wheels (e.g., ``cuda-toolkit[nvrtc]``).

        2. **Conda environments**

           - Check Conda-style installation prefixes, which use platform-specific
             include directory layouts.

        3. **CUDA Toolkit environment variables**

           - Use ``CUDA_HOME`` or ``CUDA_PATH`` (in that order).
    NzUNKNOWN libname=FT)reverse)r   r?   r   rD   SUPPORTED_HEADERS_NON_CTKr5   RuntimeError*SUPPORTED_SITE_PACKAGE_HEADER_DIRS_NON_CTKr   r=   SUPPORTED_INSTALL_DIRS_NON_CTKsortedr7   r   )r   r   rA   r,   r   s        r   find_nvidia_header_directoryrL   b   si   > *@@@3G<<===)CGGPPJ0g00111-X\\]dfhiiN & &/jAAA7 	&W%%%%%	& .gz5IIIw "!!!-LPPQXZ\]]N * *dioot<<< 	* 	*Ggz22 * )))))))*	* 4r   )	functoolsr7   r   cuda.pathfinder._headersr   cuda.pathfinder._utils.env_varsr   $cuda.pathfinder._utils.find_sub_dirsr   %cuda.pathfinder._utils.platform_awarer   strr   boolr   r   r-   r=   rD   cacherL    r   r   <module>rV      s        				 = = = = = = A A A A A A O O O O O O < < < < < <C$J 3:    ;C ;3 ;4 ; ; ; ;s  d
    s  3 SVY]S]    ,H H# H4 HTWZ^T^ H H H H0 d
    & 4# 4#* 4 4 4 4 4 4r   