
    <h                        S SK Jr   S SKrS SKrSSKJr  SSKJr  SSKJ	r	  SSKJ
r
  S SKJr  \R                  (       a  SS	KJr  SS
KJr  SSKJr  O\rSS jr " S S\5      rg)    )annotationsN   )options)mesonlib)	OptionKey)LibType)CompileCheckMode)Environment)Compiler)
Dependencyc                    / nU  H=  nUR                  S5      (       a  UR                  S5      (       d	  USU/-  nM8  X/-  nM?     U$ )N.js-z--js-library)endswith
startswith)args
final_argsis      ڇ/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/compilers/mixins/emscripten.pywrap_js_includesr      sO     J::eQ\\#%6%6>1--J#J	 
     c                     ^  \ rS rSrSS jrSS jrSU 4S jjr\SU 4S jj5       rSU 4S jjr	\
R                  SS4       SU 4S	 jjjrS
rU =r$ )EmscriptenMixin&   c                    U[         R                  :w  d   S5       eU[         R                  :X  a  SnOSn[        R                  R                  USU-   5      $ )NzAIn pre-processor mode, the output is sent to stdout and discardedjsozoutput.)r	   
PREPROCESSLINKospathjoin)selfdirnamemodesuffixs       r   _get_compile_output#EmscriptenMixin._get_compile_output(   sR    '222w4ww2 #(((FFww||GY%788r   c                    S/nUR                   R                  R                  [        U R                   S3U R
                  S95      n[        U[        5      (       d   eU(       a  UR                  SU 35        U$ )Nz-pthread_thread_countmachinez-sPTHREAD_POOL_SIZE=)	coredataoptstore	get_valuer   languagefor_machine
isinstanceintappend)r#   envr   counts       r   thread_link_flags!EmscriptenMixin.thread_link_flags3   sk    |%%//	T]]O=:Ycgcscs0tu%%%%%KK.ug67r   c                   > [         TU ]  5       n[        U R                   S3U R                  S9n[
        R                  " U R                  U5      SSSS9X'   U$ )Nr*   r+   z=Number of threads to use in web assembly, set to 0 to disable   r   )	min_value)superget_optionsr   r0   r1   r   UserIntegerOptionmake_option_name)r#   optskey	__class__s      r   r=   EmscriptenMixin.get_options;   s]    w"$4==/7AQAQR--!!#&K		 r   c                4   > [        [        TU ]	  U5      5      $ N)r   r<   native_args_to_unix)clsr   rB   s     r   rF   #EmscriptenMixin.native_args_to_unixG   s     ;D ABBr   c                4   > [        [        TU ]	  U5      5      $ rE   )r   r<   get_dependency_link_args)r#   deprB   s     r   rJ   (EmscriptenMixin.get_dependency_link_argsK   s     @ EFFr   TFc                  > UR                  S5      (       d  [        T	U ]	  XX4U5      $ [        R                  R                  U5      (       a'  [        R                  R                  U5      (       a  U/$ [        U5      S:X  a  [        R                  " S5      eU HK  n[        R                  R                  Xq5      n[        R                  R                  U5      (       d  MH  U/s  $    g )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#   libnamer5   
extra_dirslibtypelib_prefix_warningignore_system_dirsdabs_pathrB   s
            r   rN   EmscriptenMixin.find_libraryN   s    &&7'jK]^^77==!!ww~~g&&y z?a//  1P  Q  QAww||A/Hww~~h'' z!  r    )r$   strr%   r	   returnr\   )r5   'Environment'r]   T.List[str])r]   z"options.MutableKeyedOptionDictTyper   r_   r]   r_   )rK   z'Dependency'r]   r_   )rS   r\   r5   r^   rT   r_   rU   r   rV   boolrW   ra   r]   zT.Optional[T.List[str]])__name__
__module____qualname____firstlineno__r'   r7   r=   classmethodrF   rJ   r   PREFER_SHAREDrN   __static_attributes____classcell__)rB   s   @r   r   r   &   sq    	9
 C CG )0(=(=Z^  |A%SWtx F] 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   r   <module>ru      sJ    # N        ;??*/* H5h 5r   