
    -Ph{7                    <   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	m
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mZmZmZmZ d d
lmZ d dlmZ ej        rd dlZd+dZd,dZd-dZ G d d          Z d.dZ!d/dZ"d0d"Z#d1d#Z$d0d$Z%d0d%Z&d2d(Z'd3d*Z(dS )4    )annotationsN)defaultdict)Path   )mlog)mesonlib)	OptionKey)MesonExceptionRealPathAction	join_argslistify_array_valuesetup_vsenv)detect_ninja)buildvaluestrreturnT.List[str]c                     t          |           S )N)r   )r   s    S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/mcompile.py	array_argr      s    u%%%    builddirr   Nonec                `    | dz  dz                                   st          d|  d          d S )Nzmeson-privatezcoredata.datz3Current directory is not a meson build directory: `z`.
Please specify a valid build dir or change the working directory to it.
It is also possible that the build directory was generated with an old
meson version. Please regenerate it in this case.)is_filer
   )r   s    r   validate_builddirr      s]    &7@@BB R QS[ Q Q Q R R 	RR Rr   T.Dict[str, T.List[dict]]c                R   | dz  dz  }|                                 st          d|j         d          |                    d          5 }t	          j        |          }ddd           n# 1 swxY w Y   t          t                    }|D ]}||d         xx         |gz  cc<   |S )	za
    Converts a List of name-to-dict to a dict of name-to-dicts (since names are not unique)
    z
meson-infozintro-targets.json`z.` is missing! Directory is not configured yet?zutf-8)encodingNname)existsr
   r"   openjsonloadr   list)r   path_to_introfschemaparsed_datatargets         r   parse_introspect_datar-   %   s    |+.BBM!! ec!3cccddd			W		-	- 1               .9->->K 0 0F6N###x/####s   A,,A03A0c                  F    e Zd ZdZdZdZdZdZdZd
dZ	e
dd            Zd	S )ParsedTargetName r,   r   c                F   || _         |                    dd          }t          |          dk    rB|d         | _        |                     | j                  st          d| d| j         d          |d                             dd          }t          |          dk    r|d         | _        |d         | _        n|d         | _        | j                            dd          }t          |          dk    r|d         | _        |d         | _	        d S |d         | _        d S )	N:r   Can't invoke target `z`: unknown target type: `r    r   /.)
	full_namersplitlentype_is_valid_typer
   pathr"   	base_namesuffix)selfr,   splits      r   __init__zParsedTargetName.__init__<   s   c1%%u::>>aDI&&ty11 m$%kf%k%k_c_h%k%k%klllaQ''u::>>aDIaDIIaDI	  a((u::>>"1XDN(DKKK"1XDNNNr   r9   r   boolc                    h d}| |v S )N>   jarrunaliascustom
executableshared_moduleshared_librarystatic_library )r9   allowed_typess     r   r:   zParsedTargetName._is_valid_typeR   s     	
 	
 	
 }$$r   N)r,   r   )r9   r   r   rA   )__name__
__module____qualname__r6   r<   r"   r9   r;   r=   r@   staticmethodr:   rK   r   r   r/   r/   4   sf        IIDDDF& & & &, % % % \% % %r   r/   r,   introspect_dataT.Dict[str, T.Any]c                   | j         |vr!| j        |vrt          d| j         d          || j                  }|s|| j                 }g }|                                }| j        s| j        s| j        s|}n|D ]}|d         }|d                             dd          }t          |          dk    r@|d         
                    dd          }t          |          dk    r	|d         }n|d         }| j        r%| j        |d	                             d
d          k    sg| j         |k    s\| j        rW|d         dk    rKt          | j                  t          |d         d                                       |          j        k    r||gz  }|st          d| j         d          t          |          dk    rg }	|D ]}
|
d         }|
d                             dd          }t          |          dk    r@|d         
                    dd          }t          |          dk    r	|d         }n|d         }t          |
