Ë
    K©Òb— ã                   óÜ  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlmZ d dlZd dlmZ d dlZ	 d dlmZ d dlmZ d dlmZ dddddd	d
ddddddddœZg ag ag ada ejB                  jE                  «       Z#d„ Z$d„ Z%d„ Z&d„ Z' G d„ de(«      Z) G d„ de(«      Z*d„ Z+d„ Z,d„ Z-d'd„Z.d„ Z/d „ Z0d!„ Z1d"„ Z2d#„ Z3d$„ Z4d%„ Z5d&„ Z6y# e$ r	 d dlmZ Y Œ”w xY w)(é    )Úprint_functionN)Ú
OrderedSet)ÚStringIO)ÚGetEnvironFallbackÚ Úlibz.aú$!INTERMEDIATE_DIRz$!PRODUCT_DIR/genú$!PRODUCT_DIRú$|CONFIGURATION_NAMEú${root}ú
${dirname}ú	${source}ú${ext}ú${name})ÚEXECUTABLE_PREFIXÚEXECUTABLE_SUFFIXÚSTATIC_LIB_PREFIXÚSTATIC_LIB_SUFFIXÚSHARED_LIB_PREFIXÚINTERMEDIATE_DIRÚSHARED_INTERMEDIATE_DIRÚPRODUCT_DIRÚCONFIGURATION_NAMEÚRULE_INPUT_ROOTÚRULE_INPUT_DIRNAMEÚRULE_INPUT_PATHÚRULE_INPUT_EXTÚRULE_INPUT_NAMEc                 óD   — | j                  |«      r| t        |«      d  S | S ©N)Ú
startswithÚlen)ÚargÚprefixs     ú5/usr/lib/python3/dist-packages/gyp/generator/ninja.pyÚStripPrefixr&   I   s$   € Ø‡^�^�FÔØŒs�6‹{ˆ|ÐÐØ	€*ó    c                 óª   — t        j                  d| «      r| S |dk(  rt        j                  j	                  | «      S d| j                  dd«      z   dz   S )zTQuote a string such that it will be interpreted as a single argument
  by the shell.z^[a-zA-Z0-9_=.\\/-]+$Úwinú'z'"'"')ÚreÚmatchÚgypÚmsvs_emulationÚQuoteForRspFileÚreplace)r#   Úflavors     r%   ÚQuoteShellArgumentr2   O   sR   € ô
 ‡X�XÐ&¨Ô,Ø€JØˆu‚_Ü×Ñ×-Ñ-¨cÓ2Ð2Ø	ˆs�{‰{˜3Ð 2Ó3Ñ	3°sÑ	:Ð:r'   c                 óŒ   — |dk(  r| j                  ddt        d«      z  «      } t        t        j                  d| z   «      |«      S )zYTakes a preprocessor define and returns a -D parameter that's ninja- and
  shell-escaped.r)   ú#z\%03oz-D)r0   Úordr2   Úninja_syntaxÚescape)Údr1   s     r%   ÚDefiner9   [   sB   € ð ˆu‚_ð 	
�	‰	�#�x¤# c£(Ñ*Ó+€AÜ	œL×/Ñ/°°q±Ó9¸6Ó	BÐBr'   c                 óX   — t         j                  j                  | «      \  } }| ›d|›|›�S )z&Adds an arch string to an output path.ú.)ÚosÚpathÚsplitext)ÚoutputÚarchÚ	extensions      r%   ÚAddArchrB   e   s(   € ä—g‘g×&Ñ& vÓ.Ñ€&ˆ)Ú™d¡IÐ	.Ð.r'   c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTargetaz  Target represents the paths used within a single gyp target.

  Conceptually, building a single target A is a series of steps:

  1) actions/rules/copies  generates source/resources/etc.
  2) compiles              generates .o files
  3) link                  generates a binary (library/executable)
  4) bundle                merges the above in a mac bundle

  (Any of these steps can be optional.)

  From a build ordering perspective, a dependent target B could just
  depend on the last output of this series of steps.

  But some dependent commands sometimes need to reach inside the box.
  For example, when linking B it needs to get the path to the static
  library generated by A.

  This object stores those paths.  To keep things simple, member
  variables only store concrete paths to single files, while methods
  compute derived values like "the last output of the target".
  c                 ó�   — || _         d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d| _	        y )NF)
ÚtypeÚpreaction_stampÚprecompile_stampÚactions_stampÚbinaryÚbundleÚcomponent_objsÚcompile_depsÚ
import_libÚuses_cpp)ÚselfrF   s     r%   Ú__init__zTarget.__init__‚   sY   € à€D„Ið  €DÔð !€DÔà€DÔà€D„Kð €D„Kð €DÔØ€DÔð €D„Oð €D…Mr'   c                 ó   — | j                   dv S )z;Return true if this is a target that can be linked against.)Ústatic_libraryÚshared_library)rF   ©rP   s    r%   ÚLinkablezTarget.Linkable¡   s   € à�9‰9Ð<Ð<Ð<r'   c                 óB   — |dk(  s| j                   ry| j                  dv S )zOReturn true if the target should produce a restat rule based on a TOC
    file.r)   F©rT   Úloadable_module)rK   rF   ©rP   r1   s     r%   ÚUsesToczTarget.UsesToc¥   s$   € ð �‚˜$Ÿ+š+ØØ�9‰9Ð=Ð=Ð=r'   c                 ó†   — | j                  |«      r| j                  «       dz   S | j                  «       xs | j                  S )z^Return the path, if any, that should be used as a dependency of
    any dependent action step.ú.TOC)r[   ÚFinalOutputrG   rZ   s     r%   ÚPreActionInputzTarget.PreActionInput¯   s>   € ð ‡|�|�FÔØ×ÑÓ &Ñ(Ð(Ø×ÑÓÒ5 ×!5Ñ!5Ð5r'   c                 ó6   — | j                   xs | j                  S )z_Return the path, if any, that should be used as a dependency of
    any dependent compile step.)rI   rH   rU   s    r%   ÚPreCompileInputzTarget.PreCompileInput¶   s   € ð ×ÑÒ6 ×!6Ñ!6Ð6r'   c                 óR   — | j                   xs | j                  xs | j                  S )zKReturn the last output of the target, which depends on all prior
    steps.)rK   rJ   rI   rU   s    r%   r^   zTarget.FinalOutput»   s"   € ð �;‰;Ò;˜$Ÿ+™+Ò;¨×);Ñ);Ð;r'   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__rQ   rV   r[   r_   ra   r^   © r'   r%   rD   rD   k   s%   „ ñò,ò>=ò>ò6ò7ó
<r'   rD   c                   ó  — e Zd Z	 d(d„Zd(d„Zd„ Zd(d„Zd)d„Zd(d„Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	 d(d„Zd„ Zd„ Z	 d(d„Zd„ Zd„ Zd(d„Zd(d„Zd(d„Zd„ Z 	 d*d „Z!d!„ Z"d"„ Z#d#„ Z$d(d$„Z%d(d%„Z&d&„ Z'	 d(d'„Z(y)+ÚNinjaWriterNc
                 óª  — || _         || _        || _        || _        t	        j
                  |«      | _        || _        || _        || _	        d| _
        |	�Bt        j                  j                  t        j                  j                  |	|«      «      | _
        |dk(  rdnd| _        |dk(  r i | _        dD ]  }
d|
z   | j                   |
<   Œ t"        j$                  j'                  ||	«      }t        j                  j                  ||«      | _        t"        j$                  j'                  ||	«      }t        j                  j                  ||«      | _        y)zû
    base_dir: path from source root to directory containing this gyp file,
              by gyp semantics, all input paths are relative to this
    build_dir: path from source root to build output
    toplevel_dir: path to the toplevel directory
    Nr)   z.objz.o)Úx86Úx64zenvironment.)Úhash_for_rulesÚtarget_outputsÚbase_dirÚ	build_dirr6   ÚWriterÚninjaÚtoplevel_buildÚoutput_file_namer1   Úabs_build_dirr<   r=   ÚabspathÚjoinÚobj_extÚwin_envr-   ÚcommonÚInvertRelativePathÚbuild_to_baseÚbase_to_build)rP   rm   rn   ro   rp   Úoutput_filers   rt   r1   Útoplevel_dirr@   Úbuild_to_topÚbase_to_tops                r%   rQ   zNinjaWriter.__init__Ú   s  € ð )€DÔØ(€DÔØ€D„MØ€D„NÜ×$Ñ$ [Ó1€D„JØ(€DÔØ,€DÔà€D„KØ€DÔØÐÜŸ7™7Ÿ?™?¬2¯7©7¯<©<¸Ø8Aó,Có D€dÔà# uš_‘6°$€D„LØ�‚à€d„lØ ò 3ˆ$Ø+¨dÑ2ˆ�‰�TÒð3ô —:‘:×0Ñ0°¸LÓI€LÜŸ™Ÿ™ l°HÓ=€DÔä—*‘*×/Ñ/°¸,ÓG€KÜŸ™Ÿ™ k°9Ó=€DÕr'   c                 ó†  — d}||v rQ|r|j                  ||«      }n<|j                  |dz   d«      }|j                  |dz   d«      }|j                  |d«      }d}||v rE| j                  d«      }|j                  |t        j                  j	                  |xs d|«      «      }d}|j                  || j
                  «      }|S )	zÈExpand specials like $!PRODUCT_DIR in |path|.

    If |product_dir| is None, assumes the cwd is already the product
    dir.  Otherwise, |product_dir| is the relative path to the product
    dir.
    r
   ú/r   ú\r;   r	   Úgenr   )r0   ÚGypPathToUniqueOutputr<   r=   rw   Úconfig_name)rP   r=   Úproduct_dirr   r   Úint_dirr   s          r%   ÚExpandSpecialzNinjaWriter.ExpandSpecialÿ   sË   € ð "€KØ�dÑÙ	Ø�|‰|˜K¨Ó5‰à�|‰|˜K¨#Ñ-¨rÓ2ˆØ�|‰|˜K¨$Ñ.°Ó3ˆØ�|‰|˜K¨Ó-ˆà+ÐØ˜4ÑØ×*Ñ*¨5Ó1€gð �\‰\Ð*ÜŸ'™'Ÿ,™, {Ò'8°b¸'ÓBóD€dð 0ÐØ�<‰<Ð*¨D×,<Ñ,<Ó=€Dà€Kr'   c                 ól  — | j                   dk(  r'| j                  j                  || j                  ¬«      }|j	                  t
        d   |«      }|j	                  t
        d   |«      }|j	                  t
        d   |«      }|j	                  t
        d   |«      }|j	                  t
        d   |«      }|S )Nr)   ©Úconfigr   r   r   r   r   )r1   Úmsvs_settingsÚConvertVSMacrosr‡   r0   Úgenerator_default_variables)rP   r=   ÚrootÚdirnameÚsourceÚextÚnames          r%   ÚExpandRuleVariableszNinjaWriter.ExpandRuleVariables  s¯   € Ø‡{�{�eÒØ×Ñ×/Ñ/Ø
�t×'Ñ'ð 0ó )€dà�<‰<Ô3Ð4EÑFÈÓM€DØ�<‰<Ô3Ð4HÑIØó!€Dà�<‰<Ô3Ð4EÑFÈÓO€DØ�<‰<Ô3Ð4DÑEÀsÓK€DØ�<‰<Ô3Ð4EÑFÈÓM€DØ€Kr'   c                 ó6  — |r_| j                   dk(  r!t        j                  j                  ||«      }n/| j                   dk(  r t        j                  j                  ||«      }|j                  d«      rA| j                  |«      }| j                   dk(  rt        j                  j                  |«      }|S d|v r| j                  |«      }d|vsJ |«       ‚t        j                  j                  t        j                  j                  | j                  |«      «      S )z¦Translate a gyp path to a ninja path, optionally expanding environment
    variable references in |path| with |env|.

    See the above discourse on path conversions.Úmacr)   z$!z$|ú$)r1   r-   Úxcode_emulationÚExpandEnvVarsr.   ÚExpandMacrosr!   rŠ   r<   r=   Únormpathrw   r|   )rP   r=   ÚenvÚexpandeds       r%   ÚGypPathToNinjazNinjaWriter.GypPathToNinja)  sâ   € ñ
 Ø	�‰˜Ò	Ü×"Ñ"×0Ñ0°°sÓ;‰Ø�;‰;˜%ÒÜ×!Ñ!×.Ñ.¨t°SÓ9ˆØ‡��tÔØ×#Ñ# DÓ)€hØ	�‰˜Ò	Ü—7‘7×#Ñ# HÓ-ˆØ€oØˆt�|Ø×Ñ Ó%€dØ�d‰?Ð ˜DÓ ˆ?Ü�7‰7×ÑœBŸG™GŸL™L¨×);Ñ);¸TÓBÓCÐCr'   c                 óê  — | j                  |«      }|j                  d«      rJ |«       ‚d}| j                  dk7  r|d| j                  z   z  }t        j                  j                  |«      \  }}t        j                  j                  |«      r
J d|z  «       ‚|r| j                  dz   |z   }t        j                  j                  t        j                  j                  || j                  ||«      «      S )a%  Translate a gyp path to a ninja path for writing output.

    If qualified is True, qualify the resulting filename with the name
    of the target.  This is necessary when e.g. compiling the same
    path twice for two separate output targets.

    See the above discourse on path conversions.r™   ÚobjÚtargetr;   z5'%s' can not be absolute path (see crbug.com/462153).)rŠ   r!   Útoolsetr<   r=   ÚsplitÚisabsr•   r�   rw   ro   )rP   r=   Ú	qualifiedr¢   Úpath_dirÚpath_basenames         r%   r†   z!NinjaWriter.GypPathToUniqueOutput=  sÙ   € ð ×Ñ˜dÓ#€DØ�‰˜sÔ#Ð) TÓ)Ð#ð €CØ‡|�|�xÒØ	ˆS�4—<‘<ÑÑ€cä Ÿg™gŸm™m¨DÓ1Ñ€HˆmÜ�w‰w�}‰}˜XÔ&ð LØ?À(ÑJóLÐ&ñ Ø—i‘i #‘o¨Ñ5€mÜ�7‰7×ÑœBŸG™GŸL™L¨¨d¯m©m¸XØ)6ó8ó 9ð 9r'   c                 ó0  — ||D �cg c]  }|sŒ|‘Œ	 c}k(  sJ |«       ‚t        |«      dk(  r|rJ ‚yt        |«      dkD  s|rM| j                  |dz   «      }| j                  j                  |d||¬«      }| j                  j	                  «        |d   S c c}w )zžGiven a list of targets, return a path for a single file
    representing the result of building all the targets or None.

    Uses a stamp file if necessary.r   Né   ú.stampÚstamp©Ú
