§
    ƒnócž%  ã                  óv  — 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Zm	Z	 ddlm
Z
 ddlmZmZ ddlmZ dd	lmZmZmZ dd
lmZmZmZmZmZ ddlmZmZ ddlmZ ej        r4ddlmZ ddlmZ ddl m!Z! d dl"m#Z#  G d„ de#¦  «        Z$ G d„ de#¦  «        Z% G d„ dej&        ¦  «        Z' G d„ de¦  «        Z(dd„Z)dS )é    )ÚannotationsNé   )ÚExtensionModuleÚ
ModuleInfo)ÚModuleReturnValueé   )ÚmesonlibÚbuild)Úmlog)ÚDEPEND_FILES_KWÚ
DEPENDS_KWÚINCLUDE_DIRECTORIES)ÚContainerTypeInfoÚ
FeatureNewÚ	KwargInfoÚtyped_kwargsÚtyped_pos_args)ÚMachineChoiceÚMesonException)ÚExternalProgram)ÚModuleState)ÚCompiler)ÚInterpreter)Ú	TypedDictc                  ó8   — e Zd ZU ded<   ded<   ded<   ded<   d	S )
ÚCompileResourcesúT.List[mesonlib.FileOrString]Údepend_filesú6T.List[T.Union[build.BuildTarget, build.CustomTarget]]Údependsz'T.List[T.Union[str, build.IncludeDirs]]Úinclude_directorieszT.List[str]ÚargsN©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    ú</usr/lib/python3/dist-packages/mesonbuild/modules/windows.pyr   r   &   sB   € € € € € € à3Ð3Ð3Ñ3ØGÐGÐGÑGØDÐDÐDÑDØÐÐÑÐÐr)   r   c                  óL   — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   dS )ÚRcKwargsÚstrÚoutputz?T.List[T.Union[mesonlib.FileOrString, build.CustomTargetIndex]]ÚinputzT.Optional[str]Údepfiler   r   r   r    z%T.List[T.Union[str, ExternalProgram]]ÚcommandNr#   r(   r)   r*   r,   r,   -   sW   € € € € € € Øˆˆ‰ØNÐNÐNÑNØ Ð Ð Ñ Ø3Ð3Ð3Ñ3ØGÐGÐGÑGØ6Ð6Ð6Ñ6Ð6Ð6r)   r,   c                  ó   — e Zd ZdZdZdZdS )ÚResourceCompilerTyper   r   é   N)r$   r%   r&   ÚwindresÚrcÚwrcr(   r)   r*   r3   r3   5   s   € € € € € Ø€GØ	
€BØ
€C€C€Cr)   r3   c                  ó0  ‡ — e Zd Z ed¦  «        Zdˆ fd„Zdd	„Zdd„Z ede	e
j        ej        ej        fd¬¦  «         ed ej        d¬¦  «         ej        d¬¦  «        e ed eee	¦  «        g d¬¦  «        ¦  «        dd„¦   «         ¦   «         Zˆ xZS )ÚWindowsModuleÚwindowsÚinterpreterú'Interpreter'c                óš   •— t          ¦   «                              |¦  «         d | _        | j                             d| j        i¦  «         d S )NÚcompile_resources)ÚsuperÚ__init__Ú_rescompÚmethodsÚupdater>   )Úselfr;   Ú	__class__s     €r*   r@   zWindowsModule.__init__>   sS   ø€ Ý‰Œ×Ò˜Ñ%Ô%Ð%ØTXˆŒØŒ×ÒØ Ô!7ð
ñ 	ô 	ð 	ð 	ð 	r)   Ú	compilersúT.Dict[str, 'Compiler']Úreturnú
'Compiler'c                óF   — dD ]}||v r
||         c S Œt          d¦  «        ‚)N)ÚcÚcppz2Resource compilation requires a C or C++ compiler.)r   )rD   rF   Úls      r*   Údetect_compilerzWindowsModule.detect_compilerE   s>   € Øð 	$ð 	$ˆAØ�Iˆ~ˆ~Ø  ”|Ð#Ð#Ð#ð åÐQÑRÔRÐRr)   Ústateú'ModuleState'ú.T.Tuple[ExternalProgram, ResourceCompilerType]c                ó$  — t           j        }| j        r| j        S t          j        |j        |d¦  «        }|r|                     ¦   «         sV|                      |j        j        j	        |         ¦  «        }|j
        dv rt          dd¬¦  «        }nt          dd¬¦  «        }|                     ¦   «         st          d¦  «        ‚ddt          j        fd	d