d         d                                       |          j        |z  }|
d	                             d
d          }|	                    d| d|            d                    |	          }t          d| j         d|           |d         S )Nr3   z`: target not foundr"   id@r   r   z@@r9    _filenameno_namez- ./r2   
z0`: ambiguous name. Add target type and/or path:
)r"   r<   r
   r6   resolver9   r;   r=   r7   r8   r?   replacer   relative_toparentappendjoin)r,   r   rQ   intro_targetsfound_targetsresolved_bdirintro_targetintro_target_namer?   suggestionsii_nameptsuggestions_strs                  r   get_target_from_intro_datarl   a   s(   {/))f.>o.U.U[f6F[[[\\\#FK0M :'(8902M$$&&M; ,v{ ,6= ,%) 	, 	,L ,V 4 &--c155E5zzA~~atQ//u::>>(-a%%(-a% V0D0L0LSRU0V0V!V!V 111 2!-j!9Y!F!Ffk""d<
+CA+F&G&G&S&STa&b&b&iiil^+MM R[f6F[[[\\\	]		a		#% 	/ 	/AvYFdGNN3**E5zzA~~atQ//u::>>"1XFF"1XFQz]1%&&22=AAH6QA&	!!#s++A~a~~!~~....))K00 Qf6F Q Q?NQ Q R R 	R r   dictc                r    t          | |          }|d         dv r| j        gS fd|d         D             S )Nr9   >   rD   rE   c                    g | ]C}t          t          |                                                                                  DS rK   )r   r   r]   r[   ).0out_filer   s     r   
<listcomp>z/generate_target_names_ninja.<locals>.<listcomp>   sA    mmmDNN..x/?/?/A/ABBCCmmmr   rX   )rl   r"   )r,   r   rQ   rd   s    `  r   generate_target_names_ninjars      sP    -fhPPLF///}mmmmT`akTlmmmmr   options'argparse.Namespace'2T.Tuple[T.List[str], T.Optional[T.Dict[str, str]]]c                   t                      }|t          d          |}|                    d          s)|                    d|                                g           | j        dk    r)|                    dt          | j                  g           | j        dk    r)|                    dt          | j                  g           | j        r|	                    d           || j
        z  }| j        rJt          |          }| j        D ]3}|                    t          t          |          ||                     4| j        r|	                    d           |d fS )	NzCannot find ninja.r5   -Cr   -j-l-vclean)r   r
   samefileextendas_posixjobsr   load_averageverboser_   
ninja_argstargetsr-   rs   r/   r|   )rt   r   runnercmd
intro_datarj   s         r   get_parsed_args_ninjar      se   ^^F~1222
CS!! 0

D(++--./// |a

D#gl++,---a

D#g2334555 

47C  _*844
 	_ 	_AJJ23CA3F3FR\]]^^^^} 

79r   c                \   t          | ||          }|d         dvs
J d            t          j        dd|d                   }t          |d         d                                       |                                          j        }|t          d	          k    rt          ||z            }|S )
Nr9   >   rD   rE   z9Should not reach here: `run` targets must be handle abovez[\%\$\@\;\.\(\)']rW   rT   rX   r   r5   )rl   resubr   r]   r[   r^   r   )r,   r   rQ   rd   target_namerel_paths         r   generate_target_name_vsr      s    -fhPPL'77779t777 &-sL4FGGKL,Q/00<<X=M=M=O=OPPWH499([011r   c                  
 t                              d                    }t          |          dk    s
J d            |d         }dg}| j        r3t	                    
t          
fd| j        D                       }|rt          | j                  dk    rt          d          t          t          | j        d                   
          }t          |d         d                   j
        }|d	                    |d
                   z  }|t          |                                          gz  }nr|t          |                                          gz  }|                    
