
    -Phk                        d dl m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 dlmZ ej        rdd	lmZ dd
lmZ ddlmZ neZddZ G d de          ZdS )    )annotationsN   )options)mesonlib)	OptionKey)LibType)CompileCheckMode)Environment)Compiler)
DependencyargsT.List[str]returnc                    g }| D ]:}|                     d          r|                    d          s|d|gz  }4||gz  };|S )N.js-z--js-library)endswith
startswith)r   
final_argsis      f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/compilers/mixins/emscripten.pywrap_js_includesr      sb     J  ::e 	Q\\#%6%6 	>1--JJ1#JJ    c                  t     e Zd ZddZdd
Zd fdZed fd            Zd fdZe	j
        dfd  fdZ xZS )!EmscriptenMixindirnamestrmoder	   r   c                    |t           j        k    s
J d            |t           j        k    rd}nd}t          j                            |d|z             S )NzAIn pre-processor mode, the output is sent to stdout and discardedjsozoutput.)r	   
PREPROCESSLINKospathjoin)selfr   r   suffixs       r   _get_compile_outputz#EmscriptenMixin._get_compile_output(   sX    '22224w222 #(((FFFw||GY%7888r   env'Environment'r   c                    dg}|j         j                            t          | j         d| j                            }t          |t                    sJ |r|                    d|            |S )Nz-pthread_thread_countmachinez-sPTHREAD_POOL_SIZE=)	coredataoptstore	get_valuer   languagefor_machine
isinstanceintappend)r'   r*   r   counts       r   thread_link_flagsz!EmscriptenMixin.thread_link_flags3   s{    |%//	T]:Y:Y:Ycgcs0t0t0tuu%%%%%% 	8KK6u66777r   "options.MutableKeyedOptionDictTypec                    t                                                      }t          | j         d| j                  }t          j        |                     |          ddd          ||<   |S )Nr-   r.   z=Number of threads to use in web assembly, set to 0 to disable   r   )	min_value)superget_optionsr   r3   r4   r   UserIntegerOptionmake_option_name)r'   optskey	__class__s      r   r?   zEmscriptenMixin.get_options;   st    ww""$$4=777AQRRR-!!#&&K	  S	 r   r   c                `    t          t                                          |                    S N)r   r>   native_args_to_unix)clsr   rD   s     r   rG   z#EmscriptenMixin.native_args_to_unixG   s#     ; ;D A ABBBr   dep'Dependency'c                `    t          t                                          |                    S rF   )r   r>   get_dependency_link_args)r'   rI   rD   s     r   rL   z(EmscriptenMixin.get_dependency_link_argsK   s#     @ @ E EFFFr   Tlibname
extra_dirslibtyper   lib_prefix_warningboolT.Optional[T.List[str]]c                   |                     d          s%t                                          |||||          S t          j                            |          r"t          j                            |          r|gS t          |          dk    rt          j	        d          |D ]F}t          j        
                    ||          }t          j                            |          r|gc S Gd S )Nr   r   z]Looking up Emscripten JS libraries requires either an absolute path or specifying extra_dirs.)r   r>   find_libraryr$   r%   isabsexistslenr   EnvironmentExceptionr&   )	r'   rM   r*   rN   rO   rP   dabs_pathrD   s	           r   rT   zEmscriptenMixin.find_libraryN   s    && 	_77''j'K]^^^7==!! 	!w~~g&& !y z??a/  1P  Q  Q  Q 	" 	"Aw||Aw//Hw~~h'' " z!!!"tr   )r   r   r   r	   r   r   )r*   r+   r   r   )r   r:   r   r   r   r   )rI   rJ   r   r   )rM   r   r*   r+   rN   r   rO   r   rP   rQ   r   rR   )__name__
__module____qualname__r)   r9   r?   classmethodrG   rL   r   PREFER_SHAREDrT   __classcell__)rD   s   @r   r   r   &   s        	9 	9 	9 	9   
 
 
 
 
 
 C C C C C [CG G G G G G )0(=Z^          r   r   r[   )
__future__r   os.pathr$   typingT r   r   r   r   mesonbuild.compilers.compilersr	   TYPE_CHECKINGenvironmentr
   compilers.compilersr   dependenciesr   objectr   r    r   r   <module>rn      s   # " " " " " N                                    ; ; ; ; ; ;? 	******//////******* H   5 5 5 5 5h 5 5 5 5 5r   