
    -Ph"                      d dl mZ d dlZd dlZd dlZd dlZd dlmc m	Z
 d dlZd dlZd dlmZmZm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 ddlmZmZmZmZmZm Z  ddl!m"Z" ddl#m$Z$m%Z% ddlm&Z& ej'        rddl(m)Z) ddl*m+Z+ ej,        e-ee-e f         Z.d0dZ/d1dZ0d2dZ1d3d Z2d4d"Z3d5d'Z4d6d-Z5 G d. d/ej6                  Z7dS )7    )annotationsN)PathPurePathPureWindowsPath)Counter   )backends   )build)mlog)	compilers)mesonlib)FileMesonBugExceptionMesonExceptionreplace_if_differentversion_compareMachineChoice)	OptionKey)Environmentbuild_filename)coredata)CompilerArgs)Interpreterr   T.Optional[build.Build]interpreterT.Optional[Interpreter]returnbackends.Backendc                N   t          j        dd           }t          j        dd           }|st          d          |dk    sd|v rddlm}  || |          S |dk    sd	|v rdd
lm}  || |          S |dk    sd|v rddlm}  || |          S |dk    sd|v sd|v rddl	m
}  || |          S |dk    sd|v sd|v rddlm}  || |          S |dk    sd|v sd|v rddlm}	  |	| |          S d|v rt          | |          S t          d                    ||                    )NVisualStudioVersionVSINSTALLDIRzCould not detect Visual Studio: Environment variable VSINSTALLDIR is not set!
Are you running meson from the Visual Studio Developer Command Prompt?z11.0zVisual Studio 11r   )Vs2012Backendz12.0zVisual Studio 12)Vs2013Backendz14.0zVisual Studio 14)Vs2015Backend15.0zVisual Studio 17zVisual Studio\2017)Vs2017Backendz16.0zVisual Studio 19zVisual Studio\2019)Vs2019Backendz17.0zVisual Studio 22zVisual Studio\2022)Vs2022BackendzVisual Studio 10.0z~Could not detect Visual Studio using VisualStudioVersion: {!r} or VSINSTALLDIR: {!r}!
Please specify the exact backend to use.)osgetenvr    mesonbuild.backend.vs2012backendr#    mesonbuild.backend.vs2013backendr$    mesonbuild.backend.vs2015backendr%    mesonbuild.backend.vs2017backendr'    mesonbuild.backend.vs2019backendr(    mesonbuild.backend.vs2022backendr)   Vs2010Backendformat)
r   r   
vs_versionvs_install_dirr#   r$   r%   r'   r(   r)   s
             `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/backend/vs2010backend.pyautodetect_vs_versionr7   #   s   0$77JY~t44N g f g g 	g V1^CCBBBBBB}UK000V1^CCBBBBBB}UK000V1^CCBBBBBB}UK000V1^CC..BBBBBB}UK000V1^CC..BBBBBB}UK000V1^CC..BBBBBB}UK000~--UK000
 DDJF:WeDfDfh h h    argsT.List[str]c                    g }| D ]X}|                     d          st          |dd                   }d|v r|                    |           I|d |D             z  }Y|S )z
    Splits any /O args and returns them. Does not take care of flags overriding
    previous ones. Skips non-O flag arguments.

    ['/Ox', '/Ob1'] returns ['/Ox', '/Ob1']
    ['/Oxj', '/MP'] returns ['/Ox', '/Oj']
    /Or
   Nbc                    g | ]}d |z   S )r<    ).0fs     r6   
<listcomp>z&split_o_flags_args.<locals>.<listcomp>X   s    000Qq000r8   )
startswithlistappend)r9   o_flagsargflagss       r6   split_o_flags_argsrI   F   s     G 	1 	1~~d## 	SW %<<NN300%0000GGNr8   strc           	         t          t          j        t          j        d|z   dz   t          |           z                                                       S )Nz	meson-vs-:)rJ   uuiduuid5NAMESPACE_URLupper)path	path_types     r6   generate_guid_from_pathrS   [   sA    tz$,kI.E.KcRVii.WXXYY__aaar8   platformboolc                B    t          j        d| t           j                  S )Nz1Gaming\.(Desktop|Xbox.XboxOne|Xbox.Scarlett)\.x64)rematch
IGNORECASE)rT   s    r6   detect_microsoft_gdkrZ   ^   s    8H(TVTabbbr8   sourcesc              #     K   | D ]U}|                     d          d         }t          j                            |          rt          j        j        |         V  Vd S )N.)splitr   is_source_suffixSUFFIX_TO_LANG)r[   srcexts      r6   filtered_src_langs_generatorrd   a   sd       : :iinnR //44 	:%4S9999: :r8   target_sourcesT.List[File]custom_sourcesT.Optional[str]c                    t          d | D                       }|t          t          |                    z  }|                    d          }|r|d         d         nd S )Nc                    g | ]B}t           j                             |j                  &t           j         j        |j                 CS r?   )r   r`   suffixra   )r@   rb   s     r6   rB   z+get_primary_source_lang.<locals>.<listcomp>n   sm      Y  Y  Ycgpgz  hL  hL  MP  MW  hX  hX  Y9.=cjI  Y  Y  Yr8   r   r   )r   rd   most_common)re   rg   lang_countsmost_common_lang_lists       r6   get_primary_source_langro   m   s      Y  YUc  Y  Y  Y  Z  ZK77GGHHHK'33A66 +@I #A&&TIr8   
vslite_ctxdict	target_idprimary_src_lang0T.Dict[str, T.Dict[str, T.Tuple[str, str, str]]]c                    i }t          j                    D ]d}| |         |         }fd|                                D             }|D ]1\  }}||vri ||<   t                              |          ||         |<   2e|S )Nc                *    g | ]\  }}|k    ||fS r?   r?   )r@   lang
build_argsrs   s      r6   rB   z<get_non_primary_lang_intellisense_fields.<locals>.<listcomp>   sP      /S  /S  /SFVdJy}  BR  zR  zRj/A  zR  zR  zRr8   )r    get_genvs_default_buildtype_listitemsr2   _extract_nmake_fields)	rp   rr   rs   &defs_paths_opts_per_lang_and_buildtype	buildtypecaptured_build_args#non_primary_build_args_per_src_langsrc_lang	args_lists	     `      r6   (get_non_primary_lang_intellisense_fieldsr   y   s     .0*>@@ y y	(3I> /S  /S  /S  /SZmZsZsZuZu  /S  /S  /S+#F 	y 	yHiEEECE6x@JWJmJmnwJxJx28<YGG	y 21r8   c                  n    e Zd ZdZdd fd	ZddZd ZddZd Z	 	 dddZ	e
dd!            Ze
dd"            Zd# Zd$ Zddd'Zdd+Zdd/Zddd1Zd2 Zd3 Zd4 Zddd9Zdd:Zd;ddd<d=dd?ZddCZddEZddGZedH             ZdI ZdJ ZdK Z dL Z!dM Z"dN Z#ddRZ$dS Z%dT Z&e
ddV            Z'e
ddX            Z(e
dY             Z)dZ Z*dd]Z+d^ Z,e
ddb            Z-e
ddf            Z.e
ddh            Z/ddmZ0ddoZ1ddrZ2dddsZ3dt Z4du Z5dv Z6dw Z7	 	 dddZ8e
dd            Z9ddZ:ddZ;ddZ<d Z= xZ>S )r2   vs2010Fr   r   r   r   gen_literU   c                    t                                          ||           d| _        d| _        d| _        d | _        d| _        d | _        i | _        i | _	        || _
        d S )Nz10.0.30319.1z11.002010)super__init__project_file_versionsln_file_versionsln_version_commentplatform_toolsetr4   windows_target_platform_versionsubdirshandled_target_depsr   )selfr   r   r   	__class__s       r6   r   zVs2010Backend.__init__   sf    ,,,$2! '#)  $ /3,#%  r8   r   Nonec                    d S Nr?   )r   s    r6   detect_toolsetzVs2010Backend.detect_toolset       r8   c                    t           j                            |                     |          |                                          S r   )r*   rQ   joinget_target_dirget_id)r   targets     r6   get_target_private_dirz$Vs2010Backend.get_target_private_dir   s.    w||D//77IIIr8   genlistIT.Union[build.GeneratedList, build.CustomTarget, build.CustomTargetIndex]r   build.BuildTargetparent_node
ET.Elementgenerator_output_filesr:   custom_target_include_dirscustom_target_output_filesc           	     	     t          |t          j                  r$|j        D ]}                     |||g g g                                                      |                               |                                          |          }t          |t          j	        t          j
        f          r|                                D ]K}	t          j                            |                     |          |	          }
|                    |
           L                                          |                               |                    }||vr|                    |           d S d S |                                }|                                }|                                }|                                }t          j                            | j        |j                  t+          j        |d          }t/          |          t/          |          k    }t1          |          D ]\  }	}|r't          j                             ||	                   ndt          j                            ||                     j                                                  |d          }|                              }|                    |          } fd|D             }||z  }fd|D             }                     | |          }  fd|D             }fd|D             } fd|D             }d	 |D             }t          j                             j                                                             |                    }                      | !                    ||          ||j"        r|d
         nd d|j#                  \  }}|dd          |z   }t          j                             j                                                             |                    }t          j$        |d           t+          j        |d          }d                     %                    |                    t+          j        |d          _&        d                    |          t+          j        |d          _&        d                    |          t+          j        |d          _&        d S )N	ItemGroup Tc                P    g | ]"}t           j                            |          #S r?   )r*   rQ   r   )r@   oftarget_private_dirs     r6   rB   z=Vs2010Backend.generate_genlist_for_target.<locals>.<listcomp>   s*    XXXRBGLL);R@@XXXr8   c                d    g | ],}|                     d                                d          -S )z@INPUT@z@OUTPUT@replace)r@   x