fd| j        D                        n%|t          |                                          gz  }| j        r|                    dg           | j        dk    r|                    d| j                    n|                    d           | j        rt'          j        d           | j        s|                    d           || j        z  }t.          j                                        }	|	                    dd            ||	fS )Nz*.slnr   z$More than one solution in a project?r   msbuildc              3  d   K   | ]*}t          t          |                    d          dv V  +dS )r9   >   rD   rE   N)rl   r/   rp   rj   r   r   s     r   	<genexpr>z%get_parsed_args_vs.<locals>.<genexpr>   sX       & & ''7':':HjQQRXY]mm& & & & & &r   zPOnly one target may be specified when `run` target type is used on this backend.rX   z
{}.vcxprojrT   c           	     r    g | ]3}d                      t          t          |                              4S )z
-target:{})formatr   r/   r   s     r   rr   z&get_parsed_args_vs.<locals>.<listcomp>   sS      J  J  Jtu++,CDTUVDWDWYacm,n,noo  J  J  Jr   z-target:Cleanz-maxCpuCount:z-maxCpuCountz6Msbuild does not have a load-average switch, ignoring.z-verbosity:minimalPLATFORM)r'   globr8   r   r-   anyr
   rl   r/   r   r^   r   r   r[   r~   r|   r   r_   r   r   warningr   vs_argsosenvironcopypop)rt   r   slnsslnr   has_run_targetrd   proj_dirprojenvr   s    `        @r   get_parsed_args_vsr      s   g&&''Dt99>>>A>>>
q'C+C $*844
 & & & & &_& & & & &  	K 7?##a''$%wxxx56FwWXGY6Z6Z\dfpqqLL4Q788?HL//T0BCCCDC''((CCC&&''CJJ  J  J  J  J  J  zA  zI  J  J  J  K  K  K  KCKKMM""##} &

O$%%% |a

17<112222

>""" OMNNN? )

'(((7?C *//

CGGJ8Or   c                   d}t          j        |          st          d          t          j        t          |                     |dg}| j        r| j        D ]	}|d|gz  }
| j        r| j        r|dgz  }n|ddgz  }|dgz  }| j        dk    r)|	                    d	t          | j                  g           | j
        dk    rt          j        d
           | j        r	 || j        z  }|d fS )N
xcodebuildz.Cannot find xcodebuild, did you install XCode?z-parallelizeTargetsz-targetr|   z-alltargetsz-UseNewBuildSystem=FALSEr   z-jobsz8xcodebuild does not have a load-average switch, ignoring)shutilwhichr
   r   chdirr   r   r|   r   r~   r   r   r   r   
xcode_args)rt   r   r   r   rj   s        r   get_parsed_args_xcoder     s)   F< OMNNN HS]](
)C " 	" 	"AIq>!CC} ,? 	,G9CCM7++C*++|a

GS../000aOPPP  	7C9r   parser'argparse.ArgumentParser'c                   |                      ddddd           |                      ddd	
           |                      ddt          d           |                      ddddt          d           |                      ddddt          d           |                      dddd
           |                      dt          g d           |                      dt          g d           |                      d t          g d!           dS )"zAdd compile specific arguments.r   TARGET*NzlTargets to build. Target has the following format: [PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE].)metavarnargsdefaulthelpz--clean
store_truezClean the build directory.)actionr   rx   wdz#directory to cd into before running)destr   r   ry   z--jobsstorer   zjThe number of worker jobs to run (if supported). If the value is less than 1 the build program will guess.)r   r   r9   r   rz   z--load-averagez:The system load average to try to maintain (if supported).r{   z	--verbosezShow more verbose output.z--ninja-argsz?Arguments to pass to `ninja` (applied only on `ninja` backend).)r9   r   r   z	--vs-argsz>Arguments to pass to `msbuild` (applied only on `vs` backend).z--xcode-argszDArguments to pass to `xcodebuild` (applied only on `xcode` backend).)add_argumentr   intfloatr   )r   s    r   add_argumentsr   (  s   
{  } } } )    
 4B  D D D hy     I     k(    
 N	     M	     S	      r   r   c                H   t          | j                  }t          |           | j        r| j        rt          d          t          j        | j                  }|j        j	        }t          j        d|j                            t          d                              }t          |          r't!          j        t!          j        d          d           g }d }|j                            t          d                    }t'          |t(                    sJ t!          j        t!          j        d          d|           |dk    rt+          | |          \  }}nV|                    d	          rt/          | |          \  }}n-|d
k    rt1          | |          \  }}nt          d| d          t!          j        t!          j        d          dt3          |                     t5          j        |t8          j        j        t8          j        j        |          ^}}	|j         S )Nz3`TARGET` and `--clean` can't be used simultaneouslyrA   vsenvzINFO:z1automatically activated MSVC compiler environmentbackendzautodetecting backend asninjavsxcodez	Backend `zR` is not yet supported by `compile`. Use generated project files directly instead.z#calculating backend command to run:)stdoutstderrr   )!r   r   r   r   r|   r
   r   r&   environmentcoredataTcastoptstoreget_value_forr	   r   r   loggreen
isinstancer   r   
startswithr   r   r   r   
Popen_safesysr   bufferr   
returncode)
rt   bdirbcdata
need_vsenvr   r   r   ri   rW   s
             r   rD   rD   ^  s   
Dd U7= USTTT
7:AM"E < <Yw=O=O P PQQJ: [G$$&YZZZC(,Cn**9Y+?+?@@Ggs#####HTZ  "<gFFF'($77SS			D	!	! u%gt44SS	G		($77SSssssu u 	u 	HTZ  "GSVXXXCJ,=cjFW]`aaaEA<r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r,   r/   r   r   rQ   rR   r   rR   )r,   r/   r   r   rQ   rm   r   r   )rt   ru   r   r   r   rv   )r,   r/   r   r   rQ   rm   r   r   )r   r   r   r   )rt   ru   r   r   ))
__future__r   r   r%   r   r   r   typingr   collectionsr   pathlibr   r0   r   r   rt   r	   r
   r   r   r   r   mesonbuild.environmentr   
mesonbuildr   TYPE_CHECKINGargparser   r   r-   r/   rl   rs   r   r   r   r   r   rD   rK   r   r   <module>r      s+   # " " " " " 5 				  				 



      # # # # # #                         a a a a a a a a a a a a a a / / / / / /      ? OOO& & & &R R R R   +% +% +% +% +% +% +% +%Z4 4 4 4ln n n n   >   5 5 5 5n" " " "L4 4 4 4l     r   