
    Xh                        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Zej        dd            ZddZ	 	 dddZdS )    )annotationsN)
ModuleType   )get_cache_manager   )knobsnamestrsrcsrcdirlibrary_dirs	list[str]include_dirs	librariesreturnc                >   t           j        j        x}r || |||||          S t          j        d          }t
          j                            |d                    | |                    }t
          j	        
                    d          }	|	?t          j        d          }
t          j        d          }||n|
}	|	t          d          t          t          d          rt          j                    }nt          j                    }|d	k    rd
}t          j        |          d         }t           j        j        }|||g|z   }|	|ddddd|g}|d |D             z  }|d |D             z  }|d |D             z  }t'          j        |t&          j                   |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                    g | ]}d | S )z-l ).0libs     f/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/triton/runtime/build.py
<listcomp>z_build.<locals>.<listcomp>0   s    ///czCzz///    c                    g | ]}d | S )z-Lr   r   dirs     r!   r"   z_build.<locals>.<listcomp>1   s    222czCzz222r#   c                    g | ]	}|d| 
S )Nz-Ir   r%   s     r!   r"   z_build.<locals>.<listcomp>2   s    EEEcS_zCzz___r#   )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_cmds                   r!   _buildrB      s   {t NtD#v|\9MMM%l33F	f.5545OO	P	PB			B	zW%%l5!!OSS:wy y y y.// 1-//.00 (777	BN+26>"P<O"PPL#ui,bIF
//Y////F
22\2222F
EE\EEEEF&);<<<<Ir#   c                 x    ddl m} m}m} d                     |              |            g |                      S )Nr   machinesystemarchitecture,)platformrE   rF   rG   r/   rD   s      r!   platform_keyrJ   7   sN    666666666688WWYY:<<>>:;;;r#   r.   r   c                    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loaderr5   module_from_specexec_module)r	   r.   specmods       r!   _load_module_from_pathrT   =   s{    >11$==D Pt{ PNDNNNNOOO
.
)
)$
/
/CKC   Jr#   list[str] | Nonec           	        t          j        | t                      z                       d                                                    }t          |          }t          j        d          }|                    | |           }|Z	 t          ||          S # t          t          f$ r5 t          j        t                    }	|	                    d| d           Y nw xY wt!          j                    5 }
t$          j                            |
|dz             }t+          |d          5 }|                    |            d d d            n# 1 swxY w Y   t/          |||
|pg |pg |pg           }t+          |d          5 }|                    |                                | | d	          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          ||          S )
Nzutf-8r   z$Triton cache error: compiled module z.so could not be loadedz.cwrbT)binary)hashlibsha256rJ   encode	hexdigestr   r+   r,   get_filerT   r5   ImportErrorlogging	getLogger__name__warningtempfileTemporaryDirectoryr-   r.   r/   openwriterB   putread)r   r	   r   r   r   keycacher   
cache_pathlogtmpdirsrc_pathfr=   s                 r!   compile_module_from_srcrq   F   s   
.#.66w??
@
@
J
J
L
LCc""E%l33F4 1 1 122J	^)$
;;;k* 	^ 	^ 	^#H--CKK\t\\\]]]]]	^ 
	$	&	& M&7<<t44(C   	AGGCLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	D(FL,>B@RPRT]Tcacdd"d^^ 	Mq16688->f->->tLLJ	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	MM M M M M M M M M M M M M M M "$
333sm   B ACC44G(E
>G
E	GE	-G?/F:.G:F>	>GF>	GGG)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   rU   r   rU   r   rU   r   r   )
__future__r   	functoolsrZ   importlib.utilrL   r`   r-   r3   r:   r+   rd   typesr   rk   r    r   rB   	lru_cacherJ   rT   rq   r   r#   r!   <module>rx      s$   " " " " " "           				                 $ $ $ $ $ $      ! ! ! !H < < < <
    SWae4 4 4 4 4 4 4r#   