o
    h                     @  s   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZ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dZejdddZdddZ		dd ddZdS )!    )annotationsN)
ModuleType   )get_cache_manager   )knobsnamestrsrcsrcdirlibrary_dirs	list[str]include_dirs	librariesreturnc                 C  s6  t jj }r|| |||||S td}tj|dj| |d}tj	
d}	|	d u rDtd}
td}|d ur:|n|
}	|	d u rDtdttdrNt }nt }|d	krXd
}tj|dd }t jj}|||g| }|	|ddddd|g}|dd |D 7 }|dd |D 7 }|dd |D 7 }tj|tjd |S )N
EXT_SUFFIXz{name}{suffix})r   suffixCCclanggcczeFailed to find C compiler. Please specify via CC environment variable or set triton.knobs.build.impl.get_default_schemeposix_localposix_prefix)schemeincludez-O3z-sharedz-fPICz
-Wno-psabiz-oc                 S     g | ]}d | qS )z-l ).0libr   r   O/var/www/html/scripts/venv/lib/python3.10/site-packages/triton/runtime/build.py
<listcomp>0       z_build.<locals>.<listcomp>c                 S  r   )z-Lr   r   dirr   r   r   r    1   r!   c                 S  s   g | ]}|d urd| qS )Nz-Ir   r"   r   r   r   r    2   s    )stdout)r   buildimpl	sysconfigget_config_varospathjoinformatenvirongetshutilwhichRuntimeErrorhasattrr   _get_default_scheme	get_pathsbackend_dirs
subprocess
check_callDEVNULL)r   r
   r   r   r   r   r&   r   soccr   r   r   py_include_dircustom_backend_dirscc_cmdr   r   r   _build   s6   




r>   c                  C  s,   ddl m} m}m} d|  | g| S )Nr   machinesystemarchitecture,)platformr@   rA   rB   r+   r?   r   r   r   platform_key7   s   rE   r*   r   c                 C  sH   t j| |}|r|jstd|  d| t j|}|j| |S )NzFailed to load newly compiled z from )	importlibutilspec_from_file_locationloaderr1   module_from_specexec_module)r   r*   specmodr   r   r   _load_module_from_path=   s   
rN   list[str] | Nonec              	   C  sb  t | t  d }t|}td}|| | }|d urCzt	||W S  t
tfyB   tt}	|	d| d Y nw t ]}
tj|
|d }t|d}||  W d    n1 sfw   Y  t|||
|prg |pug |pxg }t|d}|j| | | dd	}W d    n1 sw   Y  W d    n1 sw   Y  t	||S )
Nzutf-8r   z$Triton cache error: compiled module z.so could not be loadedz.cwrbT)binary)hashlibsha256rE   encode	hexdigestr   r'   r(   get_filerN   r1   ImportErrorlogging	getLogger__name__warningtempfileTemporaryDirectoryr)   r*   r+   openwriter>   putread)r
   r   r   r   r   keycacher   
cache_pathlogtmpdirsrc_pathfr9   r   r   r   compile_module_from_srcF   s.   



rj   )r   r	   r
   r	   r   r	   r   r   r   r   r   r   r   r	   )r   r	   )r   r	   r*   r	   r   r   )NNN)r
   r	   r   r	   r   rO   r   rO   r   rO   r   r   )
__future__r   	functoolsrS   importlib.utilrF   rY   r)   r/   r6   r'   r]   typesr   rd   r    r   r>   	lru_cacherE   rN   rj   r   r   r   r   <module>   s(    
$
	