order_only)r"   r†   rr   ÚbuildÚnewline)rP   r•   Útargetsr¯   Útr­   s         r%   ÚWriteCollapsedDependenciesz&NinjaWriter.WriteCollapsedDependenciesa  s™   € ð  'Ö/˜QªQ’qÒ/Ò/Ð8°Ó8Ð/Ü
ˆ7ƒ|�qÒÙÐˆ^ØÜ
ˆ7ƒ|�aÒ™:Ø×(Ñ(¨°©Ó9€eØ—
‘
× Ñ  ¨°ÀZÐ ÓP€gØ
‡j�j×ÑÔØ�1‰:Ðùò 0s
   †BŽBc                 ój   — t         j                  j                  | j                  «      d   }|›d|›d�S )Nr   r;   ú.ninja)r<   r=   r>   rt   )rP   r@   Úoutput_file_bases      r%   Ú_SubninjaNameForArchz NinjaWriter._SubninjaNameForArchq  s-   € Ü—w‘w×'Ñ'¨×(=Ñ(=Ó>¸qÑAÐÚ,ªdÐ3Ð3r'   c           	      ó´  ‡ — |‰ _         |d   ‰ _        |d   ‰ _        |d   |   }t        |d   «      ‰ _        t        |j                  dd«      «      ‰ _        |j                  dd«      ‰ _        t        j                  j                  ‰ j                  |«      ‰ _        d	x‰ _        ‰ _        ‰ j                  d
k(  rIt        j                  j!                  |«      ‰ _        |j                  dd	«      }|r|‰ j                  _        ‰ j                  dk(  �rt        j$                  j'                  ||«      ‰ _        ‰ j                  j)                  |«      }‰ j*                  j-                  d‰ j.                  |   «       ‰ j*                  j-                  dd|z   «       ‰ j*                  j-                  dd|z   «       ‰ j*                  j-                  dd|z   «       ‰ j*                  j-                  dd|z   «       ‰ j*                  j-                  dd|z   «       ‰ j                  d
k(  r[‰ j                  j1                  |«      ‰ _        t5        ‰ j2                  «      dkD  r#t7        ˆ fd„‰ j2                  D «       «      ‰ _        g }g }d|v rù|d   D ]‡  }	|	‰ j:                  v sŒ‰ j:                  |	   }
|j=                  |
j?                  ‰ j                  «      «       |j=                  |
jA                  «       «       |
jB                  sŒwd‰ j                  _!        Œ‰ |D �cg c]  }|sŒ|‘Œ	 }}|D �cg c]  }|sŒ|‘Œ	 }}‰ jE                  d|«      }‰ jE                  d|«      }|‰ j                  _#        |‰ j                  _$        g }g }‰ jK                  ||||«      ‰ j                  _&        ‰ j                  jL                  xs |}g }	 ||j                  dg «      z   }|�r×‰ j                  d
k(  rSt5        ‰ j2                  «      dkD  r;‰ j2                  D ],  }‰ j*                  jU                  ‰ jW                  |«      «       Œ. d	}‰ j                  dk(  r‚t        j$                  jY                  |‰ jZ                  |‰ j\                  «       t        j$                  j_                  ‰ j                  |‰ j\                  ‰ j`                  ‰ jb                  «      }n8t        j                  je                  ‰ j                  ‰ j\                  ˆ fd„«      }‰ jg                  ‰ j*                  ||||||«      }|D �cg c]   }|ji                  ‰ jb                  «      sŒ|‘Œ" }}|rœ‰ j                  d
k7  st5        ‰ j2                  «      dk(  r#||D �cg c]  }‰ j]                  |«      ‘Œ c}z  }nRtQ        d|d   z  «       n@‰ j                  d
k(  r1t5        ‰ j2                  «      dkD  rtk        jl                  tn        «      }‰ j                  jL                  xs |}‰ j                  dk(  r;‰ j                  jp                  d k(  r"|‰ j                  _9        |‰ j                  _:        d	}| xr | }|s‰ j                  jL                  s|r2‰ jw                  |||||«      }‰ j                  r|j=                  |«       ‰ j                  r‰ jy                  |||«      }|sy	‰ j                  j{                  «       sJ |«       ‚‰ j                  S c c}w c c}w # tN        $ r; tQ        dtS        |«      «       tQ        dtS        |j                  d«      «      «       ‚ w xY wc c}w c c}w )!zîThe main entry point for NinjaWriter: write the build rules for a spec.

    Returns a Target object, which represents the output paths for this spec.
    Returns None if there are no outputs (e.g. a settings-only 'none' type
    target).Útarget_namer¤   ÚconfigurationsrF   Ústandalone_static_libraryr   Útarget_rpathz\$$ORIGIN/lib/Nr˜   Úmac_toolchain_dirr)   r@   Úccz$cl_ÚcxxÚcc_hostÚcxx_hostÚasmz$ml_r«   c              3   óÎ   •K  — | ]\  }|t        j                  t        t        j                  j                  ‰j                  ‰j                  |«      «      d «      «      f–— Œ^ y­w)ÚwN)r6   rq   Ú
OpenOutputr<   r=   rw   rs   r¸   )Ú.0r@   rP   s     €r%   ú	<genexpr>z(NinjaWriter.WriteSpec.<locals>.<genexpr>œ  s^   øè ø€ ò #$ð
 ð	 ”<×&Ñ&Üœ2Ÿ7™7Ÿ<™<¨×(;Ñ(;Ø(,×(AÑ(AÀ$Ó(GóIàó ó!ô "ñ#$ùs   ƒA"A%ÚdependenciesTÚactions_dependsÚcompile_dependsÚsourceszextra_sources: zspec.get("sources"): c                 ó2   •— ‰j                  | dz   |z   «      S )Nú-)r†   )r=   ÚlangrP   s     €r%   ú<lambda>z'NinjaWriter.WriteSpec.<locals>.<lambda>ä  s   ø€ ˜t×9Ñ9¸$À¹*ÀtÑ:KÓL€ r'   zdWarning: Actions/rules writing object files don't work with multiarch targets, dropping. (target %s)rS   )>r‡   r•   r¤   rD   r£   ÚboolÚgetÚis_standalone_static_libraryr½   r-   rš   ÚIsMacBundler1   Úis_mac_bundleÚxcode_settingsrŽ   ÚXcodeSettingsr¾   r.   ÚMsvsSettingsÚGetArchrr   Úvariablery   ÚGetActiveArchsÚarchsr"   ÚdictÚarch_subninjasrn   Úappendr_   ra   rO   r´   rG   rH   ÚWriteActionsRulesCopiesrI   Ú	TypeErrorÚprintÚstrÚsubninjar¸   ÚVerifyMissingSourcesru   r    ÚPrecompiledHeaderr†   rx   ÚMacPrefixHeaderÚWriteSourcesÚendswithÚcollectionsÚdefaultdictÚlistrF   rL   rM   ÚWriteTargetÚWriteMacBundler^   )rP   Úspecr‡   Úgenerator_flagsr�   r¾   r@   rÊ   rË   Údepr£   r8   Úextra_sourcesÚmac_bundle_dependsÚcompile_depends_stampÚ	link_depsrÌ   ÚpchÚfÚobj_outputsÚorM   r?   Úis_empty_bundles   `                       r%   Ú	WriteSpeczNinjaWriter.WriteSpecu  s‡  ø€ ð #€DÔØ�]Ñ#€D„IØ˜	‘?€D„LØÐ"Ñ# KÑ0€FÜ˜˜f™Ó&€D„KÜ(,Ø�‰Ð,¨aÓ0ó)2€DÔ%ð (×+Ñ+¨NÐ<MÓN€DÔä×,Ñ,×8Ñ8¸¿¹ÀdÓK€DÔØ/3Ð3€DÔ˜$Ô,Ø‡{�{�eÒÜ×/Ñ/×=Ñ=¸dÓC€dÔØ)×-Ñ-Ð.AÀ4ÓHÐÙ	Ø0Aˆ×ÑÔ-à‡{�{�eÓÜ×-Ñ-×:Ñ:¸4Ø;JóL€dÔà×Ñ×'Ñ'¨Ó4€dØ
‡j�j×Ñ˜& $§,¡,¨tÑ"4Ô5Ø
‡j�j×Ñ˜$ ¨¡Ô.Ø
‡j�j×Ñ˜% ¨$¡Ô/Ø
‡j�j×Ñ˜) V¨d¡]Ô3Ø
‡j�j×Ñ˜* f¨t¡mÔ4Ø
‡j�j×Ñ˜% ¨$¡Ô/à‡{�{�eÒØ×&Ñ&×5Ñ5°kÓB€d„jÜ	ˆT�Z‰Z‹˜1Ò	Ü"ó #$ð
 Ÿ
™
ô#$ó $ˆÔð €OØ€Oð ˜ÑØ�nÑ%ò (ˆ#Ø�$×%Ñ%Ò%Ø×&Ñ& sÑ+ˆ&Ø
×
 Ñ
  ×!6Ñ!6°t·{±{Ó!CÔ
DØ
×
 Ñ
  ×!7Ñ!7Ó!9Ô
:Ø�_‹_Ø#'ˆD�K‰KÕ ð(ð %4Ö9˜q²qšÐ9€oÐ9Ø$3Ö9˜q²qšÐ9€oÐ9Ø×7Ñ7Ð8IØ8GóI€oà×7Ñ7Ð8IØ8GóI€oà$3€d‡k�kÔ!Ø%4€d‡k�kÔ"ð
 €MØÐØ $× <Ñ <Øˆm˜_Ð.@ó!B€D‡K�KÔð "Ÿ[™[×6Ñ6ÒI¸/Ðð €IðØ §¡¨°BÓ 7Ñ7€gò
 Ø	�‰˜Ò	¤# d§j¡j£/°AÒ"5ð —J‘Jò 	?ˆDØ
�*‰*×
Ñ
˜d×7Ñ7¸Ó=Õ
>ð	?ð €cØ	�‰˜Ò	Ü×Ñ×/Ñ/Ø�T×'Ñ'¨¸$×:MÑ:Mô	Oä× Ñ ×2Ñ2Ø×Ñ ¨T×-@Ñ-@Ø×&Ñ&¨¯©ó6‰ô ×!Ñ!×1Ñ1Ø×Ñ ×!4Ñ!4ÛLóNˆð ×#Ñ#Ø
�*‰*�k 6¨7Ð4IÈ3Ø
ó€ið !(ÖD˜1¨1¯:©:°d·l±lÕ+C’QÐD€kÐDÙ	Ø�;‰;˜%Ò¤3 t§z¡z£?°aÒ#7Ø
¸ÖD°1˜×+Ñ+¨AÕ.ÒDÑ
D‰)ä
ð ;à�]Ñ#ñ$õ %ð 
�‰˜Ò	¤# d§j¡j£/°AÒ"5Ü×)Ñ)¬$Ó/€ià—;‘;×,Ñ,Ò?°€LØ‡{�{�eÒ §¡× 0Ñ 0Ð4DÒ DØ#,€d‡k�kÔ Ø!-€d‡k�kÔð €FØ#�mÒ>Ð,>Ð(>€OÙ�D—K‘K×-Ò-±Ø×Ñ  k°6¸9Ø ,ó.€fà	×	Ò	Ø×!Ñ! &Ô)ð ×ÒØ×"Ñ" 4Ð);¸_ÓM€fáØà�;‰;×"Ñ"Ô$Ð, fÓ,Ð$Ø�;‰;Ðùòm :ùÚ9øô4 ò ÜÐœs =Ó1Ô2ÜÐ#¤S¨¯©°)Ó)<Ó%=Ô>Øðüò4 Eùò Es7   Ì[?Ì%[?Ì/\Ì7\Ï\	 Ô1 ]Õ]Ö]Ü	A]c           	      óÜ  ‡ ‡‡— ‰ j                   j                  ‰‰ j                  «      \  Š}}}‰ j                  ‰«      Šdˆˆ ˆfd„	}|D ��	cg c]  \  }}	| ||	‰«      f‘Œ }}}	|D �
cg c]
  }
 ||
«      ‘Œ }}
|j	                  d‰f«       |j	                  d|f«       ‰ j                  ‰«      }‰ j
                  j                  |d|||¬«       |j                  |«       yc c}	}w c c}
w )zhHandle the implicit VS .idl rule for one source file. Fills |outputs|
    with files that are generated.Nc                 ó@  •— t         j                  j                  ‰| «      } t         j                  j                  ‰«      \  }}t         j                  j	                  |«      \  }}‰j                  | ||‰||«      } |r t         j                  j                  | |«      } | S r    )r<   r=   rw   r¥   r>   r–   Úrelpath)	r=   Úrelr’   Úbasenamer‘   r”   ÚoutdirrP   r“   s	         €€€r%   Úfix_pathz)NinjaWriter._WinIdlRule.<locals>.fix_path  s   ø€ Ü�W‰W�\‰\˜& $Ó'€dÜŸ'™'Ÿ-™-¨Ó/Ñ€gˆxÜ—'‘'×"Ñ" 8Ó,�i€dˆCØ×%Ñ%Ø
��g˜v s¨Hó6€dá	Ü�w‰w�‰˜t SÓ)ˆØ€kr'   r  ÚidlflagsÚidl©Ú	variablesr¯   r    )rŽ   ÚGetIdlBuildDatar‡   r    rß   rr   r°   Úextend)rP   r“   ÚprebuildÚoutputsr?   ÚvarsÚflagsr  r•   ÚvalueÚpÚinputr  s   ``          @r%   Ú_WinIdlRulezNinjaWriter._WinIdlRule  së   ú€ ð #'×"4Ñ"4×"DÑ"DØ�× Ñ ó#"Ñ€FˆF�D˜%à× Ñ  Ó(€F÷ð @D×D±°°eˆT‘8˜E 6Ó*Ò+ÐD€DÑDØ#)Ö*˜a‰h�q�kÐ*€FÐ*Ø‡K�K�˜6Ð"Ô#Ø‡K�K�˜UÐ#Ô$Ø×Ñ Ó'€EØ‡J�J×Ñ�V˜U EØ 8ð ô -à‡N�N�6Õùó EùÚ*s   ÁC#Á)C)c                 ó¶   — | j                   dk(  sJ ‚| j                  j                  |«      rg S g }t        d„ |d   «      D ]  }| j	                  |||«       Œ |S )z3Writes rules to match MSVS's implicit idl handling.r)   c                 ó$   — | j                  d«      S )Nz.idl©ré   ©Úxs    r%   rÐ   z.NinjaWriter.WriteWinIdlFiles.<locals>.<lambda>*  s   €  1§:¡:¨fÓ#5€ r'   rÌ   )r1   rŽ   ÚHasExplicitIdlRulesOrActionsÚfilterr  )rP   rï   r	  r
  r“   s        r%   ÚWriteWinIdlFileszNinjaWriter.WriteWinIdlFiles$  sd   € à�;‰;˜%ÒÐÐØ×Ñ×6Ñ6°tÔ<Ø€iØ€GÜÑ5°t¸I±ÓGò 2ˆØ
×Ñ�v˜x¨Õ1ð2à€Nr'   c                 óz  — g }| j                   r|j                  dg «      dd }ng }g }d|v r|| j                  |d   |||«      z  }d|v r|| j                  |d   ||||«      z  }d|v r|| j	                  |d   ||«      z  }d|v r$| j
                  dk(  r|| j                  ||«      z  }| j                  r-| j                  j                  «       r| j                  |||«       | j                  d|«      }| j                   r9| j                  ||z   |«      }	| j                  |	|«      }
| j                  |
|«       |S )	zkWrite out the Actions, Rules, and Copies steps.  Return a path
    representing the outputs of these steps.Úmac_bundle_resourcesNÚactionsÚrulesÚcopiesrÌ   r)   Úactions_rules_copies)rÕ   rÒ   ÚWriteActionsÚ
WriteRulesÚWriteCopiesr1   r  rÖ   ÚIsIosFrameworkÚWriteiOSFrameworkHeadersr´   ÚWriteMacBundleResourcesÚWriteMacXCassetsÚWriteMacInfoPlist)rP   rï   rò   r	  ró   r
  r  Úextra_mac_bundle_resourcesr­   ÚxcassetsÚpartial_info_plists              r%   rà   z#NinjaWriter.WriteActionsRulesCopies.  so  € ð €GØ×ÒØ!ŸX™XÐ&<¸bÓAÁ!ÐDÑàÐØ!#Ðà�DÑØ�×"Ñ" 4¨	¡?°MÀ8Ø#=ó?ñ ?€gà�$�Ø�—‘  g¡°¸xØ!5Ø!;ó=ñ =€gð �4ÑØ�×!Ñ! $ x¡.°(Ð<NÓOÑO€gà�DÑ˜TŸ[™[¨EÒ1Ø�×&Ñ& t¨XÓ6Ñ6€gà×Ò˜t×2Ñ2×AÑAÔCØ
×#Ñ# D¨'°8Ô<à×+Ñ+Ð,BÀGÓL€Eà×ÒØ×-Ñ-Ø
$Ð';Ñ
;Ð=OóQ€hà×0Ñ0°Ð;MÓNÐØ
×ÑÐ/Ð1CÔDà€Lr'   c                 óœ   — | j                   dk7  r|d| j                   z  z  }|r|›d| j                  |«      ›�S |›d| j                  ›d|›�S )zýGenerate and return a description of a build step.

    |verb| is the short summary, e.g. ACTION or RULE.
    |message| is a hand-written description, or None if not available.
    |fallback| is the gyp-level name of the step, usable as a fallback.
    r£   z(%s)ú z: )r¤   rŠ   r•   )rP   ÚverbÚmessageÚfallbacks       r%   ÚGenerateDescriptionzNinjaWriter.GenerateDescriptionS  sM   € ð ‡|�|�xÒØ
ˆf�t—|‘|Ñ#Ñ#€dÙÚ˜d×0Ñ0°Ô9Ð:Ð:â  $§)£)©XÐ6Ð6r'   c           
      ón  — | j                  «       }g }|D �]’  }|d   ›d| j                  ›�}| j                  d|j                  dd «      |«      }	| j                  dk(  r| j
                  j                  |«      nd}
|d   }|j                  dd «      }|r| j                  |«      }t        |j                  d	d
«      «      rdnd }| j                  |||	|
|||¬«      \  }}|d   D �cg c]  }| j                  ||«      ‘Œ }}t        |j                  dd«      «      r||d   z  }t        |j                  dd«      «      r||d   z  }|d   D �cg c]  }| j                  ||«      ‘Œ }}| j                  j                  ||||¬«       ||z  }| j                  j                  «        �Œ• |S c c}w c c}w )NÚaction_nameÚ_ÚACTIONr-  r)   FÚactionÚdepfileÚninja_use_consoler   Úconsole)r5  ÚinputsÚprocess_outputs_as_sourcesr
  Ú'process_outputs_as_mac_bundle_resourcesr®   )ÚGetToolchainEnvrm   r/  rÒ   r1   rŽ   ÚIsRuleRunUnderCygwinrŠ   ÚintÚWriteNewNinjaRuler    rr   r°   r±   )rP   r  rò   r	  r'  rž   Úall_outputsr4  r•   ÚdescriptionÚ	is_cygwinÚargsr5  ÚpoolÚ	rule_namer2  Úir8  rù   r
  s                       r%   r  zNinjaWriter.WriteActionsa  sÝ  € ð ×
Ñ
Ó
 €CØ€KØó ˆà˜}Ó-¨t×/BÒ/BÐC€dØ×,Ñ,¨XØ-3¯Z©Z¸	À4Ó-HØ-1ó3€kð —k‘k UÒ*ð ×%Ñ%×:Ñ:¸6ÔBØ05ð à�HÑ€dØ—
‘
˜9 dÓ+€gÙ	Ø×$Ñ$ WÓ-ˆÜ˜fŸj™jÐ)<¸aÓ@ÔA‰YÀt€dØ×+Ñ+¨D°$¸Ø,5°s¸DØ4;ð ,ó =�l€i�ð 6<¸HÑ5EÖF°�×#Ñ# A sÕ+ÐF€fÐFÜ	ˆV�Z‰ZÐ4°eÓ<Ô	=Ø˜ 	Ñ*Ñ*ˆÜ	ˆV�Z‰ZÐAÀ5ÓIÔ	JØ" f¨YÑ&7Ñ7Ð"Ø6<¸YÑ6GÖH°�×$Ñ$ Q¨Õ,ÐH€gÐHð ‡j�j×Ñ�w 	¨6Ø"*ð ô ,à�WÑ€kà
‡j�j×ÑÖð;ð> Ðùò Gùò
 Is   Ã'F-ÅF2c                 óŒ  ‡"— | j                  «       }g }|D �]  }d|vr|j                  dg «      sŒ|d   ›d| j                  ›�}	|d   }
