
    eCiz                        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mZm	Z	 d dl
mZ d dlmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZ d dlmZmZ g dZd	gZh d
Z dgZ! ej"        d          Z#e	 G d de                      Z$ G d d          Z% e%            Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1 ej2                    d             Z3dS )    N)Enumautounique)PIPE)cachecolored_loggerconfigdiagnosticsfeature_matrixportssharedutils)MEM_SIZE_SETTINGSsettingsuser_settings)ToolchainProfiler)exit_with_error	read_file)	z-mssez-msse2z-msse3z-mssse3z-msse4.1z-msse4.2z-msse4z-mavxz-mavx2z
-mfpu=neon>!   -A-D-U-MF-MJ-MQ-MT-mllvm-Xclang-iquote-Xlinker-imacros-include-iprefix-isystem	-isysroot
-idirafter
-imultilib
-undefined-include-pch-iwithprefix-install_name-Xpreprocessor-current_version-iwithprefixbefore-compatibility_version-I-L-o-u-x-z-targetfetchSettingsargsc                       e Zd Z e            Z e            Z e            Z e            Z e            Z e            Z	dS )OFormatN)
__name__
__module____qualname__r   OBJECTWASMJSMJSHTMLBARE     1/b/s/w/ir/x/w/install/emscripten/tools/cmdline.pyr9   r9   1   sR         466&	$tvv"#	$	$$$rD   r9   c                      e Zd ZU dZdZdZdZdZg Ze	e
         ed<   g Ze	e
         ed<   dZdZdZg Ze	e
         ed<   dZg Ze	e
         ed<   g Ze	e
         ed<   dZdZg Ze	e
         ed<   d	Zd	Zg Ze	e
         ed
<   dZdZdZdZdZdZdZ dZ!d	Z"e#j$        Z%d	Z&g Z'e	e
         ed<   dZ(g Z)e	e
         ed<   g Z*e	e
         ed<   dZ+d	Z,d	Z- e.            Z/e.e
         ed<   dZ0g Z1e	e
         ed<   dZ2dZ3d	Z4dZ5dZ6dZ7d	Z8dZ9dZ:g Z;e	e
         ed<   d	S )EmccOptionsFdylibsembed_files exclude_filesextern_post_jsextern_pre_jsinput_filesNlib_dirspost_jspre_jspreload_filessanitizes_argsvalid_abspaths)<r:   r;   r<   cpu_profilerdash_Edash_Mdash_Sdash_crH   liststr__annotations__rI   emit_symbol_mapemit_tsdemrunrK   