infilenamesole_outputs     r6   rB   z=Vs2010Backend.generate_genlist_for_target.<locals>.<listcomp>   sG     , , , 		)Z88@@[YY , , ,r8   c                    g | ]C}|                     d j                                                                       d          DS )z@SOURCE_DIR@z@BUILD_DIR@)r   environmentget_source_dir)r@   r   r   r   s     r6   rB   z=Vs2010Backend.generate_genlist_for_target.<locals>.<listcomp>   sV     ' ' ' 		.$2B2Q2Q2S2STT 0BCC' ' 'r8   c                <    g | ]}|                     d           S )z@CURRENT_SOURCE_DIR@r   )r@   r   
source_dirs     r6   rB   z=Vs2010Backend.generate_genlist_for_target.<locals>.<listcomp>   s(    TTT!		"8*EETTTr8   c                    g | ]Z}|                     d j                                                                       dj                                                  [S )z@SOURCE_ROOT@z@BUILD_ROOT@)r   r   r   get_build_dir)r@   r   r   s     r6   rB   z=Vs2010Backend.generate_genlist_for_target.<locals>.<listcomp>   sd     ' ' ' 		/43C3R3R3T3TUU 1A1O1O1Q1QRR' ' 'r8   c                :    g | ]}|                     d d          S )\/r   )r@   r   s     r6   rB   z=Vs2010Backend.generate_genlist_for_target.<locals>.<listcomp>   s&    ;;;		$,,;;;r8   r   )workdircaptureforce_serializeenvr^   )exist_okCustomBuildInclude Command;OutputsAdditionalInputs)'
isinstancer   GeneratedListdependsgenerate_genlist_for_targetrelpathr   r   target_to_build_rootCustomTargetCustomTargetIndexget_outputsr*   rQ   r   rE   get_generatorget_exe
get_inputsbuild_to_srcsubdirET
SubElementlen	enumeraterel_to_builddirget_target_depend_filesget_arglistget_outputs_forreplace_outputsr   r   as_meson_exe_cmdlinereplace_extra_argsr   r   makedirsquote_argumentstext)!r   r   r   r   r   r   r   r   downiipathidir	generatorexe
infilelistoutfilelistidgroupsamelencurfiledeps	base_argsoutfiles_reloutfilesr9   tdir_abscmd_abs_pdircbsr   r   r   r   s!   `                            @@@@r6   r   z)Vs2010Backend.generate_genlist_for_target   s   gu233 	U_ U U00FKRQSTTTT!\\$*E*Ef*M*MtObObciOjOjkk((00g 2E4KLMM 7	M((** 9 9T4+>+>w+G+GKK*11%8888<< 3 3G < <d>Q>QRX>Y>YZZD555*11$77777 65  --//I##%%C ++--J!--//KdD,=w~NNJmK==G*oo[)9)99G'
33 'M 'M
7 %"$',,/A;q>"R"RKK"$KW\\$0G0GHY[m0n0noo
33GTBB%11*==	&66w??XXXX<XXX&(2&, , , , ,!*, , ,++D2DlSS' ' ' ' '!%' ' ' UTTTtTTT' ' ' '!%' ' ' <;d;;; 7<<(8(F(F(H(H$J]J]^dJeJeff22++D'::$+4+<FHQKK$$( 3  Q 233x$7<<(8(F(F(H(H$J]J]^dJeJeffHt4444mG]JOOO58XXd>R>RSV>W>W5X5Xc9--258XXh5G5Gc9--2>Ahhtnnc#566;;O'M 'Mr8   c           	     z    g }g }g }|                                 D ]}|                     ||||||           |||fS r   )get_generated_sourcesr   )r   r   r   r   r   r   r   s          r6   "generate_custom_generator_commandsz0Vs2010Backend.generate_custom_generator_commands   st    !#%'"%'"3355 	[ 	[G,,WfkKac}  @Z  [  [  [  [%'AC]]]r8   Nr   rp   T.Optional[T.Dict]c                   |rt          d          |                                  | j        j        j        j        }|dv r5| j        j        j        j        }t          |          r|| _        nvd| _        nn|dk    rd| _        n`|dv r,| j        j        j        j	        }|dk    rd| _        n8d| _        n0d	|
                                v rd