| j                  d|j                  dd «      dt        d   z   |	z  «      }| j
                  d	k(  r| j                  j                  |«      nd
Š"t        |j                  dd«      «      rdnd }| j                  |	|
|‰"||«      \  }}
d}t        dg«      }|
D ]"  }|D ]  }d|z  |v sŒ|j                  |«       Œ Œ$ t        |«      }ˆ"fd„}|j                  dg «      D �cg c]  }| j                  ||«      ‘Œ }}|j                  dg «      }t        |«      }|r|dz  }|dkD  r(t        |«      dkD  r| j                  |d   ||¬«      g}g }|D �]‰  }t         j"                  j%                  |«      }t         j"                  j'                  |«      \  }}t         j"                  j)                  |«      \  }}|d   D �cg c]  }| j+                  ||||||«      ‘Œ }}t        |j                  dd
«      «      r||z  }||v }|st        |j                  dd
«      «      r||z  }|r|j-                  |«       g }|D ]ä  }|dk(  r|j/                  d ||«      f«       Œ"|dk(  r6| j1                  || j2                  «      } |j/                  d || «      f«       Œ]|dk(  r6| j1                  || j2                  «      }!|j/                  d ||!«      f«       Œ˜|dk(  r|j/                  d|f«       Œ±|dk(  r|j/                  d ||«      f«       ŒÐ|d k(  rŒÖJ t5        |«      «       ‚ |D �cg c]  }| j                  ||«      ‘Œ }}| j
                  d	k(  rJ|j/                  dt7        j8                  t;        j<                  |d   «      «      j?                  «       f«       | j@                  jC                  ||| j                  |«      |||¬«       |jE                  |«       �ŒŒ �Œ |S c c}w c c}w c c}w )Nr4  Úrule_sourcesrD  r2  ÚRULEr-  z%s r   r)   Fr6  r   r7  )r“   r‘   r’   r”   r•   r“   z${%s}c                 ó0   •— ‰r| j                  dd«      S | S )Nr„   rƒ   )r0   )r=   rA  s    €r%   Úcygwin_mungez,NinjaWriter.WriteRules.<locals>.cygwin_munge¬  s   ø€ áØ—‘˜d CÓ(Ð
(Øˆr'   r8  r«   é   r®   r
  r9  r:  r‘   r’   r”   r•   Úunique_name©Úimplicitr¯   r  )#r;  rÒ   rm   r/  r�   r1   rŽ   r<  r=  r>  ÚsetÚaddÚsortedr    r"   r´   r<   r=   r�   r¥   r>   r–   Úremoverß   rŠ   r}   ÚreprÚhashlibÚmd5ÚsixÚensure_binaryÚ	hexdigestrr   r°   r  )#rP   r  rò   r	  r  r'  rž   r?  Úruler•   rB  r@  rC  rD  Úspecial_localsÚneeded_variablesÚargumentÚvarrJ  rE  r8  rÌ   Ú
num_inputsr“   r’   r   r‘   r”   rù   r
  Úwas_mac_bundle_resourceÚextra_bindingsÚdirname_expandedÚsource_expandedrA  s#                                     @r%   r   zNinjaWriter.WriteRules‡  s�  ø€ à
×
Ñ
Ó
 €CØ€KØó o$ˆà	˜Ñ	 d§h¡h¨~¸rÔ&BØð ˜[Ó)¨4×+>Ò+>Ð?€dà�(‰^€dØ×,Ñ,Ø
Ø
�(‰(�9˜dÓ
#ØÔ.Ð/@ÑAÑAÀTÑ
IóK€kð
 —k‘k UÒ*ð ×%Ñ%×:Ñ:¸4Ô@Ø05ð ä˜dŸh™hÐ':¸AÓ>Ô?‰YÀT€dØ×.Ñ.Ø
��k 9¨c°4ó9�o€i�ð D€nÜ˜h˜Z›ÐØò &ˆ(Ø!ò 	&ˆCØ�s‰]˜hÒ&Ø× Ñ  Õ%ñ	&ð&ô  Ð 0Ó1Ðôð 6:·X±X¸hÈÓ5KÖL°�×#Ñ# A sÕ+ÐL€fÐLð
 —‘˜¨Ó,€gÜ�v“;€jÙ	Ø�a‰ˆ
Ø	�aŠœC ›L¨1Ò,Ø×1Ñ1Ø
ˆ{Ñ
˜V°ð 2ó :ð ;ˆàˆð ó 9$ˆ&Ü—‘×!Ñ! &Ó)ˆÜŸG™GŸM™M¨&Ó1Ñˆ�Ü—G‘G×$Ñ$ XÓ.‰	ˆˆcð
 ! ™Oö-àð ×+Ñ+¨A¨t°WØ,2°C¸õCð -ˆð -ô ˆt�x‰xÐ4°eÓ<Ô=Ø
˜7Ñ
"ˆ-à"(Ð,@Ð"@ÐÙ"Ü�—‘ÐBÀEÓJÔKØ
$¨Ñ
/Ð
$ñ %Ø ×'Ñ'¨Ô/àˆØ#ò 	*ˆCØ�FŠ]Ø×!Ñ! 6©<¸Ó+=Ð">Õ?Ø�iÒð  $×1Ñ1°'¸4×;MÑ;MÓNÐØ×!Ñ! 9©lÐ;KÓ.LÐ"MÕNØ�hŠð #×0Ñ0°¸×9KÑ9KÓLˆOØ×!Ñ! 8©\¸/Ó-JÐ"KÕLØ�eŠ|Ø×!Ñ! 5¨# ,Õ/Ø�fŠ}Ø×!Ñ! 6©<¸Ó+AÐ"BÕCà˜$“;Ð)¤ S£	Ó)�;ð)	*ð, 9@Ö@°1�4×&Ñ& q¨#Õ.Ð@ˆÐ@Ø�;‰;˜%Òà
×
Ñ
 Ü�k‰kœ#×+Ñ+¨G°A©JÓ7Ó8×BÑBÓDð!Fô Gð 	�
‰
×Ñ˜ )¨T×-@Ñ-@ÀÓ-HØ"(Ø$,Ø#1ð 	ô 	3ð
 	×Ñ˜7Ö#òs9$ðmo$ðb ÐùòU Mùò*-ùòP As   Ä7P7ÈP<Í:Qc           	      óž  — g }| j                   r-| j                   j                  «       }| j                  |¬«      }n| j                  «       }|D ]ü  }|d   D ]ò  }t        j                  j                  |«      }t        j                  j                  |«      d   }	| j                  ||«      }
| j                  t        j                  j                  |d   |	«      |«      }|| j                  j                  |d|
|¬«      z  }| j                  sŒ¸|j                  | j                   j                  «       «      sŒâ|j                  |«       Œô Œþ |S )N©Úadditional_settingsÚfilesr«   ÚdestinationÚcopyr®   )rÖ   ÚGetPerTargetSettingsr;  r<   r=   r�   r¥   r    rw   rr   r°   rÕ   r!   ÚGetBundleContentsFolderPathrß   )rP   r  r	  ró   r
  Ú	extra_envrž   rh  r=   r   ÚsrcÚdsts               r%   r!  zNinjaWriter.WriteCopiesþ  s*  € Ø€GØ×ÒØ×%Ñ%×:Ñ:Ó<€iØ× Ñ °YÐ Ó?�cà× Ñ Ó"€cØò +ˆØ�w‘-ò +ˆ$ä�w‰w×Ñ Ó%ˆÜ—7‘7—=‘= Ó& qÑ)ˆØ×!Ñ! $¨Ó,ˆØ×!Ñ!¤"§'¡'§,¡,¨t°MÑ/BÀHÓ"MØ"%ó'ˆà�4—:‘:×#Ñ# C¨°ÀÐ#ÓJÑJˆØ×Óð �^‰^˜D×/Ñ/×KÑKÓMÕNØ×%Ñ% cÕ*ñ!+ð+ð& €Nr'   c           	      óT  — | j                  «       }|d   }|d   }| j                  d«      }|| j                  _        t	        | j
                  t        d„ |«      «      }d|fdt	        | j
                  |«      fg}	|j                  | j                  j                  |d||	|¬«      «       y	)
zFPrebuild steps to generate hmap files and copy headers to destination.rÌ   Úmac_framework_headerszheaders.hmapc                 ó$   — | j                  d«      S )Nz.hr  r  s    r%   rÐ   z6NinjaWriter.WriteiOSFrameworkHeaders.<locals>.<lambda>"  s   €  a§j¡j°$Ó&8€ r'   Ú	frameworkÚcopy_headersÚcompile_ios_framework_headersr  N)
ÚComputeMacBundleOutputr†   rÖ   Úheader_map_pathÚmapr    r  r  rr   r°   )
rP   rï   r
  r	  rq  Úall_sourcesrr  r?   Úall_headersr  s
             r%   r#  z$NinjaWriter.WriteiOSFrameworkHeaders  s´   € à×+Ñ+Ó-€IØ�y‘/€KØÐ/Ñ0€LØ×'Ñ'¨Ó7€FØ*0€D×ÑÔ'Ü�d×)Ñ)ÜÑ8¸+ÓFóH€Kà˜yÐ)Ø ¤# d×&9Ñ&9¸<Ó"HÐIðK€Ià‡N�N�4—:‘:×#Ñ#ØÐ/°Ø¨ð $ó 2õ 3r'   c           
      óh  — g }| j                   j                  «       }| j                  |¬«      }| j                  |«      }| j                   j	                  | j
                  «      }t        j                  j                  t        d   | j                   t        | j                  |«      «      D ]„  \  }}| j                  |«      }t        j                  j                  |«      d   dk7  r8| j                   j#                  |d|dd|fd|fg¬	«       |j%                  |«       Œt|j%                  |«       Œ† |S )
z.Writes ninja edges for 'mac_bundle_resources'.rd  r   éÿÿÿÿz	.xcassetsÚmac_tool)Úmactool_cmdzcopy-bundle-resourcerž   rJ   ©r  )rÖ   ri  ÚGetSortedXcodeEnvÚComputeExportEnvStringÚIsBinaryOutputFormatr‡   r-   rš   ÚGetMacBundleResourcesr�   rv  r    rŠ   r<   r=   r>   rr   r°   rß   )	rP   Ú	resourcesÚbundle_dependsr(  rk  rž   ÚisBinaryr?   Úress	            r%   r$  z#NinjaWriter.WriteMacBundleResources)  s%  € à€Hà×#Ñ#×8Ñ8Ó:€IØ
×
 Ñ
 °YÐ
 Ó
?€CØ
×
%Ñ
% cÓ
*€CØ×"Ñ"×7Ñ7¸×8HÑ8HÓI€Hä×*Ñ*×@Ñ@Ü# MÑ2Ø×ÑœS ×!4Ñ!4°iÓ@óBò 
‰ˆ�ð ×!Ñ! &Ó)€fÜ	�‰×	Ñ	˜&Ó	! "Ñ	%¨Ò	4Ø�
‰
×Ñ˜ ¨SØ$KØ%*¨C L°8¸XÐ2Fð$Hð 	ô 	Ið 	×Ñ˜fÕ%à�‰˜Õð
ð €Or'   c           
      óâ  — |syi }dddœ}| j                   j                   | j                     }|j                  «       D ]  \  }}|j                  |«      }|sŒ|||<   Œ  d}	|r| j	                  d«      }	|	|d<   g }
|
j                  t        j                  j                  | j                   j                  «       d«      «       |	r|
j                  |	«       t        t        j                  |«      | j                  «      }| j                   j                  «       }| j                  |¬«      }| j!                  |«      }|j#                  | j$                  j'                  |
d	|d
|fd|fg¬«      «       |	S )a�  Writes ninja edges for 'mac_bundle_resources' .xcassets files.

    This add an invocation of 'actool' via the 'mac_tool.py' helper script.
    It assumes that the assets catalogs define at least one imageset and
    thus an Assets.car file will be generated in the application resources
    directory. If this is not the case, then the build will probably be done
    at each invocation of ninja.Nzapp-iconzlaunch-image)ÚXCASSETS_APP_ICONÚXCASSETS_LAUNCH_IMAGEz!assetcatalog_generated_info.plistzoutput-partial-info-plistz
Assets.carrd  Úcompile_xcassetsrž   Úkeysr}  )rÖ   r‡   ÚitemsrÒ   r†   rß   r<   r=   rw   ÚGetBundleResourceFolderr2   ÚjsonÚdumpsr1   ri  r~  r  r  rr   r°   )rP   r(  rƒ  Úextra_argumentsÚsettings_to_argÚsettingsÚsettings_keyÚarg_namer  r)  r
  rŠ  rk  rž   s                 r%   r%  zNinjaWriter.WriteMacXCassets?  sx  € ñ Øà€Oà'Ø!/ñ€Oð ×"Ñ"×1Ñ1°$×2BÑ2BÑC€HØ"1×"7Ñ"7Ó"9ò *Ñˆ�hØ�l‰l˜<Ó(€eÚ	Ø$)ˆ˜Ò!ð*ð
 ÐÙØ×5Ñ5Ø
-ó/Ðà5G€oÐ1Ñ2à€GØ‡N�NÜ
�‰�‰Ø×Ñ×7Ñ7Ó9Øó	ôñ Ø‡n�nÐ'Ô(äœdŸj™j¨Ó9¸4¿;¹;ÓG€DØ×#Ñ#×8Ñ8Ó:€IØ
×
 Ñ
 °YÐ
 Ó
?€CØ
×
%Ñ
% cÓ
*€Cà×Ñ˜$Ÿ*™*×*Ñ*ØÐ# XØ˜3�< &¨$ Ð0ð +ó 2ô 3ð Ðr'   c           	      óÄ  — t         j                  j                  t        d   | j                  | j
                  «      \  }}}}|sy| j                  |«      }|rƒ| j                  t        j                  j                  |«      «      }dj                  |D �cg c]  }t        || j                  «      ‘Œ c}«      }| j                  j                  |d|d|fg¬«      }| j!                  |¬«      }	| j#                  |	«      }	|r0| j                  d«      }| j                  j                  |d	||g«      }| j                  j%                  | j&                  «      }
t)        t+        j,                  |
«      | j                  «      }
| j                  j/                  | j&                  «      }| j                  j                  |d
|d|	fd|
fd|fg¬«       |j1                  |«       yc c}w )z.Write build rules for bundle Info.plist files.r   Nr+  Úpreprocess_infoplistÚdefinesr}  rd  zmerged_info.plistÚmerge_infoplistÚcopy_infoplistrž   rŠ  rJ   )r-   rš   ÚGetMacInfoPlistr�   rÖ   r    rŠ   r†   r<   r=   r   rw   r9   r1   rr   r°   r~  r  ÚGetExtraPlistItemsr‡   r2   r�  rŽ  r€  rß   )rP   r)  rƒ  Ú
info_plistÚoutr–  rk  Úintermediate_plistr8   rž   rŠ  r„  s               r%   r&  zNinjaWriter.WriteMacInfoPlistm  sÅ  € ä*-×*=Ñ*=×*MÑ*MÜ# MÑ2Ø×Ñ˜T×0Ñ0ó+2Ñ'€J��W˜iñ ØØ
×
Ñ
˜SÓ
!€CÙà×5Ñ5Ü
�'‰'×
Ñ
˜:Ó
&ó(Ðà—‘¸'ÖB°Qœ&  D§K¡KÕ0ÒBÓC€gØ—:‘:×#Ñ#Ø
Ð4°jØ Ð(Ð)ð $ó +€jð ×
 Ñ
 °YÐ
 Ó
?€CØ
×
%Ñ
% cÓ
*€CáØ×5Ñ5Ð6IÓJÐØ—:‘:×#Ñ#Ø
Ð/Ø˜zÐ
*ó,€jð ×Ñ×1Ñ1°$×2BÑ2BÓC€DÜœdŸj™j¨Ó.°·±Ó<€DØ×"Ñ"×7Ñ7¸×8HÑ8HÓI€HØ‡J�J×Ñ�SÐ*¨JØ!&¨ ¨v°t¨nØ!)¨8Ð 4ð 6ð ô 7ð ×Ñ˜#Õùò) Cs   ÂGc           	      óŽ  ‡ ‡‡‡‡‡‡— ‰ j                   dk(  rÄ‰ j                  j                  dd«       ‰ j                  j                  dd«       ‰ j                  j                  dd«       ‰ j                  j                  dd	«       ‰ j                  j                  d
d«       ‰ j                  j                  dd«       ‰ j                  j                  dd«       ‰ j                  dk7  st	        ‰ j
                  «      dk(  r!‰ j                  ‰ j                  ‰‰‰‰‰‰«      S t        ˆˆˆˆˆ ˆˆfd„‰ j
                  D «       «      S )ú.Write build rules to compile all of |sources|.ÚhostÚarz$ar_hostr¿   ú$cc_hostrÀ   ú	$cxx_hostÚldz$ld_hostÚldxxz