executablerL   rM   	fast_mathignore_dynamic_linkingrN   input_languagejs_transformrO   memory_profilerno_entry	no_minifynodefaultlibsnolibcnostartfilesnostdlib
nostdlibxxoformatoslinesep
output_eoloutput_filerP   	post_linkrQ   rR   relocatable	reproducerequested_debugsetrS   sanitize_minimal_runtimerT   
save_tempsr   
shell_pathsource_map_basesyntax_onlytargetuse_closure_compileruse_preload_cacheuse_preload_pluginsrU   rC   rD   rE   rG   rG   =   s        ,&&&&&$s)+tCy/(
%-c* .$s)   -c) +tCy.,(DI/()-&,(*' z*+'49)&$s)-c+)/suu(CH"&$s)*&*/+& .$s)     rD   rG   c                 L    	 t          |           dk    S # t          $ r Y dS w xY w)Nr   F)int
ValueError)ss    rE   is_unsigned_intr   z   s9    q66Q;	   55s    
##c                      d} t           j                            t          j        d                    rRt          j        g dt          t          t          j                              j                                        }d|z  } nit           j                            t          j        d                    r8t          t          j        d                                                    }d|z  } dt          j
         |  S )NrJ   z.git)gitz	rev-parseHEAD)stdoutstderrcwdz (%s)zemscripten-revision.txtzGemcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) )ro   pathexistsr   path_from_rootrun_processr   r   stripr   EMSCRIPTEN_VERSION)revision_suffixgit_revrevs      rE   version_stringr      s     /W^^E(0011 $"""$E$8$:$:< < <<B5577  'OO	w~~e*+DEEFF $
E()BCC
D
D
J
J
L
LCmO	~SXSk	~m|	~	~~rD   c                     t          j        |                               t          j        t          j                                        rdS d }t          j        D ]} |||           r dS dS )NTc                     t           j                            |           } t           j                            |          }t           j                            | |g          | k    S N)ro   r   realpathcommonprefix)rootchilds     rE   in_directoryz&is_valid_abspath.<locals>.in_directory   sM    7D!!DGU##E 7u..$66rD   F)r   normalize_path
startswithr   optionsrU   )	path_namer   valid_abspaths      rE   is_valid_abspathr      s    
)$$//0DUEYE[E[0\0\]] 47 7 7 -  m|M9-- TT	rD   c                    | |         dk    r$t          |           |dz   k    rdS | |dz            }n| |                             d          }|                    d          d         }|                                o|                                S )N-s   F=r   )lenremoveprefixsplitisidentifierisupper)r7   iargs      rE   is_dash_s_for_emccr      s     
!W__
4yyAEU
q1u+CC
q'

t
$
$C		#q#						--rD   c                  r   t           j        D ]} |                     d          sJ |                     d          } d| v r|                     dd          \  }}n| }d}t          j        d|          r'	 t          |          dk     rd}n# t          $ r Y nw xY wt          ||          \  }}|t          |<   d S )Nr   r   r   1zMIN_.*_VERSIONr   
0x7FFFFFFF)r   rT   r   r   r   rematchr   	Exceptionnormalize_boolean_settingr   )r   keyvalues      rE   parse_s_argsr      s    ^  c>>$


4
 
 C
czz99S!$$jc55ce
 
x!3'' u::>>%    +366JCM#+ s   3B		
BBc           	      &    d}d}h d}h d}t          t                               D ]|rd}          dk    rd <             dt          v rd} fd} fd	}fd
fd}|v rt          j        d d           e|D ]0} ||          r#              t          j        d d           01                    d          rTt                     rD}	dk    rd dz            z   }	d dz   <   d <   t          j        	                    |	                               d          r
                    d          pd}
|
dk    rd}
dt          _        n{|
dk    rd}
dt          _        nf|
dk    r3d}
dt          _        t          t          j        d          t          _        n-|
dk    rdt          _        d}
dt          _        ndt          _        	 t!          |
          }n&# t"          $ r t%          d|
 d d           Y nw xY w|dk    s|dk     rt          j        d d           d <   d}|t          _        .                    d           r9d!v r'                    d!          d         t          _        nd"t          _        |d#k    rdt          _        d$k    rdt          _         |d%          r3             }t          xj        t3          j        |          z  c_         |d&          r#t!                                 t          _         |d'          r             t          _        1 |d(          r             t          _        R |d)          r)t          j        	                     |                        |d*          r)t          j        	                     |                        |d+          r)t          j        	                     |                        |d,          r)t          j         	                     |                       " |d-          r             tB          _"        C |d.          rdt          _#        \ |d/          rmd0 tH          j%        D             }             }||vrt%          d1|d2|d3           tM          tH          |'                                          t          _(         |d4          r-             d5k    rt%          d6           dt          _)                            d7          r%t          _*        
                    d7          pd8}tW          |          rt!          |          }|t          _        |dk    r%dt          _,        dt          _-        dt          _.        n|dk    rdt          _.        |dk     rt          j-        st          j/        sd9 <   |dk    rdt          _,        |d:k    r(d; <   t          j        dd<           dt          _-        |d:k    rt%          d=           +|                    d>          rt%          d?           Q|                    d@          rd7 <   |d@k    rc|                    dA          r|0                    d!          dk    rt%          dB           |                    d!          d         t          _/        ndt          _/        dt          _,        dt          _        |dCv r|dDk    rdndt          _-        d7 <   |dk    r!dt          _,        dt          _.        dt          _        G |dE          s |dF          r2t          t          j        d          t          _        dt          _.         |dG          s |dH          rdt          _.                  dIk    s          dJk    r+          dJk    rdt          _1        d <   dt          _2         |dK          rdt          _3        dt          _4         |dL          r             t          _5        < |dM          r)t          j6        	                                            p |dN          r)t          j7        	                                             |dO          r)t          j8        	                                             |dP          rdt          _9         |dQ          rdt          _:        	
 |dR          rdt          _;        	#dSk    rdtx          _=        	7dTk    rdtx          _>        	K |dU          r |            t          _?        	l |dV          r             t          _@        	 |dW          r             t          _A        	 |dX          rdt          _B        	 |dY          r_t          jD        E                                           tB          _F        t          jH                     tB          jF        t          jI        dZ<   
1 |d[          rOt          K                    d\t          jL                   t          jM                     ty          jN                     d}
 |d]          rWt          K                    d^           t          jP                     t          jM                     ty          jN                     d}
 |d_          r@t          t                      t          jT        `           ty          jU        da           d}8 |db          rt          jV                     d}Z |dc          r)t          jW        	                                                                dd          rdd         }|                    de          st          jD        X                    |          r(t          |          st          j        dfdg dh                               di          rt          jZ        	                    |           ? |dj          rdt          _[        X |dk          rdt          _\        q |dl          rdt          _]        dmv rt          j_        da           dnv rt          j`                     dok    r&dt          _a        dt          _b        dt          _c        dpk    r(t          je        t          jf        jg        dpdq           drk    r%t          jh        t          jf        jg                   Cdsk    r(t          je        t          jf        ji        dsdq           qdtk    r%t          jh        t          jf        ji                   duk    r(t          je        t          jf        jj        dvdq           ʉdwk    r%t          jh        t          jf        jj                   dxk    rdt          _b        dt          _a        dyk    rdt          _c        )dzk    rdt          _a        =d{k    rdt          _        Q                    d|          rt%          d}           w |d~          s |d          rk             }|k                                dk    rdt          _l        |k                                dk    rdt          _l        t%          d| d           dk    rdt          _m        dt          _n        dk    rdt          _m        dt          _n        8dk    rt%          d           Odk    rdt          _o        cdk    rdt          _o        w                    d          rr
                    d          }d!|v r|                    d!          \  }}nd}|t          jp                    v rt%           d| d!| d           |t          |<   d <    |d          rdt          _<         |d          rdt          _q        0                    d          r!
                    d          t          _r        f |d          s |d          rA             t          _s        t          js        dvrt%          dt          js         d            |d          r$t          jt        t                                  dv rdt          _u        dk    rdt          _v        dk    rdt          _w        &dv rdt          _x        8                    d          rt          _y        [dk    rdt          _z        ot          v s	t          v rd <   dk    rdt          _}        dk    rdt          _~        dk    rdt          _        ĉdk    rdt          _        ؉dk    rdt          _        dk    rdt          _                             d          rNt          j                                                d!d          d                             d                     c                    d          rNt          j                                                d!d          d                             d                     Ɖr:dk    s                    d          st          j        	                               |rt          j        d           d  D             S )aM  Future modifications should consider refactoring to reduce complexity.

  * The McCabe cyclomatiic complexity is currently 117 vs 10 recommended.
  * There are currently 115 branches vs 12 recommended.
  * There are currently 302 statements vs 50 recommended.

  To revalidate these numbers, run `ruff check --select=C901,PLR091`.
  F>   	--js-opts
--llvm-lto--llvm-opts--memory-init-file>   --jcache--no-heap-copy--separate-asm--default-obj-ext--embind-emit-tsd--proxy-to-worker--remove-duplicatesz--bindz-lembindNTc                 "    | k    rd<   dS dS )NrJ   TFrC   )r   r   r   newargss    rE   
check_flagzparse_args.<locals>.check_flag   s    	
tUrD   c                                         |           r$dv r                     dd          \  d<   dS | k    rCt                    dz   k    rt          d d           dz            d<   ddz   <   dS dS )Nr   r   rJ   Toption '' requires an argumentF)r   r   r   r   )namer   	arg_valuer   r   s    rE   	check_argzparse_args.<locals>.check_arg   s    			 #**3**Y
t	w<<1q5  
@S@@@
A
A
AAEN	
AtUrD   c                      J } d | S r   rC   )rtnr   s    rE   consume_argzparse_args.<locals>.consume_arg  s    """cijrD   c                                   } t           j                            |           st          dd| d           | S )N'z': file not found: ')ro   r   isfiler   )r   r   r   s    rE   consume_arg_filez$parse_args.<locals>.consume_arg_file	  sG    []]dW^^D!! DTTTBCCCkrD   
deprecatedz is no longer supportedr   r   rJ   z-O2r      zgr   fast   zinvalid integral value '' in 'r   zoptimization level 'z'' is not supported; using '-O3' insteadz-O3z-fltor   fullz-fno-ltoz--save-tempsz--closure-argsz	--closurez--js-transformz--reproducez--pre-jsz	--post-jsz--extern-pre-jsz--extern-post-jsz--compiler-wrapperz--post-linkz	--oformatc                 6    g | ]}|                                 S rC   )lower).0fs     rE   
<listcomp>zparse_args.<locals>.<listcomp>\  s     888q888rD   zinvalid output format: `z` (must be one of )z--minify0zB0 is the only supported option for --minify; 1 has been deprecatedz-g3z-g0   z-g3z$please replace -g4 with -gsource-mapzunknown argument: '%s'force_dwarfzGgforce_dwarf was a temporary option and is no longer necessary (use -g)zseparate-dwarfzseparate-dwarf=z*invalid -gseparate-dwarf=FILENAME notation)
source-mapzsource-map=inliner   z
-profilingz--profilingz-profiling-funcsz--profiling-funcsz	--tracingz--memoryprofilerz--emit-symbol-mapz--emit-minification-mapz--embed-filez--preload-filez--exclude-filez--use-preload-cachez--use-preload-pluginsz--ignore-dynamic-linkingz-vz-###z--shell-filez--source-map-basez
--emit-tsdz
--no-entryz--cacheEM_CACHEz--clear-cachez2clearing cache as requested by --clear-cache: `%s`z--clear-portsz6clearing ports and cache as requested by --clear-portsz--check)file)forcez--show-portsz--valid-abspath)r/   r0   /zabsolute-pathsz-I or -L of an absolute path "z" encountered. If this is to a local system header/library, it may cause problems (local system files make sense for compiling natively on your system, but not necessarily to JavaScript).r0   z--emrunz--cpuprofilerz--threadprofiler)z-fcolor-diagnosticsz-fdiagnostics-colorz-fdiagnostics-color=always)z-fno-color-diagnosticsz-fno-diagnostics-colorz-fdiagnostics-color=neverz-fno-exceptionsz-mbulk-memory)overridez-mno-bulk-memoryz
-msign-extz-mno-sign-extz-mnontrappting-fptointz-mnontrapping-fptointz-mno-nontrapping-fptointz-fexceptionsz-fwasm-exceptionsz-fignore-exceptionsz-ffast-mathz-fsanitize=cfiz4emscripten does not currently support -fsanitize=cfiz--output_eolz--output-eolwindowsz
linux
z!invalid value for --output-eol: ``z-pthreadz-no-pthreadz	-pthreadszFunrecognized command-line option `-pthreads`; did you mean `-pthread`?z	-fno-rttiz-frttiz-jsDr   zG: cannot change built-in settings values with a -jsD directive. Pass -sz	 instead!z-sharedz-rr1   r5   z--target)wasm32wasm64zwasm64-unknown-emscriptenzwasm32-unknown-emscriptenzunsupported target: zM (emcc only supports wasm64-unknown-emscripten and wasm32-unknown-emscripten)z
--use-port)z-cz--precompilez-Sz-E)z-Mz-MMr3   z-fsyntax-onlyz	-nostdlibz-nostdlibxxz-nodefaultlibsz-nolibcz-nostartfilesz-fsanitize-minimal-runtimez-fsanitize=,z-fno-sanitize=-c                     g | ]}||S rC   rC   )r   as     rE   r   zparse_args.<locals>.<listcomp>u  s    	"	"	"	"!	"	"	"rD   )ranger   CLANG_FLAGS_WITH_ARGSr
   warningr   r   r   rT   appendr   r   SHRINK_LEVELmaxDEBUG_LEVELrb   r   r   r   warn	OPT_LEVELr   LTOry   CLOSURE_ARGSshlexr~   re   ru   rQ   rP   rM   rL   r	   COMPILER_WRAPPERrs   r9   __members__getattrupperrn   rh   rv   r   GENERATE_DWARFGENERATE_SOURCE_MAPEMIT_NAME_SECTIONSEPARATE_DWARFcountrf   EMSCRIPTEN_TRACINGr^   EMIT_SYMBOL_MAPMINIFICATION_MAPrI   rR   rK   r   r   rc   r   PRINT_SUBPROCSSKIP_SUBPROCSrz   r{   r_   rg   ro   r   abspathCACHEr   setupenvironloggerinfocachedireraseperform_sanity_checksr   clearprintr   sysr   check_sanity
show_portsrU   isabsr   rO   r`   rV   PTHREADS_PROFILINGr   enabledisableDISABLE_EXCEPTION_CATCHINGDISABLE_EXCEPTION_THROWINGWASM_EXCEPTIONSr   enable_featureFeatureBULK_MEMORYdisable_featureSIGN_EXTNON_TRAPPING_FPTOINTr   rq   PTHREADSUSE_PTHREADSUSE_RTTIkeysrt   rr   r}   handle_use_port_argrZ   rY   rW   rX   rd   r|   SIMD_INTEL_FEATURE_TOWERSIMD_NEON_FLAGSrl   rm   ri   rj   rk   rx   rS   updatedifference_updaterN   exit)r   should_exitskipLEGACY_ARGSLEGACY_FLAGSr   r   r   ls_arg	opt_levellevelr7   formatsfmtdebug_levelr   styler   r   r   r   r   r   s   `                   @@@@rE   
parse_argsrD     s    +	$PPP+P P P, W W& W&a d qzXgaj
!*CI
### d                       l,3(G(G(GHHH  	1 LS*I*I*IJJJ
 ~~d W& 27A > > W&e	wq1u~%AgajnE""""			 P&""4((/Ci	c			 !	 !	 !"8#7;; 	 ! !LI L L LJ9JJCJJJKKKKKL	eaii\\\\]]]
 h		 	  s&	yy~~a(	
		hll			g	#	$	$ j&[]]du{4000	;		 g&%(%7%7g""	#	$	$ e&([]]g	=	!	! c&%+--g	:		 a&n,,..////	;		 _&o--//0000	$	%	% ]&""#3#3#5#56666	%	&	& [&##$4$4$6$67777	'	(	( Y& +f	M	"	" W&g	;		 U&88G$7888gKMMc	G		SSSRYRYRYZ[[[55goo	:		 O&KMMc	\]]]g			 J& #g$$T**1ck		%	% 7#+&&*!$%(
!)*(
&'((
$
$1__'((
$ ??H$@?HD[?'!**A&'H##a GAJ.TUUU+,H((Q4c:::!!-00 	#
c
d
d
d
d##$455 	#'!* ,,,))*;<< L@Q@QRU@V@VZ[@[@[JKKK&1&7&7&<&<Q&?H##&*H#$%(
!!"(

???.9\.I.Iq(
&'!**C

 %&(
!'((
$!"(

	L	!	! O&ZZ%>%> O& !5q99h#$h  	&	'	' L&::6I+J+J L&#$h  	{	"	"gaj4F&F&F	)	)	)"&gaj$%h!!	'	(	( E& $g!"h	,	-	- B&"-+--h	>	"	" @&  ////	#	$	$ ~&"";;==1111	#	$	$ |&"";;==1111	)	*	* z&"&g	+	,	, x&$(g!!	.	/	/ v&'+g$$	"f	!f	>	"	" p&++--g	&	'	' n& +g	<	 	  l&$g	L	!	! j&g	9		 h&W__[[]]33flkmmm  &|bj	O	$	$ b&kkFWWWkmmm"$$$kk	O	$	$ ]&kkJKKKkmmmkmmm"$$$kk	I		 W&N3:....%%%%kk	N	#	# S&kk	$	%	% P&##KKMM2222		%	% N&abb'i 

s
#
# 	Crw}}Y'?'? 	CIYZcIdId 	C
 	 Bs B B B	C 	C 	C
 
		 +	***	I		 ~&gmm	O	$	$ |&!g	&	'	' z&$%h!!	\	\	\$'''''	a	a	a	!	!	!,-h),-h)!"h			#N$:$F$3-13 3 3 3 3 
"	"	"$^%;%GHHHH			#N$:$C$0-13 3 3 3 3 
		$^%;%DEEEE	(	(	(#N$:$O$;-13 3 3 3 3 
*	*	*$^%;%PQQQQ			 -.h),-h))	#	#	#!"h	%	%	%,-h))			g	(	)	) R&LMMMM	>	"	" P&ii&?&? P&kmme	)	#	##;;==G##!DEDDDEEEE	
		hh			hh			^____			h	h			 9&V$$c	YYs^^
UU			3}}gj}}mr}}}~~~hsmgajj	I		 .&gnn	D		 ,& g			 *&,,T22g	9		 (&:!6!6 (&"{}}gn	m	m	m  Mw~  M  M  M  	N  	N  	N	<	 	  $&++--8888	&	&	&gnn	gnn	gnn			gnn			 &"g			 g	(	(	(C?,B,B gajj			g			g	 	 	 "g				gnn			!g	,	,	,)-g&&		&	& &ciiQ//288==>>>>	(	)	) &((3):):1)=)C)CC)H)HIIII	 &#**CNN3$7$7*  %%% HQKKK	"	"W	"	"	""s   -G== H H c                 V   |                                  } t          j        d| t          j                  }|st	          d| z             |                                \  } }t          |           } |r8d t          g d          D             }| ||                                         z  } | S )z{Given a string with KB/MB size suffixes, such as "32MB", computes how
  many bytes that is and returns it as an integer.
  z^(\d+)\s*([kmgt]?b)?$z;invalid byte size `%s`.  Valid suffixes are: kb, mb, gb, tbc                      i | ]\  }}|d |z  S )i   rC   )r   r   suffixs      rE   
<dictcomp>z-expand_byte_size_suffixes.<locals>.<dictcomp>  s"    aaa91fVTQYaaarD   )bkbmbgbtb)	r   r   r   Ir   groupsr   	enumerater   )r   r   rG  size_suffixess       rE   expand_byte_size_suffixesrR  x  s     ++--%
(+UBD
9
9%	 [QTYYZZZ,,..-%
e**% +aa	B_B_B_8`8`aaaM	]6<<>>**E	,rD   c                 B    |                                  }d |D             S )zParse contents of one-symbol-per-line response file.  This format can by used
  with, for example, -sEXPORTED_FUNCTIONS=@filename and avoids the need for any
  kind of quoting or escaping.
  c                 `    g | ]+}|                     d           |                                ,S )#)r   r   )r   vs     rE   r   z*parse_symbol_list_file.<locals>.<listcomp>  s1    	=	=	=1<<+<+<	=!''))	=	=	=rD   )
splitlines)contentsvaluess     rE   parse_symbol_list_filerZ    s)    
   &	=	=V	=	=	==rD   c                    d }d fd}|t           k    s| r| d         dk    r	 t          j        |           }n# t          $ r  ||           cY S w xY wt	          |          t
          t           fvr t          dt	          |           d          t	          |          t           u r;|D ]8}t	          |          t
          ur t          dt	          |           d          9|S |t          k    r 	 t          |           S # t          $ r Y nw xY w	 |                     d	          rd
}nd}t          | |          S # t          $ r  ||           cY S w xY w)Nc                     | d         }|dv re|                                  } | d         | d         k    st          |           dk     r"t          d| d          d| d          d          | dd         S | S )	Nr      "r   r   z8unclosed quoted string. expected final character to be "z&" and length to be greater than 1 in "r^  r   )rstripr   r   )textfirsts     rE   parse_string_valuez'parse_value.<locals>.parse_string_value  s    GE
[[]]d	bT!W		D		A  OUYZ[U\  O  O  EI  JK  EL  O  O  O  P  P  
P!B$ZKrD   c                    d}|                      |          }g }d}	 ||                                         }t          |          st          d          |d         }|dvr(|                    |                                           n|}	 |t          |          k    rt          d| d||          d          ||                                         }|rf|d	         |k    rZ||k    r0|                    |                                d
d	                    n#|                    ||z   |z   d
d	                    n||||         z   z  }|d
z  }|d
z  }|t          |          k    rnO|S )Nr   r   Tzempty value in string listr]  z8unclosed quoted string. expected final character to be 'r   r   r_  r   )r   lstripr   r   r   r`  )	ra  seprY  resultindexcurrentrb  startnews	            rE   parse_string_list_membersz.parse_value.<locals>.parse_string_list_members  s   
CZZ__FFEu$$&&g\\ 75666aje	j	 	 gnn&&''''	c&kk!!uX]uueklqeruuuvvvu$$&&# SW%%~~mmGNN,,QrT23333mmWs]S0!B$7888sVE]**GQJE	 qje	#f++		34 MrD   c                     |                                  } | r1| d         dk    r%| d         dk    rt          d          | dd         } |                                 dk    rg S  |           S )Nr   [r_  ]z<unterminated string list. expected final character to be "]"r   rJ   )r`  r   r   )ra  rl  s    rE   parse_string_listz&parse_value.<locals>.parse_string_list  sv    ;;==D Q3	bSWXXX!B$Zdzz||ri$$T***rD   r   rn  z(settings must be strings or lists (not $r   z/list members in settings must be strings (not $0x   
   )	r[   jsonloadsr   typer\   floatr   r   )ra  expected_typerc  rp  parsedelembaserl  s          @rE   parse_valuer|    s       B+ + + + + dtQ3%z$ff % % %t$$$$$% F||C;&&Q$v,,QQQRRRF||t \ \$::S  ZTRVZZZZZ[[
[ ! Me4[[   
d$t dddtT??	 $ $ $d#####$s3   < AA3D 
DD)D= =EEc            
         t           j        t          z   t           _        t	          j                    D ]7\  } }| t           j        v rt          d|            | }| t           j        v r | t           j	        v rt           j	        |          } | t          v rt          t          |                    }d}|ry|d         dk    rm|                    d          }t          j                            |          st          |d| d|           t#          |                                          }n|                    dd          }t           j                            |           }|r9|t,          k    r.|                                d         d	k    rt/          |          }nA	 t1          ||          }n/# t2          $ r"}t          d
|  d| d|            Y d}~nd}~ww xY wt5          t           ||           | dk    r(t           j                                        t           _        | dk    r|rdndt           _        | dk    rdt           _        | dk    r|t           _         | dk    r|t           _!        9dS )z]Take a map of users settings {NAME: VALUE} and apply them to the global
  settings object.
  z=%s is an internal setting and cannot be set from command lineNr   @z#: file not found parsing argument: r   \z\\rn  zerror parsing "-s" setting "z": EXPORTED_FUNCTIONSWASM_OBJECT_FILESr   JSPIr   JSPI_IMPORTSJSPI_EXPORTS)"r   INCOMING_MODULE_JS_APIEXTRA_INCOMING_JS_APIALL_INCOMING_MODULE_JS_APIr   itemsinternal_settingsr   legacy_settings	alt_namesr   r\   rR  r   ro   r   r   r   r   replacetypesgetr[   rZ  r|  r   setattrr  copyUSER_EXPORTSr  ASYNCIFYASYNCIFY_IMPORTSASYNCIFY_EXPORTS)r   r   user_keyfilenamerx  es         rE   apply_user_settingsr    s    )1(GJ_(_(%!')) 1( 1(jc5
h(((UWZ[[[ H
h&&&3(2D+D+Ds#c +E2233eH *qS##C((hW^^H%% _RURURUW\W\]^^^!!''))eemmD&))eN&&s++M LMT))ekkmmA.>#.E.E$U++eeLE=11 L L LJsJJUJJqJJKKKKKKKKL Hh&&&
"""&9>>@@h !!!+QQVhl
f}}h
n"'h
n"'hc1( 1(s   F**
G4GGc                     |                      d          r8|dv r4|                     d          } t          dt          |          z
            }| |fS )NNO_)r   r   r   )r   r   r\   r   )r   r   s     rE   r   r   '  sV    
 