t          j        fd	dt          j        ffD ]Š\  }}}t!          j        |                     ¦   «         |gz   ¦  «        \  }}	}
t'          j        ||	t&          j        ¦  «        }|r4t-          j        d|                     ¦   «         z  ¦  «         ||f| _         nŒ‹t          d¦  «        ‚| j        S )Nr5   >   úclang-clúintel-clÚmsvcr6   T)Úsilentz(Could not find Windows resource compilerz/?z"^.*Microsoft.*Resource Compiler.*$z	--versionz^.*GNU windres.*$z^.*Wine Resource Compiler.*$zWindows resource compiler: %sz5Could not determine type of Windows resource compiler)r   ÚHOSTrA   r   Úfrom_bin_listÚenvironmentÚfoundrN   ÚcoredatarF   Úidr   r3   r6   r5   r7   r	   Ú
Popen_safeÚget_commandÚreÚsearchÚ	MULTILINEr   ÚlogÚgroup)rD   rO   Úfor_machineÚrescompÚcompÚargÚmatchÚrc_typeÚpÚoÚeÚms               r*   Ú_find_resource_compilerz%WindowsModule._find_resource_compilerK   s¤  € õ $Ô(ˆàŒ=ð 	!Ø”=Ð õ "Ô/°Ô0AÀ;ÐPYÑZÔZˆàð 	B˜gŸmšm™oœoð 	BØ×'Ò'¨Ô(9Ô(BÔ(LÈ[Ô(YÑZÔZˆDØŒwÐ:Ð:Ð:Ý)¨$°tÐ<Ñ<Ô<��å)¨)¸DÐAÑAÔA�à�}Š}‰Œð 	MÝ Ð!KÑLÔLÐLð Ð;Õ=QÔ=TÐUØÐ1Õ3GÔ3OÐPØÐ<Õ>RÔ>VÐWð&
ð 	Zð 	ZÑ!ˆS�%˜õ
 Ô)¨'×*=Ò*=Ñ*?Ô*?À3À%Ñ*GÑHÔH‰GˆAˆq�!Ý”	˜% ¥B¤LÑ1Ô1ˆAØð Ý”Ð8¸1¿7º7¹9¼9ÑDÑEÔEÐEØ!(¨'Ð 2�”Ø�ðõ
 !Ð!XÑYÔYÐYàŒ}Ðr)   zwindows.compile_resourcesr   )ÚvarargsÚmin_varargsz0.47.0)Úsincer"   T)ÚdefaultÚlistifyúYT.Tuple[T.List[T.Union[str, mesonlib.File, build.CustomTarget, build.CustomTargetIndex]]]Úkwargsú'CompileResources'r   c                óR  ‡‡— |d                               ¦   «         }|d         }|d         }|D ]†}t          |t          j        ¦  «        rj|‰                     t          j        dg dt          j                             d| j	        j
                             |¦  «        ¦  «        g¦  «        g¦  «        z  }Œ‡|‰                     |d         ¦  «        z  }|                      ‰¦  «        \  }}	|	t          j        k    r