| _        nt          d|z             | j        j        j        j        }|dv rd| _        nn|dk    rd| _        n`|dv r,| j        j        j        j	        }|dk    rd| _        n8d| _        n0d	|
                                v rd
| _        nt          d|z             | j        j        j                            t#          d                    | _        | j        j        j                            t#          d                    | _        | j        j        j                            t#          d                    | _        	 | j        j        j                            t#          d                    | _        n# t,          $ r
 g | _        Y nw xY wt.          j                            | j                                        | j        j        dz             }|                     |          }|                                  |                                  |                                  |                      ||           | !                                 tD          #                    | j                                                   d S )NzAWe do not expect any vs backend to generate with 'capture = True'>   64x86_64x64x86Win32>   arm64aarch64arm64ecr  armARMz$Unsupported Visual Studio platform: r}   optimizationdebug
b_sanitizez.sln)$r   r   r   machineshost
cpu_familysystemrZ   rT   cpulowerr   r   build_platformr   optstoreget_value_forr   r}   r  r	  sanitizeKeyErrorr*   rQ   r   r   project_namegenerate_projectsgen_testprojgen_installprojgen_regenprojgenerate_solutiongenerate_regen_infor2   touch_regen_timestamp)	r   r   rp   host_machinetarget_system
target_cpubuild_machinesln_filenameprojlists	            r6   generatezVs2010Backend.generate   sE     	k#$ijjj'05@+++ ,5:AM#M22 & - %U""#DMM111)27;JY&& ) 'l((****!DMM !G,!VWWW(17B,,,"'De##")D222)28<JY&&&/##&-##m))++++"'D !G-!WXXX)2;II)T_J`J`aa ,5>LLYWeMfMfgg%.7EEiPWFXFXYY
	 ,5>LLYWcMdMdeeDMM 	 	 	DMMM	w||D$4$B$B$D$DdjF]`fFfgg))*55|X666  """++D,<,J,J,L,LMMMMMs   6I I! I!	build_dirrJ   c                    t           j                            t           j                            | t          j                  d          S )Nzregen.stamp)r*   rQ   r   r   private_dirr%  s    r6   get_regen_stampfilez!Vs2010Backend.get_regen_stampfile"  s+    w||BGLLK4KLLm\\\r8   c                    t          t                              |           dd          5  	 d d d            d S # 1 swxY w Y   d S )Nwutf-8encoding)openr2   r)  r(  s    r6   r  z#Vs2010Backend.touch_regen_timestamp&  s    -33I>>gVVV 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   :>>c                   dt           j        v odt           j        v }dt           j        v rdt           j        v rt           j        d         nd }||dk    rdnd}t           j        d         |z   dz   }t           j                            |          ra|r%t           j        d         }t           j        d         }n"t           j                            d	d
          }|}||k    r|dz   |z   n|}d| d| S dt           j        v ra|r_t           j        d         dz   }t           j                            |          r+d|dt           j        d         dt           j        d         S dS )NVSCMD_ARG_TGT_ARCHVSCMD_ARG_HOST_ARCHVCINSTALLDIRr!   r&   zAuxiliary\Build\r   zvcvarsall.batPlatformr  r   "z" VS150COMNTOOLSzVsDevCmd.batz" -arch=z -host_arch=)r*   environrQ   existsget)r   has_arch_valuesr4   relative_pathscript_pathtarget_arch	host_archarchs           r6   get_vcvars_commandz Vs2010Backend.get_vcvars_command+  s   ."*<dAVZ\ZdAd RZ''(BJ66 $9::<@ 4>4Jz]cOcOc00ikM*^4}DVKw~~k** 1" ,"$*-A"BK "
+@ AII"$*..U"C"CK +I8A[8P8Py344Va0;00$000 rz))o)*%56GKw~~k** g g [["*-A"B"B"BBJOdDeDeg grr8   c                    i }|D ]=}t          |t          j                  r!|j        ||j                                        <   >|                                S r   )r   r   ExtractedObjectsr   r   rz   )r   obj_listresultos       r6   get_obj_target_depsz!Vs2010Backend.get_obj_target_depsF  sR     	5 	5A!U344 5,-Hqx(()||~~r8   t=T.Dict[T.Any, T.Union[build.Target, build.CustomTargetIndex]]c                   i }|                                 D ]}t          |t          j                  r|j        }t          |t          j                  rJ|                                D ]3}t          |t          j                  r|||                                <   4nt          |t          j	                  r0|
                                D ]}|||                                <   nqt          |t          j                  rD|j        D ]P}t          |t          j                  r|j        ||                                <   9|||                                <   Q|j        D ]P}t          |t          j                  r|j        ||                                <   9|||                                <   Q|j        D ]f}t          |t          j                  r|j        ||                                <   9t          |t                    rO|||                                <   g|                     |j                  D ]
\  }}|||<   nt%          d|           |                                D ]T}	t          |	t          j                  r|	||	                                <   5t          |	t          j                  r"|	j        ||	j                                        <   q|	                                }
|
                                }t          |t          j                  r|||                                <   t/          j        |
j        |	j                  D ]j}t          |t          j                  r|j        ||                                <   9t          |t          j                  r|||                                <   kV|r|s|S |                     ||          }|                    |           |S )NzUnknown target type for target )valuesr   r   r   r   r   get_target_dependenciesTargetr   	RunTargetget_dependenciesBuildTargetlink_targetslink_whole_targetslink_dependsr   rF  objectsr   r   r   r   
Executable	itertoolschainr   get_target_depsupdate)r   rG  	recursiveall_depsr   dldepobj_idobjdepgendepr   gen_exerets                r6   rW  zVs2010Backend.get_target_depsM  s   .0hhjj 5	5 5	5F&%"9:: '&%"455 !Q7799 1 1A "!U\22 1/0,	1
 FEO44 Q0022 - -A+,HQXXZZ((-FE$566 Q"/ 7 7D!$(?@@ 726+//26//"5 7 7D!$(?@@ 726+//26//"/ 7 7D!$(?@@ 726+//#D$// 726//&*&>&>v~&N&N . .NFF'-HV$$. %%Ov%O%OPPP 6688 5 5fe&899 506HV]]__--(?@@ 57=}HV]113344 & 4 4 6 6I'//11G!'5+;<< =5<!1!12&_Y->OO 5 5%a)@AA 5348HQXXZZ00'5<88 534HQXXZZ0	55$  		 	O""8Y77

8
r8   ofileparentsT.Sequence[Path]c                   d}t          |          }t          |           |D ]}|| j        vr|j        }t	          |d          }|j        }|t          d          k    r| j        |         d         nd }	||	f| j        |<   || j        j        j	        d         ||| j        |         d         fz  }
|
                    |
           |
                    d           d S )N%Project("{%s}") = "%s", "%s", "{%s}"
r   r]   r   	directoryEndProject
)reversednextr   namerS   parentr   r   r   
lang_guidswrite)r   rb  rc  	prj_templ	iterpathsrQ   basename
identifier
parent_dirparent_identifierprj_lines              r6   generate_solution_dirsz$Vs2010Backend.generate_solution_dirs  s    <	W%%	Y 	, 	,D4<''94T8DD
![
!Xc]]22 %)L$<Q$?$?8< "&02C%DT"$$-8EhT(:1(=(? ? H%%%N+++	, 	,r8   r"  r#  T.List[Project]c                >   |                                  }|                    |                                            |dz   }t          |dd          5 }|                    d| j        z             |                    d| j        z             d}|D ]X}| j        j        j	        
                    t          d                    d	k    r!|                     ||d
         j                   | j        j        |d                  }d}	t!          |d          r%|j        r|j                                        D ]}
|
}	 || j        j        j        |	         |d         |d
         |d         fz  }|                    |           |                                |i}|                     |d          }|                    d           |                                D ]\  }}|d         |v r|||<   Z|| j        j        j        d         dd| j        j        j        fz  }|                    |           |                    d           | j        rd}d}nd}d}|| j        j        j        d         ||| j        j        j        fz  }|                    |           |                    d           || j        j        j        d         dd| j        j        j        fz  }|                    |           |                    d           |                    d           |                    d           | j        rt          j                    n| j        g}|D ].}|                    d|d| j        d|d| j        d	           /|                    d            |                    d!           |D ]}|                    d"| j        j        j        d#|d| j        d$|d| j        d           | j        s>|                    d"| j        j        j        d#|d| j        d%|d| j        d           t=          |          D ]\  }}|d&         t>          j         u r| j!        }n| j        }|D ]}|                    d"|d         d#|d| j        d$|d|d           | j        r|dk    rj|d         |v r`tE          | j        j        |d                  t          j#                  s0|                    d"|d         d#|d| j        d%|d|d           |D ]~}|                    d"| j        j        j        d#|d| j        d$|d| j        d           |                    d"| j        j        j        d#|d| j        d$|d| j        d           |                    d            |                    d'           |                    d(           |                    d            | j$        r|                    d)           |D ]k}|d
         j%        tM          d*          k    rK|                    d+'                    |d         | j$        |d
         j%                 d                              l| j$        (                                D ]?}|d
         r5|                    d+'                    |d         |d
                              @|                    d            |                    d,           d d d            n# 1 swxY w Y   tS          ||           d S )-N~r+  z	utf-8-sigr-  z:
Microsoft Visual Studio Solution File, Format Version %s
z# Visual Studio %s
rf  layoutmirrorr   r   defaultr   r
   T)rY  rh  	RUN_TESTSzRUN_TESTS.vcxprojRECONFIGURERECONFIGURE.vcxprojREGENREGEN.vcxprojRUN_INSTALLzRUN_INSTALL.vcxprojzGlobal
z=	GlobalSection(SolutionConfigurationPlatforms) = preSolution
z		|z = 
z	EndGlobalSection
z=	GlobalSection(ProjectConfigurationPlatforms) = postSolution
z		{z}.z.ActiveCfg = z.Build.0 =    z1	GlobalSection(SolutionProperties) = preSolution
z		HideSolutionNode = FALSE
z-	GlobalSection(NestedProjects) = preSolution
r]   z		{{{}}} = {{{}}}
z
EndGlobal
)*get_build_by_default_targetsrX  get_testlike_targetsr/  rn  r   r   r   r   r  r  r   rv  rc  r   targetshasattrr   keysrm  r   rW  rz   	test_guidr   
regen_guidinstall_guidry   r}   rT   r   r   BUILDr  r   rM  r   rl  r   r3   rJ  r   )r   r"  r#  default_projlistsln_filename_tmprb  ro  prjr   rw   lang_outru  target_dictrecursive_depsdep	test_lineregen_proj_nameregen_proj_fname
regen_lineinstall_linemulti_config_buildtype_listr}   project_indexpconfig_platformr   s                             r6   r  zVs2010Backend.generate_solution  s   <<>> 9 9 ; ;<<<'#- "C+>>> q	'%KKVY]YnnoooKK.1IIJJJ@I 7 7#,5CCIhDWDWXX\ddd//s1v~FFF+CF3 6;// F4D $*$4$9$9$;$;  '$$-8>FCFCF(, , H%%%%}}7!%!5!54 "6 "1 "1N+++#1#7#7#9#9 7 7KC1v!11106(-7 "T%5%>%I)%T%02E%)%5%>%H%J JI KK	"""KK'''} 3"/#8  ")#2 "d&6&?&J9&U&57G&*&6&?&J&L LJ KK
###KK'''$(8(A(LY(W(57L(,(8(A(N(P PL KK%%%KK'''KK
###KK ( ) ) )Y]Yf*|(*S*U*U*Umqm{l|'8 - -	&YYyyy!]]], - - - - KK.///KK ) * * * 9 N N	!-6AAA999 $yyy$---I J J J } NKKK!%!1!:!E!E!Eyyy$(MMM999dmmm!M N N N %.h$7$7 B B qQ4=...&*&9OO&*mO!< B BIKKK!"1yyy$---!*OOO!= > > > !M B]a-?-?t///%dj&81&>PP 0%&qTTT999dmmm%.YY%A B B BB$ 9 G G	!-6@@@)))!]]]IIIt}}}F G G G !-6CCCYYY!]]]IIIt}}}F G G G G KK.///KKMNNNKK8999KK.///| 	4 , - - -! h hAt{hsmm33$;$B$B1Q4VWXYVZVaIbcdIe$f$fggg"l1133 Z ZFay Z$;$B$B6!9fUVi$X$XYYY2333KK&&&cq	' q	' q	' q	' q	' q	' q	' q	' q	' q	' q	' q	' q	' q	' q	'd 	\+;<<<<<s   Z#\\	\rq   c                   | j         j        j                            d          }g }d}t	          | j        j                                                  D ]\  }\  }}|r||                                k    r|}t          | j         
                                |                     |                    }|                    dd           |dz   }	t          |                     |                    }
|
|	z  }||	z  }| j         j        j        |         }|                     |t!          |          ||          }|r|                    ||||j        f           |r)|                    d|                    |                     |S )Nbackend_startup_projectr   T)r   rc  .vcxproj)r   r   r  	get_valuer   r   r  rz   get_basenamer   r   r   mkdirr   target_guidsgen_vcxprojrJ   rE   for_machineinsertpop)r   rp   startup_projectr#  startup_idxr   rk  r   outdirfname
target_dirrelnameprojfile_path	proj_uuid	generateds                  r6   r  zVs2010Backend.generate_projects  s   *3<FFG`aa$&#,TZ-?-E-E-G-G#H#H 	P 	PQv  ?f6I6I6K6K#K#K ..00##F++ F LL$L555:%E!$"5"5f"="=>>J 5(G"UNM(1>tDI((]1C1CYPZ[[I Pw	6;M NOOO  	:OOAx||K88999r8   c                   g }g }g }g }|D ]}| j                             |          r|                    |           2| j                             |          r|                    |           b| j                             |          rD|                    |           |                     |          }||vr|                    |           | j                             |          r|                    |           ||||fS r   )r   	is_headerrE   	is_object	is_sourcelang_from_source_file
is_library)r   srclistr[   headersrS  	languagesr   rw   s           r6   split_sourceszVs2010Backend.split_sources7  s!   	 	" 	"A))!,, "q!!!!!++A.. "q!!!!!++A.. 	"q!!!11!44y(($$T***!,,Q// " q!!!!)33r8   c                6   |                      |          dk    rdS t          j                            |                      |                                        t          j                  }t          j                            dgt          |          z            S )Nr   ..)r   r*   rQ   normpathr_   sepr   r   )r   r   directoriess      r6   r   z"Vs2010Backend.target_to_build_rootM  sv    v&&",,2g&&t':':6'B'BCCII"&QQv{{D6C$4$44555r8   c                    d |D             S )Nc                    g | ]}d |z  S )"%s"r?   )r@   r   s     r6   rB   z1Vs2010Backend.quote_arguments.<locals>.<listcomp>U  s    (((q
(((r8   r?   )r   arrs     r6   r   zVs2010Backend.quote_argumentsT  s    ((C((((r8   rootincludeprojidlink_outputsc                    t          j        |d          }t          j        |d|          }d|z  t          j        |d          _        |sdt          j        |d          _        d S d S )Nr   ProjectReferencer   {%s}ProjectfalseLinkLibraryDependenciesr   r   r   )r   r  r  r  r  igprefs          r6   add_project_referencez#Vs2010Backend.add_project_referenceW  sv    ]4--}R!3WEEE.4vodI&&+ 	J CJBM$ 9::???		J 	Jr8   c                   |                                 |i}|                     |                                          D ]}|                                 | j        |                                          v r6|                     ||          }t
          j                            ||                                 dz             }| j        j	        j
        |                                          }|                     |||           d S )Nr  )r   rW  rJ  r   get_target_dir_relative_tor*   rQ   r   r   r   r  r  )r   r  r   r  r  r   vcxprojtids           r6   add_target_depszVs2010Backend.add_target_depsa  s    }}/''44;;== 	; 	;Czz||t7HHH55c6BBGgll7CJJLL:,EFFG"+8FC&&tWc::::	; 	;r8   UtilityT)conftype
target_exttarget_platformgen_manifestT.Tuple[ET.Element, ET.Element]c                  t          j        ddddd          }t          j        |dddi          }	|s| j        }| j        rt          j                    n| j        g}
d	|
vr|
                    d	           |
D ]T}t          j        |	d
d|dz   |z   i          }|t          j        |d          _	        |t          j        |d          _	        Ut          j        |dd          }t          j        |d          }d|z  |_	        t          j        |d          }| j        dz   |_	        t          j        |dd           t          j        |dd          }|t          j        |d          _	        | j
        r| j
        t          j        |d          _	        t          j        |dd           t          j        |d          }||_	        | j        st          j        |d          }||_	        t          j        |d          }||_	        | j        r| j        t          j        |d          _	        dt          j        |d           _	        d!t          j        |d"          _	        d#t          j        |d$          _	        t          j        |d          }t          j        |d%          }| j        |_	        t          j        |d&          }d'|_	        t          j        |d(          }|d)z   |_	        t          j        |d*          }||_	        |r|t          j        |d+          _	        |d,k    rdnd#t          j        |d-          _	        |rdnd#t          j        |d.          _	        ||fS )/Nr  Build4.03http://schemas.microsoft.com/developer/msbuild/2003)DefaultTargetsToolsVersionxmlnsr   LabelProjectConfigurationsr	  ProjectConfigurationr   r  Configurationr4  PropertyGroupGlobalsr  ProjectGuidr  KeywordProjImportz,$(VCTargetsPath)\Microsoft.Cpp.Default.propsr  ConfigurationTypePlatformToolsetz$$(VCTargetsPath)\Microsoft.Cpp.propsProjectNameRootNamespaceWindowsTargetPlatformVersiontrueUseMultiToolTask	MultiByteCharacterSetr  UseOfMfc_ProjectFileVersionOutDirz.\IntDirr   
TargetName	TargetExtembedEmbedManifestGenerateManifest)r   Elementr   rT   r   r   ry   r}   rE   r   r   r   r   )r   target_nametemp_dirguidr  r  r  r  r  	confitemsr  r}   prjconfglobalgroupguidelemkwtype_configpnamensr  direlemfverr  intdirtnames                            r6   create_basic_projectz"Vs2010Backend.create_basic_projectl  sq    z)6;/d&f &f g g M$g?V5WXX	 	,"mOUYUb&xh&O&Q&Q&Qimiwhx#555'..w7774 	F 	FImI/E%.	C/0Q$RT TG;DBM'?3386EBM':..33 mD/KKK=m<<];	22-&(
dH.]^^^^ mD/QQQ?Gk#677<  	WAEAVBM+'899> 	dH.UVVVV k=99 
} 	b{O<<B!BGk:66A$AF3 wRVRvk+IJJOBHBM+'9::?>IBM+~66;:ABM+z227 mD/::G=*?@@D1DI]7H55FFK]7H55F"T/FKM'<88E$EJ F;Eg{338EQU\E\E\66biBM'?338HT>affZaBM'#566;k""r8   build.RunTargetofnamer  c           	     t   |                      |j        |                                ||                     |                    \  }}|                     |          }|j        s2t          |t          j                  sJ t          |          dk    sJ nt          |t          j                  rJ | 
                    |          }|                     |          \  }}}	|                     |j        d         |	dd          d|d          \  }
}|                     |dd                    |                     |
                    |           t!          j        |d	d
           |                     |           |                     ||           |                     t!          j        |          |           d S )N)r  r  r  r   r   T)r   r   verbose
run_targetr   )r   r  &$(VCTargetsPath)\Microsoft.Cpp.targetsr  )r  rk  r   get_gen_manifestr   commandr   r   AliasTargetr   get_run_target_enveval_custom_target_commandr   add_custom_buildr   r   r   r   add_regen_dependencyr  _prettyprint_vcxproj_xmlElementTree)r   r   r  r  r  r  depend_files
target_envr   cmd_rawwrapper_cmds              r6   gen_run_target_vcxprojz$Vs2010Backend.gen_run_target_vcxproj  s   "77AG=AEIEZEZ[aEbEb 8 d d{ 33F;;~ 	5 fe&788888|$$)))))!&%*;<<<<<0088J ;;FCCMAq'!66v~a7H'RSRTRT+GKQ[?C 7 E ENK !!$chht?S?ST_?`?`6a6a'3 " 5 5 5
 	dH.WXXXX!!$'''T6***%%bnT&:&:FCCCCCr8   build.CustomTargetc                   |j         t          j        u r| j        }n| j        }|                     |j        |                                |||                     |                    \  }}d|_	        | 
                    |d          \  }}}	|                     |d          }
t          j                            | j                                        |                     |                    }|                                }|                     |j        d         |	dd          |||j        r|d         nd |j        r|d         nd d|j        |j        	  	        \  }}|j        rN||                     t          j                            | j                                        d                    gz  }|                     |dd                    |                     |                    |d	d          |z   |
z   ||j         
           t=          j        |dd           |                      ||           | !                    |           | "                    ||           | #                    t=          j$        |          |           d S )Nr  r  r  r  Tr   r   )r   extra_bdepsr   feedr   r   r  outofdate.filecustom_targetr   r^   )r   outputsverify_filesr  r  r  )%r  r   r  r  rT   r  rk  r   r  absolute_pathsr  r   r*   rQ   r   r   r   r    get_transitive_build_target_depsr   r  r   r-  r   consolebuild_always_stalenonexistent_fileget_scratch_dirr   r   r   r   r   r!  r  r"  r#  )r   r   r  r  rT   r  r  srcs