__U   3 3U##DCJJE	urD   c                    t          |           }t          j        |          }t          j        d          sdt          _        t          t          |                    D ]x}||         dv rl||         dk    r||xx         dz  cc<   t          |          |dz   k    rt          d||          d           ||xx         ||dz            z  cc<   d	||dz   <   yt          |          }t          j        st          j        t          j        k    rt          j        d
d           t!                       t#          j        d          }|rt'          |          t          _        t+                       |S )Nr   r   )z-lr0   r/   r4   --js-libraryr1   r3   r2   r  r   r   r   r   rJ   experimentalzB--oformat=bare/--post-link are experimental and subject to change.STRICT)r[   r
   capture_warnings
is_enabledr   WARN_DEPRECATEDr   r   r   rD  r   rs   rn   r9   rB   r   r   r   r  r   r  r  )r7   r   r   strict_cmdlines       rE   parse_argumentsr  2  sm   JJ'
 (11'			-	- ! HW 	 	aqzOOO 
~	%	%


c


	WQ		E71:EEEFFFajjjGAEN"jjjga!enw' n'/W\99(lmmm... !$X... *.))HO 	.rD   )4rt  loggingro   r   r  r  enumr   r   r   
subprocessr   toolsr   r   r	   r
   r   r   r   r   tools.settingsr   r   r   tools.toolchain_profilerr   tools.utilsr   r   r3  r4  r   r  	getLoggerr  r9   rG   r   r   r   r   r   r   rD  rR  rZ  r|  r  r   profiler  rC   rD   rE   <module>r     s     				 				  



 # # # # # # # # # #      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 F E E E E E E E E E 6 6 6 6 6 6 2 2 2 2 2 2 2 2xxx .      
	6	"	"     d   6! 6! 6! 6! 6! 6! 6! 6!t +--      (
. 
. 
.  2k# k# k#\   > > >W$ W$ W$t9( 9( 9(x   & & & & &rD   