$ldxx_hostÚnmz$nm_hostÚreadelfz$readelf_hostr˜   r«   c              3   ón   •K  — | ],  }|‰j                  ‰j                  |   ‰‰‰‰‰‰|¬ «      f–— Œ. y­w)©r@   N)ÚWriteSourcesForArchrÞ   )	rÇ   r@   r�   r‡   Úprecompiled_headerÚ
predependsrP   rÌ   rï   s	     €€€€€€€r%   rÈ   z+NinjaWriter.WriteSources.<locals>.<genexpr>   sO   øè ø€ ò "ð ð ˜×1Ñ1Ø×Ñ Ñ% {°F¸GÀZØ ¨4ð 2ó 1ô 2ñ "ùs   ƒ25)r¤   rr   rÚ   r1   r"   rÜ   rª  rÝ   )rP   Ú
ninja_filer‡   r�   rÌ   r¬  r«  rï   s   ` ``````r%   rè   zNinjaWriter.WriteSources�  s  þ€ ð ‡|�|�vÒØ
‡j�j×Ñ˜$ 
Ô+Ø
‡j�j×Ñ˜$ 
Ô+Ø
‡j�j×Ñ˜% Ô-Ø
‡j�j×Ñ˜$ 
Ô+Ø
‡j�j×Ñ˜& ,Ô/Ø
‡j�j×Ñ˜$ 
Ô+Ø
‡j�j×Ñ˜) _Ô5à‡{�{�eÒœs 4§:¡:›°!Ò3Ø×%Ñ%Ø
�*‰*�k 6¨7°JØ
˜dó$ð $ô ÷ "ñ "ð —j‘jô"ó "ð "r'   c	                 óÆ  — g }	| j                   dk(  r“| j                  j                  ||¬«      }
| j                  j                  |«      }| j                  j	                  |«      }dg| j                  j                  |«      z   }dg| j                  j                  |«      z   }�n½| j                   dk(  �rw| j                  j                  |«      }| j                  j                  |«      }
| j                  j                  |«      }| j                  j	                  |«      }| j                  j                  |«      }	| j                  j                  || j                  «      x}}|sd}| j                  dk7  r|d| j                  z   z  }t        j                  j                  t        j                  j!                  || j"                  | j$                  «      «      }|d	z   }|d
z   }| j'                  |d|g«       | j'                  |d|g«       | j'                  |d| j$                  g«       n6|j)                  dg «      }
|j)                  dg «      }|j)                  dg «      }| j                  dk(  rÁt        j*                  j)                  dd«      j-                  «       t        j*                  j)                  dd«      j-                  «       z   |z   }t        j*                  j)                  dd«      j-                  «       t        j*                  j)                  dd«      j-                  «       z   |z   }nÏ| j                  dk(  rÀt        j*                  j)                  dd«      j-                  «       t        j*                  j)                  dd«      j-                  «       z   |z   }t        j*                  j)                  dd«      j-                  «       t        j*                  j)                  dd«      j-                  «       z   |z   }|j)                  dg «      |	z   }| j'                  |d|D �cg c]  }t/        || j                   «      ‘Œ c}«       | j                   dk(  r�| j'                  |dt1        | j                  «      «       | j'                  |d| j                  j3                  || j4                  «      D �cg c]'  }t7        | j                  |«      | j                   «      ‘Œ) c}«       |j)                  dg «      }| j9                  «       }| j                   dk(  r| j                  j;                  ||«      }| j'                  |d|D �cg c]+  }t7        d| j5                  ||«      z   | j                   «      ‘Œ- c}«       | j                   dk(  rv|j)                  dg «      }| j                  j=                  ||«      }| j'                  |d |D �cg c]+  }t7        d| j5                  ||«      z   | j                   «      ‘Œ- c}«       |j?                  |«      }| j                   dk(  r1d!D ],  \  }}|jA                  ||«      }|sŒ|jC                  ||«       Œ. |j)                  d"g «      }| j'                  |dt1        | j                  |
«      «       | j'                  |dt1        | j                  |«      «       | j'                  |dt1        | j                  |«      «       | j                   dk(  rN| j'                  |d#t1        | j                  «      «       | j'                  |d$t1        | j                  «      «       | j'                  |d"t1        | j                  |«      «       |jE                  «        g } d%}!|D �]Ë  }"t        j                  jG                  |"«      \  }#}|d&d' }| jH                  }$|d(v rd)}%d*| jJ                  _&        nÃ|d+k(  s|d,k(  r| j                   dk7  rd-}%n§|d.k(  r| j                   dk7  rd/}%n�| j                   dk(  r%|d0k(  r | j                  jO                  |«      sd0}%d1}$n\| j                   dk(  r|d2k(  rd3}%nE| j                   dk(  r|d4k(  rd5}%d*| jJ                  _&        n| j                   dk(  r|d6k(  rd6}%d7}$d*}!n�Œ| j5                  |"«      }&| jQ                  |#|$z   «      }'|�tS        |'|«      }'|jU                  |&g|'g|«      }(g })| j                   dk(  r%|jW                  |&|'|(|%||| j                  «      \  })}'}(|jY                  |'|%|&|(D �*�+cg c]  \  }*}*}+|+‘Œ
 c}+}*||)¬8«       | j[                  |'«       �ŒÎ |!rZ|j)                  d9|«      },| j'                  |d:|,D �cg c]+  }t7        d| j5                  ||«      z   | j                   «      ‘Œ- c}«       | j]                  ||«       |jE                  «        | S c c}w c c}w c c}w c c}w c c}+}*w c c}w );rŸ  r˜   r©  z	$cflags_cz
$cflags_ccr)   r¢   r£   r;   z.c.pdbz.cc.pdbÚ	pdbname_cÚ
pdbname_ccÚ	pchprefixÚcflagsÚcflags_cÚ	cflags_ccÚCPPFLAGSr   ÚCFLAGSÚCXXFLAGSr   ÚCPPFLAGS_hostÚCFLAGS_hostÚCXXFLAGS_hostr–  ÚasmflagsÚrcflagsÚinclude_dirsÚincludesz-IÚmidl_include_dirsÚmidl_includes))ÚcÚcflags_pch_c)r¿   Úcflags_pch_cc)ÚmÚcflags_pch_objc)ÚmmÚcflags_pch_objccÚarflagsÚcflags_objcÚcflags_objccFr«   N)r¿   ÚcpprÀ   rÀ   TrÁ  ÚSr¿   ÚsÚcc_srÃ   z_asm.objrÄ  ÚobjcrÆ  ÚobjcxxÚrcz.resrM  Úresource_include_dirsÚresource_includes)/r1   rÖ   Ú	GetCflagsÚ
GetCflagsCÚGetCflagsCCÚGetCflagsObjCÚGetCflagsObjCCrŽ   ÚGetAsmflagsÚGetComputedDefinesÚGetCompilerPdbNamerŠ   r¤   r<   r=   r�   rw   ro   r•   ÚWriteVariableListrÒ   Úenvironr¥   r9   rv  Ú
GetRcflagsr    r2   r;  ÚAdjustIncludeDirsÚAdjustMidlIncludeDirsÚGetPchBuildCommandsÚ
GetIncluderÚ   r±   r>   rx   r£   rO   ÚHasExplicitAsmRulesr†   rB   ÚGetObjDependenciesÚGetFlagsModificationsr°   rß   ÚWritePchTargets)-rP   r­  r‡   r�   rÌ   r¬  r«  rï   r@   Úextra_definesr²  r³  r´  rÉ  rÊ  r»  Ú	pdbpath_cÚ
pdbpath_ccr¢   Úpdbpathr–  r8   r÷   r½  rž   rE  r¿  Úpch_commandsr”   r]  ÚincluderÈ  r
  Úhas_rc_sourcer“   Úfilenamerx   Úcommandr  r?   rN  r  r2  ÚgchrÒ  s-                                                r%   rª  zNinjaWriter.WriteSourcesForArch¥  s	  € ð €MØ‡{�{�eÒØ×"Ñ"×,Ñ,¨[¸tÐ,ÓD€fØ×$Ñ$×/Ñ/°Ó<€hØ×%Ñ%×1Ñ1°+Ó>€iØ �MØ×'Ñ'×5Ñ5°kÓBñC€kà"�^Ø×(Ñ(×7Ñ7¸ÓDñE‚là	�‰˜Ó	Ø×#Ñ#×/Ñ/°Ó<€hØ×!Ñ!×+Ñ+¨KÓ8€fØ×#Ñ#×.Ñ.¨{Ó;€hØ×$Ñ$×0Ñ0°Ó=€iØ×(Ñ(×;Ñ;¸KÓH€mà#×1Ñ1×DÑDØ
�t×)Ñ)ó +ð +€i�*áØˆØ�<‰<˜8Ò#Ø
��t—|‘|Ñ#Ñ
#ˆ#Ü—'‘'×"Ñ"¤2§7¡7§<¡<°°T·]±]ÀDÇIÁIÓ#NÓOˆØ˜hÑ&ˆ	Ø˜yÑ(ˆ
Ø
×Ñ˜Z¨°y°kÔBØ
×Ñ˜Z¨¸
°|ÔDØ
×Ñ˜Z¨°t·y±y°kÕBà�z‰z˜( BÓ'€fØ—‘˜J¨Ó+€hØ—*‘*˜[¨"Ó-€ið ‡|�|�xÒÜ—*‘*—.‘. ¨RÓ0×6Ñ6Ó8Ü—*‘*—.‘. ¨2Ó.×4Ñ4Ó6ñ7Ø9AñB€hä—:‘:—>‘> *¨bÓ1×7Ñ7Ó9Ü—:‘:—>‘> *¨bÓ1×7Ñ7Ó9ñ:Ø<EñF�ià	�‰˜Ò	Ü—*‘*—.‘. °"Ó5×;Ñ;Ó=Ü—*‘*—.‘. °Ó3×9Ñ9Ó;ñ<Ø>FñG€hä—:‘:—>‘> /°2Ó6×<Ñ<Ó>Ü—:‘:—>‘> /°2Ó6×<Ñ<Ó>ñ?ØAJñK€ið �j‰j˜ BÓ'¨-Ñ7€GØ×Ñ˜: yØ<CÖD°qœF 1 d§k¡kÕ2ÒDôFà‡{�{�eÒØ
×Ñ˜Z¨Ü  ×!3Ñ!3°XÓ>ô@à
×Ñ˜Z¨à×&Ñ&×1Ñ1°+Ø26×2EÑ2EóGöHØô ˜d×0Ñ0°Ó3°T·[±[ÕAò HôIð
 —:‘:˜n¨bÓ1€Là
×
Ñ
Ó
 €CØ‡{�{�eÒØ×'Ñ'×9Ñ9¸,Ø:EóG€là×Ñ˜: zàö	 Øô 
˜D 4×#6Ñ#6°q¸#Ó#>Ñ>ÀÇÁÕ	Lò 	 ô!ð ‡{�{�eÒØ Ÿ*™*Ð%8¸"Ó=ÐØ×,Ñ,×BÑBØ
˜[ó*Ðà
×Ñ˜Z¨à%ö'Øô ˜d T×%8Ñ%8¸¸CÓ%@Ñ@À$Ç+Á+ÕNò 'ô(ð &×9Ñ9¸$Ó?€LØ‡{�{�eÒðMò 6‰(ˆ#ˆsà$×/Ñ/°°TÓ:ˆÚ�J×'Ñ'¨¨WÕ5ð6ð
 �j‰j˜ BÓ'€Gà×Ñ˜: xÜ˜t×1Ñ1°6Ó:ô<à×Ñ˜: zÜ˜t×1Ñ1°8Ó<ô>à×Ñ˜: {Ü˜t×1Ñ1°9Ó=ô?à‡{�{�eÒØ
×Ñ˜Z¨Ü  ×!3Ñ!3°[ÓAôCà
×Ñ˜Z¨Ü  ×!3Ñ!3°\ÓBôDà×Ñ˜: yÜ˜t×1Ñ1°7Ó;ô=à×ÑÔØ€GØ€MØó *ˆÜ—g‘g×&Ñ& vÓ.�m€h�Ø��ˆG€cØ—‘€gØ	Ð$Ñ	$ØˆØ#ˆ�‰ÕØ�#Š:˜# š*¨¯©¸Ò)=Ø‰Ø�#Š:˜$Ÿ+™+¨Ò.Ø‰Ø�K‰K˜5Ò  S¨E¢\Ø×"Ñ"×6Ñ6°tÔ<Øˆð ‰Ø�;‰;˜%Ò C¨3¢JØ‰Ø�;‰;˜%Ò C¨4¢KØˆØ#ˆ�‰ÕØ�;‰;˜%Ò C¨4¢KØˆØˆØ‰ñ 	Ø×!Ñ! &Ó)€eØ×)Ñ)¨(°WÑ*<Ó=€fØ	Ð	Ü˜ Ó&ˆØ#×6Ñ6¸°wÀÀÈ$ÓO€hØ€iØ	�‰˜Ò	Ø&8×&NÑ&NØ�6˜8 W¨h¸	Ø×Ñó' Ñ#ˆ	�6˜8ð ×Ñ�v˜w¨Ø6>× ?©¨¨A¨s¢Ó ?Ø",¸	ð ô Cð ‡n�n�VÖðU*ñX Ø$Ÿj™jÐ)@À,ÓOÐØ
×Ñ˜ZÐ)<à)ö+Øô ˜d T×%8Ñ%8¸¸CÓ%@Ñ@À$Ç+Á+ÕNò +ô,ð 	×Ñ˜ \Ô2à×ÑÔØ€NùòU Eùò
Hùò	 ùò'ùóJ !@ùò+s$   Ð'gÒ6,g	Õ0g×0gägå)0gc                 ó–   — |sy|D ]A  \  }}}}dddddœ|   }ddd	d
dœ}|j                  |«      }	|j                  ||	|||fg¬«       ŒC y)z-Writes ninja rules to compile prefix headers.NrÂ  rÃ  rÅ  rÇ  )rÁ  r¿   rÄ  rÆ  r¿   rÀ   rÏ  rÐ  r}  )rÒ   r°   )
rP   r­  rë  rð  Ú	lang_flagrÏ   r  Úvar_namerv  Úcmds
             r%   ræ  zNinjaWriter.WritePchTargetsE  s{   € áØà'3ò 
KÑ#ˆˆY˜˜eàØØØ ñ	ð
 	ñ€hð ˜u¨6¸ÑD€cØ�G‰G�D‹M€cØ×Ñ�s˜C °H¸iÐ3HÐ2IÐÕJñ
Kr'   c                 ó\  — | j                   dk7  st        | j                  «      dk(  r | j                  | j                  |||||«      S | j                  |«      }| j                  D �cg c]*  }| j                  | j                  |   |||||   ||¬«      ‘Œ, }}g }	|}
| j                  s| j                  |	|||«       |d   dv rE| j                  s9|	j                  d|f«       | j                  j                  ||dz   gd||	¬	«       |S | j                  j                  |
d
||	¬	«       |S c c}w )ú0Write out a link step. Fills out target.binary. r˜   r«   r©  rF   rX   r   r]   Úsolipor}  Úlipo)r1   r"   rÜ   ÚWriteLinkForArchrr   ÚComputeOutputrÞ   rÕ   ÚAppendPostbuildVariablerß   r°   )rP   rï   r‡   r�   rõ   rM   r?   r@   r8  r`  Úbuild_outputs              r%   Ú	WriteLinkzNinjaWriter.WriteLinkV  sS  € à‡{�{�eÒœs 4§:¡:›°!Ò3Ø×"Ñ"Ø
�*‰*�d˜K¨°¸LóJð Jð ×!Ñ! $Ó'€fð !ŸJ™Jö(ð ð ×%Ñ% d×&9Ñ&9¸$Ñ&?ÀØ&1°6¸9ÀT¹?Ø&2¸ð &õ ?ð (€fð (ð €nØ€lØ×ÒØ×$Ñ$ ^°T¸6À6ÔJð ˆv‰,Ð?Ñ
?Ø× Ò Ø×Ñ˜u f˜oÔ.Ø�
‰
×Ñ˜& &¨6¡/Ð2°H¸fØ$ð 	ô 	&ð €mð 	�
‰
×Ñ˜ v¨vÀÐÔPØ€mùò%(s   Á'/D)c           	      ó   — ddddœ|d      }d}	t        «       }
t        «       }t        «       }|r|j                  |«       d|v �r t        «       }|d   D �]�  }| j                  j                  |«      }|sŒ"|j	                  «       }|�r%g }| j
                  dk(  r[|j                  rO| j                  j                  |«      r4|j                  }|j                  r§|j                  |j                  «       n‹| j
                  dk(  r|j                  r|j                  g}nb|j                  | j
                  «      r:|j                  |j                  «       |
j                  |j                  d	z   «       n|j                  g}|D ])  }||vsŒ|j                  |«       |j                  |«       Œ+ |j                  «       }|r||j                  k7  s�Œ}|
j                  |«       �Œ� g }| j                  j                   r | j
                  dk7  r|j                  d
«       | j#                  ||«      }|€ | j$                  s| j'                  ||||«       |d   dk(  }| j(                  dk(  r/t*        j,                  j                  dd«      j/                  «       }n=| j(                  dk(  r.t*        j,                  j                  dd«      j/                  «       }| j
                  dk(  rE| j0                  j3                  || j5                  t6        d   «      | j8                  |«      }|z   }�n—| j
                  dk(  rÿ| j;                  | j=                  |«      «      }| j                  j3                  || j8                  | j4                  |||| j>                  «      \  }}}|z   }| jA                  |d|«       |