ofilenamesr   r$  r   r,  r'  r   s                  r6   gen_custom_target_vcxprojz'Vs2010Backend.gen_custom_target_vcxproj  s   !444*HH}H"77AG=AHPEIEZEZ[aEbEb	 8 d d{ !%"&"A"A&$"O"Oz333FDAA 7<< 0 > > @ @$BUBUV\B]B]^^==??226>!3Dc!""g;C?JLRN;d:a==`dCI;8XQTXCG7=z;A> 3 K KQ $ 	E400d>N>^>^>`>`1A2C 2C D D E EJdOSXXd>R>RS^>_>_5`5`#.rss#3d#:\#IS]/5/H+H 	 	J 	J 	J 	dH.WXXXX//===!!$'''T6***%%bnT&:&:FCCCCCr8   build.CompileTargetc           	        |j         t          j        u r| j        }n| j        }|                     |j        |                                |||                     |                    \  }}t          j
        |dd           |                     |          g|_        g |_        |                     ||           |                     |           |                     ||           |                     t          j        |          |           d S )Nr+  r  r  r  )r  r   r  r  rT   r  rk  r   r  r   r   compile_target_to_generatorr  r[   r   r!  r  r"  r#  )r   r   r  r  rT   r  r  s          r6   gen_compile_target_vcxprojz(Vs2010Backend.gen_compile_target_vcxproj  s   !444*HH}H"77AG=AHPEIEZEZ[aEbEb	 8 d d{
 	dH.WXXXX <<VDDE//===!!$'''T6***%%bnT&:&:FCCCCCr8   c                    |                     d          d         }|t          j        v rdS |t          j        v rdS t	          d| d          )Nr]   r^   ccppz*Could not guess language from source file )r_   r   
c_suffixescpp_suffixesr   )clsrb   rc   s      r6   r  z#Vs2010Backend.lang_from_source_file  sV    iinnR )&&&3)(((5P#PPPQQQr8   c                @    ||v r|                      |||           d S d S r   )use_pch)r   pch_sourcesrw   inc_cls       r6   add_pchzVs2010Backend.add_pch#  s1    ;LLdF33333 r8   c                l    t          j        |d          }d|_        |                     |||           d S )NPrecompiledHeaderCreater   r   r   add_pch_files)r   rG  rw   rH  pchs        r6   
create_pchzVs2010Backend.create_pch'  s9    mF$788;f55555r8   c                    t          j        |d          }d|_        |                     |||          }t          j        |d          }|dz   |_        d S )NrK  UseForcedIncludeFilesz;%(ForcedIncludeFiles)rM  )r   rG  rw   rH  rO  headerpch_includes          r6   rF  zVs2010Backend.use_pch,  sX    mF$788##Kv>>mF,@AA!$<<r8   c                   t           j                            ||         d                   }t          j        |d          }||_        t          j        |d          }d| d|_        t          j        |d          }d| d|_        |S )Nr   PrecompiledHeaderFilePrecompiledHeaderOutputFilez$(IntDir)$(TargetName)-z.pchProgramDataBaseFileName.pdb)r*   rQ   rq  r   r   r   )r   rG  rw   rH  rT  pch_filepch_outpch_pdbs           r6   rN  zVs2010Backend.add_pch_files3  s    !!+d"3A"677=)@AA -(EFF;;;;
 -(ABB;;;;r8   c                z    |dd                               d          rdS |dd                               d          S )Nr   	fsanitizeTMrC   )r   entrys     r6   "is_argument_with_msbuild_xml_entryz0Vs2010Backend.is_argument_with_msbuild_xml_entryJ  sC     9,, 	4QRRy##C(((r8   c                R   g }||                                          D ]\}|                     |          r|dk    r|                    |           4|                    |                     |                     ]d                    |          t          j        |d          _        d S )N%(AdditionalOptions)r   AdditionalOptions)	to_nativerc  rE   escape_additional_optionr   r   r   r   )r   rw   r   	file_argsr9   rG   s         r6   add_additional_optionsz$Vs2010Backend.add_additional_optionsR  s    T?,,.. 	@ 	@C66s;; ,,,C    D99#>>?????Bxx~~k#677<<<r8   rb   r|   rT   c                \   |                     d          d         }t          j        j                            |d           }||                                v rt          j                    D ]q}||         |         \  }}	}
d| d| d}|t          j        |d|          _	        |	t          j        |d|          _	        |
t          j        |d	|          _	        rd S d
t          j        |d          _	        dt          j        |d          _	        dt          j        |d	          _	        d S )Nr]   r^   !'$(Configuration)|$(Platform)'=='r  'PreprocessorDefinitions	ConditionAdditionalIncludeDirectoriesrf  z$(NMakePreprocessorDefinitions)z$(NMakeIncludeSearchPath)z$(AdditionalOptions))
r_   r   ra   r9  r  r   ry   r   r   r   )r   r   rb   r|   rT   rc   rw   r}   defspathsopts	conditions               r6   $add_project_nmake_defs_incs_and_optsz2Vs2010Backend.add_project_nmake_defs_incs_and_opts^  s>    iinnR "155c4@@9>>@@@@ &FHH a a	&LT&RS\&]#ud[9[[x[[[	bfk+DPYZZZ_glk+IU^___d\`k+>)TTTYYa a JkBM+'@AAFNiBM+'EFFKCYBM+':;;@@@r8   c                   g }||         D ]F}|dk    r|                     |           |                     |                     |                     Gd                    |          t          j        |d          _        d S )N%(PreprocessorDefinitions)r   rn  )rE   escape_preprocessor_definer   r   r   r   )r   rw   r   file_definesdefinesdefines         r6   add_preprocessor_definesz&Vs2010Backend.add_preprocessor_defines{  s    "4( 	H 	HF555v&&&&t>>vFFGGGGEHXXgEVEVk#<==BBBr8   c                p    ||         }d                     |          t          j        |d          _        d S )Nr   rq  )r   r   r   r   )r   rw   r   file_inc_dirsdirss        r6   add_include_dirszVs2010Backend.add_include_dirs  s2    T"JM((SW..k#ABBGGGr8   r|  c                r    t                               ddddddddd	          }|                     |          S )
N%25%24%40%27%3B%3F%2Az\\)%$@rm  r   ?*r   )rJ   	maketrans	translate)r|  tables     r6   ry  z(Vs2010Backend.escape_preprocessor_define  sK     EE$)E &,- - . . &&&r8   optionc                    t                               ddddddddd	          }|                     |          } |                     d
          r| d
z  } d|  dS )Nr  r  r  r  r  r  r  z%20)r  r  r  rm  r   r  r  r   r   r5  )rJ   r  r  endswith)r  r  s     r6   rh  z&Vs2010Backend.escape_additional_option  sw     EE$)ETY[ [ \ \!!%((
 ??4   	dNF6}}}r8   c                   g }g }g }| D ]}|                     d          r9|dd         }||v r|                    |           |                    |           P|                     d          r|                    |           {|                    d          s|                    d          r||vr|                    |           |                    |           |||fS )z
        Split a list of link arguments into three lists:
        * library search paths
        * library filenames (or paths)
        * other link arguments
        z	/LIBPATH:	   N)r   -z.libz.a)rC   removerE   r  )r9   lpathslibsotherrG   lpaths         r6   split_link_argszVs2010Backend.split_link_args  s     	" 	"C~~k** "ABB
 F??MM%(((e$$$$
++ 	"S!!!! f%% "d);); "d??KK$$$S!!!!tU""r8   c                   |j                                         D ]\  }}|dv r|c S t          |j                  dk    r<| j        j        j         |j                                                 D ]\  }}|dv r|c S t          d          )N>   r@  rA  r   zGCould not find a C or C++ compiler. MSVC can only build C/C++ projects.)r   rz   r   rS  r   r   r  r   )r   r   rw   r@  s       r6   _get_cl_compilerzVs2010Backend._get_cl_compiler  s    '--// 	 	GD!|## $ v~""+4>v?QRXXZZ  a<''HHH (fgggr8   treeET.ElementTreec                J   |dz   }|                     |dd           t          j        j                            |          }t          |dd          5 }|                     |                                           d d d            n# 1 swxY w Y   t          ||           d S )Nry  r,  T)r.  xml_declarationr+  r-  )rn  xmldomminidomparser/  toprettyxmlr   )r   r  r  
ofname_tmpdocr   s         r6   r"  z&Vs2010Backend._prettyprint_vcxproj_xml  s    c\


:
FFF go##J//*cG444 	(HHS__&&'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(VZ00000s   (BBBc                .   g }g }g }	d |j                                         D             }
d |j         D             }d |j         D             }|j                                         D ]\  }}||
v r|
|xx         t          j        ||| j                  z  cc<   |
|xx         |                    || j        |j                  z  cc<   |
|xx         |                    || j        |j                  z  cc<   | j        j        |j	                 
                    |j        i                                           D ]\  }}||
v r|
|xx         |z  cc<   | j        j        |j	                                                 D ]\  }}||
v r|
|xx         |z  cc<   |
                                D ]=}|
|xx         |                     |t          | d|j	                            z  cc<   >|
                                D ]}|g dz  }|d |D             z  }t!          |                                          D ]}t!          |                                          D ]}t&          j                            |                                |          }	 |                    dt&          j                            ||          z              |                    d|                     ||j                  z              # t4          $ r8 |                    dt&          j                            |          z              Y w xY w|                                D ]e}t&          j                            |                                |          }|                    d|                     ||j                  z              f|j                                        D ]\  }}||
v r|
|xx         |z  cc<   |
                                D ]\}|                     |                     |          |                     |                    g}|j         r|d	|gz  }|d
 |D             z  }]|
                                D ]	\  }}|d d          D ]}|!                    d          s|dk    rT|
|         "                    |           |dk    r|}n
|dd          }|||         vr||                             |           q|!                    d          s|dk    rl|
|         "                    |           |dk    r|}n
|dd          }|||         vr||                             |           ||	vr|	                    |           t!          |#                                          D ]}|j$        dk    r|%                    |&                                          }|D ]}|!                    d          r9|dd          }||v r|"                    |           |                    |           P|!                    d          r$|dd          }||	vr|	                    |           |                    |           d|v r|                    d           ||
f||f|	|ffS )Nc                >    i | ]\  }}||                                 S r?   )compiler_args)r@   lr@  s      r6   
<dictcomp>z?Vs2010Backend.get_args_defines_and_inc_dirs.<locals>.<dictcomp>  s(    /j/j/jA1??3D3D/j/j/jr8   c                    i | ]}|g S r?   r?   r@   r  s     r6   r  z?Vs2010Backend.get_args_defines_and_inc_dirs.<locals>.<dictcomp>  s    888!2888r8   c                    i | ]}|g S r?   r?   r  s     r6   r  z?Vs2010Backend.get_args_defines_and_inc_dirs.<locals>.<dictcomp>  s    9991B999r8   _argsmachine)re  rx  %(AdditionalIncludeDirectories)c                    g | ]}d |z   S -Ir?   r@   rG   s     r6   rB   z?Vs2010Backend.get_args_defines_and_inc_dirs.<locals>.<listcomp>  s    HHHCTCZHHHr8   r  r]   c                    g | ]}d |z   S r  r?   r  s     r6   rB   z?Vs2010Backend.get_args_defines_and_inc_dirs.<locals>.<listcomp>,  s    666CTCZ666r8   z-Dz/Drx  r
   )r  /Ir  openmpz/Gw)'r   rz   get_base_compile_argsr   get_option_compile_args
subprojectget_option_std_argsr   projects_argsr  r9  global_argsr  get_target_optionr   rJ  ri  get_include_dirsget_incdirsr*   rQ   r   
get_curdirrE   r   r   
ValueErrorr  get_extra_build_dirs
extra_argsr   r   implicit_include_directoriesrC   r  get_external_depsrk  unix_args_to_nativeget_compile_args)r   r   compilergenerated_files_include_dirsproj_to_src_rootproj_to_src_dirrx   target_argstarget_definestarget_inc_dirsri  rz  r  r  compr9   rw   r[  r   curdir
t_inc_dirsrG   r|  inc_dird_compile_argss                            r6   get_args_defines_and_inc_dirsz+Vs2010Backend.get_args_defines_and_inc_dirs  s    0k/jQWQaQgQgQiQi/j/j/j	88v'788899(8999 '--// 	A 	AGAtI~~!	 ?D$"2!4 !4 4! < <D,f.?!A !A A! 8 8D,f.?!A !A A z/0BCGGHY[]^^ddff 	% 	%GAtI~~!$ z-f.@AGGII 	% 	%GAtI~~!$ NN$$ 	u 	uDdOOOt55fi4`f`r>s>s>stttOOOO$$&& !	L !	LD mmmmD HH+GHHHHD f557788 L L!!--//22 E EAW\\!,,..!<<FED27<<8H&+Q+Q$QRRRD4<<+N+N$NOOOO% E E ED27+;+;F+C+C$CDDDDDE //11 L LAW\\!,,..!<<FKKt||FFM'J'J JKKKKLL  (..00 	% 	%GAtI~~!$ $$&& 	7 	7D,,t'B'B6'J'J'+':':6'B'BD D EJ2 5sO44
66:6666DD !(( 	8 	8GAtAAAw 8 8>>,// 83:V3V3VaL'',,,:::!$!$QRR\!_44$Q..v666^^L11 8S<]5]5]aL'',,,???"%"%abb'mA&666%a(//888o55'..w777/86 &224455 	0 	0A v!!!)!=!=a>P>P>R>R!S!S) 0 0C~~l33 0!$QRR!^33*11&999&--f555555 0"%abb'"/99+227;;;#**3////Ju%%%Y'.,)G/[hIiiis   A'K66?L8	7L8	optimization_levelr	  r  c                    |                      |          }||                     |          z  }||                     |          z  }|S r   )get_optimization_argsget_debug_argssanitizer_compile_args)r  r  r	  r  rx   s        r6   get_build_argszVs2010Backend.get_build_argse  sL    334FGG
h--e444
h55h???
r8   r~   	list[str]T.Tuple[str, str, str]c                *   g d}d}d}d}| D ]                     d          r|dd          dz   z  }(t          fd|D             d           }|r|t          |          d          dz   z  }d                     d          r|d	z   z  }|||fS )
N)r  r  z-isystemz/clang:-isystemz/imsvcz/external:Ir   z,$(VC_IncludePath);$(WindowsSDK_IncludePath);r  r
   r   c              3  F   K   | ]}                     |          |V  d S r   ra  )r@   optrG   s     r6   	<genexpr>z6Vs2010Backend._extract_nmake_fields.<locals>.<genexpr>  s5      !\!\#WZH[H[!\#!\!\!\!\!\!\r8   )r  r   r   )rC   rj  r   )r~   include_dir_optionsrr  rs  additional_opts	opt_matchrG   s         @r6   r{   z#Vs2010Backend._extract_nmake_fieldsv  s    
 
 
 >& 	1 	1C~~l++ 1ABB#% !\!\!\!\1D!\!\!\^bcc	 1SY1C77EE^^J// 1#sSy0Oe_--r8   T.Tuple[str, str]c                    t          j                    } t          |           dk    st          |           dk    sJ t          j                            | d                   }t          j                            | d                   }t          |           dk    r<|d| d         z   dz   z  }|dt          j                            | d                   z   z  }|dz  }||fS )Nr   r
   r   z "r5  r   z;C:\Windows\system32;C:\Windows)r   get_meson_commandr   r*   rQ   dirnamerq  )meson_cmd_listexe_search_pathsnmake_base_meson_commands      r6   1get_nmake_base_meson_command_and_exe_search_pathsz?Vs2010Backend.get_nmake_base_meson_command_and_exe_search_paths  s    !355N##q((c..A.AQ.F.F.F.F 7??>!+<==#%7#3#3N14E#F#F ~!##
 %q0A(AD(HH$bgoonQ6G&H&H HH& 	@@ )*:;;r8   r  proj_to_build_rootrs   rh   c           
        t          j        |dd           t          j        |dd           t          j        |dd          }t          j        |dddd	d
           t          j        |dd           t                                          \  }	}
t          j                            |d          }t          j                    }|D ]}t          j        |dd| d| d          }t          j        	                    | j
                  \  }}|d d         |z   }t          t          j                            ||                    }| dt          j        |d          _        | dt          j        |d          _        |	 d| dt          j        |d          _        d|j         | t          j        |d          _        ||         |                                         }|	 d| d|	 d| dt          j        |d          _        |	 d| dt          j        |d          _        |
t          j        |d          _        |rt||         }t                              |          \  }}}|t          j        |d           _        |t          j        |d!          _        |t          j        |d"          _        t          j        |d#           t          j        |d$           t          j        |d%           t          j        |d&           t          j        |d'           t          j        |d(           t          j        |d)           d S )*NImportGroupExtensionSettingsr  SharedPropertySheetsr  z3$(UserRootDir)\Microsoft.Cpp.$(Platform).user.propsz=exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')LocalAppDataPlatform)r  rp  r  r  
UserMacrosr  rl  r  rm  ro  r   r  r  z compile -C "r5  NMakeBuildCommandLine	$(OutDir)NMakeOutputz" --clean && NMakeReBuildCommandLinez	" --cleanNMakeCleanCommandLineExecutablePathNMakePreprocessorDefinitionsNMakeIncludeSearchPathrf  IncludePathExternalIncludePathReferencePathLibraryPathLibraryWPath
SourcePathExcludePath)r   r   r2   r  r*   rQ   r   r   ry   r_   src_to_buildrJ   r   rk  r   r{   )r   r  rT   r  rp   r   r  rs   prop_sheets_grpr  r  )proj_to_multiconfigured_builds_parent_dirr  r}   per_config_prop_groupr   build_dir_tailmeson_build_dir_for_buildtypeproj_to_build_dir_for_buildtyper~   primary_src_type_build_argspreproc_defs	inc_pathsother_compile_optss                           r6   &add_gen_lite_makefile_vcxproj_elementsz4Vs2010Backend.add_gen_lite_makefile_vcxproj_elements  s!    	dM1DEEEE
dM::::-mCSTTT
ox=s?;Q24 24 	5 	5 	5 	dO<@@@@7D7v7v7x7x4	!#3 57GLLASUY4Z4Z1 '/&O&Q&Q#4 '	@ '	@I$&M$  TS  {D  TS  TS  GO  TS  TS  TS  %T  %T  %T!"$'--0A"B"BQ,:3B3,?),K).1"',,?h  kH  3I  3I  /J  /J+EdBhBhBhBM/::?EdBhBhBhBM/::?Tl  R^  R^  |[  R^  R^  R^BM/1HIINGlSYS^Gl`jGlGlBM/??D",Y"7"H Wo  Tu  Tu  ~]  Tu  Tu  lD  Tu  Tu  Sr  Tu  Tu  TuBM/1JKKPTl  Rf  Rf  |[  Rf  Rf  RfBM/1HIINJZBM/1ABBG d.ABR.S+>K>a>ab}>~>~;i);\h35STTYV_35MNNSQc35HIIN M/???M/1FGGGM/AAAM/???M/@@@M/>>>M/????O'	@ '	@r8   r  c           
                                |          }|                     j                  }                     |          }dt	          j        |d          _        dt	          j        |d          _        d|v rdt	          j        |d          _        t	          j        |d          }t	          j        |d          }d	d
 |                                D             v rdt	          j        |d          _                             |d          }|	                    | j
                  }|dk    r5dt	          j        |d          _        dt	          j        |d          _        n|dk    r5dt	          j        |d          _        dt	          j        |d          _        no|dk    r5dt	          j        |d          _        dt	          j        |d          _        n4dt	          j        |d          _        dt	          j        |d          _        d|v rdt	          j        |d          _        d|v rdt	          j        |d          _        nXd|v rdt	          j        |d          _        n9d|v rdt	          j        |d          _        nd t	          j        |d          _        d!|v rd"t	          j        |d          _        n=d#|v rd$t	          j        |d          _        nd%|v rd&t	          j        |d          _        d'|j        v r j        j                            |t          d(|j        )                    }|d*k    rd+t	          j        |d,          _        n\|d-k    rd.t	          j        |d,          _        n;|d/k    rdt	          j        |d,          _        nd0t	          j        |d,          _        t#          |          d1k    rB|                    d2           d3                    |          t	          j        |d4          _        d5                    |	          t	          j        |d6          _        |                    d7           d5                    |          t	          j        |d8          _        dt	          j        |d9          _        t)          j        d:                     |d;                    }|d<k    rd=n!d>t-          d?t/          |          z             z   }|t	          j        |d@          _                             |dA          rdt	          j        |dB          _        t1          |          }dC|v rdDt	          j        |dE          _        n\dF|v rdGt	          j        |dE          _        n=dH|v rdIt	          j        |dE          _        ndJ|v rdKt	          j        |dE          _        dL|v rdt	          j        |dM          _        dN|v rdOt	          j        |dP          _        ndQ|v rdRt	          j        |dP          _        dS|v sdH|v rdTt	          j        |dU          _        ndJ|vrdVt	          j        |dU          _                             |