d}
|g d	¢z   }nW|	t          j        k    r>d
}
|ddgz   }d}|D ]/}d|v r)t!          j        |                     |¦  «        d¬¦  «         Œ0n	d
}
|g d¢z   }g }dˆˆfd„} |¦   «         D �]&\  }}}|                     dd¦  «                             dd¦  «                             dd¦  «        }|                     dd¦  «                             dd¦  «                             dd¦  «        }|› d|
› �}g }|                     |¦  «         |                     |¦  «         d }|	t          j        k    r|› d�}|                     g d¢¦  «         |                     t          j        |‰j        ‰j        ‰j        ||g|g|||¬¦
  «
        ¦  «         �Œ(t3          ||g¦  «        S )Nr"   r   r    Ú Fz@BUILD_ROOT@r!   Úres)z/nologoz/fo@OUTPUT@ú@INPUT@rk   rz   ú@OUTPUT@z‚Argument {!r} has a space which may not work with windres due to a MinGW bug: https://sourceware.org/bugzilla/show_bug.cgi?id=4933ú )Úfatal)rz   z-or{   rH   úST.Iterable[T.Tuple[str, str, T.Union[str, mesonlib.File, build.CustomTargetIndex]]]c               3  óˆ  •K  — ‰d         D �]´} t          | t          ¦  «        r+t          j                             ‰j        | ¦  «        | | fV — ŒCt          | t          j        ¦  «        r|                      ¦   «         | j	        | fV — Œ|t          | t          j        ¦  «        r†t          j        dd‰j        ‰j        ¬¦  «         |                      ¦   «         › d| j                             ¦   «                              | j        ¦  «        › �d|                      ¦   «         › �| fV — �Œt-          |                      ¦   «         ¦  «        dk    r"t          j        dd‰j        ‰j        ¬¦  «         t/          |                      ¦   «         ¦  «        D ]/\  }}|                      ¦   «         › d|› �d|› d|› �| |         fV — Œ0�Œ¶d S )	Nr   zBwindows.compile_resource CustomTargetIndex in positional argumentsz0.61.0)ÚlocationÚ_Úwindows_compile_resources_r   zSwindows.compile_resource CustomTarget with multiple outputs in positional arguments)Ú
isinstancer-   ÚosÚpathÚjoinÚsubdirr	   ÚFileÚrelative_nameÚfnamer
   ÚCustomTargetIndexr   Ú
single_useÚ
subprojectÚcurrent_nodeÚget_idÚtargetÚget_outputsÚindexr.   Úget_filenameÚlenÚ	enumerate)ÚsrcÚiÚoutr"   rO   s      €€r*   Ú	get_namesz2WindowsModule.compile_resources.<locals>.get_namesž   s  øè è € Ø˜A”wð dñ d�Ý˜c¥3Ñ'Ô'ð dÝœ'Ÿ,š, u¤|°SÑ9Ô9¸3ÀÐCÐCÐCÐCÐCÝ ¥X¤]Ñ3Ô3ð dØ×+Ò+Ñ-Ô-¨s¬y¸#Ð=Ð=Ð=Ð=Ð=Ý ¥UÔ%<Ñ=Ô=ð dÝÔ)Ð*nÐpxØ*/Ô*:ÀUÔEWðYñ Yô Yð Yð "Ÿjšj™lœlÐYÐY¨S¬Z×-CÒ-CÑ-EÔ-E×-KÒ-KÈCÌJÑ-WÔ-WÐYÐYØL¸×8HÒ8HÑ8JÔ8JÐLÐLÈcðSð Sð Sð Sñ Sõ ˜3Ÿ?š?Ñ,Ô,Ñ-Ô-°Ò1Ð1Ý"Ô-ð  /DØ.6¸Ô8HÐSXÔSeðgñ gô gð gå"+¨C¯OªOÑ,=Ô,=Ñ">Ô">ð dð d™˜˜3ð "%§¢¡¤Ð3Ð3°Ð3Ð3Ð5[ÐRSÐ5[Ð5[ÐVYÐ5[Ð5[Ð]`ÐabÔ]cÐcÐcÐcÐcÐcñdð!dð dr)   ú/r�   ú\ú:z_@BASENAME@.z.d)z--preprocessor-arg=-MDz--preprocessor-arg=-MQ@OUTPUT@z--preprocessor-arg=-MF@DEPFILE@)r0   r   Úextra_depends)rH   r~   )Úcopyrƒ   r
   ÚCustomTargetÚget_include_argsÚIncludeDirsr„   r…   r†   r;   ÚbackendÚget_target_dirrn   r3   r6   r5   r   ÚwarningÚformatÚreplaceÚappendÚextendr‡   r�   rY   r   )rD   rO   r"   ru   Ú