jC                  |«      }
|r| jA                  |d|g«       tE        | j                  jG                  |«      «      }	| j                  jI                  | j8                  «      }|r›|
j                  |«       n‰|j                  dg «      z   }|rrtK        |«      rgd}| j(                  dk7  r$|| j(                  z  }|j                  d|z  «       n|j                  d| jL                  z  «       |j                  d|z  «       | jA                  |dtO        | j4                  |«      «       |j                  dg «      }| j
                  dk(  r_|D �cg c]  }| j                  jQ                  ||«      ‘Œ  }}|D �cg c]*  }dtS        | j9                  |«      | j
                  «      z   ‘Œ, }}n5|D �cg c]*  }tS        d| j9                  |«      z   | j
                  «      ‘Œ, }}tT        jV                  jY                  tO        | j4                  |j                  dg «      «      «      } | j
                  dk(  r| j0                  j[                  | |«      } n*| j
                  dk(  r| j                  j[                  | «      } | jA                  |d|| z   «       |}!|dv �rÜ|j                  dt*        j\                  j/                  |«      d    f«       |j                  d!tT        jV                  j_                  |«      f«       | j
                  dk7  ry|}"| j$                  r| j0                  ja                  «       }"|r|"d"|z   z  }"|"d#z  }"|"jc                  d$d%«      }"|j                  d&tT        jV                  j_                  |"«      f«       | j
                  dk(  rÈ|j                  d'|f«       d(|v�r| j                  je                  |«      �s |d)z   | j                  _
        |j                  d*d+| j                  j                  z  f«       | j                  jg                  || j4                  |d,z   «      }#|| j                  j                  g}|#r~|j                  |#«       nl| j$                  s||d	z   g}nX|d-z   }nR| j
                  dk(  rC|j                  d'|f«       | j                  jg                  || j4                  |d,z   «      }#|#r||#g}tK        |«      r9|j                  d.tT        jV                  ji                  tk        |«      «      f«       |jm                  |||	z   |tk        |
«      to        |«      |¬/«       |!S c c}w c c}w c c}w )0rö  ÚlinkÚsolink_moduleÚsolink)Ú
executablerY   rT   rF   r   rÉ   r)   r]   )r¤  z$ldxxr  r£   ÚLDFLAGSr   ÚLDFLAGS_hostr˜   r   Ú	manifestsÚintermediatemanifestÚldflagszlib/z-Wl,-rpath=\$$ORIGIN/%sz-Wl,-rpath=%sz-Wl,-rpath-link=%sÚlibrary_dirsz	/LIBPATH:z-LÚ	librariesÚlibs)r  r   Úsonamer«   r   r;   z.rspr+  r2  Úlink_file_listrJ   z/NOENTRYz.libÚ
implibflagz
/IMPLIB:%sz.pdbÚ_notocÚsolibsrM  )8rO  rP  rn   rÒ   rV   r1   rL   rŽ   ÚIsUseLibraryDependencyInputsrM   rN   r[   rJ   rß   r^   r£   rO   rú  rÕ   rû  r¤   r<   rÝ  r¥   rÖ   Ú
GetLdflagsrŠ   r�   r    r†   ÚComputeOutputFileNamers   rÜ  ÚunionÚ_GetWinLinkRuleNameSuffixÚIsEmbedManifestÚ
GetDefFiler"   r½   rv  r�   r2   r-   rz   ÚuniquerÚAdjustLibrariesr=   ÚEncodePOSIXShellArgumentÚGetWrapperNamer0   ÚGetNoImportLibraryÚ
GetPDBNameÚEncodePOSIXShellListrQ  r°   rì   )$rP   r­  rï   r‡   r�   rõ   rM   r@   rï  Úcommand_suffixÚimplicit_depsr  Ú
order_depsÚextra_link_depsrñ   r£   ÚlinkableÚnew_depsÚnew_depÚfinal_outputr`  r?   Úis_executableÚenv_ldflagsr  Úmanifest_base_nameÚintermediate_manifestÚmanifest_filesÚdef_fileÚrpathr  Úlr	  Úlinked_binaryr  Úpdbnames$                                       r%   rù  zNinjaWriter.WriteLinkForArchq  sc  € ð  Ø(Ø!ñð ˆ6�lñ	€Gð
 €Nä“E€MÜ‹U€FÜ“€Jáð ‡n�n�\Ô"à˜Òô
 ›€oØ�nÑ%ó *ˆ#Ø×$Ñ$×(Ñ(¨Ó-ˆÙØ
Ø—?‘?Ó$ˆÚØˆ(Ø�k‰k˜UÒ"Ø×#Ò#Ø× Ñ ×=Ñ=¸kÔJØ×,Ñ,ˆHØ×"Ò"Ø�n‰n˜V×0Ñ0Õ1Ø�{‰{˜eÒ#¨×(9Ò(9Ø×)Ñ)Ð*‰HØ�~‰~˜dŸk™kÔ*Ø�J‰J�v—}‘}Ô%Ø×Ñ˜fŸm™m¨fÑ4Õ5àŸ™�ˆHØ!ò (ˆgØ˜oÒ-Ø×!Ñ! 'Ô*Ø×Ñ˜wÕ'ð(ð
 ×)Ñ)Ó+ˆÙ˜<¨6¯=©=Ô8Ø
×
Ñ
˜LÖ
)ð7*ð: €NØ‡{�{×Ò §¡¨uÒ 4Ø×Ñ˜OÔ,à×Ñ  dÓ+€FØ€|˜D×.Ò.Ø
×"Ñ" >°4¸ÀÔHà˜‘L LÑ0€Mð ‡|�|�xÒÜ—J‘J—N‘N 9¨bÓ1×7Ñ7Ó9�kØ	�‰˜Ò	Ü—J‘J—N‘N >°2Ó6×<Ñ<Ó>€kØ‡{�{�eÒØ×#Ñ#×.Ñ.¨{Ø
×
Ñ
Ô8¸ÑGÓ
HØ
×
Ñ
˜tó%€gð ˜gÑ%‚gØ	�‰˜Ò	Ø×5Ñ5Ø
×
$Ñ
$ TÓ
*ó,Ðð ×
Ñ
×
'Ñ
'¨°T×5HÑ5HØ(,×(:Ñ(:Ð<NØ(.°Ø(,×(;Ñ(;ó=ñ 5€gÐ$ nð
 ˜gÑ%€gØ
×Ñ˜Z¨°nÔEØ#×)Ñ)¨.Ó9€mÙ	Ø×ÑØÐ.Ð1FÐ0Gô	Iä0Ø
×
Ñ
×
,Ñ
,¨[Ó
9ó;€nà×#Ñ#×.Ñ.¨t×/BÑ/BÓC€hÙ	Ø×Ñ˜(Õ#ð ˜fŸj™j¨°BÓ7Ñ7€gÙ	œ3˜vœ;ØˆØ�<‰<˜8Ò#Ø
�4—<‘<Ñ
ˆ%Ø
�.‰.Ð3°eÑ;Õ
<à
�.‰.˜¨4×+<Ñ+<Ñ<Ô
=Ø�‰Ð+¨eÑ3Ô4Ø×Ñ˜: yÜ˜t×1Ñ1°7Ó;ô=ð —:‘:˜n¨bÓ1€LØ‡{�{�eÒà+ö-Øð ×(Ñ(×8Ñ8¸¸KÕHð -€lð -ð  ,ö-àð "Ô$6°t×7JÑ7JÈ1Ó7MØ7;·{±{ó%Dó Dð -€lñ -ð  ,ö-àô )¨°×0CÑ0CÀAÓ0FÑ)FØ)-¯©õ6ð -€lð -ô —
‘
×"Ñ"¤3 t×'9Ñ'9Ø'+§x¡x°¸RÓ'@ó$Bó C€Ià‡{�{�eÒØ×%Ñ%×5Ñ5°iÀÓM�iØ	�‰˜Ò	Ø×$Ñ$×4Ñ4°YÓ?€ià×Ñ˜: v¨|¸iÑ/GÔHà€MàÐ-Ò-Ø×Ñ˜X¤r§w¡w§}¡}°VÓ'<¸QÑ'?Ð@ÔAØ×Ñ˜UÜŸJ™J×?Ñ?ÀÓGðIô Jà	�‰˜Ò	ØˆØ×Òð  ×.Ñ.×=Ñ=Ó?ˆ.ÙØ
˜C $™JÑ
&ˆ.Ø˜&Ñ ˆð
 (×/Ñ/°°SÓ9ˆØ×ÑØÜ�J‰J×/Ñ/°Ó?ðAô	Bð 
�‰˜Ò	Ø×Ñ˜x¨Ð0Ô1Ø˜gÒ%Ø×"Ñ"×5Ñ5°kÕBØ#)¨F¡?ˆ$�+‰+Ô
 Ø
×
Ñ
 Ø!-°·±×0FÑ0FÑ!Fð!Hô Ià×&Ñ&×1Ñ1Ø˜4×-Ñ-¨v¸©ó@ˆ'à˜DŸK™K×2Ñ2Ð3ˆ&ÙØ�M‰M˜'Õ"Ø×!Ò!Ø˜& 6™/Ð*‰à˜HÑ$‰Ø	�‰˜Ò	Ø×Ñ˜X vÐ.Ô/Ø×"Ñ"×-Ñ-Ø
�t×)Ñ)¨6°F©?ó<€gá	Ø˜'Ð"ˆô ˆ6„{Ø×Ñ˜XÜ
�*‰*×
)Ñ
)¬&°«.Ó
9ð;ô <ð ×Ñ�V˜W ~Ñ5°yÜ$ ]Ó3Ü $ ZÓ 0Ø-ð ô /ð ÐùòU-ùò-ùò-s   Ô#c1Ô4/c6Õ*/c;c                 ó‚  ‡ — t        ˆ fd„|j                  dg «      D «       «      }|d   dk(  s|s:|s8|‰ j                  _        d‰ j                  _        ‰ j                  j                  S |d   dk(  �r”‰ j                  |«      ‰ j                  _        ‰ j                  dvrU‰ j                  sI‰ j                  j                  ‰ j                  j                  d||¬«       ‰ j                  j                  S g }‰ j                  r0‰ j                  j                  |«      }|r|j                  d	|f«       ‰ j                  r9‰ j                  j                  |‰ j                  «      }	|j                  d
|	f«       ‰ j                  dk7  st!        ‰ j"                  «      dk(  r†‰ j%                  ||‰ j                  j                  ‰ j                  j                  «       ‰ j                  j                  ‰ j                  j                  d|||¬«       ‰ j                  j                  S g }
‰ j"                  D ]K  }‰ j                  ||«      }‰ j&                  |   j                  |d||   ||¬«       |
j                  |«       ŒM ‰ j%                  ||‰ j                  j                  ‰ j                  j                  «       ‰ j                  j                  ‰ j                  j                  d|
|¬«       ‰ j                  j                  S ‰ j)                  |||||«      ‰ j                  _        ‰ j                  j                  S )Nc              3   óŒ   •K  — | ];  }|‰j                   v r+‰j                   j                  |«      j                  «       –— Œ= y ­wr    )rn   rÒ   rV   )rÇ   rñ   rP   s     €r%   rÈ   z*NinjaWriter.WriteTarget.<locals>.<genexpr>/  sA   øè ø€ ò 9Ø!Ø  D×$7Ñ$7Ñ7ð ×-Ñ-×1Ñ1°#Ó6×?Ñ?×Añ 9ùs   ƒAArÉ   rF   ÚnonerS   )r˜   ÚopenbsdÚnetbsdr)   Ú
alink_thinr®   Úlibtool_flagsÚlibflagsr˜   r«   Úalink)r¯   r  r}  )ÚanyrÒ   r£   rJ   rF   rú  r1   rÓ   rr   r°   rÖ   ÚGetLibtoolflagsrß   rŽ   ÚGetLibFlagsr    r"   rÜ   rû  rÞ   rý  )rP   rï   r‡   r�   rõ   rM   r!  r  r6  r7  r8  r@   r?   s   `            r%   rí   zNinjaWriter.WriteTarget.  sæ  ø€ Üó 9Ø%)§X¡X¨n¸bÓ%Aô9ó 9€Oð ˆF�|�vÒ¡i¹ð (€d‡k�kÔØ€d‡k�kÔðT �;‰;×ÑÐðS 
ˆf‰Ð)Ó	)Ø×-Ñ-¨dÓ3€d‡k�kÔØ
�+‰+Ð@Ñ
@Ø
×
+Ò
+Ø�
‰
×Ñ˜Ÿ™×+Ñ+¨\¸9Ø$0ð 	ô 	2ðJ �;‰;×ÑÐðE ˆ	Ø×ÒØ×-Ñ-×=Ñ=¸kÓJˆ-ÙØ×Ñ˜o¨}Ð=Ô>Ø×ÒØ×'Ñ'×3Ñ3°KØ48×4GÑ4GóIˆ(à
×
Ñ
˜J¨Ð1Ô
2à�;‰;˜%Ò¤3 t§z¡z£?°aÒ#7Ø
×
&Ñ
& y°$Ø'+§{¡{×'9Ñ'9¸4¿;¹;×;MÑ;MôOà
�*‰*×
Ñ
˜4Ÿ;™;×-Ñ-¨w¸	Ø&2¸ið ô Ið* �;‰;×ÑÐð% ˆ&Ø—j‘jò "ˆdØ×'Ñ'¨¨dÓ3ˆFØ×Ñ Ñ%×+Ñ+¨F°G¸YÀt¹_Ø7CØ6?ð ,ô Að �M‰M˜&Õ!ð"ð ×
&Ñ
& y°$Ø'+§{¡{×'9Ñ'9¸4¿;¹;×;MÑ;MôOà
�*‰*×
Ñ
˜4Ÿ;™;×-Ñ-¨w¸ð &/ð ô 0ð �;‰;×ÑÐð  Ÿ>™>¨$°¸VÀYØ*6ó8€d‡k�kÔà�;‰;×ÑÐr'   c                 ó2  — | j                   sJ ‚|d   dv }| j                  «       }|r|dz  }g }| j                  |||| j                  j                  | ¬«       |r‹|s‰|d   dk(  r6| j
                  j                  r | j                  j                  |d||¬«       nj|j                  d| j
                  j                  «       f«       | j                  j                  |d	||¬«       n| j                  j                  |d
||¬«       || j                  _        |S )NrF   rX   r¬   )Úis_command_startrT   Úpackage_ios_frameworkr}  ÚversionÚpackage_frameworkr­   )rÕ   rt  rû  r£   rJ   rÖ   ÚisIOSrr   r°   rß   ÚGetFrameworkVersionrK   )rP   rï   ró   Úis_emptyr@  r?   r  s          r%   rî   zNinjaWriter.WriteMacBundleb  s)  € Ø×ÒÐÐØ˜V™Ð(MÐMÐØ×(Ñ(Ó*€FÙØ�Ñ€fØ€IØ× Ñ  ¨D°&¸$¿+¹+×:LÑ:LØ6GÐ2Gð !ô Iá¡Ø	ˆf‰Ð)Ò	)¨d×.AÑ.A×.GÒ.GØ�
‰
×Ñ˜Ð!8Ð:LØ#,ð 	õ 	.ð 	×Ñ˜) T×%8Ñ%8×%LÑ%LÓ%NÐOÔPØ�
‰
×Ñ˜Ð!4Ð6HØ#,ð 	õ 	.ð ‡j�j×Ñ�v˜wÐ(:Ø!*ð ô ,à€D‡K�KÔØ€Mr'   c                 ól   — | j                  |¬«      }| j                  dk(  r| j                  |¬«      }|S )z:Returns the variables toolchain would set for build steps.rd  r)   )r~  r1   ÚGetMsvsToolchainEnv)rP   re  rž   s      r%   r;  zNinjaWriter.GetToolchainEnvy  s?   € à
×
 Ñ
 Ð5HÐ
 Ó
I€CØ‡{�{�eÒØ×$Ñ$Ø1ð %ó 3€cà€Jr'   c                 óP   — | j                   j                  d| j                  ¬«      S )z>Returns the variables Visual Studio would set for build steps.r
   rŒ   )rŽ   ÚGetVSMacroEnvr‡   )rP   re  s     r%   rE  zNinjaWriter.GetMsvsToolchainEnv�  s-   € à×Ñ×+Ñ+¨OØ48×4DÑ4Dð ,ó Fð Fr'   c                 óô   — | j                   sJ ‚| j                   }t        j                  j                  | j                  |t
        j                  j                  || j                  «      | j                  |«      S )z6Returns the variables Xcode would set for build steps.)
ru   r-   rš   r~  rÖ   r<   r=   rw   r|   r‡   )rP   re  ru   s      r%   r~  zNinjaWriter.GetSortedXcodeEnv†  sc   € à×ÒÐÐØ×&Ñ&€MÜ×Ñ×0Ñ0Ø×Ñ˜]Ü
�‰�‰�] D×$6Ñ$6Ó7¸×9IÑ9IØóð r'   c                 ón   — i }| j                   j                  d«      }|r||d<   | j                  |¬«      S )z:Returns the variables Xcode would set for postbuild steps.ÚCHROMIUM_STRIP_SAVE_FILErd  )rÖ   ÚGetPerTargetSettingr~  )rP   Úpostbuild_settingsÚstrip_save_files      r%   ÚGetSortedXcodePostbuildEnvz&NinjaWriter.GetSortedXcodePostbuildEnv�  sG   € àÐð ×)Ñ)×=Ñ=Ø"ó$€OáØ7FÐÐ3Ñ4Ø×!Ñ!Ð6HÐ!ÓIÐIr'   c                 óX   — | j                  ||||«      }|r|j                  d|f«       yy)zAAdds a 'postbuild' variable if there is a postbuild for |output|.Ú
postbuildsN)ÚGetPostbuildCommandrß   )rP   r  rï   r?   rJ   r=  Ú	postbuilds          r%   rû  z#NinjaWriter.AppendPostbuildVariableš  s6   € ð ×(Ñ(¨¨v°vÐ?OÓP€IÙØ×Ñ˜ iÐ0Õ1ð r'   c                 óš  — | j                   r
|d   dk(  s|syt        || j                  «      }t        j                  j                  |d¬«      }|�È| j                   j                  | j                  t        j                  j                  t        j                  j                  | j                  |«      «      t        t        j                  j                  t        j                  j                  | j                  |«      «      | j                  «      |d¬«      }|sy|j                  dt        j                  j                  d| j                   g«      «       | j#                  | j%                  «       «      }|dz   d	j                  |D �cg c]  }t'        j(                  |«      ‘Œ c}«      z   }|d
|z  z   dz   }	|rd|	z   d	z   S d|	z   S c c}w )z¹Returns a shell command that runs all the postbuilds, and removes
    |output| if any of them fails. If |is_command_start| is False, then the
    returned string will start with ' && '.rF   r2  r   T)Úquietr   Úcdz (z && z$); G=$$?; ((exit $$G) || rm -rf %s) z&& exit $$G)ú(z$ && ()rÖ   r2   r1   r-   rš   ÚGetSpecPostbuildCommandsÚAddImplicitPostbuildsr‡   r<   r=   r�   rw   r}   Úinsertrz   r  r|   r  rN  r6   r7   )
rP   rï   r?   Úoutput_binaryr=  rP  rž   rï  ÚcommandsÚcommand_strings
             r%   rQ  zNinjaWriter.GetPostbuildCommand¡  s¡  € ð ×Ò $ v¡,°&Ò"8ÁØÜ ¨¯©Ó4€FÜ×$Ñ$×=Ñ=¸dÈ$Ð=ÓO€JØÐ Ø×&Ñ&×<Ñ<Ø
×
Ñ
Ü
�'‰'×
Ñ
œ2Ÿ7™7Ÿ<™<¨×(:Ñ(:¸FÓCÓ
DÜ
Ü�g‰g×ÑœrŸw™wŸ|™|¨D×,>Ñ,>ÀÓNÓOØ�k‰kóð ˜Dð =ó "€jñ Øð ×Ñ�aœŸ™×8Ñ8Ø	ˆt×!Ñ!Ð"ó$ô %à
×
%Ñ
% d×&EÑ&EÓ&GÓ
H€Cð �T‰zØ�‰ÀÖL°g”\×(Ñ(¨Õ1ÒLÓMñN€Hàð "3à5;ñ"<ñ <à>LñM€Nñ Ø�>Ñ! FÑ*Ð*à˜Ñ&Ð&ùò Ms   Æ	G
c                 óÌ   — g }|D ]M  \  }}|j                  d|›dt        j                  t        j                  j                  |«      «      ›d�«       ŒO dj                  |«      S )zŠGiven an environment, returns a string looking like
        'export FOO=foo; export BAR="${FOO} bar;'
    that exports |env| to the shell.zexport ú=ú;r+  )rß   r6   r7   r-   rz   r  rw   )rP   rž   Ú