|           t	          j        |dW          }t	          j        |d8           t	          j        |dX          }|                                }||                     j                  z  } j        r                     |           ndt	          j        |dY          _        t;          |t<          j                  st;          |t<          j                   r||!                    |          z  }| j        "                    ||j#        |j                  z  }| j        $                    ||j                  z  }| j        j        %                    |j        |&                                          z  }||j'        z  }|                                D ]O}|j(        dZk    rdt	          j        |d          _        (|)                    |*                                           P|+                                D ]}t;          |t<          j                  rd|                                D ]O}|j(        dZk    rdt	          j        |d          _        (|)                    |*                                           P||,                    | j        |j#                  z  } -                    |.                                          \  }}}|+                                D ]"}t;          |t<          j/                  r|}n$ j        j0        |1                                         }td          j3                            | 4                    |                    }||j5        v r|j6        d[k    rto          |j8        d\          r{|9                    d]          }|j:        D ]} | ;                                D ]}! j        <                    |!          ru =                    || |!          }"d^td          j3        >                    |"          d?         d?d          z   }#|                    |"d t#          |#                    d_z              |j?        D ]}! j        <                    |!          ri @                     A                    |           B                    |                    }$ C                    |||!|$          }%|                    |%           |D                     E                    |                     n||F                    |          z  } G                    ||          }&td          j3                            |&|1                                d`z             }' j        j        jH        |1                                         }( I                    ||'|(d	a            jJ        |1                                                             |1                                           	||vr|                    |           $ K                    |          D ]>})|                     @                    |) B                    |                               ?t#          |          d1k    rP fdb|D             }*|*                    d2           d3                    |*          t	          j        |d4          _        t#          |          d1k    rC|L                    d1dc           d5                    |          t	          j        |dd          _        t#          |          d1k    rB|                    de           d5                    |          t	          j        |df          _        t	          j        |dg          }+dh|M                                 |+_        t	          j        |di          },||,_        t;          |t<          jN        t<          jO        f          r@|P                                r,|P                                t	          j        |dj          _        t;          |t<          jN        t<          jO        f          r^|jQ        rWtd          j3                            ||jQ        R                     jS                            }-|-t	          j        |dk          _         j        r%t	          j        |dl          }.dh|j(         dm|._        t	          j        |dn          }/|j        t          jU        u r|V                                }0n jW        V                                }0|0dok    rdp|/_        nY|0dqk    st          |0          rdr|/_        n<|0dsk    rdt|/_        n.|0duk    rdv|/_        n |0dwk    rdx|/_        nt          dy|0z             dt	          j        |dz          _                             |d{          d|k    }1|1rdt	          j        |d}          _        d S d S )~Nr  WholeProgramOptimizationDefaultBasicRuntimeChecksz/INCREMENTAL:NOLinkIncrementalItemDefinitionGroup	ClCompileTc              3  ,   K   | ]}|j         d k    V  dS )r  N)rk  )r@   r  s     r6   r  zBVs2010Backend.add_non_makefile_vcxproj_elements.<locals>.<genexpr>  s)      QQsSX)QQQQQQr8   r  OpenMPSupportb_vscrtmddUseDebugLibrariesMultiThreadedDebugDLLRuntimeLibrarymtMultiThreadedmtdMultiThreadedDebugMultiThreadedDLLz/fsanitize=address
EnableASANz/ZIEditAndContinueDebugInformationFormatz/ZiProgramDatabasez/Z7OldStyler   z/RTC1EnableFastChecksz/RTCuUninitializedLocalUsageCheckz/RTCsStackFrameRuntimeCheckrA  cpp_ehr  aAsyncExceptionHandlings
SyncCThrownoneSyncr   re  r   rf  r   rq  rx  rn  FunctionLevelLinkingrJ   warning_level
everythingEnableAllWarningsLevelr   WarningLevelwerrorTreatWarningAsErrorz/OxFullOptimizationz/O2MaxSpeedz/O1MinSpacez/OdDisabledz/OiIntrinsicFunctionsz/Ob1OnlyExplicitInlineInlineFunctionExpansionz/Ob2AnySuitablez/OsSizeFavorSizeOrSpeedSpeedResourceCompileLinkGenerateDebugInformationr  msvcz<19.00.23918Fr]   .objr  )r  c                :    g | ]}                     |          S r?   )rh  )r@   rG   r   s     r6   rB   zCVs2010Backend.add_non_makefile_vcxproj_elements.<locals>.<listcomp>  s'    RRR3D11#66RRRr8   z%(AdditionalLibraryDirectories)AdditionalLibraryDirectoriesz%(AdditionalDependencies)AdditionalDependencies
OutputFiler  	SubSystemImportLibraryModuleDefinitionFilerY  rZ  TargetMachinewin32
MachineX86r   
MachineX64r  
MachineARMr  MachineARM64r  MachineARM64ECz*Unsupported Visual Studio target machine: SuppressStartupBannerr}   r	  SetChecksum)Zr  get_optimization_link_argsr  r   r   r   r   r  r  get_crt_valr}   r   r   r   get_option_for_targetr   r  r   rE   r   TcastrJ   intrI   generate_lang_standard_infor  r	  generate_debug_informationr   r   StaticLibrarySharedModuleget_std_shared_module_link_argsget_project_link_argsr  get_global_link_argsget_external_link_argsget_language	link_argsrk  extend_directget_link_argsrN  get_option_link_argsr  rg  r   r  r   r*   rQ   get_target_filename_for_linkingrQ  idr   versionextract_all_objectsr   r   r  get_target_generated_dirsplitextr  r   r   r   object_filename_from_sourceextendflatten_object_listget_link_whole_forr  r  r  r   $get_custom_target_provided_librariesr  get_filenameSharedLibraryrT  get_import_filenamevs_module_defsr   r   r   r  r  rT   rZ   r   )2r   r  r  r   rT   	subsystemrx   r  r  r  ri  r  buildtype_link_argsr   compilesclconf
vscrt_type	vscrt_valehr<  rF   resourcecompilelinkextra_link_argsr  r[  additional_libpathsadditional_linksrG  lobjlinknamer  genrb   rQ   gen_src_extr   rel_objtrelpathtvcxprojr  libr9   rb  subsysr   pdbtargetmachinetargetplatformaddchecksums2   `                                                 r6   !add_non_makefile_vcxproj_elementsz/Vs2010Backend.add_non_makefile_vcxproj_elements  s    ((00&AA$BSTT ((00 GNk#=>>C@Ik#788= 333AHBM+'899> ='<==x55QQf6N6N6P6PQQQQQ:@BM&/227++FI>>
((T^DD	CIBM+':;;@;RBM&"23388$CJBM+':;;@;JBM&"23388%CIBM+':;;@;OBM&"23388CJBM+':;;@;MBM&"2338:--<BBM+|449JCTBM&":;;@@j  CTBM&":;;@@j  CMBM&":;;@@CIBM&":;;@j  ?QBM&"677<<
""?]BM&"677<<
""?WBM&"677< F$$$!*@@S[ekewIxIxIxyyBSyyBIf&9::??sBNf&9::??vBIf&9::??BHf&9::?{a5666>Ahh{>S>SBM&"566;EHXXoE^E^f<==B:;;;@C@X@Xf788==Cf455:ud&<&<V_&U&UVV/</L/L++RY\_`adghudvdv`v\w\wRw5Bfn--2!!&(33 	G@FBM&"788=$Z00G9?BM&.1166g9CBM&.1166g9CBM&.1166g9CBM&.116G?EBM&"677<WDXBM&";<<AAwDQBM&";<<AGu//=CBM&"455::'!!=DBM&"455:((F;;;-2CDD
o'@AAA }Xv.."00228>>t?PQQQ: 	K++D1111CJBM$ :;;@&%"566 	O&%"455 T8#K#KF#S#SStz??&J[]c]opppO tz>>xI[\\\O t/8OO"H$9$9$;$; =  = =O v//O//11 G G 8x''BHBM&/::??#11#2C2C2E2EFFFF,,.. O Oa!455 O 2244 O O8x//JPBM&/BBGG+99#:K:K:M:MNNNN 	888AQSYSdeeeCGCWCWXgXqXqXsXsCtCt@	. ((** .	6 .	6A!U455 6z)!((**5w||D$*N*Nt*T*TUUHF---;&((_X=M~-^-^(--e44A  !y Z Z#&??#4#4 Z ZC#/99#>> Z'+'D'DQS'Q'Q.1BG4D4DT4J4J14Mabb4Q.Q / 6 6t<Nc+>N>N=N<N7ORX7X Y Y Y	Z  !y < <+55c:: <15d>Y>YZ[>\>\>B>Q>QRS>T>T2V 2V.&*&F&Fq(TWYk&l&lG+227;;;#**4+C+CA+F+FGGGG $x'B'B8'L'LLO  ::1fEE7<<!((**z2IJJ&/<QXXZZH**43T*RRR (9@@LLLL #333$++H555<<VDD 	T 	TC##DLLd6I6I&6Q6Q$R$RSSSS!##RRRR/RRRDKK.///<?HHTNNBM$ 3449"##a''&&q*KLLLGJxxPcGdGdBM$ >??D  1$$##$?@@@ADJZA[A[BM$ 899>dL118!4!4!6!688
t[11fu2E4DEFF 	U6KeKeKgKg 	U 9?8R8R8T8TBM$005fu2E4DEFF 	K$ K',,tV-B-R-RSWSd-e-effCJd$:;;@: 	5-&?@@C46;444CHdO<<!444%^^--NN!]0022NW$$!-Mu$$(<^(L(L$!-Mu$$!-Mw&&!/My((!1M !MP^!^___<Bd3449,,V[AAWL 	=6<BM$..333	= 	=r8   	gen_files.T.Union[build.Target, build.CustomTargetIndex]c                   t           j                            | j                  \  }}|d d         t	          j                    d         z   }|                     |          }t           j                            |d          }t          t           j                            ||                    }t           j        	                    t           j                            || 
                    |                              }	t          |          D ]E\  }
}t           j        	                    t           j                            |	|                    ||
<   Fd S )Nr  r   r  )r*   rQ   r_   r  r   ry   r   r   rJ   r  r   r   )r   r  r   r   r  r  r  r  r  $relocate_to_concrete_builddir_targetidx	file_paths               r6   3relocate_generated_file_paths_to_concrete_build_dirzAVs2010Backend.relocate_generated_file_paths_to_concrete_build_dir  sK    gmmD,=>>N(6ss(;h>g>i>ijk>l(l%!66v>>46GLLASUY4Z4Z1*-bgll;d  gD  /E  /E  +F  +F'/1w/?/?Mlnr  oB  oB  CI  oJ  oJ  AK  AK  0L  0L,'	22 	m 	mNCW--bgll;_aj.k.kllIcNN	m 	mr8   c                   t          j        d|j         d           d}g | j        |                                <   | j        r t          |t          j                  sdS d}n4t          |t          j	                  r#d}|j
                            d          d         }nt          |t          j                  rd	}nt          |t          j                  rd
}nt          |t          j                  r|                     |||           dS t          |t          j                  r|                     |||           dS t          |t          j                  r|                     |||           dS t)          d|                                           |                     |j                  \  }}}	}
|                     |          r|                     ||          }|j        t6          j        u r| j        }n| j        }t>          j         !                    |"                                          }| #                    |d         |                                |||d         || $                    |                    \  }}| %                    ||          \  }}}|                     |          \  }}}}|                     |          \  }}}}||z  }||z  }| &                    |          }tN          (                    || j)        | j        | j*                  }t          |t          j	        t          j        t          j        t          j+        f          s
J d            | ,                    |          }t>          j         -                    || j.                  }t>          j         -                    || /                    |                    }| 0                    ||||||          \  \  }} \  }!}"\  }#}$| j        r;|J tc          |j        |          }%| 2                    |||d         ||||%           n| 3                    ||||||||!|#| 
  
         ti          j5        |d          }&ti          j5        |&dt>          j         -                    |tl                               d }'i }(| 7                    |          rdD ]})|8                    |)          }*|*s|j9        dk    rtu          |*          dk    rt>          j         -                    || ;                    ||)|*d                             }+t>          j         <                    t>          j         -                    ||*d                             },n(t>          j         -                    ||*d                   }+d },|*d         |+|)|,g|(|)<   |*d         d |)d g|(|)<   g }-tu          |          tu          |          z   tu          |j=                  z   tu          |(          z   dk    r| j        r|r| >                    ||           ti          j5        |d          }.|D ]]}/t>          j         -                    ||/?                    | j.                            }0 |'|0|-          rti          j5        |.d|0           ^|D ]%}/ |'|/|-          rti          j5        |.d|/           &|j=        D ]]}/t>          j         -                    ||/?                    | j.                            }0 |'|0|-          rti          j5        |.d|0           ^|(@                                D ]K}t>          j         -                    ||d                   }1 |'|1|-          rti          j5        |.d|1           Lg }2tu          |          tu          |          z   tu          |(          z   dk    r| j        r;t          ||                                |%          }3|r| >                    ||           ti          j5        |d          }4|D ]&}5t>          j         -                    ||5?                    | j.                            }0 |'|0|2          rti          j5        |4d|0          }6| j        r| B                    |6|0|3|           ~tN          C                    |5          })| D                    |(|)|6           | E                    |)|6|            | F                    |)|6|"           | G                    |)|6|$           d| H                    |||5          z   ti          j5        |6d          _I        (|D ]}5 |'|5|2          rti          j5        |4d|5          }6| j        r| B                    |6|5|3|           GtN          C                    |5          })| D                    |(|)|6           | E                    |)|6|            | F                    |)|6|"           | G                    |)|6|$           t          jK        |L                                |5          }5d| H                    |||5          z   ti          j5        |6d          _I        |(M                                D ]\  })}|d         }7|7r |'|7|2          rti          j5        |4d|7          }6| N                    |(|)|6           | j        r| B                    |6|7|3|           i| E                    |)|6|            | F                    |)|6|"           |(|)         d         },|,r$t          jP        |$          }8|,g|8|)         z   |8|)<   n|$}8| G                    |)|6|8           g }9| Q                    ||          d         D ].}:t          |:t                    sJ |9S                    |:           /|D ]}:|9S                    |:           d |D             };g }<tu          |	          tu          |9          z   tu          |;          z   dk    rti          j5        |d          }=|	D ]]}5t>          j         -                    ||5?                    | j.                            }0 |'|0|<          rti          j5        |=d|0           ^|9|;z   D ]%}5 |'|5|<          rti          j5        |=d|5           &ti          j5        |dd           | T                    |           | j        s| U                    ||           | V                    ti          jW        |          |           | jX        jY        jZ        [                    t          d                     d!k    r| ]                    ||           dS )"NzGenerating vcxproj r]   WindowsFMakefileApplication,r   rl  DynamicLibraryTzUnknown target type for r   )r  r  r  r  r  r  zfor mypyr   r   r   c                    t           j                            t           j                            |                     }||vr|                    |           dS dS )NTF)r*   rQ   normcaser  rE   )rQ   lis
normalizeds      r6   path_normalize_addz5Vs2010Backend.gen_vcxproj.<locals>.path_normalize_addy  sN    ))"'*:*:4*@*@AAJ$$

:&&&tur8   )r@  rA  rR  	CLInclude	CLCompile	$(IntDir)ObjectFileNamer  c                <    g | ]}|                     d           |S ))rS  z.res)r  )r@   objs     r6   rB   z-Vs2010Backend.gen_vcxproj.<locals>.<listcomp>  s*    !`!`!`#N^A_A_!`#!`!`!`r8   Objectr  r  r  rz  r{  )^r   r	  rk  r   r   r   r   r   rO  rT  win_subsystemr_   rl  r  r   r:  rM  r(  CompileTargetr>  r   r  r  r[   is_unitygenerate_unity_filesr  r   r  r  rT   r*   rQ   r|  r  r  r  r   r  r2   r  r  r  rm  r   r   r   r   r  ro   r  r  r   r   r   target_uses_pchget_pchrx  r   create_msvc_pch_implementationr  extra_filesr  r   rJ  r   rv  r  rI  rj  r}  r  r}  r   r   from_built_file
get_subdirrz   rP  copydeepcopyr  rJ   rE   r!  r  r"  r#  r   r   r  r  r   gen_vcxproj_filters)>r   r   r  r  rp   r  r  r[   r  rS  
_languagesrT   	tfilenamer  r  generated_filesr   r  gen_srcgen_hdrsgen_objs
_gen_langs
custom_srccustom_hdrscustom_objs_custom_langsr  rx   r  r  r  r  ri  r  rz  r  r  rs   meson_file_groupr  rG  rw   rO  rb   pch_header_dirprevious_includesinc_hdrshr   rQ   previous_sourcesr|   inc_srcr7  rH  implinc_dirsadditional_objectsrE  explicit_link_gen_objsprevious_objectsinc_objss>                                                                 r6   r  zVs2010Backend.gen_vcxproj$  s`   
7777888	46 1= 	Ufe&788 
 u!HH 011 	U$H ,22377:II 344 	U&HH 344 	U'HH 233 
	U**664@@@400 	U''===4 344 	U++FFDAAA4 !SF<O<O<Q<Q!S!STTT262D2DV^2T2T/'7J==   	A//@@G!444*HH}HG$$V%8%8%:%:;;	"77	!AG=AAICLQ<HPEIEZEZ[aEbEb 8 d d{ UYT{T{DU UQ35Q484F4F4W4W1(Hj@D@R@RSm@n@n=[+}:K((00"11(D<Mtz[_[hii
&5#3U5H%J]_d_q"rssu!66v>>7<<(:D<MNN',,'79L9LV9T9TUUei  fH  fHH:<Lo_ifk fkb i"@><Bb?Ta = 	h)))6v~zRR77h	RSV`bhj|  O  P  P  P  P224fhXacmoz  }K  M\  ^g  h  h  h={;;
&_Vd8e8effff	 	 	 '' 	C$ C CnnT** ;&((3xx1}} gll+=t?b?bcikoqtuvqw?x?xyy)+oWZ[\W]9^9^)_)_ gll?CFCC)-),QdN(KK%% *-QtT(BK%%w<<#h--'#f.@*A*AACDTDTTWXXX} [ [ HHSYZZZ}T;77H J J',,'91;L;LTM^;_;_``%%g/@AA JM(KIIII D D%%a):;; DM(KCCCC' J J',,'91;L;LTM^;_;_``%%g/@AA JM(KIIII&--// G Gw||OWQZ@@%%d,=>> GM(KFFFFw<<#g,,&[)9)99A==} 	^9aMMOO$:& :&6  ^ LLWV\]]]mD+66G R R',,'91;L;LTM^;_;_``%%g/?@@ R]7KQQQF} 	RAA&'Sy  |D  E  E  E  E,BB1EE[$???33D&)LLL55dFLQQQ--dFMJJJGR <<VXqQQHRf.>??D R R%%a)9:: R]7KKKKF} 
RAA&!Msu}~~~~,BB1EE[$???33D&)LLL55dFLQQQ--dFMJJJ 01B1B1D1DaHHGR <<VXqQQHRf.>??D!,!2!2!4!4 F Fgqz F..t5EFF F]7KNNNFOOKv>>>} FAA&$Pv  yA  B  B  B  B33D&)LLL55dFLQQQ)4T):1)=) 5'+}]'C'CH.<-=-NHTNN'4H--dFHEEE  ))&2DEEaH 	) 	)Aa%%%%%%%a(((( 	) 	)A%%a(((( "a!`!`!`!`w<<#0111C8N4O4OORSSS}T;77H G G',,'91;L;LTM^;_;_``%%g/?@@ GM(HgFFFF'*@@ A A%%a)9:: AM(Ha@@@@
dH.WXXXX!!$'''} 	/   v...%%bnT&:&:FCCC$-;;Ih<O<OPPT\\\$$VV444tr8   c                0    t          j        dddd          }t          j        |d          }t          j        |d          t          j        dj         d            fdi j        j        z   }|D ]8}t          j	        
                    |j                  s |          }|rd	|<   9D ]}|}d	}	|rWt          j	                            |          }
|	d	k    r|
}	n|
|v rd
ndz   |	z   }	t          j	                            |          }|W|	d	k    ro|	|<   t          j        |dd|	i          }t          j        |d          }dt          t          j                                                              z   dz   |_        Չ                     |          \  }}}}                                fd} |d|            |d|            |d|                                t          j        |          |dz              d S )Nr  r  r  )r  r  r   zGenerating vcxproj filters r]   c                    t           j                                                t	          | j        | j                                                                    S r   )r*   rQ   r  r   r   r   r  r   )filer   r   s    r6   relative_to_defined_inzAVs2010Backend.gen_vcxproj_filters.<locals>.relative_to_defined_in  sC    7??4<<TZ0X0XZ^ZmZmntZuZu#v#vwwwr8   r   r   r   Filterr   UniqueIdentifier{}c                `   |D ]}t           j                            |j                  s 
|          }|rv|	v rrt           j                            |                    j                            }t          j        | d|i          }t          j        |d          }	|         |_	        d S )Nr   r  )
r*   rQ   isabsr  r   r   r   r   r   r   )	type_nameelementsr   r  r   target_elementfilter_elementr   filter_itemsfound_folders_to_filterr  r   s          r6   add_elementz6Vs2010Backend.gen_vcxproj_filters.<locals>.add_element=  s     O Ow}}QW-- O44Q77G O7.E#E#E"$',,tQ5F5FtGX5Y5Y"Z"Z)+|YQZ\cPd)e)e)+~x)P)P.Eg.N+O Or8   r  	ClIncluder  z.filters)r   r  r   r   r	  rk  r[   r  r*   rQ   r  r  rq  r  rJ   rM   uuid4rP   r   r  r   r"  r#  )r   r   r  r  filter_folders	all_filesr   r  folderfilterrq  r  uuid_elementr[   r  rS  r   r  r   r  r  r  s   ``                @@@@r6   r  z!Vs2010Backend.gen_vcxproj_filters  s   z)e/d&f &f g gt[99}T;77
????@@@	x 	x 	x 	x 	x 	x #%NV%77	  	: 	:A7==)) :0033 :79+G4 . 	J 	JFGF 	37++G44R<<%FF &<S1S1SY\]`ffF'//'22  	3 ||28'/!#~x)U[I\!]!]!}^=OPP$'#djll*;*;*A*A*C*C$Cc$I!'+'9'9)'D'D$'1((00		O 		O 		O 		O 		O 		O 		O 		O 		O 	K)))K)))Hg&&&%%bnT&:&:FZ<OPPPPPr8   c           
        | j         r<d}t          j                            | j                                        d          }d}n;d}t          j                            | j                                        d          }d}| j        j        j        }|                     |d||          \  }}| j         r-t          
                                \  }}t          j        |d	          }	t          j                    }
t          j                            | j                  \  }}d
}| j        }d}|
D ]J}|d d         |z   }t#          t          j                            ||                    }|| d| d| dz  }K|t          j        |	d          _        |t          j        |	d          _        dt          j        |	d          _        |t          j        |	d          _        nt          j        |d          }t          j        |d          }dt          j        |d          _        dt          j        |d          _        dt          j        |d          _        dt          j        |d          _        dt          j        |d          _        d t          j        |d!          _        | j                                        d"d#gz   }d$}||                                 d                    |          | j                                        fz  }|                     |d%||                                 t                              | j                                                  gd&'           t          j        |d(d)*           t          j        |d+d,-           |                     t          j        |          |           d S ).Nr~  r  r  r  r  r  z
regen-tempr  r  r  r  r  r   r  z setup --reconfigure "" "z"
r  r   r  r  r  Midlr  rq  r  OutputDirectory%(Filename).hHeaderFileName%(Filename).tlbTypeLibraryName%(Filename)_i.cInterfaceIdentifierFilename%(Filename)_p.cProxyFileNamez
--internal
regencheckzcall %s > NUL
"%s" "%s"regenz2Checking whether solution needs to be regenerated.)r   r0  msgr  r  r  r  ExtensionTargetsr  )r   r*   rQ   r   r   r   r   r  r  r2   r  r   r   ry   r_   r  r   rJ   r   get_build_commandr@  r7  r   get_regen_filelistr)  r"  r#  )r   r  r  r  r  r  r  r  r  all_configs_prop_groupr  r   r  r  r  reconfigure_all_cmdr}   r  r  actionmidlregen_command	cmd_templs                          r6   r  zVs2010Backend.gen_regenprojN  s    = 	!(LW\\$"2"@"@"B"BDYZZF!HH #LW\\$"2"@"@"B"BOTTF H(3"77AM=AAI 8 : :{ = $	\;H;z;z;|;|8%'7%']4%I%I" +3*S*U*U'"$'--0A"B"BQ8<5"/O"$8 S S	0>ss0Ci0O-25bgllCl  oL  7M  7M  3N  3N/#*B  (S  (SZy  (S  (S  N  (S  (S  (S  S##ReBM02IJJOTgBM02KLLQRTBM02IJJO L\BM02BCCHH]4)>??F=00DGhBM$ >??D:EBM$ 12279HBM$ 0116:KBM$ 1227FWBM$ =>>C8IBM$005 ,>>@@LR^C__MI%((**EJJ},E,EtGWGgGgGiGijkM!!$TE\E\E^E^+8+L+LTM]MkMkMmMm+n+n*o&Z " \ \ \ 	dH.WXXXX
dM1CDDDD%%bnT&:&:FCCCCCr8   c                   d}t           j                            | j                                        | d          }| j        j        j        }| j        r|                     |d|d          \  }}t          
                                \  }}t          j                    }t           j                            | j                  \  }	}
d}|D ]
}|
d d         |z   }t          t           j                            ||                    }| d| d	}| j        j        j                            t#          d
                    s|dz  }| j        j        j                            t#          d                    r|dz  }d| d| j         d}t'          j        |d|          }|t'          j        |d          _        |t'          j        |d          _        n|                     |d|          \  }}t'          j        |d          }t'          j        |d          }dt'          j        |d          _        dt'          j        |d          _        dt'          j        |d          _        dt'          j        |d           _        d!t'          j        |d"          _        d#t'          j        |d$          _        | j                                        d%d&gz   }| j        j        j                            t#          d
                    s|d'gz  }| j        j        j                            t#          d                    r|d(gz  }|                                  |                     |d)d*d+                    |          z             t'          j        |d,d-.           |                     |           |                     t'          j        |          |           d S )/Nr}  r  install-tempr  r  r  r  z
 test -C "" --no-rebuildstdsplitz --no-stdsplit	errorlogsz --print-errorlogsrl  r  rm  r  ro  r  r  z	test-tempr  r  r  r  r  rq  r  r  r  r  r  r  r  r   r  r  test--no-rebuildz--no-stdsplitz--print-errorlogs	run_testsr  r  r  r  r  )r*   rQ   r   r   r   r   r  r   r  r2   r  ry   r_   r  rJ   r  r  r   rT   r   r   r   r  serialize_testsr   r!  r"  r#  )r   r  r  r  r  r  r  r  r  r   r  r  r}   r  r  test_cmdru  
prop_groupr  r  test_commands                        r6   r  zVs2010Backend.gen_testproj  s   "d.<<>><@Y@Y@YZZ(2= ,	Z"&";";LESAEEO #< #> #>T;
 <I;z;z;|;|8%'7*2*S*U*U'"$'--0A"B"BQ8<58 T T	0>ss0Ci0O-25bgllCl  oL  7M  7M  3N  3N/6qqBaqqq'09GG	R\H]H]^^ 1 00H#,5CCIkDZDZ[[ 5 44H`9``t}```	]4IVVV
JRj*ABBGCSj*:;;@@T #'";";LEPAE #< #G #GT; ]4)>??F=00DGhBM$ >??D:EBM$ 12279HBM$ 0116:KBM$ 1227FWBM$ =>>C8IBM$005+==??6>BZZL#,5CCIjDYDYZZ 2 11(1??	+@V@VWW 6!4 55  """!!$Vuzz,?W?W5XYYY
dH.WXXXX!!$'''%%bnT&:&:FCCCCCr8   c                   d}t           j                            | j                                        | d          }| j        j        j        }| j        r|                     |d|d          \  }}t          
                                \  }}t          j                    }t           j                            | j                  \  }	}