extra_argsÚwrc_depend_filesÚwrc_dependsÚdre   Úrescomp_typeÚsuffixÚres_argsrm   rg   Úres_targetsr™   ÚnameÚname_formattedr–   r.   r1   r0   s    ``                   r*   r>   zWindowsModule.compile_resourcesq   sJ  øø€ ð ˜F”^×(Ò(Ñ*Ô*ˆ
Ø! .Ô1ÐØ˜YÔ'ˆØð 	ð 	ˆAÝ˜!�UÔ/Ñ0Ô0ð Ø˜e×4Ò4ÝÔ% b¨"¨eµb´g·l²lÀ>ÐSWÔScÔSk×SzÒSzÐ{|ÑS}ÔS}Ñ6~Ô6~Ð5ñ  Aô  Að6ñ ô ñ �
øð 	�e×,Ò,¨VÐ4IÔ-JÑKÔKÑKˆ
à $× <Ò <¸UÑ CÔ CÑˆ�ØÕ/Ô2Ò2Ð2ð ˆFØ!Ð$IÐ$IÐ$IÑIˆHˆHØÕ1Ô9Ò9Ð9ð ˆFØ! Y°
Ð$;Ñ;ˆHðTˆAà!ð =ð =�Ø˜#�:�:Ý”L §¢¨#¡¤°eÐ<Ñ<Ô<Ð<øð=ð ˆFØ!Ð$AÐ$AÐ$AÑAˆHà24ˆð	dð 	dð 	dð 	dð 	dð 	dð 	dð, *3¨©¬ð 	ñ 	Ñ%ˆD�. #à—<’<  SÑ)Ô)×1Ò1°$¸Ñ<Ô<×DÒDÀSÈ#ÑNÔNˆDØ+×3Ò3°C¸Ñ=Ô=×EÒEÀdÈCÑPÔP×XÒXÐY\Ð^aÑbÔbˆNØÐ2Ð2¨&Ð2Ð2ˆFØ=?ˆGØ�NŠN˜7Ñ#Ô#Ð#Ø�NŠN˜8Ñ$Ô$Ð$Ø'+ˆGàÕ3Ô;Ò;Ð;Ø#˜-˜-˜-�Ø—’ð  Cð  Cð  Cñ Dô Dð Dð ×Ò�uÔ1ØØ”ØÔ ØÔ!ØØ�Ø�ØØ-Ø)ð ñ  ô  ñ ô ð ñ õ ! ¨{¨mÑ<Ô<Ð<r)   )r;   r<   )rF   rG   rH   rI   )rO   rP   rH   rQ   )rO   rP   r"   rt   ru   rv   rH   r   )r$   r%   r&   r   ÚINFOr@   rN   rn   r   r-   r	   rˆ   r
   rŸ   r‹   r   r   Úevolver   r   r   r   Úlistr>   Ú__classcell__)rE   s   @r*   r9   r9   :   sA  ø€ € € € € àˆ:�iÑ Ô €Dðð ð ð ð ð ðSð Sð Sð Sð$ð $ð $ð $ðL €^Ð/¸#¸x¼}ÈeÔN`ÐbgÔbyÐ9zð  IJð  Kñ  Kô  KØ€\Ø#ØˆÔ XÐ.Ñ.Ô.Øˆ
Ô Ð)Ñ)Ô)ØØˆ	�&Ð+Ð+¨D°#Ñ6Ô6ÀÈDÐQÑQÔQñô ðX=ð X=ð X=ñô ñ Kô  KðX=ð X=ð X=ð X=ð X=r)   r9   Úinterpr<   rH   c                ó    — t          | ¦  «        S )N)r9   )r·   s    r*   Ú
initializer¹   Ó   s   € Ý˜Ñ Ô Ð r)   )r·   r<   rH   r9   )*Ú
__future__r   Úenumr„   r_   ÚtypingÚTrx   r   r   r   r	   r
   r   Úinterpreter.type_checkingr   r   r   Úinterpreterbase.decoratorsr   r   r   r   r   r   r   Úprogramsr   ÚTYPE_CHECKINGr   rF   r   r;   r   Útyping_extensionsr   r   r,   ÚEnumr3   r9   r¹   r(   r)   r*   ú<module>rÄ      s+  ðð #Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø 	€	€	€	Ø Ð Ð Ð ð *Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø &Ð &Ð &Ð &Ð &Ð &à„?ð 7ØÐÐÐÐÐØ$Ð$Ð$Ð$Ð$Ð$Ø)Ð)Ð)Ð)Ð)Ð)à+Ð+Ð+Ð+Ð+Ð+ðð ð ð ð ˜9ñ ô ð ð7ð 7ð 7ð 7ð 7�9ñ 7ô 7ð 7ðð ð ð ð ˜4œ9ñ ô ð ð
W=ð W=ð W=ð W=ð W=�Oñ W=ô W=ð W=ðr!ð !ð !ð !ð !ð !r)   