export_strÚkÚvs        r%   r  z"NinjaWriter.ComputeExportEnvStringÅ  sc   € ð €JØò L‰ˆˆ1Ø×ÒÚŒl×!Ñ!¤#§*¡*×"EÑ"EÀaÓ"HÕIðKõ LðLð �8‰8�JÓÐr'   c                 ó¾   — | j                   sJ ‚t        d   }| j                  t        j                  j                  || j                  j                  «       «      «      S )zDReturn the 'output' (full output path) to a bundle output directory.r   )rÕ   r�   rŠ   r<   r=   rw   rÖ   r  )rP   r=   s     r%   rt  z"NinjaWriter.ComputeMacBundleOutputÏ  sQ   € à×ÒÐÐÜ& }Ñ5€DØ×ÑÜ
�‰�‰�T˜4×.Ñ.×=Ñ=Ó?Ó@óBð Br'   c                 óà  — |s|d   }t        j                   t        «      }t        |d| j                  i«       |d   |d   |d   |d   dœ}|j	                  d|j	                  |d«      «      }|d	   |d	   |d
   |d   dœ}|j	                  d«      }|rd|z   }n|j	                  |d«      }d|v r|d   }n|d   }|dk(  rt        |d«      }|dv r|›|›|›�S |dk(  rd|z  S t        d|z  «      ‚)z@Compute the filename of the final output for the current target.rF   r1   r   r   r   )rY   rT   rS   r  Úproduct_prefixr   ÚSHARED_LIB_SUFFIXr   r   Úproduct_extensionr;   Úproduct_namerº   r   )rS   rY   rT   r  r2  z%s.stampzUnhandled output type %s)rh  r�   ÚCalculateVariablesr1   rÒ   r&   Ú	Exception)	rP   rï   rF   Údefault_variablesÚDEFAULT_PREFIXr$   ÚDEFAULT_EXTENSIONrA   r£   s	            r%   r  z!NinjaWriter.ComputeOutputFileNameÖ  sJ  € áØ�&‰\€däŸ	™	Ô"=Ó>ÐÜÐ(¨8°T·[±[Ð*AÔBð
 +Ð+>Ñ?Ø)Ð*=Ñ>Ø)Ð*=Ñ>Ø%Ð&9Ñ:ñ	€Nð �X‰XÐ&¨×(:Ñ(:¸4ÀÓ(DÓE€Fð
 -Ð-@ÑAØ+Ð,?Ñ@Ø+Ð,?Ñ@Ø'Ð(;Ñ<ñ	Ðð —‘Ð,Ó-€IÙØ˜	‘/�ià#×'Ñ'¨¨bÓ1€ià˜Ñà�NÑ#�fð �MÑ"€fØ	�5Šä˜V UÓ+ˆàð &ñ &á¡©Ð3Ð3Ø	�ŠØ˜&Ñ Ð äÐ0°4Ñ7Ó8Ð8r'   c                 ó
  — |d   }| j                   dk(  r4| j                  j                  | j                  | j                  «      }|r|S |€.| j                   dk(  r|dv r| j
                  j                  «       }n| j                  ||«      }|€8d|v r4t        j                  j                  |d   |«      }| j	                  |«      S ddg}| j                   dk(  r| j                  dk(  r|d	d
gz  }n$| j                   dk(  r| j                  dk(  r|d	gz  }|�hd}| j                  dk7  r-t        j                  j                  dd| j                  z  «      }t        j                  j                  |t        ||«      «      S ||v s| j                  r|S |d	k(  r^d}	| j                  dk7  r-t        j                  j                  dd| j                  z  «      }	t        j                  j                  |	|«      S | j                  |d¬«      S )z2Compute the path for the final output of the spec.rF   r)   r˜   )rS   r  rT   rY   rˆ   r  rY   r£   rT   rS   r@   z%sr   F)r§   )r1   rŽ   ÚGetOutputNamer‡   rŠ   rÖ   ÚGetExecutablePathr  r<   r=   rw   r¤   rB   rÓ   r†   )
rP   rï   r@   rF   Úoverriderî  r=   Útype_in_output_rootÚarchdirÚlibdirs
             r%   rú  zNinjaWriter.ComputeOutput  sè  € à�‰<€Dà‡{�{�eÒØ×#Ñ#×1Ñ1°$×2BÑ2BØ26×2DÑ2DóF€há	Øˆà€|˜Ÿ™ uÒ,°ð :Mñ 2Mà×$Ñ$×6Ñ6Ó8�hà×+Ñ+¨D°$Ó7€hà€|˜¨Ñ-Ü�W‰W�\‰\˜$˜}Ñ-¨xÓ8€dØ×Ñ Ó%Ð%ð (Ð):Ð;ÐØ‡{�{�eÒ §¡°Ò 8ØÐ.Ð0@ÐAÑAÑØ	�‰˜Ò	 $§,¡,°(Ò":ØÐ.Ð/Ñ/ÐàÐð €gØ	�‰˜Ò	!Ü—'‘'—,‘,˜v t¨d¯l©lÑ':Ó;ˆÜ�W‰W�\‰\˜'¤7¨8°TÓ#:Ó;Ð;Ø	Ð$Ñ	$¨×(IÒ(IØ€oØ	Ð!Ò	!Ø€fØ	�‰˜Ò	!Ü—‘—‘˜e T¨D¯L©LÑ%8Ó9ˆÜ�W‰W�\‰\˜& (Ó+Ð+à×'Ñ'¨¸EÐ'ÓBÐBr'   c                 ór   — t        |t        «      rJ ‚|€g }|j                  |dj                  |«      «       y )Nr+  )Ú
isinstancerã   rÚ   rw   )rP   r­  r]  Úvaluess       r%   rÜ  zNinjaWriter.WriteVariableList5  s5   € Ü˜&¤#Ô&Ð&Ð&Ø€~Ø€fØ×Ñ˜˜SŸX™X fÓ-Õ.r'   c           
      ón  — | j                   dk(  rg|D �cg c]4  }| j                  j                  || j                  | j                  ¬«      ‘Œ6 }}| j                  j                  || j                  ¬«      }n\| j                   dk(  rM|D �cg c]"  }t
        j                  j                  ||«      ‘Œ$ }}t
        j                  j                  ||«      }| j                  }	| j                  dk(  r|	d| j                  z   z  }	|	d|z   z  }	t        j                  dd|	«      }	g d¢}
d	d
j                  t        t        j                  |
«      «      z   dz   }
t        j                  |
dz   d|«      }d}d}|D �cg c]  }| j                  || j                  «      ‘Œ  }}| j                   dk(  rz|	dz   }|rdnd| j                   z   }|r'| j                  j#                  || j                   «      }nt
        j$                  j'                  |«      }dt(        j*                  z  |z   |z   }nE| j-                  |«      }t
        j.                  j1                  |«      }d| j                   z  |z   |z   }| j2                  j5                  |	|||d|||¬«       | j2                  j7                  «        |	|fS c c}w c c}w c c}w )z”Write out a new ninja "rule" statement for a given command.

    Returns the name of the new rule, and a copy of |args| with variables
    expanded.r)   rŒ   r˜   r£   r;   z[^a-zA-Z0-9_]r2  )r   r   r   r   r   z(?!ú|ú)z\$Nz.$unique_name.rspr   r+  z%%s gyp-win-tool action-wrapper $arch zcd %s; T)r5  ÚrestatrC  ÚrspfileÚrspfile_content)r1   rŽ   r�   r}   r‡   r-   rš   r›   r•   r¤   r+   Úsubrw   rv  r7   rŠ   r|   ÚBuildCygwinBashCommandLiner.   ÚEncodeRspFileListÚsysr  r  rz   r  rr   rY  r±   )rP   r•   rB  r@  rA  rž   rC  r5  r#   rD  Úprotectr|  r}  Úrun_inrï  s                  r%   r>  zNinjaWriter.WriteNewNinjaRule;  s¥  € ð ‡{�{�eÒð öàð × Ñ ×0Ñ0Ø�t×)Ñ)°$×2BÑ2Bð 1õ Dð €dð ð ×&Ñ&×6Ñ6Ø
˜d×.Ñ.ð 7ó 0�kà	�‰˜Ò	àEIÖJ¸cŒc×!Ñ!×/Ñ/°°SÕ9ÐJ€dÐJÜ×'Ñ'×5Ñ5°kÀ3ÓG€kð
 —	‘	€IØ‡|�|�xÒØ�3˜Ÿ™Ñ%Ñ%€iØ��t‘Ñ€IÜ—‘�¨¨YÓ7€Iò
 L€GØ�c—h‘hœs¤2§9¡9¨gÓ6Ó7Ñ7¸#Ñ=€GÜ—&‘&˜ 5™¨#¨{Ó;€Kð
 €GØ€OØCGÖH¸CˆD×Ñ˜s D×$6Ñ$6Õ7ÐH€DÐHØ‡{�{�eÒØÐ/Ñ/€gá‰r C¨$×*<Ñ*<Ñ$<€fÙ	Ø×,Ñ,×GÑGØ�$×$Ñ$ó&‰ô ×,Ñ,×>Ñ>¸tÓDˆØ8¼3¿>¹>ÑIØñØ!ñ"�gð ×'Ñ'¨Ó,€cÜ—
‘
×/Ñ/°Ó5€gØ˜D×.Ñ.Ñ.°Ñ4°wÑ>€gð
 	‡J�J‡O�O�I˜w¨¸WØ dØ#°_ð ô Fð 	‡J�J×ÑÔà�dˆ?Ðùòqùò Kùò0 Is   ”9J(Â
'J-Å4#J2r    )T)F))rc   rd   re   rQ   rŠ   r–   r    r†   r´   r¸   rû   r  r  rà   r/  r  r   r!  r#  r$  r%  r&  rè   rª  ræ  rý  rù  rí   rî   r;  rE  r~  rN  rû  rQ  r  rt  r  rú  rÜ  r>  rg   r'   r%   ri   ri   Ù   sô   „ ð !ó#>óJò<
óDó("9óHò 4òUònò0ò#òJ7ò$òLuònò83òò,,ò\ òD"ð. FJó^ò@Kò"ð8 6:ó{òz2òhó.óFó
ò	Jð 05ó2ò"'òH òBó09ód+CòZ/ð !%ô@r'   ri   c                 ó´  — t         j                  j                  |«      }|dk(  r‡| j                  dd«       | j                  dd«       | j                  dt        d   «       | j                  dt        d   «       dd	lmc m} t        |d
g «      a	t        |dg «      a
t        |dg «      ay	|dk(  r›t         j                  j                  }| j                  dd«       d|d   z   | d<   d| d<   d|d   z   | d<   d| d<   d|d   z   | d<   dd	lmc m} t        |d
g «      a	t        |dg «      a
t         j                   j#                  | |«       y	|}|dk(  rd}| j                  d|«       | j                  dd«       | j                  dt$        j&                  j)                  dd«      «       | j                  dt$        j&                  j)                  dd«      «       y	)zDCalculate additional variables for use in the build (called by gyp).r˜   ÚOSrf  z.dylibÚSHARED_LIB_DIRr   ÚLIB_DIRr   NÚ+generator_additional_non_configuration_keysÚ"generator_additional_path_sectionsÚ!generator_extra_sources_for_rulesr)   r;   r  r   r   r   rS   r   r   rT   ÚandroidÚlinuxz.sor
   r   r¢   )r-   rz   Ú	GetFlavorÚ
setdefaultr�   Úgyp.generator.xcodeÚ	generatorÚxcodeÚgetattrrˆ  r‰  rŠ  ÚMSVSUtilÚTARGET_TYPE_EXTÚgyp.generator.msvsÚmsvsr.   ÚCalculateCommonVariablesr<   r=   rw   )rk  Úparamsr1   Úxcode_generatorÚextsÚmsvs_generatorÚoperating_systems          r%   ri  ri  ~  s÷  € ô �:‰:×Ñ Ó'€&Øˆu‚_Ø× Ñ   uÔ-Ø× Ñ Ð!4°hÔ?Ø× Ñ Ð!1Ü!<¸]Ñ!KôMà× Ñ  Ü!<¸]Ñ!KôM÷
 2Ð1Ü29¸/Ø5°ró3;Ð/ä)0°Ø,¨bó*2Ð&ô )0°Ø+¨Ró)1Ñ%à�‚Ü�<‰<×'Ñ'€DØ× Ñ   uÔ-Ø-0°4¸Ñ3EÑ-EÐÐ)Ñ*Ø-/ÐÐ)Ñ*Ø-0°4Ð8HÑ3IÑ-IÐÐ)Ñ*Ø-/ÐÐ)Ñ*Ø-0°4Ð8HÑ3IÑ-IÐÐ)Ñ*÷ 0Ð/Ü29¸.Ø5°ró3;Ð/ä)0°Ø,¨bó*2Ð&ô ×Ñ×/Ñ/Ð0AÀ6ÕJàÐØ�ÒØ ÐØ× Ñ  Ð'7Ô8Ø× Ñ Ð!4°eÔ<Ø× Ñ Ð!1Ü!#§¡§¡¨o¸uÓ!EôGà× Ñ  Ü!#§¡§¡¨o¸uÓ!EõGr'   c                 ó   — t         j                  j                  | d   j                  xs d«      }| j	                  di «      j	                  dd«      }t         j                  j                  t         j                  j                  ||«      «      S )zEReturns the path from the toplevel_dir to the build output directory.Úoptionsr;   rð   Ú
output_dirrœ  )r<   r=   rþ   Úgenerator_outputrÒ   r�   rw   )r˜  Úgenerator_dirrŸ  s      r%   ÚComputeOutputDirr¢  ²  sl   € ô —'‘'—/‘/ &¨Ñ"3×"DÑ"DÒ"KÈÓL€-ð �z‰zÐ+¨RÓ0×4Ñ4°\À5ÓI€*ô 
�‰×	Ñ	œ"Ÿ'™'Ÿ,™, }°jÓAÓ	BÐBr'   c                 óº   — | d   j                   }t        j                  j                  t        j                  j	                  |t        | «      d«      «      }||dœay)zBCalled by __init__ to initialize generator values based on params.rž  Úgypfiles)ÚtoplevelÚqualified_out_dirN)r   r<   r=   r�   rw   r¢  Úgenerator_filelist_paths)r˜  r¥  r¦  s      r%   ÚCalculateGeneratorInputInfor¨  ¿  sU   € ð �IÑ×+Ñ+€(Ü—g‘g×&Ñ&¤r§w¡w§|¡|ØÔ  Ó(¨*ó(6ó 7Ðð
 Ø,ñÑr'   c                 óX   — t         j                  j                  | «       t        | |«      S )z;Open |path| for writing, creating directories if necessary.)r-   rz   ÚEnsureDirExistsÚopen)r=   Úmodes     r%   rÆ   rÆ   Í  s!   € ä‡*�*×Ñ˜TÔ"Ü	ˆd�DÓ	Ðr'   c                 ó>   — |j                  | d«      }|r|dz   |z   S |S )Nr   r+  )rÒ   )rô  ÚwrappersÚprogÚwrappers       r%   ÚCommandWithWrapperr±  Ó  s)   € Ø�L‰L˜˜bÓ!€'ÙØ�S‰=˜4ÑÐØ	€+r'   c            
      ó$  ‡
— t        t        j                  j                  dd«      «      } | r| S t        j
                  dv rÄddlŠ
 G ˆ
fd„d‰
j                  «      } |«       }‰
j                  |«      |_	        ‰
j                  j                  j                  ‰
j                  |«      «       t        d|j                  dz  «      }t        dt        t        j                  j                  d	d
«      «      «      }t!        ||«      S t        j
                  j#                  d«      r—t        j$                  j'                  d«      rwt)        d«      5 }t+        j,                  d«      }|D ]G  }|j/                  |«      }|sŒt        dt        |j1                  d«      «      dz  «      c cddd«       S  	 ddd«       yyt        j
                  dk(  r0	 t        t3        j4                  g d¢«      «      }	t        d|	d