d}|D ]}|
d d         |z   }t          t           j                            ||                    }| d| d	}d
| d| j         d}t!          j        |d|          }|t!          j        |d          _        |t!          j        |d          _        n@|                                  |                     |d|          \  }}t!          j        |d          }t!          j        |d          }dt!          j        |d          _        dt!          j        |d          _        dt!          j        |d          _        dt!          j        |d          _        dt!          j        |d          _        dt!          j        |d          _        | j                                        d d!gz   }|                     |d"d#d$                    |          z             t!          j        |d%d&'           |                     |           |                     t!          j        |          |           d S )(Nr  r  r  r  r  r  r  z install -C "r  rl  r  rm  r  ro  r  r  r  r  r  r  rq  r  r  r  r  r  r  r  r   r  r  installr  run_installr  r  r  r  r  )r*   rQ   r   r   r   r   r  r   r  r2   r  ry   r_   r  rJ   rT   r   r   r   create_install_data_filesr  r   r!  r"  r#  )r   r  r  r  r  r  r  r  r  r   r  r  r}   r  r  install_cmdru  r  r  r  install_commands                        r6   r  zVs2010Backend.gen_installproj  s
   $d.<<>><@Y@Y@YZZ(5= $	_"&";";LESAEEO #< #> #>T;
 <I;z;z;|;|8%'7*2*S*U*U'"$'--0A"B"BQ8<58 T T	0>ss0Ci0O-25bgllCl  oL  7M  7M  3N  3N/!9wwHgwww`9``t}```	]4IVVV
JUj*ABBGCSj*:;;@@T **,,,"&";";LESAE #< #G #GT; ]4)>??F=00DGhBM$ >??D:EBM$ 12279HBM$ 0116:KBM$ 1227FWBM$ =>>C8IBM$005".@@BBiQ_E``O!!$vOA\A\7]^^^
dH.WXXXX!!$'''%%bnT&:&:FCCCCCr8   noderulenamer  r   T.Optional[T.List[str]]r0  r  r1  c                   t          j        |d          }t          j                            | j                                        |dz             }	t          j                            |	          s?t          |	dd          5 }
|
	                    d           d d d            n# 1 swxY w Y   t          j        |d|	          }|rt          j        |d	          }||_
        |sd
t          j        |d          _
        | dt          j        |d          _
        |sK|                     t          j                            | j                                        d                    g}d                    |          t          j        |d          _
        |r/d                    |          t          j        |d          _
        d S d S )Nr   z.ruler+  r,  r-  z# Meson regen file.r   r   Messager  VerifyInputsAndOutputsExistr  r   r.  r   r   r   )r   r   r*   rQ   r   r   r7  r8  r/  rn  r   r6  )r   r"  r#  r  r   r0  r  r1  igrouprulefilerA   custombuildmessages                r6   r   zVs2010Backend.add_custom_build  s   t[117<< 0 @ @ B BHwDVWWw~~h'' 	/hg666 /!-.../ / / / / / / / / / / / / / /mFM8LLL 	mK;;GGL 	UMTBM+'DEEJ 9@^^^k9--2 	N,,RW\\$:J:Z:Z:\:\:J.L .L M M NG58XXg5F5Fk9--2 	QBE((4..BM+'9::???	Q 	Qs   B##B'*B'prefixc                    d}| }t           j                            |          r&d| |fz  }t           j                            |          &|S )Nr   z%s%d)r*   rQ   r8  )r,  r   r  s      r6   r6  zVs2010Backend.nonexistent_file   sM    gnnT"" 	(VQK'D gnnT"" 	(r8   r  c                :    dt          j        |d          _        d S )Nr  rQ  r  )r   r  s     r6   rk  z(Vs2010Backend.generate_debug_information(  s    ?Ed677<<<r8   c                    | j         s_t          j                            | j                                        d          }|                     ||| j        j        j                   d S d S )Nr  )	r   r*   rQ   r   r   r   r  r   r  )r   r  regen_vcxprojs      r6   r!  z"Vs2010Backend.add_regen_dependency,  sf     } 	bGLL)9)G)G)I)I?[[M&&t]D<L<U<`aaaaa	b 	br8   ri  T.Dict[str, CompilerArgs]r  c                    d S r   r?   )r   ri  r  s      r6   rj  z)Vs2010Backend.generate_lang_standard_info3  r   r8   c                   t          |t          j                  sdS |                     |          }|                                }t          |t          j                  s|| j                            ||j        |j                  z  }|| j        	                    ||j                  z  }|| j
        j                            |j        |                                          z  }||j        z  }t          |          D ]T}|                                }|dk    r dS |                    d          r dS |dk    s|                    d          r nUdS )NTz/MANIFEST:NOFz/MANIFEST:EMBEDr  z	/MANIFESTz
/MANIFEST:)r   r   rO  r  r  rl  ro  r  r  rp  r   r   rq  rr  rs  ri  rP   rC   )r   r   r  rs  rG   s        r6   r  zVs2010Backend.get_gen_manifest8  sY   &%"344 	4((00**,,	&%"566 	*99(FDUW]WijjjI886CUVVVI)2II"H$9$9$;$;= = =I))II&& 	 	C))++Cn$$uu~~/00 wwk!!S^^L%A%A! "tr8   )F)r   r   r   r   r   rU   )r   r   )r   r   r   r   r   r   r   r:   r   r:   r   r:   r   r   )FN)r   rU   rp   r   r   r   )r%  rJ   r   r   )rG  rH  )rb  rJ   rc  rd  r   r   )r"  rJ   r#  rw  r   r   r   )rp   rq   r   rw  )
r  r   r  rJ   r  rJ   r  rU   r   r   )r  r   )r   r  )r   r  r  rJ   r  rJ   r   r   )r   r)  r  rJ   r  rJ   r   r   )r   r;  r  rJ   r  rJ   r   r   )rb   rJ   r|   rq   rT   rJ   )r|  rJ   r   rJ   )r  rJ   r   rJ   )r  r  r  rJ   r   r   )r  rJ   r	  rU   r  rJ   r   r:   )r~   r  r   r  )r   r  )r  r   rT   rJ   r  rJ   rp   rq   r  rJ   rs   rh   r   r   )r  r   r  r   rT   rJ   r   r   )r  r:   r   r  r   r   )
r   r   r  rJ   r  rJ   rp   rq   r   rU   )NNNT)r"  r   r#  rJ   r  rJ   r   r$  r0  r$  r  rh   r1  rU   r   r   )r,  rJ   r   rJ   )r  r   r   r   )r  r   r   r   )ri  r1  r  r   r   r   )?__name__
__module____qualname__rk  r   r   r   r   r   r$  staticmethodr)  r  r@  rF  rW  rv  r  r  r  r   r   r  r  r  r(  r:  r>  classmethodr  rI  rP  rF  rN  rc  rj  rv  r}  r  ry  rh  r  r  r"  r  r  r{   r  r  r  r  r  r  r  r  r  r   r6  rk  r!  rj  r  __classcell__)r   s   @r6   r2   r2      sf       D
! 
! 
! 
! 
! 
! 
!   J J J=M =M =M =M~^ ^ ^ "'26=N =N =N =N =N~ ] ] ] \]    \  6  ? ? ? ? ?B, , , ,(x= x= x= x=t    64 4 4,6 6 6) ) )J J J J J	; 	; 	; 	; '0(,-1*.R# R# R# R# R# R#hD D D D>'D 'D 'D 'DRD D D D$ R R [R4 4 46 6 6
= = =  .) ) )	N 	N 	NZ Z Z Z:W W WY Y Y ' ' ' \'    \ # # \#@
h 
h 
h1 1 1 1Jj Jj JjX    \  . . . \.0 '< '< '< \'<R@@ @@ @@ @@DO= O= O= O=v	m 	m 	m 	mf f f f fP@Q @Q @QDND ND ND`4D 4D 4Dl,D ,D ,D\ ostxQ Q Q Q Q<    \F F F Fb b b b   
      r8   r2   )r   r   r   r   r   r   )r9   r:   r   r:   )r   rJ   )rT   rJ   r   rU   )r[   r:   )re   rf   rg   r:   r   rh   )rp   rq   rr   rJ   rs   rJ   r   rt   )8
__future__r   r  rU  r*   xml.dom.minidomr  xml.etree.ElementTreeetreer#  r   rM   typingrg  pathlibr   r   r   rW   collectionsr   r   r	   r   r   r   r   r   r   r   r   r   r   optionsr   r   r   r   r   TYPE_CHECKINGarglistr   r   r   TuplerJ   r  r7   rI   rS   rZ   rd   ro   r   Backendr2   r?   r8   r6   <module>rF     s  
 # " " " " "      				     " " " " " " " " "      3 3 3 3 3 3 3 3 3 3 				                                                           5 5 5 5 5 5 5 5      ? 5&&&&&&))))))gc4m34G h  h  h  hF   *b b b bc c c c: : : :J J J J2 2 2 2G G G G GH$ G G G G Gr8   