z  «      S y# 1 sw Y   yxY w#  Y yxY w)z6Returns a best-guess for a number of concurrent links.ÚGYP_LINK_CONCURRENCYr   )Úwin32ÚcygwinNc            
       ó  •— e Zd ZdW ° j                  fdW ° j                  fdW ° j                  fdW ° j                  fdW ° j                  fdW ° j                  fdW ° j                  fdW ° j                  fd	W ° j                  fg	Zy
)ú1GetDefaultConcurrentLinks.<locals>.MEMORYSTATUSEXÚdwLengthÚdwMemoryLoadÚullTotalPhysÚullAvailPhysÚullTotalPageFileÚullAvailPageFileÚullTotalVirtualÚullAvailVirtualÚsullAvailExtendedVirtualN)rc   rd   re   Úc_ulongÚc_ulonglongÚ_fields_)Úctypess   €r%   ÚMEMORYSTATUSEXr·  ã  s„   ø„ à	‘V—^‘^Ð$Ø	™Ÿ™Ð(Ø	™×+Ñ+Ð,Ø	™×+Ñ+Ð,Ø	™V×/Ñ/Ð0Ø	™V×/Ñ/Ð0Ø	™F×.Ñ.Ð/Ø	™F×.Ñ.Ð/Ø	#¡V×%7Ñ%7Ð8ð
�hr'   rÅ  r«   l        ÚGYP_LINK_CONCURRENCY_MAXl        rŒ  z/proc/meminfoz^MemTotal:\s*(\d*)\s*kBi  € Údarwin)Úsysctlz-nz
hw.memsize)r=  r<   rÝ  rÒ   r�  ÚplatformrÄ  Ú	StructureÚsizeofr¸  ÚwindllÚkernel32ÚGlobalMemoryStatusExÚbyrefÚmaxrº  Úminr!   r=   Úexistsr«  r+   Úcompiler,   ÚgroupÚ
subprocessÚcheck_output)Ú	pool_sizerÅ  ÚstatÚ	mem_limitÚhard_capÚmeminfoÚmemtotal_reÚliner,   Úavail_bytesrÄ  s             @r%   ÚGetDefaultConcurrentLinksrß  Ú  s½  ø€ ä”"—*‘*—.‘.Ð!7¸Ó;Ó<€)ÙØÐä‡\�\Ð(Ñ(Ûö˜×)Ñ)ô ñ Ó€DØ—M‘M $Ó'€D„MØ
‡M�M×Ñ×/Ñ/°·±¸TÓ0BÔCô �A�t×(Ñ(¨]Ñ;Ó<€IÜ�1”cœ"Ÿ*™*Ÿ.™.Ð)CÀUÓKÓLÓM€HÜˆy˜(Ó#Ð#Ü
‡|�|×Ñ˜wÔ'Ü	‡w�w‡~�~�oÔ&Ü�Ó ð @ GÜ—j‘jÐ!;Ó<ˆØò 	@ˆDØ×#Ñ# DÓ)ˆ%ÙØä�Qœ˜EŸK™K¨›NÓ+°Ñ>Ó?Ñ
?÷@ñ @ñ	@÷@ñ Ü
‡|�|�xÒðÜœ
×/Ñ/Ò0NÓOÓP€kô ��K MÑ2Ó3Ð3ð
 ÷'@ð ûðÙús   ÅAG?Æ/G?Ç.H Ç?HÈHc                 ó   — | rdS dS )zwReturns the suffix used to select an appropriate linking rule depending on
  whether the manifest embedding is enabled.Ú_embedr   rg   ©Úembed_manifests    r%   r  r    s   € ñ $ˆÐ+¨Ð+r'   c           	      óæ  ‡— ˆfd„}t        ‰«      }t        t        j                  j	                  dd«      «      dk7  }d|j                  «       z  }t        j                  ›d|›d�} ||dd	«      }| j                  d
|z   ||dddd¬«       | j                  d|z   ||dddd¬«       t        j                  ›d|›d�} ||dd«      }| j                  d|z   d|j                  «       z  |ddd¬«       y)z7Adds link rules for Windows platform to |master_ninja|.c                 óF   •— dddœ|   }dt         j                  || |‰dœz  S )NÚ1Ú2)ÚexeÚdllz†%(python)s gyp-win-tool link-with-manifests $arch %(embed)s %(out)s "%(ldcmd)s" %(resname)s $mt $rc "$intermediatemanifest" $manifests)Úpythonrœ  ÚldcmdÚresnameÚembed)r�  r  )rë  rœ  Úbinary_typeÚresource_namerã  s       €r%   ÚFullLinkCommandz)_AddWinLinkRules.<locals>.FullLinkCommand  sC   ø€ àØñð ñ€Mðô Ÿ™ØØØ'Ø&ñ)ñ)ð )r'   ÚGYP_USE_SEPARATE_MSPDBSRVÚ0r   zLINK%s(DLL) $binaryz! gyp-win-tool link-wrapper $arch z7 $ld /nologo $implibflag /DLL /OUT:$binary @$binary.rspz$binaryré  r  z$binary.rspz$libs $in_newline $ldflagsTÚ	link_pool)r@  rï  r|  r}  r{  rC  r   z& $ld /nologo /OUT:$binary @$binary.rsprè  rÿ  zLINK%s $binaryz$in_newline $libs $ldflags)r@  rï  r|  r}  rC  N)	r  r=  r<   rÝ  rÒ   Úupperr�  r  rY  )Úmaster_ninjarã  rð  Úrule_name_suffixÚuse_separate_mspdbsrvÚdlldescÚdllcmdÚexe_cmds    `      r%   Ú_AddWinLinkRulesrû    s%  ø€ ô)ô /¨~Ó>Ðä	Œ"�*‰*�.‰.Ð4°cÓ
:Ó;¸qÑ@ð à!Ð$4×$:Ñ$:Ó$<Ñ<€'ô "Ÿn›nÒ.CðE€&ñ ˜6 9¨eÓ4€&Ø×Ñ�HÐ/Ñ/Ø '°Ø)Ø$@ØØ$ð ô &ð ×Ñ�OÐ&6Ñ6Ø '°Ø)Ø$@ØØ$ð ô &ô �~‹~Ò4ð6€'ñ ˜G Y°Ó6€'Ø×Ñ�FÐ-Ñ-Ø 0Ð3C×3IÑ3IÓ3KÑ KØ#Ø)Ø$@Ø$ð õ &r'   c                 ó!  — |d   }t         j                  j                  |«      }|j                  di «      }t        j
                  j                  t        j
                  j                  t        |«      |«      «      }t        j
                  j                  |j                  |«      }	t        t        j
                  j                  |	d«      «      }
t        j                  |
d¬«      }t         j                  j                  ||	|«       |dk(  rd}d}d}d	}d
}nd}d}d}d}d}d}d}|}d }d }d }d }d }d}d}d}d}t         j                  j                  | d   «      \  }}}||   j                  dg «      }t         j                  j                  ||j                  «      } i }!|D �]  \  }"}#|"dk(  r t        j
                  j                  | |#«      }|"dk(  r t        j
                  j                  | |#«      }|"dk(  r3t        j
                  j                  | |#«      }|j!                  d«      r|}|"dk(  r t        j
                  j                  | |#«      }|"dk(  r"t        j
                  j                  | |#«      }|#}|"dk(  r"t        j
                  j                  | |#«      }|#}|"dk(  r t        j
                  j                  | |#«      }|"dk(  r t        j
                  j                  | |#«      }|"dk(  r t        j
                  j                  | |#«      }|"d k(  r t        j
                  j                  | |#«      }|"d!k(  r t        j
                  j                  | |#«      }|"d"k(  r t        j
                  j                  | |#«      }|"j!                  d#«      s�Œít        j
                  j                  | |#«      |!|"d t#        d#«        <   �Œ t        j$                  j'                  «       D ]n  \  }"}#|"j)                  «       j!                  d#«      sŒ&|"d t#        d#«        }$t+        j,                  d$d%|$«      }$t        j
                  j                  | |#«      |!|$<   Œp |j                  d&d «      }%|%rd'|%z  |!d(<   |dk(  rÑ| D �&cg c]  }&||&   d)   |   ‘Œ }'}&d }(|j                  d*d«      s t         j.                  j1                  |'|«      }(t         j.                  j3                  |	||(t        «      })t5        |)j'                  «       «      D ]C  \  }*}+|r|}+t7        d|!t9        |+d«      «      },|r|,|*d+k(  rd,nd-z  },|j;                  d.|*z   |,«       ŒE t=        d/dg|«      }|j;                  dt7        d|!|«      «       t=        d0dg|«      }|j;                  d1t7        d|!|«      «       |dk(  r|j;                  d2|«       |j;                  d3d4«       |j;                  d|«       |j;                  d5d6«       |j;                  d7d8«       |j;                  d9d:«       |j;                  d;d<«       n™|j;                  d2t7        d(|!|«      «       |j;                  d=t7        d(|!«      «       |j;                  dt=        d>dg|«      «       |d?k7  r<|j;                  dt=        d@dg|«      «       |j;                  dt=        dAd!g|«      «       t>        �r5|s|}|s|}|j;                  dBt=        dCg|«      «       |j;                  dDt=        dEg|«      «       |j;                  dFt=        dGg|«      «       t=        dHg|«      }t=        dIg|«      }dJ|v r|r|jA                  dJ|«      }dK|v r|r|jA                  dK|«      }|j;                  dLt7        d|!|«      «       |j;                  dMt7        d|!|«      «       |dk(  r|j;                  dN|«       n:|j;                  dNt7        d(|!|«      «       |j;                  dOt7        d(|!«      «       |jC                  «        |jE                  dPtG        «       ¬Q«       |jC                  «        |dk(  rdRndS}-|dk7  rA|jI                  ddTdUdV|-¬W«       |jI                  dXdTdY¬Z«       |jI                  d1d[d\dV|-¬W«       n¡d]}.d^}/|jI                  ddT|.d_d`|-¬a«       |jI                  d1d[|/d_db|-¬a«       |jI                  d3dcddtJ        jL                  z  ¬Z«       |jI                  d5dedftJ        jL                  z  ¬Z«       |jI                  dgdhditJ        jL                  z  ¬Z«       |d?k7  r†|dk7  r�|jI                  djdkdl¬Z«       |jI                  dmdkdn¬Z«       dodpdqdrœz  }0|jI                  dsdtdu|0dvdwiz  dxdydP¬z«       |jI                  d{d|du|0dvdwiz  dxd}dP¬z«       |jI                  d~dd€dP¬�«       �nî|dk(  rC|jI                  djd‚dƒtJ        jL                  z  d_d„¬…«       tO        |du¬†«       tO        |d‡¬†«       �n¦|jI                  dˆd‰dŠdV|-¬W«       |jI                  d‹dŒd�dV|-¬W«       |jI                  djdŽd�¬Z«       |jI                  d�d‘d’¬Z«       |jI                  d“d”d•d–d—iz  ¬Z«       d˜}1d™|1d—drœz  }0dš}2|jI                  dsd›du|0|2dœd�œz  dxdždP¬z«       |jI                  dŸd›du|1|2dœd�œz  dxdždP¬z«       |jI                  d{d du|0|2d¡d�œz  dxdždP¬z«       |jI                  d¢d du|1|2d¡d�œz  dxdždP¬z«       |jI                  d~d£d¤dP¬�«       |jI                  d¥d¦d§¬Z«       |jI                  d¨d©dª¬Z«       |jI                  d«d¬d­¬Z«       |jI                  d®d¯d°¬Z«       |jI                  d±d²d³¬Z«       |jI                  d´dµd¶¬Z«       |jI                  d·d¸d¹¬Z«       |jI                  dºd»d¼¬Z«       |dk(  r&|jI                  d½d¾d¿tJ        jL                  z  ¬Z«       n|jI                  d½d¾dÀ¬Z«       |dk(  r&|jI                  dÁdÂdÃtJ        jL                  z  ¬Z«       n.|dÄk(  r|jI                  dÁdÂdÅ¬Z«       n|jI                  dÁdÂdÆ¬Z«       |jC                  «        tQ        «       }3|dÇ   D ]V  }t         j                  jS                  | |t        j
                  j                  |«      «      D ]  }4|3jU                  |4«       Œ ŒX tQ        «       }5i }6i }7tQ        «       }8tQ        «       }9| D �]–  }&t         j                  j                  |&«      \  }}:};||   j                  dg «      }<||<k(  sJ dÈ|<›dÉ|›�«       ‚||&   }=|d?k(  r#t         jV                  jY                  ||   |=«       t         j                  j[                  ||j                  d‡«      }t         j                  j]                  ||:|;«      }>|>j_                  dÊ«      }>ta        jb                  |>«      je                  «       }?t        j
                  jg                  |«      }@dË}A|;dÌk7  rAdÍ|;z   z  }At        j
                  j                  A@|:dÎz   «      }Bti        «       }Ctk        |?|6|@||C|	|B||j                  ¬Ï«	      }D|Djm                  |=||«      }4|Cjo                  «       dkD  rrt        t        j
                  j                  |	B«      «      5 }E|Ejq                  Cjs                  «       «       d d d «       Cju                  «        |jw                  B«       |4rw|:|4jy                  «       k7  r)|=dÐ   dÌk(  r!|7j{                  |:g «      j}                  |4«       |4|6|&<   |&|3v r|5jU                  |4jy                  «       «       |9jU                  |:«       �Œ†|8jU                  |:«       �Œ™ |7rc|jC                  «        |j                  dÑ«       t5        |7«      D ]4  }F|j�                  |FdÒ|7|F   D �Gcg c]  }G|Gjy                  «       ‘Œ c}G«       Œ6 |8|9z
  }8|8rC|jC                  «        |j                  dÓ«       t5        |8«      D ]  }:|j�                  |:dÒ«       Œ |5rM|jC                  «        |j�                  dÔdÒt5        |5«      «       |jƒ                  |j                  dÕdÔ«      «       |
ju                  «        y c c}&w # 1 sw Y   �ŒÌxY wc c}Gw )ÖNrž  rð   zbuild.ninjaéx   )Úwidthr)   zlib.exeÚUNSETzlink.exez$ldr¡  r¿   zc++z$ccz$cxxr¢  r£  r¦  r§  r   Úmake_global_settingsÚARzAR.hostÚCCzclang-clÚCXXzCC.hostzCXX.hostÚLDzLD.hostÚNMzNM.hostÚREADELFzREADELF.hostÚ_wrapperz\.HOST$z.hostr¾   zexport DEVELOPER_DIR='%s' &&ÚLINKr»   Ú"ninja_use_custom_environment_filesrk   z -m32z -m64Úcl_Ú	CC_targetÚ
CXX_targetrÀ   r¤  r  zmidl.exerÑ  zrc.exeÚml_x86zml.exeÚml_x64zml64.exeÚmtzmt.exer¥  Ú	AR_targetr˜   Ú	NM_targetÚREADELF_targetÚar_hostÚAR_hostÚnm_hostÚNM_hostÚreadelf_hostÚREADELF_hostÚCC_hostÚCXX_hostz$(CC)z$(CXX)rÁ   rÂ   Úld_hostÚ	ldxx_hostró  )ÚdepthÚmsvcÚgcczCC $outzU$cc -MMD -MF $out.d $defines $includes $cflags $cflags_c $cflags_pch_c -c $in -o $outz$out.d)r@  rï  r5  ÚdepsrÎ  zE$cc $defines $includes $cflags $cflags_c $cflags_pch_c -c $in -o $out)r@  rï  zCXX $outzX$cxx -MMD -MF $out.d $defines $includes $cflags $cflags_cc $cflags_pch_cc -c $in -o $outz_ninja -t msvc -e $arch -- $cc /nologo /showIncludes /FC @$out.rsp /c $in /Fo$out /Fd$pdbname_c zaninja -t msvc -e $arch -- $cxx /nologo /showIncludes /FC @$out.rsp /c $in /Fo$out /Fd$pdbname_cc z$out.rspz$$defines $includes $cflags $cflags_c)r@  rï  r|  r}  r   z%$defines $includes $cflags $cflags_cczIDL $inzd%s gyp-win-tool midl-wrapper $arch $outdir $tlb $h $dlldata $iid $proxy $in $midl_includes $idlflagszRC $inzU%s gyp-win-tool rc-wrapper $arch $rc $defines $resource_includes $rcflags /fo$out $inrÃ   zASM $outzS%s gyp-win-tool asm-wrapper $arch $asm $defines $includes $asmflags /c /Fo $out $inr8  zAR $outz'rm -f $out && $ar rcs $arflags $out $inr5  z(rm -f $out && $ar rcsT $arflags $out $inzÄif [ ! -e $lib -o ! -e $lib.TOC ]; then %(solink)s && %(extract_toc)s > $lib.TOC; else %(solink)s && %(extract_toc)s > $lib.tmp && if ! cmp -s $lib.tmp $lib.TOC; then mv $lib.tmp $lib.TOC ; fi; fiz;$ld -shared $ldflags -o $lib -Wl,-soname=$soname %(suffix)szI{ $readelf -d $lib | grep SONAME ; $nm -gD -f p $lib | cut -f1-2 -d' '; })r  Úextract_tocr  zSOLINK $libTÚsuffixz@$link_file_listz$link_file_listz<-Wl,--whole-archive $in $solibs -Wl,--no-whole-archive $libs)r@  r{  rï  r|  r}  rC  r   zSOLINK(module) $libz3-Wl,--start-group $in $solibs $libs -Wl,--end-grouprÿ  z	LINK $outzH$ld $ldflags -o $out -Wl,--start-group $in $solibs $libs -Wl,--end-group)r@  rï  rC  zLIB $outzU%s gyp-win-tool link-wrapper $arch False $ar /nologo /ignore:4221 /OUT:$out @$out.rspz$in_newline $libflags)r@  rï  r|  r}  râ  FrÏ  z	OBJC $outz[$cc -MMD -MF $out.d $defines $includes $cflags $cflags_objc $cflags_pch_objc -c $in -o $outrÐ  zOBJCXX $outz^$cxx -MMD -MF $out.d $defines $includes $cflags $cflags_objcc $cflags_pch_objcc -c $in -o $outzLIBTOOL-STATIC $out, POSTBUILDSzarm -f $out && ./gyp-mac-tool filter-libtool libtool $libtool_flags -static -o $out $in$postbuildsrø  zLIPO $out, POSTBUILDSz6rm -f $out && lipo -create $in -output $out$postbuildsr÷  zSOLIPO $out, POSTBUILDSz\rm -f $lib $lib.TOC && lipo -create $in -output $lib$postbuilds &&%(extract_toc)s > $lib.TOCr!  z]{ otool -l $lib | grep LC_ID_DYLIB -A 5; nm -gP $lib | cut -f1-2 -d' ' | grep -v U$$; true; }z($ld %(type)s $ldflags -o $lib %(suffix)szòif [ ! -e $lib -o ! -e $lib.TOC ] || otool -l $lib | grep -q LC_REEXPORT_DYLIB ; then %(solink)s && %(extract_toc)s > $lib.TOC; else %(solink)s && %(extract_toc)s > $lib.tmp && if ! cmp -s $lib.tmp $lib.TOC; then mv $lib.tmp $lib.TOC ; fi; fiz@$link_file_list$postbuildszSOLINK $lib, POSTBUILDSz-shared)r"  rF   z$in $solibs $libsÚsolink_notoczSOLINK(module) $lib, POSTBUILDSz-bundleÚsolink_module_notoczLINK $out, POSTBUILDSz1$ld $ldflags -o $out $in $solibs $libs$postbuildsr•  zPREPROCESS INFOPLIST $outzT$cc -E -P -Wno-trigraphs -x c $defines $in -o $out && plutil -convert xml1 $out $outr˜  zCOPY INFOPLIST $inz:$env ./gyp-mac-tool copy-info-plist $in $out $binary $keysr—  zMERGE INFOPLISTS $inz-$env ./gyp-mac-tool merge-info-plist $out $inr‰  zCOMPILE XCASSETS $inz.$env ./gyp-mac-tool compile-xcassets $keys $inrs  z2COMPILE HEADER MAPS AND COPY FRAMEWORK HEADERS $inz“$env ./gyp-mac-tool compile-ios-framework-header-map $out $framework $in && $env ./gyp-mac-tool copy-ios-framework-headers $framework $copy_headersr{  zMACTOOL $mactool_cmd $inz1$env ./gyp-mac-tool $mactool_cmd $in $out $binaryr@  z"PACKAGE FRAMEWORK $out, POSTBUILDSzG./gyp-mac-tool package-framework $out $version$postbuilds && touch $outr>  z&PACKAGE IOS FRAMEWORK $out, POSTBUILDSzC./gyp-mac-tool package-ios-framework $out $postbuilds && touch $outr­   z
STAMP $outz%s gyp-win-tool stamp $outz${postbuilds}touch $outrh  zCOPY $in $outz)%s gyp-win-tool recursive-mirror $in $outÚzoszrm -rf $out && cp -fRP $in $outz>ln -f $in $out 2>/dev/null || (rm -rf $out && cp -af $in $out)Úbuild_filesz;make_global_settings needs to be the same for all targets. z vs. zutf-8r¢   r£   r;   r¶   )r   r¤   zShort names for targets.Úphonyz(Empty targets (output for completeness).ÚallÚdefault_target)Br-   rz   r�  rÒ   r<   r=   r�   rw   r¢  r   rÆ   r6   rq   ÚCopyToolÚParseQualifiedTargetr{   ré   r"   rÝ  r‹  Úlowerr+   r~  r.   ÚExtractSharedMSVSSystemIncludesÚGenerateEnvironmentFilesrQ  r±  r2   rÚ   r   Ú$generator_supports_multiple_toolsetsr0   r±   rC  rß  rY  r�  r  rû  rO  Ú
AllTargetsrP  rš   ÚMergeGlobalXcodeSettingsToSpecÚRelativePathÚQualifiedTargetÚencoderT  rU  rX  r’   r   ri   rû   ÚtellÚwriteÚgetvalueÚcloserä   r^   rŽ  rß   Úcommentr°   Údefault)HÚtarget_listÚtarget_dictsÚdatar˜  r‡   rž  r1   rð   rp   rs   Úmaster_ninja_filerõ  r¡  r¿   rÀ   r¤  r  r¥  r  r  rÁ   rÂ   Úcc_host_global_settingÚcxx_host_global_settingÚclang_clr¦  r  r§  r  Ú
build_filer2  r   Úbuild_to_rootr®  Úkeyr  Ú
key_prefixr¾   Úqualified_targetÚconfigsÚshared_system_includesÚcl_pathsr@   r=   rï  r   Ú
cc_commandÚcxx_commandÚmtime_preserving_solink_baseÚsolink_baseÚsolink_suffixÚall_targetsr£   r?  rn   Útarget_short_namesÚempty_target_namesÚnon_empty_target_namesr•   r¤   Úthis_make_global_settingsrï   Úqualified_target_for_hashrm   Ú	base_pathr¢   r~   Úninja_outputÚwriterr­  Ú
short_namer  sH                                                                           r%   ÚGenerateOutputForConfigrY  H  sK  € à�9Ñ€'Ü�:‰:×Ñ Ó'€&Ø—J‘JÐ0°"Ó5€/ô �g‰g×ÑÜ‡g�g‡l�lÔ# FÓ+¨[Ó9ó;€)ô —7‘7—<‘< × 4Ñ 4°iÓ@€.ä ¤§¡§¡¨n¸mÓ!LÓMÐÜ×$Ñ$Ð%6¸cÔB€,ô ‡*�*×Ñ�f˜n¨oÔ>ð ˆu‚_Ø	€Bð 
€BØ
€CØ	€BØ�Gà	€BØ	€BØ
€CØ	€BØ€DØ€GØ€Ià€'Ø€'Ø€(ØÐØ ÐØ€(Ø€"Ø€'Ø€'Ø€,ä—Z‘Z×4Ñ4°[À±^ÓDÑ€*ˆa�Ø˜jÑ)×-Ñ-Ð.DÀbÓIÐÜ—*‘*×/Ñ/°	Ø07×0DÑ0DóF€-à€(Ø(ó L�j€cˆ5Ø
ˆd‚{Ü�7‰7�<‰<˜ uÓ-€bØ
ˆiÒÜ—‘—‘˜]¨EÓ2€gØ
ˆd‚{Ü�7‰7�<‰<˜ uÓ-€bØ	�‰�ZÔ	 ØˆØ
ˆe‚|Ü�G‰G�L‰L˜¨Ó.€cØ
ˆiÒÜ—‘—‘˜]¨EÓ2€gØ$ÐØ
ˆjÒÜ—‘—‘˜m¨UÓ3€hØ %ÐØ
ˆd‚{Ü�7‰7�<‰<˜ uÓ-€bØ
ˆiÒÜ—‘—‘˜]¨EÓ2€gØ
ˆd‚{Ü�7‰7�<‰<˜ uÓ-€bØ
ˆiÒÜ—‘—‘˜]¨EÓ2€gØ
ˆiÒÜ—‘—‘˜]¨EÓ2€gØ
ˆnÒÜ—W‘W—\‘\ -°Ó7€lØ
‡|�|�JÖÜ)+¯©¯©°mÀUÓ)K€hˆsÐ$”S˜“_Ð$Ð%Ó&ð=LôB —J‘J×$Ñ$Ó&ò @�j€cˆ5Ø
‡y�yƒ{×Ñ˜JÕ'ØÐ(œ˜Z›Ð(Ð)€jÜ—6‘6˜* g¨zÓ:€jÜŸW™WŸ\™\¨-¸Ó?€hˆzÒð	@ð &×)Ñ)Ð*=¸tÓDÐÙØ5Ð8IÑI€HˆVÑàˆu‚_à'2ö4Ø#ð Ð,Ñ-Ð.>Ñ?ÀÓLð 4€Gð 4à!ÐØ×ÑÐCÀQÔGä
×
Ñ
×
<Ñ
<Ø�ó(ð ô ×!Ñ!×:Ñ:Ø˜Ð)?ÄóM€Hä˜XŸ^™^Ó-Ó.ò 	3‰
ˆˆdÙ	àˆÜ" 4¨Ü
˜T 5Ó
)ó+€gá	à˜t uš}‘G°'Ñ:ˆØ×Ñ˜E D™L¨'Õ2ð	3ô ˜;¨Ð-¨rÓ2€"Ø×Ñ˜Ô0°°xÀÓDÔEÜ˜L¨%Ð0°#Ó6€#Ø×Ñ˜Ô1°%¸À3ÓGÔHàˆu‚_Ø×Ñ˜$ Ô#Ø×Ñ˜% Ô,Ø×Ñ˜$ Ô#Ø×Ñ˜$ Ô)Ø×Ñ˜( HÔ-Ø×Ñ˜( JÔ/Ø×Ñ˜$ Õ)à×Ñ˜$Ô 2°6¸8ÀRÓ HÔIØ×Ñ˜&Ô"4°V¸XÀtÓ"LÔMØ×Ñ˜$Ô 2°KÀÐ3FÈÓ KÔLØ�‚ð ×ÑØ
Ô" K°Ð#6¸Ó;ô=à×ÑØ
Ô'Ð)9¸9Ð(EÀwÓOôQö *ÙØ€gÙØ€hà×Ñ˜)Ô%7¸¸ÀWÓ%MÔNØ×Ñ˜)Ô%7¸¸ÀWÓ%MÔNØ×Ñ˜.Ü,¨nÐ-=¸|ÓLôNä  ) ¨gÓ6€GÜ! : ,°Ó9€Hð �'ÑÑ4Ø&×.Ñ.¨w¸Ó;€gØ�8ÑÑ 7Ø(×0Ñ0°¸3Ó?€hØ×Ñ˜)Ü,¨Y¸À'ÓJôLà×Ñ˜*Ü,¨Z¸À8ÓLôNà�‚Ø×Ñ˜I wÕ/à×Ñ˜IÔ'9Ø
�(˜Gó(%ô &à×Ñ˜KÔ);Ø
�(˜Ió*'ô (ð ×ÑÔà×Ñ�KÔ'@Ó'BÐÔCØ×ÑÔà˜U’?‰¨€$àˆu‚_Ø×ÑØ
Øð-àØð ô ð ×ÑØØð-ð ô /ð
 ×ÑØØð.àØð õ ð<€Jð>€Kð ×ÑØ
ØØØØ<Øð ô ð ×ÑØØØØØ=Øð ô ð ×ÑØØð*ä,/¯N©Nñ;ð ô =ð ×ÑØ
ØðLä�~‰~ñð	 ô  ð ×ÑØØðIä�~‰~ñð ô  ð ˆu‚_˜ 5šØ×ÑØØØ7ð ô 9ð ×ÑØØØ8ð ô :ð	ð Lð:ñ<ñ		<ð !ð ×ÑØØØØ*¨hÐ8JÐ-KÑKØà
HØð ô ð ×ÑØØ'ØØ*¨hÐ8JÐ-KÑKØØKØð ô ð ×ÑØØðEàð ö ð �‚Ø×ÑØØð@ä—‘ñ ð Ø/ð ô 1ô �\°$Õ7Ü�\°%×8à×ÑØØð1àØð ô ð ×ÑØØð2àØð ô ð ×ÑØØ3ðð ô ð ×ÑØØ)ØFð ô Hð ×ÑØØ+ð'àðIðJñJð	 ô Lð =€Kð	ð "ðGñHñ	Hð !ð& 2€MØ×ÑØØ+ØØ*¸Ø6?ñ.Añ AàØ)Øð ô ð ×ÑØØ+ØØ m¸YÑGÑGØØ)Øð ô ð ×ÑØØ3ØØ*¸Ø6?ñ.Añ AàØ)Øð ô ð ×ÑØØ3ØØ }¸iÑHÑHØØ)Øð ô ð ×ÑØØ)ð.àð ô ð ×ÑØØ-ð0ð ô 2ð
 ×ÑØØ&ØJð ô Lð ×ÑØØ(Ø=ð ô ?ð ×ÑØØ(Ø>ð ô @ð ×ÑØ%ØFðDð ô Eð ×ÑØØ,ØAð ô Cð ×ÑØØ6ðð ô ð
 ×ÑØØ:ðð ô ð
 ˆu‚_Ø×ÑØØØ*¬S¯^©^Ñ;ð õ =ð
 ×ÑØØØ'ð ô )ð ˆu‚_Ø×ÑØØ!Ø9¼C¿N¹NÑJð õ Lð �‚Ø×ÑØØ!Ø/ð õ 1ð
 ×ÑØØ!ØNð ô Pð ×ÑÔä“€+Ø˜=Ñ)ò €jÜ—*‘*×'Ñ'¨Ø(4Ü(*¯©×(8Ñ(8¸Ó(DóFò ˆð ‡o�o�fÕñðô
 “€+ð €.ð Ðô
 “uÐô ›5Ðà%ó 6#Ðô 	�
‰
×'Ñ'Ð(8Ó9ñ €J��gð !% ZÑ 0× 4Ñ 4Ð5KÈRÓ PÐØÐ#<Ò<ñ ;â	"Ñ$8ð	:ó;Ð<ð Ð(Ñ)€DØ�‚Ü	×Ñ×8Ñ8¸¸jÑ9IÈ4ÔPô
 —‘×(Ñ(¨°W×5IÑ5IØ).ó0€Jô !$§
¡
× :Ñ :¸:ÀtØ;Bó!DÐà 9× @Ñ @ÀÓ IÐÜ—[‘[Ð!:Ó;×EÑEÓG€Nä—‘—‘ 
Ó+€IØ
€CØ�(ÒØ	ˆS�7‰]Ñ€cÜ—'‘'—,‘,˜s I¨t°h©Ó?€Kä“:€LÜ˜¨¸ÀIØ%Ø'¨Ø¨g×.BÑ.BôD€Fð
 ×Ñ˜d K°ÓA€Fà×ÑÓ˜QÒä”b—g‘g—l‘l >°;Ó?Ó@ð 2ÀJØ×Ñ˜×.Ñ.Ó0Ô1÷2à×ÑÔØ×Ñ˜KÔ(áØ	�×#Ñ#Ó%Ò	%¨$¨y©/¸XÒ*EØ×%Ñ% d¨BÓ/×6Ñ6°vÔ>Ø)/€nÐ%Ñ&Ø	˜[Ñ	(Ø�‰˜×*Ñ*Ó,Ô-Ø× Ñ  Ö&à×Ñ˜TÖ"ðm6#ñp ð ×ÑÔØ×ÑÐ3Ô4ÜÐ/Ó0ò Pˆ
Ø×Ñ˜ WØ/AÀ*Ñ/Mö/OÀ1¨q¯}©}­ò /Oõ PðPð *Ð,BÑBÐÙØ×ÑÔØ×ÑÐCÔDÜÐ)Ó*ò (ˆØ×Ñ˜˜wÕ'ð(ñ Ø×ÑÔØ×Ñ�u˜g¤v¨kÓ':Ô;Ø×Ñ˜×,Ñ,Ð-=¸uÓEÔFà×ÑÕùòG4÷v2ñ 2üò,/Os   Ñ7AA4ú AA9þ*ABÁA9AB	c                 óÈ   — |d   }|D ]X  }t         j                  j                  |j                  d|«      }dd|g}t	        d|›d|›�«       t        j                  |«       ŒZ y )Nrž  rœ  rr   z-Cz
Building [z]: )r<   r=   rw   r   râ   rÕ  Ú
check_call)r=  r»   r˜  rž  r�   ÚbuilddirÚ	argumentss          r%   ÚPerformBuildr^  •	  s^   € Ø�9Ñ€'Øò %€fÜ�w‰w�|‰|˜G×0Ñ0°%¸Ó@€HØ˜$ Ð)€IÝ	¢©Ð
3Ô4Ü×Ñ˜)Õ$ñ	%r'   c                 ó–   — t        j                   t         j                  t         j                  «       | \  }}}}}t        |||||«       y r    )ÚsignalÚSIGINTÚSIG_IGNrY  )Úarglistr;  r<  r=  r˜  r‡   s         r%   ÚCallGenerateOutputForConfigrd  ž	  s:   € ô 	‡-�-”—‘œvŸ~™~Ô.à;BÑ8€;�˜d F¨KÜ˜+ |°T¸6À;ÕOr'   c                 ó˜  — t         j                  j                  |«      }|j                  di «      j                  dd «      }t         j                  j                  |«      dk(  r7t        j                  | |«      \  } }t        j                  | |t        «      \  } }|rt        | ||||«       y || d      d   }|d   rU	 t        j                  t        |«      «      }g }|D ]  }|j                  | ||||f«       Œ |j                  t         |«       y |D ]  }t        | ||||«       Œ y # t"        $ r}	j%                  «        |	‚d }	~	ww xY w)Nrð   r�   r)   r   r»   Úparallel)r-   rš   Ú&CloneConfigurationForDeviceAndEmulatorrÒ   rz   r�  r“  ÚShardTargetsÚInsertLargePdbShimsr�   rY  ÚmultiprocessingÚPoolr"   rß   rv  rd  ÚKeyboardInterruptÚ	terminate)
r;  r<  r=  r˜  Úuser_configÚconfig_namesrC  Úarglistsr‡   Úes
             r%   ÚGenerateOutputrr  §	  s^  € ä×$Ñ$×KÑKØó€,ð —
‘
Ð,¨bÓ1×5Ñ5°hÀÓE€+Ü‡Z�Z×Ñ˜&Ó! UÒ*Ü (× 5Ñ 5°kÀ<Ó PÑ€K�Ü (× <Ñ <Ø�\Ô#>ó!@Ñ€K�ñ Ü˜K¨°t¸VØ'õ)ð   ¨A¡Ñ/Ð0@ÑA€LØˆjÒð	Ü×#Ñ#¤C¨Ó$5Ó6ˆØˆØ'ò 	FˆKØ
�/‰/Ø˜L¨$°¸ÐDõFð	Fð 	�‰Ô,¨hÕ7ð
 &ò -ˆ+Ü ¨\¸4ÀØ +õ	-ñ-øô	 ò Ø�‰ÔØˆûðús   Â>AD) Ä)	E	Ä2EÅE	)rÅ   )7Ú
__future__r   rê   rh  rT  r�  rj  Úos.pathr<   r+   r`  rÕ  r�  rV  r-   Ú
gyp.commonr   Úgyp.msvs_emulationÚgyp.MSVSUtilr“  Úgyp.xcode_emulationÚ	cStringIOr   ÚImportErrorÚior   Úgyp.ninja_syntaxr6   r�   rˆ  r‰  rŠ  r§  rz   ÚCrossCompileRequestedr/  r&   r2   r9   rB   ÚobjectrD   ri   ri  r¢  r¨  rÆ   r±  rß  r  rû  rY  r^  rd  rr  rg   r'   r%   ú<module>r     s@  ðõ
 &ã Û Û Û Û Û Û 	Û Û Û 
Û 
Û 
Û Ý !Û Ý Û ðÝ õ *Ý 'ð ØØØØð +Ø0Ø Ø.ð
 Ø$Ø ØØñ=Ð ðD /1Ð +Ø%'Ð "Ø$&Ð !ØÐ à'*§z¡z×'GÑ'GÓ'IÐ $òò	;òCò/ôS<ˆVô S<ô\b�&ô bòJ-2Gòh
Còóòò4òn,ò.&òbJ	òZ%òPó-øð[L ò ßðús   ÁC ÃC+Ã*C+