
M(^c           @   sH  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 j Z d  d l Z d  d l m Z d  d l m Z d  d l j Z i d d 6d d 6d d	 6d
 d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6Z g  a g  a g  a e a e j j   Z d   Z  d    Z! d!   Z" d"   Z# d# e$ f d$     YZ% d% e$ f d&     YZ& d'   Z' d(   Z( d)   Z) d* d+  Z* d,   Z+ d-   Z, d.   Z- d/   Z. d0   Z/ d1   Z0 d2   Z1 d3   Z2 d S(4   iN(   t
   OrderedSet(   t   StringIO(   t   GetEnvironFallbackt    t   EXECUTABLE_PREFIXt   EXECUTABLE_SUFFIXt   libt   STATIC_LIB_PREFIXs   .at   STATIC_LIB_SUFFIXt   SHARED_LIB_PREFIXs   $!INTERMEDIATE_DIRt   INTERMEDIATE_DIRs   $!PRODUCT_DIR/gent   SHARED_INTERMEDIATE_DIRs   $!PRODUCT_DIRt   PRODUCT_DIRs   $|CONFIGURATION_NAMEt   CONFIGURATION_NAMEs   ${root}t   RULE_INPUT_ROOTs
   ${dirname}t   RULE_INPUT_DIRNAMEs	   ${source}t   RULE_INPUT_PATHs   ${ext}t   RULE_INPUT_EXTs   ${name}t   RULE_INPUT_NAMEc         C   s!   |  j  |  r |  t |  S|  S(   N(   t
   startswitht   len(   t   argt   prefix(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   StripPrefixC   s    c         C   sJ   t  j d |   r |  S| d k r2 t j j |   Sd |  j d d  d S(   sT   Quote a string such that it will be interpreted as a single argument
  by the shell.s   ^[a-zA-Z0-9_=.\\/-]+$t   wint   's   "'"s   '"'"s   '"'"'(   t   ret   matcht   gypt   msvs_emulationt   QuoteForRspFilet   replace(   R   t   flavor(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   QuoteShellArgumentI   s
    c         C   sE   | d k r+ |  j  d d t d   }  n  t t j d |   |  S(   sY   Takes a preprocessor define and returns a -D parameter that's ninja- and
  shell-escaped.R   t   #s   \%03os   -D(   R   t   ordR!   t   ninja_syntaxt   escape(   t   dR    (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   DefineU   s    c         C   s)   t  j j |   \ }  } d |  | | f S(   s&   Adds an arch string to an output path.s   %s.%s%s(   t   ost   patht   splitext(   t   outputt   archt	   extension(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   AddArch_   s    t   Targetc           B   sD   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   sz  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         C   s^   | |  _  d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _	 t
 |  _ d  S(   N(   t   typet   Nonet   preaction_stampt   precompile_stampt   actions_stampt   binaryt   bundlet   component_objst   compile_depst
   import_libt   Falset   uses_cpp(   t   selfR0   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   __init__|   s    									c         C   s   |  j  d k S(   s;   Return true if this is a target that can be linked against.t   static_libraryt   shared_library(   R>   R?   (   R0   (   R<   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   Linkable   s    c         C   s&   | d k s |  j  r t S|  j d k S(   sO   Return true if the target should produce a restat rule based on a TOC
    file.R   R?   t   loadable_module(   R?   RA   (   R6   R:   R0   (   R<   R    (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   UsesToc   s    c         C   s0   |  j  |  r |  j   d S|  j   p/ |  j S(   s^   Return the path, if any, that should be used as a dependency of
    any dependent action step.s   .TOC(   RB   t   FinalOutputR2   (   R<   R    (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   PreActionInput   s    c         C   s   |  j  p |  j S(   s_   Return the path, if any, that should be used as a dependency of
    any dependent compile step.(   R4   R3   (   R<   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   PreCompileInput   s    c         C   s   |  j  p |  j p |  j S(   sK   Return the last output of the target, which depends on all prior
    steps.(   R6   R5   R4   (   R<   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyRC      s    (	   t   __name__t
   __module__t   __doc__R=   R@   RB   RD   RE   RC   (    (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR/   e   s   			
		t   NinjaWriterc           B   s  e  Z d& d   Z d& d  Z d   Z d& d  Z e 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! e" d  Z# d   Z$ d    Z% d!   Z& d& d"  Z' d& d#  Z( d$   Z) d& d%  Z* RS('   c
         C   s@  | |  _  | |  _ | |  _ | |  _ t j |  |  _ | |  _ | |  _ | |  _	 d |  _ |	 d k	 r t j j t j j |	 |   |  _ n  | d k r d n d |  _ | d k r i  |  _ x" d D] }
 d |
 |  j |
 <q Wn  t j j | |	  } t j j | |  |  _ t j j | |	  } t j j | |  |  _ d S(	   s   
    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
    R   s   .objs   .ot   x86t   x64s   environment.N(   RJ   RK   (   t   hash_for_rulest   target_outputst   base_dirt	   build_dirR$   t   Writert   ninjat   toplevel_buildt   output_file_nameR    R1   t   abs_build_dirR(   R)   t   abspatht   joint   obj_extt   win_envR   t   commont   InvertRelativePatht   build_to_baset   base_to_build(   R<   RL   RM   RN   RO   t   output_fileRR   RS   R    t   toplevel_dirR,   t   build_to_topt   base_to_top(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR=      s*    
									c         C   s   d } | | k rn | r- | j  | |  } qn | j  | d d  } | j  | d d  } | j  | d  } n  d } | | k r |  j d  } | j  | t j j | p d |   } n  d } | j  | |  j  } | S(	   s   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.
    s   $!PRODUCT_DIRt   /R   s   \t   .s   $!INTERMEDIATE_DIRt   gens   $|CONFIGURATION_NAME(   R   t   GypPathToUniqueOutputR(   R)   RV   t   config_name(   R<   R)   t   product_dirR   R
   t   int_dirR   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   ExpandSpecial   s    	!c         C   s   |  j  d k r- |  j j | d |  j } n  | j t d |  } | j t d |  } | j t d |  } | j t d |  } | j t d |  } | S(   NR   t   configR   R   R   R   R   (   R    t   msvs_settingst   ConvertVSMacrosRe   R   t   generator_default_variables(   R<   R)   t   roott   dirnamet   sourcet   extt   name(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   ExpandRuleVariables  s    		c         C   s   | rW |  j  d k r- t j j | |  } qW |  j  d k rW t j j | |  } qW n  | j d  r |  j |  } |  j  d k r t j	 j
 |  } n  | Sd | k r |  j |  } n  d | k s t |   t j	 j
 t j	 j |  j |   S(   s   Translate a gyp path to a ninja path, optionally expanding environment
    variable references in |path| with |env|.

    See the above discourse on path conversions.t   macR   s   $!s   $|t   $(   R    R   t   xcode_emulationt   ExpandEnvVarsR   t   ExpandMacrosR   Rh   R(   R)   t   normpatht   AssertionErrorRV   R[   (   R<   R)   t   envt   expanded(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   GypPathToNinja#  s    c         C   s   |  j  |  } | j d  s+ t |   d } |  j d k rT | d |  j 7} n  t j j |  \ } } t j j |  s t d |   | r |  j d | } n  t j j	 t j j
 | |  j | |   S(   s%  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.Rt   t   objt   targetRb   s5   '%s' can not be absolute path (see crbug.com/462153).(   Rh   R   Ry   t   toolsetR(   R)   t   splitt   isabsRq   Rx   RV   RN   (   R<   R)   t	   qualifiedR}   t   path_dirt   path_basename(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyRd   7  s    	c         C   s   | t  d |  k s! t |   t |  d k rD | s@ t  d St |  d k s\ | r |  j | d  } |  j j | d | d | } |  j j   n  | d S(   s   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.i    i   s   .stampt   stampt
   order_onlyN(   t   filterR1   Ry   R   Rd   RQ   t   buildt   newline(   R<   Rq   t   targetsR   R   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   WriteCollapsedDependencies[  s    !c         C   s'   t  j j |  j  d } d | | f S(   Ni    s   %s.%s.ninja(   R(   R)   R*   RS   (   R<   R,   t   output_file_base(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   _SubninjaNameForArchk  s    c            si  |   _  | d   _ | d   _ | d | } t | d    _ t | j d d     _ | j d d    _ t	 j
 j   j |    _ d   _   _   j d	 k r t	 j
 j |    _ | j d
 d  } | r |   j _ q n    j d k rt	 j j | |    _   j j |  }   j j d   j |    j j d d |    j j d d |    j j d d |    j j d d |    j j d d |  n    j d	 k r  j j |    _ t   j  d k rt   f d     j D    _ qn  g  } g  } d | k rxu | d D]i }	 |	   j k r:  j |	 }
 | j |
 j    j   | j |
 j!    |
 j" rt#   j _" qq:q:Wt$ d |  } t$ d |  }   j% d |  }   j% d |  } |   j _& |   j _' n  g  } g  }   j( | | | |    j _)   j j) p=| } g  } y | | j d g   } Wn; t* k
 rd Gt+ |  GHd Gt+ | j d   GH  n X| r5  j d	 k rt   j  d k rx-   j D] }   j j,   j- |   qWn  d }   j d k rYt	 j j. |   j/ |   j0  t	 j j1   j |   j0   j2   j3  } n' t	 j
 j4   j   j0   f d    }   j5   j | | | | | |  } g  | D] } | j6   j3  r| ^ q} | rk  j d	 k st   j  d k r"| g  | D] }   j0 |  ^ q7} q2d | d GHqkn6   j d	 k rkt   j  d k rkt7 j8 t9  } n    j j) pz| }   j d k r  j j: d k r|   j _; |   j _< n  d } | o| } | s  j j) s| r  j= | | | | |  }   j r| j |  qn    j r=  j> | | |  } n  | sGd S  j j?   sbt@ |     j S(    s   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).t   target_nameR   t   configurationsR0   t   standalone_static_libraryi    t   target_rpaths   \$$ORIGIN/lib/Rs   t   mac_toolchain_dirR   R,   t   ccs   $cl_t   cxxt   cc_hostt   cxx_hostt   asms   $ml_i   c         3   sH   |  ]> } | t  j t t j j   j   j |   d    f Vq d S(   t   wN(   R$   RP   t
   OpenOutputR(   R)   RV   RR   R   (   t   .0R,   (   R<   (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pys	   <genexpr>  s   t   dependenciest   actions_dependst   compile_dependst   sourcess   extra_sources: s   spec.get("sources"): c            s     j  |  d |  S(   Nt   -(   Rd   (   R)   t   lang(   R<   (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   <lambda>  R   sd   Warning: Actions/rules writing object files don't work with multiarch targets, dropping. (target %s)R>   N(A   Re   Rq   R   R/   R~   t   boolt   gett   is_standalone_static_libraryR   R   Ru   t   IsMacBundleR    t   is_mac_bundleR1   t   xcode_settingsRj   t   XcodeSettingsR   R   t   MsvsSettingst   GetArchRQ   t   variableRX   t   GetActiveArchst   archsR   t   dictt   arch_subninjasRM   t   appendRD   RE   R;   t   TrueR   R   R2   R3   t   WriteActionsRulesCopiesR4   t	   TypeErrort   strt   subninjaR   t   VerifyMissingSourcesRT   R|   t   PrecompiledHeaderRd   RW   t   MacPrefixHeadert   WriteSourcest   endswitht   collectionst   defaultdictt   listR0   R7   R8   t   WriteTargett   WriteMacBundleRC   Ry   (   R<   t   specRe   t   generator_flagsRi   R   R,   R   R   t   depR~   t   extra_sourcest   mac_bundle_dependst   compile_depends_stampt	   link_depsR   t   pcht   ft   obj_outputst   oR8   R+   t   is_empty_bundle(    (   R<   s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt	   WriteSpeco  s    						$ 				+$)$!			c            s    j  j   j  \   } } }  j      d     f d  } g  | D]! \ } }	 | | |	    f ^ qR } g  | D] }
 | |
  ^ q } | j d   f  | j d | f   j   }  j j | d | d | d | | j |  d S(   sh   Handle the implicit VS .idl rule for one source file. Fills |outputs|
    with files that are generated.c            s   t  j j   |   }  t  j j   \ } } t  j j |  \ } }  j |  | |  | |  }  | r t  j j |  |  }  n  |  S(   N(   R(   R)   RV   R   R*   Rr   t   relpath(   R)   t   relRn   t   basenameRm   Rp   (   t   outdirR<   Ro   (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   fix_path  s    R   t   idlflagst   idlt	   variablesR   N(	   Rj   t   GetIdlBuildDataRe   R|   R1   R   RQ   R   t   extend(   R<   Ro   t   prebuildt   outputsR+   t   varst   flagsR   Rq   t   valuet   pt   input(    (   R   R<   Ro   s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   _WinIdlRule  s    		.c         C   si   |  j  d k s t  |  j j |  r+ g  Sg  } x1 t d   | d  D] } |  j | | |  qH W| S(   s3   Writes rules to match MSVS's implicit idl handling.R   c         S   s   |  j  d  S(   Ns   .idl(   R   (   t   x(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR   #  R   R   (   R    Ry   Rj   t   HasExplicitIdlRulesOrActionsR   R   (   R<   R   R   R   Ro   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   WriteWinIdlFiles  s    c         C   sz  g  } |  j  r% | j d g   } n g  } g  } d | k r` | |  j | d | | |  7} n  d | k r | |  j | d | | | |  7} n  d | k r | |  j | d | |  7} n  d | k r |  j d k r | |  j | |  7} n  |  j r |  j j   r |  j	 | | |  n  |  j
 d |  } |  j  rv|  j | | |  }	 |  j |	 |  }
 |  j |
 |  n  | S(   sk   Write out the Actions, Rules, and Copies steps.  Return a path
    representing the outputs of these steps.t   mac_bundle_resourcest   actionst   rulest   copiesR   R   t   actions_rules_copies(   R   R   t   WriteActionst
   WriteRulest   WriteCopiesR    R   R   t   IsIosFrameworkt   WriteiOSFrameworkHeadersR   t   WriteMacBundleResourcest   WriteMacXCassetst   WriteMacInfoPlist(   R<   R   R   R   R   R   R   t   extra_mac_bundle_resourcesR   t   xcassetst   partial_info_plist(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR   '  s2    	 	c         C   sX   |  j  d k r# | d |  j  7} n  | r@ d | |  j |  f Sd | |  j | f Sd S(   s   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~   s   (%s)s   %s %ss	   %s %s: %sN(   R   Rh   Rq   (   R<   t   verbt   messaget   fallback(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   GenerateDescriptionL  s
    c      
   C   s  |  j    } g  } x| D]} d | d |  j f } |  j d | j d d   |  }	 |  j d k rx |  j j |  n t }
 | d } | j d d   } | r |  j	 | |  j
  } n  t | j d d	   r d
 n d  } |  j | | |	 |
 | | d | \ } } g  | d D] } |  j | |  ^ q} t | j d t   rX| | d 7} n  t | j d t   r| | d 7} n  g  | d D] } |  j | |  ^ q} |  j j | | | d | | | 7} |  j j   q W| S(   Ns   %s_%st   action_namet   ACTIONR   R   t   actiont   depfilet   ninja_use_consolei    t   consolet   inputst   process_outputs_as_sourcesR   t'   process_outputs_as_mac_bundle_resourcesR   (   t   GetToolchainEnvRL   R   R   R1   R    Rj   t   IsRuleRunUnderCygwinR:   Rh   R\   t   intt   WriteNewNinjaRuleR|   RQ   R   R   (   R<   R   R   R   R   Rz   t   all_outputsR   Rq   t   descriptiont	   is_cygwint   argsR   t   poolt	   rule_namet   _t   iR   R   R   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR   Z  s6    		'
$))
c   "         s  |  j    } g  } x| D]} d | k rD | j d g   rD q n  d | d |  j f }	 | d }
 |  j d | j d d   d t d |	  } |  j d	 k r |  j j |  n t	   t
 | j d
 d   r d n d  } |  j |	 |
 |   | |  \ } }
 d } t d g  } x? |
 D]7 } x. | D]& } d | | k r*| j |  q*q*WqWt |  }   f d   } g  | j d g   D] } |  j | |  ^ q} | j d g   } t |  } | r| d 7} n  | d k rt |  d k r|  j | d | d | g } g  } n  x| D]} t j j |  } t j j |  \ } } t j j |  \ } } g  | d D]$ } |  j | | | | | |  ^ qu} t
 | j d t	   r| | 7} n  | | k } | st
 | j d t	   r| | 7} | r| j |  qn  g  } x| D]} | d k rL| j d | |  f  q| d k r|  j | |  j  }  | j d | |   f  q| d k r|  j | |  j  }! | j d | |!  f  q| d k r| j d | f  q| d k r| j d | |  f  q| d  k st t |    qWg  | D] } |  j | |  ^ q9} |  j d	 k r| j d t j | d  j    f  n  |  j! j" | | |  j |  d | d | d | | j# |  q"Wq W| S(   NR   t   rule_sourcess   %s_%sR  t   RULER   s   %s R   R   R   i    R   Ro   Rm   Rn   Rp   Rq   s   ${%s}c            s     r |  j  d d  S|  S(   Ns   \Ra   (   R   (   R)   (   R  (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   cygwin_munge  s    R   i   i   R   R   R   R   t   unique_namet   implicitR   (   Ro   Rm   Rn   Rp   Rq   ($   R   R   RL   R   R1   Rl   R    Rj   R   R:   R  R  t   sett   addt   sortedR|   R   R   R(   R)   Rx   R   R*   Rr   t   removeR   Rh   R\   Ry   t   reprt   hashlibt   md5t	   hexdigestRQ   R   R   ("   R<   R   R   R   R   R   Rz   R  t   ruleRq   R  R  R  R  t   special_localst   needed_variablest   argumentt   varR  R
  R   R   t
   num_inputsRo   Rn   R   Rm   Rp   R   R   t   was_mac_bundle_resourcet   extra_bindingst   dirname_expandedt   source_expanded(    (   R  s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR     s    
'$1	2
"%	 c      	   C   s  g  } |  j  r3 |  j  j   } |  j d |  } n |  j   } x | D] } x | d D] } t j j |  } t j j |  d }	 |  j | |  }
 |  j t j j | d |	  |  } | |  j	 j
 | d |
 d | 7} |  j rW | j |  j  j    r| j |  qqW qW WqF W| S(   Nt   additional_settingst   filesi   t   destinationt   copyR   (   R   t   GetPerTargetSettingsR   R(   R)   Rx   R   R|   RV   RQ   R   R   R   t   GetBundleContentsFolderPathR   (   R<   R   R   R   R   t	   extra_envRz   R%  R)   R   t   srct   dst(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR     s"    		"	c   
   	   C   s   |  j    } | d } | d } |  j d  } | |  j _ t |  j t d   |   } d | f d t |  j |  f g }	 | j |  j j	 | d | d |	 d	 |  d
 S(   sF   Prebuild steps to generate hmap files and copy headers to destination.R   t   mac_framework_headerss   headers.hmapc         S   s   |  j  d  S(   Ns   .h(   R   (   R   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR     R   t	   frameworkt   copy_headerst   compile_ios_framework_headersR   R   N(
   t   ComputeMacBundleOutputRd   R   t   header_map_patht   mapR|   R   R   RQ   R   (
   R<   R   R   R   R,  t   all_sourcesR-  R+   t   all_headersR   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR     s    

		c   	   
   C   s  g  } |  j  j   } |  j d |  } |  j |  } |  j  j |  j  } x t j j t	 d |  j  t
 |  j |   D] \ } } |  j |  } t j j |  d d k r |  j j | d | d d d	 | f d
 | f g | j |  qw | j |  qw W| S(   s.   Writes ninja edges for 'mac_bundle_resources'.R"  R   is	   .xcassetst   mac_toolR   t   mactool_cmds   copy-bundle-resourceRz   R5   (   R5  s   copy-bundle-resource(   R   R&  t   GetSortedXcodeEnvt   ComputeExportEnvStringt   IsBinaryOutputFormatRe   R   Ru   t   GetMacBundleResourcesRl   R1  R|   Rh   R(   R)   R*   RQ   R   R   (	   R<   t	   resourcest   bundle_dependsR   R(  Rz   t   isBinaryR+   t   res(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR   "  s     %c      	   C   se  | s
 d Si  } i d d 6d d 6} |  j  j  |  j } x< | j   D]. \ } } | j |  } | rD | | | <qD qD Wd }	 | r |  j d  }	 |	 | d <n  g  }
 |
 j t j j	 |  j  j
   d   |	 r |
 j |	  n  t t j |  |  j  } |  j  j   } |  j d	 |  } |  j |  } | j |  j j |
 d
 | d d | f d | f g  |	 S(   s  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.Ns   app-icont   XCASSETS_APP_ICONs   launch-imaget   XCASSETS_LAUNCH_IMAGEs!   assetcatalog_generated_info.plists   output-partial-info-plists
   Assets.carR"  t   compile_xcassetsR   Rz   t   keys(   R   Re   t	   iteritemsR   R1   Rd   R   R(   R)   RV   t   GetBundleResourceFolderR!   t   jsont   dumpsR    R&  R6  R7  R   RQ   R   (   R<   R   R;  t   extra_argumentst   settings_to_argt   settingst   settings_keyt   arg_nameR   R   R   RA  R(  Rz   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR   8  s>    
		
c      	   C   s  t  j j t d |  j |  j  \ } } } } | s8 d S|  j |  } | r |  j t j	 j
 |   } d j g  | D] } t | |  j  ^ qu  } |  j j | d | d d | f g } n  |  j d |  }	 |  j |	  }	 | r|  j d  } |  j j | d	 | | g  } n  |  j j |  j  }
 t t j |
  |  j  }
 |  j j |  j  } |  j j | d
 | d d |	 f d |
 f d | f g | j |  d S(   s.   Write build rules for bundle Info.plist files.R   Nt    t   preprocess_infoplistR   t   definesR"  s   merged_info.plistt   merge_infoplistt   copy_infoplistRz   RA  R5   (   R   Ru   t   GetMacInfoPlistRl   R   R|   Rh   Rd   R(   R)   R   RV   R'   R    RQ   R   R6  R7  t   GetExtraPlistItemsRe   R!   RD  RE  R8  R   (   R<   R   R;  t
   info_plistt   outRM  R(  t   intermediate_plistR&   Rz   RA  R<  (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR   f  s6    	.		c            s   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  n   j d k s t  j  d k r  j  j         St         f d    j D  Sd S(   s.   Write build rules to compile all of |sources|.t   hostt   ars   $ar_hostR   s   $cc_hostR   s	   $cxx_hostt   lds   $ld_hostt   ldxxs
   $ldxx_hostt   nms   $nm_hostt   readelfs   $readelf_hostRs   i   c         3   sC   |  ]9 } |  j   j |        d  | f Vq d S(   R,   N(   t   WriteSourcesForArchR   (   R   R,   (   Ri   Re   t   precompiled_headert
   predependsR<   R   R   (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pys	   <genexpr>  s   N(   R   RQ   R   R    R   R   R[  R   (   R<   t
   ninja_fileRe   Ri   R   R]  R\  R   (    (   Ri   Re   R\  R]  R<   R   R   s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR     s    $
!c	   -      C   s	  g  }	 |  j  d k r |  j j | d | }
 |  j j |  } |  j j |  } d g |  j j |  } d g |  j j |  } ns|  j  d k r|  j j |  } |  j j |  }
 |  j j |  } |  j j |  } |  j j	 |  }	 |  j j
 | |  j  } } | s{d } |  j d k r:| d |  j 7} n  t j j t j j | |  j |  j   } | d	 } | d
 } n  |  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   | } t j j d d  j   t j j d d  j   | } n |  j d k rt j j d d  j   t j j d d  j   | } t j j d d  j   t j j d d  j   | } n  | j d g   |	 } |  j | d g  | D] } t | |  j   ^ q& |  j  d k r|  j | d t |  j |   |  j | d g  |  j j | |  j  D]! } t |  j |  |  j   ^ q n  | j d g   } |  j   } |  j  d k r|  j j | |  } n  |  j | d g  | D]( } t d |  j | |  |  j   ^ q |  j  d k r| j d g   } |  j j | |  } |  j | d  g  | D]( } t d |  j | |  |  j   ^ q n  | j |  } |  j  d k r4xN d= d> d? d@ g D]7 \ } } | j  | |  } | r| j! | |  qqWn  | j d) g   } |  j | d t |  j |
   |  j | d t |  j |   |  j | d t |  j |   |  j  d k r|  j | d* t |  j |   |  j | d+ t |  j |   n  |  j | d) t |  j |   | j"   g  }  t# }! x`| D]X}" t j j$ |"  \ }# } | d, } |  j% }$ | dA k rd. }% t& |  j' _( n| d! k s| d/ k r|  j  d k rd# }% n | d0 k r|  j  d k rd1 }% n |  j  d k r| d2 k r|  j j) |  rd2 }% d3 }$ n |  j  d k r6| d% k r6d4 }% nc |  j  d k rf| d' k rfd5 }% t& |  j' _( n3 |  j  d k r/| d6 k r/d6 }% d7 }$ t& }! n q/|  j |"  }& |  j* |# |$  }' | dB k	 rt, |' |  }' n  | j- |& g |' g |  }( g  }) |  j  d k r9| j. |& |' |( |% | | |  j  \ }) }' }( n  | j/ |' |% |& d8 g  |( D] \ }* }* }+ |+ ^ qRd9 | d: |) |  j0 |'  q/W|! r| j d; |  }, |  j | d< g  |, D]( } t d |  j | |  |  j   ^ q n  |  j1 | |  | j"   |  S(C   s.   Write build rules to compile all of |sources|.Rs   R,   s	   $cflags_cs
   $cflags_ccR   R}   R~   Rb   s   .c.pdbs   .cc.pdbt	   pdbname_ct
   pdbname_cct	   pchprefixt   cflagst   cflags_ct	   cflags_cct   CPPFLAGSR   t   CFLAGSt   CXXFLAGSRU  t   CPPFLAGS_hostt   CFLAGS_hostt   CXXFLAGS_hostRM  t   asmflagst   rcflagst   include_dirst   includess   -It   midl_include_dirst   midl_includest   ct   cflags_pch_cR   t   cflags_pch_cct   mt   cflags_pch_objct   mmt   cflags_pch_objcct   arflagst   cflags_objct   cflags_objcci   t   cppR   t   St   st   cc_sR   s   _asm.objt   objct   objcxxt   rcs   .resR  R   R   t   resource_include_dirst   resource_includes(   Rq  Rr  (   R   Rs  (   Rt  Ru  (   Rv  Rw  (   R   R{  R   N(2   R    R   t	   GetCflagst
   GetCflagsCt   GetCflagsCCt   GetCflagsObjCt   GetCflagsObjCCRj   t   GetAsmflagst   GetComputedDefinest   GetCompilerPdbNameRh   R   R(   R)   Rx   RV   RN   Rq   t   WriteVariableListR   t   environR   R'   R1  t
   GetRcflagsR|   R!   R   t   AdjustIncludeDirst   AdjustMidlIncludeDirst   GetPchBuildCommandst
   GetIncludeR   R   R:   R*   RW   R   R~   R;   t   HasExplicitAsmRulesRd   R1   R.   t   GetObjDependenciest   GetFlagsModificationsR   R   t   WritePchTargets(-   R<   R^  Re   Ri   R   R]  R\  R   R,   t   extra_definesRb  Rc  Rd  Ry  Rz  Rk  t	   pdbpath_ct
   pdbpath_ccR}   t   pdbpathRM  R&   R   Rm  Rz   R
  Ro  t   pch_commandsRp   R  t   includeRx  R   t   has_rc_sourceRo   t   filenameRW   t   commandR   R+   R  R   R	  t   gchR  (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR[    s   	*
8;8;&53	6	 

	'					"6
c   
      C   s   | s
 d Sx | D] \ } } } } i d d 6d d 6d d 6d d	 6| } i d d 6d
 d 6d d 6d d	 6} | j  |  }	 | j | |	 | d | | f g q Wd S(   s-   Writes ninja rules to compile prefix headers.NRr  Rq  Rs  R   Ru  Rt  Rw  Rv  R   R  R  R   (   R   R   (
   R<   R^  R  R  t	   lang_flagR   R   t   var_nameR1  t   cmd(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR  >  s    "c         C   s?  |  j  d k s$ t |  j  d k rC |  j |  j | | | | |  S|  j |  } g  |  j D]5 } |  j |  j | | | | | | | d | ^ q\ } g  }	 | }
 |  j s |  j |	 | | |  n  | d d k r|  j r|	 j	 d | f  |  j j
 | | d g d	 | d
 |	 n |  j j
 |
 d | d
 |	 | Sd S(   s0   Write out a link step. Fills out target.binary. Rs   i   R,   R0   R?   RA   R   s   .TOCt   solipoR   t   lipoN(   R?   RA   (   R    R   R   t   WriteLinkForArchRQ   t   ComputeOutputR   R   t   AppendPostbuildVariableR   R   (   R<   R   Re   Ri   R   R8   R+   R,   R   R  t   build_output(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt	   WriteLinkO  s"    $B	

c   $   
   C   s_  i d d 6d d 6d d 6| d } d }	 t    }
 t    } t    } | rZ | j |  n  d	 | k rt    } xx| d	 D]i} |  j j |  } | s qz n  | j   } | rg  } |  j d
 k r| j r|  j j |  r| j } | j	 rt| j | j	  qtnl |  j d
 k r/| j
 r/| j
 g } nE | j |  j  rh| j | j  |
 j | j d  n | j g } x: | D]/ } | | k r{| j |  | j |  q{q{Wn  | j   } | s| | j k rz |
 j |  qz qz Wn  g  } |  j j r|  j d
 k r| j d3  n  |  j | |  } | d4 k r\|  j r\|  j | | | |  n  | d d k } |  j d k rt j j d d  j   } n- |  j d k rt j j d d  j   } n  |  j d k r|  j j | |  j t d  |  j |  } | | } nt|  j d
 k r|  j |  j |   } |  j j | |  j |  j | | | |  j   \ } } } | | } |  j! | d |  |
 j" |  }
 | r|  j! | d | g  n  t# |  j j$ |   }	 |  j j% |  j  } | r|
 j |  qn | | j d g   } | rt& |  rd } |  j d k rY| |  j 7} | j d |  n | j d |  j'  | j d |  n  |  j! | d t( |  j |   | j d g   } |  j d
 k rg  | D] } |  j j) | |  ^ q} g  | D]% } d t* |  j |  |  j  ^ q} n2 g  | D]% } t* d |  j |  |  j  ^ q%} t+ j, j- t( |  j | j d g     }  |  j d k r|  j j. |  |  }  n$ |  j d
 k r|  j j. |   }  n  |  j! | d | |   | }! | d5 k r| j d  t j/ j |  d! f  | j d" t+ j, j0 |  f  |  j d
 k r| }" |  j r`|  j j1   }" n  | rw|" d# | 7}" n  |" d$ 7}" |" j2 d% d&  }" | j d' t+ j, j0 |"  f  n  |  j d
 k rp| j d( | f  d) | k r|  j j3 |  r| d* |  j _
 | j d+ d, |  j j
 f  |  j j4 | |  j | d-  }# | |  j j
 g } |# rm| j |#  qmqq|  j s| | d g } q| d. } nY |  j d
 k r| j d( | f  |  j j4 | |  j | d-  }# |# r| |# g } qn  t& |  r&| j d/ t+ j, j5 t6 |   f  n  | j7 | | |	 | d0 t6 |
  d1 t8 |  d2 | |! S(6   s0   Write out a link step. Fills out target.binary. t   linkt
   executablet   solink_moduleRA   t   solinkR?   R0   R   R   R   s   .TOCRW  s   $ldxxR~   t   LDFLAGSRU  t   LDFLAGS_hostRs   R   t	   manifestst   intermediatemanifestt   ldflagss   lib/s   -Wl,-rpath=\$$ORIGIN/%ss   -Wl,-rpath=%ss   -Wl,-rpath-link=%st   library_dirss	   /LIBPATH:s   -Lt	   librariest   libst   sonamei   R   Rb   s   .rspRK  R	  t   link_file_listR5   s   /NOENTRYs   .libt
   implibflags
   /IMPLIB:%ss   .pdbt   _notoct   solibsR  R   R   (   RW  s   $ldxxN(   R  R  (9   R  R  RM   R   R@   R    R7   Rj   t   IsUseLibraryDependencyInputsR8   R9   RB   R5   R   RC   R~   R;   R  R1   R   R  R   R(   R  R   R   t
   GetLdflagsRh   Rl   R|   Rd   t   ComputeOutputFileNameRR   R  t   uniont   _GetWinLinkRuleNameSuffixt   IsEmbedManifestt
   GetDefFileR   R   R1  Rk   R!   R   RY   t   uniquert   AdjustLibrariesR)   t   EncodePOSIXShellArgumentt   GetWrapperNameR   t   GetNoImportLibraryt
   GetPDBNamet   EncodePOSIXShellListR  R   R   ($   R<   R^  R   Re   Ri   R   R8   R,   R  t   command_suffixt   implicit_depsR  t
   order_depst   extra_link_depsR   R~   t   linkablet   new_depst   new_dept   final_outputR  R+   t   is_executablet   env_ldflagsR  t   manifest_base_namet   intermediate_manifestt   manifest_filest   def_filet   rpathR  t   lR  t   linked_binaryR  t   pdbname(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR  j  s   								
%2/#		
					c      	      s  t    f d   | j d g   D  } | d d k sF | ra | ra |   j _ d   j _ n| d d k rV  j |    j _   j d k r   j r   j j	   j j d
 | d | qwg  }   j
 r  j
 j |  } | r| j d | f  qn    j r;  j j |   j  }	 | j d |	 f  n    j d k s_t   j  d k r  j | |   j j   j j    j j	   j j d | d | d | qwg  }
 xZ   j D]O }   j | |  }   j | j	 | d | | d | d | |
 j |  qW  j | |   j j   j j    j j	   j j d |
 d | n!   j | | | | |    j _   j j S(   Nc         3   s6   |  ], } |   j  k r   j  j |  j   Vq d  S(   N(   RM   R   R@   (   R   R   (   R<   (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pys	   <genexpr>(  s   R   R0   t   noneR>   Rs   t   openbsdt   netbsdR   t
   alink_thinR   t   libtool_flagst   libflagsi   t   alinkR   (   Rs   R  R  R   (   t   anyR   R~   R5   R0   R  R    R   RQ   R   R   t   GetLibtoolflagsR   Rj   t   GetLibFlagsR|   R   R   R  R   R  (   R<   R   Re   Ri   R   R8   R  R   R  R  R   R,   R+   (    (   R<   s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR   '  sN    

		$
c         C   s  |  j  s t  | d d k } |  j   } | r> | d 7} n  g  } |  j | | | |  j j d | | r | r | d d k r |  j j r |  j j	 | d | d | q| j
 d |  j j   f  |  j j	 | d	 | d | n |  j j	 | d
 | d | | |  j _ | S(   NR0   R?   RA   s   .stampt   is_command_startt   package_ios_frameworkR   t   versiont   package_frameworkR   (   R?   RA   (   R   Ry   R/  R  R~   R5   R   t   isIOSRQ   R   R   t   GetFrameworkVersionR6   (   R<   R   R   t   is_emptyR  R+   R   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR   [  s&    

c         C   s:   |  j  d |  } |  j d k r6 |  j d |  } n  | S(   s:   Returns the variables toolchain would set for build steps.R"  R   (   R6  R    t   GetMsvsToolchainEnv(   R<   R"  Rz   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR   r  s
    	c         C   s   |  j  j d d |  j S(   s>   Returns the variables Visual Studio would set for build steps.s   $!PRODUCT_DIRRi   (   Rj   t   GetVSMacroEnvRe   (   R<   R"  (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR  z  s    c         C   sL   |  j  s t  |  j  } t j j |  j | t j j | |  j	  |  j
 |  S(   s6   Returns the variables Xcode would set for build steps.(   RT   Ry   R   Ru   R6  R   R(   R)   RV   R[   Re   (   R<   R"  RT   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR6    s    			c         C   s;   i  } |  j  j d  } | r+ | | d <n  |  j d |  S(   s:   Returns the variables Xcode would set for postbuild steps.t   CHROMIUM_STRIP_SAVE_FILER"  (   R   t   GetPerTargetSettingR6  (   R<   t   postbuild_settingst   strip_save_file(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   GetSortedXcodePostbuildEnv  s    		c         C   s8   |  j  | | | |  } | r4 | j d | f  n  d S(   sA   Adds a 'postbuild' variable if there is a postbuild for |output|.t
   postbuildsN(   t   GetPostbuildCommandR   (   R<   R   R   R+   R5   R  t	   postbuild(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR    s    c   
      C   sq  |  j  s! | d d k s! | r% d St | |  j  } t j j | d t } | d k	 r |  j  j |  j	 t
 j j t
 j j |  j |   t t
 j j t
 j j |  j |   |  j  | d t } n  | s d S| j d t j j d |  j g   |  j |  j    } | d d j g  | D] } t j |  ^ q" } | d	 | d
 }	 | red |	 d Sd |	 Sd S(   s   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 ' && '.R0   R  R   t   quieti    t   cds    (s    && s$   ); G=$$?; ((exit $$G) || rm -rf %s) s   && exit $$G)t   (s   $ && (N(   R   R!   R    R   Ru   t   GetSpecPostbuildCommandsR   R1   t   AddImplicitPostbuildsRe   R(   R)   Rx   RV   R\   t   insertRY   R  R[   R7  R  R$   R%   (
   R<   R   R+   t   output_binaryR  R  Rz   R  t   commandst   command_string(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR    s.    !	!!	,c         C   sV   g  } x@ | D]8 \ } } | j  d | t j t j j |   f  q Wd j |  S(   s   Given an environment, returns a string looking like
        'export FOO=foo; export BAR="${FOO} bar;'
    that exports |env| to the shell.s   export %s=%s;RK  (   R   R$   R%   R   RY   R  RV   (   R<   Rz   t
   export_strt   kt   v(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR7    s
    	'c         C   s>   |  j  s t  t d } |  j t j j | |  j j     S(   sD   Return the 'output' (full output path) to a bundle output directory.R   (	   R   Ry   Rl   Rh   R(   R)   RV   R   R  (   R<   R)   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR/    s    
c   	      C   su  | s | d } n  t  j  t  } t | i |  j d 6 i | d d 6| d d 6| d d 6| d d	 6} | j d
 | j | d   } i | d d 6| d d 6| d d 6| d d	 6} | j d  } | r d | } n | j | d  } d | k r| d } n( | d } | d k r0t | d  } n  | d k rMd | | | f S| d k rad | St d |   d S(   s@   Compute the filename of the final output for the current target.R0   R    R	   RA   R?   R   R>   R   R  t   product_prefixR   t   SHARED_LIB_SUFFIXR   R   t   product_extensionRb   t   product_nameR   R   s   %s%s%sR  s   %s.stamps   Unhandled output type %sN(   R>   RA   R?   R  (   R%  Rl   t   CalculateVariablesR    R   R   t	   Exception(	   R<   R   R0   t   default_variablest   DEFAULT_PREFIXR   t   DEFAULT_EXTENSIONR-   R~   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR    s<    
	c   
      C   s  | d } |  j  d k rA |  j j |  j |  j  } | rA | Sn  | d k rz |  j  d k rz | d k rz |  j j   } n |  j | |  } | d k r d | k r t	 j
 j | d |  } |  j |  Sd d g } |  j  d k r|  j d	 k r| d d g 7} n. |  j  d k r5|  j d	 k r5| d g 7} n  | d k	 rd
 } |  j d	 k rut	 j
 j d
 d |  j  } n  t	 j
 j | t | |   S| | k s|  j r| S| d k rd }	 |  j d	 k rt	 j
 j d d |  j  }	 n  t	 j
 j |	 |  S|  j | d t Sd S(   s2   Compute the path for the final output of the spec.R0   R   Rs   R>   R  R?   RA   Rf   R~   R,   s   %sR   R   N(   R>   R  R?   RA   (   R    Rj   t   GetOutputNameRe   Rh   R1   R   t   GetExecutablePathR  R(   R)   RV   R   R.   R   Rd   R:   (
   R<   R   R,   R0   t   overrideR  R)   t   type_in_output_roott   archdirt   libdir(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR    s>    
	c         C   sH   t  | t  s t  | d  k r+ g  } n  | j | d j |   d  S(   NRK  (   t
   isinstanceR   Ry   R1   R   RV   (   R<   R^  R  t   values(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR  .  s    	c         C   s  |  j  d k ra g  | D]' } |  j j | |  j d |  j ^ q } |  j j | d |  j } nO |  j  d k r g  | D] } t j j | |  ^ qw } t j j | |  } n  |  j }	 |  j	 d k r |	 d |  j	 7}	 n  |	 d | 7}	 t
 j d d |	  }	 d d	 d
 d d g }
 d d j t t
 j |
   d }
 t
 j |
 d d |  } d } d } g  | D] } |  j | |  j  ^ qc} |  j  d k r|	 d } | rd n
 d |  j } | r|  j j | |  j  } n t j j |  } d t j | | } n6 |  j |  } t j j |  } d |  j | | } |  j j |	 | | d | d t d | d | d | |  j j   |	 | f S(   s   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   Ri   Rs   R~   Rb   s   [^a-zA-Z0-9_]R	  s   ${root}s
   ${dirname}s	   ${source}s   ${ext}s   ${name}s   (?!t   |t   )s   \$s   .$unique_name.rspR   RK  s%   %s gyp-win-tool action-wrapper $arch s   cd %s; R   t   restatR  t   rspfilet   rspfile_contentN(   R    Rj   Rk   R\   Re   R   Ru   Rv   Rq   R   R   t   subRV   R1  R%   R1   Rh   R[   t   BuildCygwinBashCommandLineR   t   EncodeRspFileListt   sysR  R7  RY   R  RQ   R  R   R   (   R<   Rq   R  R  R  Rz   R  R   R   R  t   protectR  R  t   run_inR  (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR  4  sF    1	(	#(
	N(+   RF   RG   R1   R=   Rh   Rr   R|   R   Rd   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R[  R  R  R  R   R   R   R  R6  R  R:   R  R  R7  R/  R  R  R  R  (    (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyRI      sL   #	$				
	%		&	w				.	"				4				$	
	2-	c         C   s  t  j j |  } | d k r |  j d d  |  j d d  |  j d t d  |  j d t d  d d	 l j j } t | d
 g   a	 t | d g   a
 t | d g   a n7| d k rot  j j } |  j d d  d | d |  d <d |  d <d | d |  d <d |  d <d | d |  d <d d	 l j j } t | d
 g   a	 t | d g   a
 t  j j |  |  ny | } | d k rd } n  |  j d |  |  j d d  |  j d t j j d d   |  j d t j j d d   d	 S(   sD   Calculate additional variables for use in the build (called by gyp).Rs   t   OSR  s   .dylibt   SHARED_LIB_DIRR   t   LIB_DIRiNt+   generator_additional_non_configuration_keyst"   generator_additional_path_sectionst!   generator_extra_sources_for_rulesR   Rb   R  R   R   R   R>   R   R	   R?   t   androidt   linuxs   .sos   $!PRODUCT_DIRR   R}   (   R   RY   t	   GetFlavort
   setdefaultRl   t   gyp.generator.xcodet	   generatort   xcodet   getattrR"  R#  R$  t   MSVSUtilt   TARGET_TYPE_EXTt   gyp.generator.msvst   msvsR   t   CalculateCommonVariablesR(   R)   RV   (   R	  t   paramsR    t   xcode_generatort   extst   msvs_generatort   operating_system(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR  w  sL    		

			c         C   s\   t  j j |  d j p d  } |  j d i   j d d  } t  j j t  j j | |   S(   sE   Returns the path from the toplevel_dir to the build output directory.t   optionsRb   R   t
   output_dirRS  (   R(   R)   R   t   generator_outputR   Rx   RV   (   R2  t   generator_dirR8  (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   ComputeOutputDir  s    c         C   sO   |  d j  } t j j t j j | t |   d   } i | d 6| d 6a d S(   sB   Called by __init__ to initialize generator values based on params.R7  t   gypfilest   toplevelt   qualified_out_dirN(   R^   R(   R)   Rx   RV   R;  t   generator_filelist_paths(   R2  R=  R>  (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   CalculateGeneratorInputInfo  s    R   c         C   s   t  j j |   t |  |  S(   s;   Open |path| for writing, creating directories if necessary.(   R   RY   t   EnsureDirExistst   open(   R)   t   mode(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR     s    c         C   s(   | j  |  d  } | r$ | d | S| S(   NR   RK  (   R   (   R  t   wrapperst   progt   wrapper(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   CommandWithWrapper  s    c    
         s  t  t j j d d   }  |  r% |  St j d k r d d l   d   j f   f d     Y} |   }   j |  | _	   j
 j j   j |   t d	 | j d
 d  } t d	 t  t j j d d    } t | |  St j j d  r}t j j d  ryt d  c } t j d  } xJ | D]B } | j |  } | sKq*n  t d	 t  | j d	   d d  SWWd QXn  d	 St j d k ry7 t  t j d d d g   }	 t d	 |	 d d  SWqd	 SXn d	 Sd S(   s6   Returns a best-guess for a number of concurrent links.t   GYP_LINK_CONCURRENCYi    t   win32t   cygwiniNt   MEMORYSTATUSEXc        
      sz   e  Z d    j f d   j f d   j f d   j f d   j f d   j f d   j f d   j f d   j f g	 Z RS(	   t   dwLengtht   dwMemoryLoadt   ullTotalPhyst   ullAvailPhyst   ullTotalPageFilet   ullAvailPageFilet   ullTotalVirtualt   ullAvailVirtualt   sullAvailExtendedVirtual(   RF   RG   t   c_ulongt   c_ulonglongt   _fields_(    (   t   ctypes(    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyRK    s   i   i   i   i   t   GYP_LINK_CONCURRENCY_MAXi    R&  s   /proc/meminfos   ^MemTotal:\s*(\d*)\s*kBi   i   t   darwint   sysctls   -ns
   hw.memsizei   (   RI  RJ  i   @I       i   i   @(   R  R(   R  R   R  t   platformRX  t	   Structuret   sizeofRL  t   windllt   kernel32t   GlobalMemoryStatusExt   byreft   maxRN  t   minR   R)   t   existsRB  R   t   compileR   t   groupt
   subprocesst   check_output(
   t	   pool_sizeRK  t   statt	   mem_limitt   hard_capt   meminfot   memtotal_ret   lineR   t   avail_bytes(    (   RX  s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   GetDefaultConcurrentLinks  s:    	$.c         C   s   |  r
 d Sd S(   sw   Returns the suffix used to select an appropriate linking rule depending on
  whether the manifest embedding is enabled.t   _embedR   (    (   t   embed_manifest(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyR  
  s    c            s=    f d   } t     } t t j j d d   d k } d | j   } d t j | f } | | d d  } |  j d	 | d
 | d | d d d d d t	 d d |  j d | d
 | d | d d d d d t	 d d d t j | f } | | d d  } |  j d | d
 d | j   d | d d d d d d d S(   s7   Adds link rules for Windows platform to |master_ninja|.c            sF   i d d 6d d 6| } d i t  j d 6| d 6|  d 6| d	 6  d
 6S(   Nt   1t   exet   2t   dlls   %(python)s gyp-win-tool link-with-manifests $arch %(embed)s %(out)s "%(ldcmd)s" %(resname)s $mt $rc "$intermediatemanifest" $manifestst   pythonRS  t   ldcmdt   resnamet   embed(   R  R  (   Rz  RS  t   binary_typet   resource_name(   Rt  (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   FullLinkCommand  s    
t   GYP_USE_SEPARATE_MSPDBSRVt   0i    s   LINK%s(DLL) $binarys\   %s gyp-win-tool link-wrapper $arch %s $ld /nologo $implibflag /DLL /OUT:$binary @$binary.rsps   $binaryRx  R  R  R  R  s   $binary.rspR  s   $libs $in_newline $ldflagsR  R  t	   link_poolR  sK   %s gyp-win-tool link-wrapper $arch %s $ld /nologo /OUT:$binary @$binary.rspRv  R  s   LINK%s $binarys   $in_newline $libs $ldflagsN(
   R  R  R(   R  R   t   upperR  R  R  R   (   t   master_ninjaRt  R  t   rule_name_suffixt   use_separate_mspdbsrvt   dlldesct   dllcmdt   exe_cmd(    (   Rt  s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   _AddWinLinkRules  s8    !c   H      C   s  | 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 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  }! x| D]\ }" }# |" d k rt j j |  |#  } n  |" d k rt j j |  |#  } n  |" d k r0t j j |  |#  } | j d  r0| } q0n  |" d k rTt j j |  |#  } n  |" d k r~t j j |  |#  } |# } n  |" d k rt j j |  |#  } |# } n  |" d k rt j j |  |#  } n  |" d k rt j j |  |#  } n  |" d k rt j j |  |#  } n  |" d  k r8t j j |  |#  } n  |" d! k r\t j j |  |#  } n  |" d" k rt j j |  |#  } n  |" j d#  rt j j |  |#  |! |" t d#   <qqWxt t j j   D]c \ }" }# |" j   j d#  r|" t d#   }$ t j d$ d% |$  }$ t j j |  |#  |! |$ <qqW| j d& d   }% |% rZd' |% |! d( <n  | d k r_g  |  D] }& | |& d) | ^ qm}' d  }( | j d* d  st  j j |' |  }( n  t  j j |	 | |( t
  }) x t |) j    D]o \ }* }+ | r| }+ n  t d |! t |+ d   }, | rD|, |* d+ k r:d, n d- 7}, n  | j d. |* |,  qWn  t d/ d g |  } | j d t d |! |   t d0 d g |  } | j d1 t d |! |   | d k r@| j d2 |  | j d3 d4  | j d |  | j d5 d6  | j d7 d8  | j d9 d:  | j d; d<  n | j d2 t d( |! |   | j d= t d( |! |   | j d t d> d g |   | d? k r| j d t d@ d g |   | j d t dA d! g |   n  t  r`| s| } n  | s| } n  | j dB t dC g |   | j dD t dE g |   | j dF t dG g |   t dH g |  } t dI g |  } dJ | k r| r| j! dJ |  } n  dK | k r| r| j! dK |  } n  | j dL t d |! |   | j dM t d |! |   | d k r%| j dN |  q`| j dN t d( |! |   | j dO t d( |! |   n  | j"   | j# dP dQ t$   | j"   | d k rdR n dS }- | d k r	| j% d dT dU dV dW dX dY dZ |- | j% d[ dT dU dV d\ | j% d1 dT d] dV d^ dX dY dZ |- n d_ d` }. d_ da }/ | j% d dT dU dV |. db dc dd de dZ |- | j% d1 dT d] dV |/ db dc dd df dZ |- | j% d3 dT dg dV dh t& j' | j% d5 dT di dV dj t& j' | j% dk dT dl dV dm t& j' | d? k r
| d k r
| j% dn dT do dV dp | j% dq dT do dV dr ds i dt du 6dv dw 6}0 | j% du dT dx dy t( dV |0 i dz d{ 6db d| dd d} d~ dP | j% d dT d dy t( dV |0 i dz d{ 6db d| dd d d~ dP | j% d dT d dV d d~ dP n| d k r5| j% dn dT d dV d t& j' db dc dd d t) | d t( t) | d t* n| j% d dT d dV d dX dY dZ |- | j% d dT d dV d dX dY dZ |- | j% dn dT d dV d | j% d dT d dV d | j% d dT d dV d i d dw 6d }1 d i |1 du 6d dw 6}0 d }2 | j% du dT d dy t( dV |0 i |2 d{ 6d d 6db d| dd d d~ dP | j% d dT d dy t( dV |1 i |2 d{ 6d d 6db d| dd d d~ dP | j% d dT d dy t( dV |0 i |2 d{ 6d d 6db d| dd d d~ dP | j% d dT d dy t( dV |1 i |2 d{ 6d d 6db d| dd d d~ dP | j% d dT d dV d d~ dP | j% d dT d dV d | j% d dT d dV d | j% d dT d dV d | j% d dT d dV d | j% d dT d dV d | j% d dT d dV d | j% d dT d dV d | j% d dT d dV d | d k r| j% d dT d dV d t& j' n | j% d dT d dV d | d k rc| j% d dT d dV d t& j' nA | d k r| j% d dT d dV d n | j% d dT d dV d | j"   t+   }3 xN | d D]B } x9 t  j j, |  | t j j |   D] }4 |3 j- |4  qWqWt+   }5 i  }6 i  }7 t+   }8 t+   }9 xb|  D]Z}& t  j j |&  \ } }: }; | | j d g   }< | |< k st. d |< | f   | |& }= | d? k rt  j/ j0 | | |=  n  t  j j1 | | j	 t*  } t  j j2 | |: |;  }> t3 j4 |>  j5   }? t j j6 |  }@ d }A |; d k r<|A d |; 7}A n  t j j |A |@ |: d  }B t7   }C t8 |? |6 |@ | |C |	 |B | d | j	 }D |D j9 |= | |  }4 |C j:   d k rt
 t j j |	 |B    }E |E j; |C j<    Wd  QX|C j=   | j> |B  n  |4 r|: |4 j?   k rG|= d d k rG|7 j@ |: g   jA |4  n  |4 |6 |& <|& |3 k rs|5 j- |4 j?    n  |9 j- |:  q6|8 j- |:  q6W|7 r| j"   | jB d  xG t |7  D]6 }F | jC |F d g  |7 |F D] }G |G j?   ^ q qWn  |8 |9 }8 |8 rL| j"   | jB d  x' t |8  D] }: | jC |: d  q/Wn  |5 r| j"   | jC d d t |5   | jD | j d d   n  |
 j=   d  S(   NR7  R   s   build.ninjat   widthix   R   s   lib.exet   UNSETs   link.exes   $ldRV  R   s   c++s   $ccs   $cxxs   $cc_hosts	   $cxx_hostRY  RZ  i    t   make_global_settingst   ARs   AR.hostt   CCs   clang-clt   CXXs   CC.hosts   CXX.hostt   LDs   LD.hostt   NMs   NM.hostt   READELFs   READELF.hostt   _wrappers   \.HOST$s   .hostR   s   export DEVELOPER_DIR='%s' &&t   LINKR   t"   ninja_use_custom_environment_filesRJ   s    -m32s    -m64t   cl_t	   CC_targett
   CXX_targetR   RW  R   s   midl.exeR  s   rc.exet   ml_x86s   ml.exet   ml_x64s   ml64.exet   mts   mt.exeRX  t	   AR_targetRs   t	   NM_targett   READELF_targett   ar_hostt   AR_hostt   nm_hostt   NM_hostt   readelf_hostt   READELF_hostt   CC_hostt   CXX_hosts   $(CC)s   $(CXX)R   R   t   ld_hostt	   ldxx_hostR  t   deptht   msvct   gccR  s   CC $outR  sU   $cc -MMD -MF $out.d $defines $includes $cflags $cflags_c $cflags_pch_c -c $in -o $outR   s   $out.dt   depsR~  sE   $cc $defines $includes $cflags $cflags_c $cflags_pch_c -c $in -o $outs   CXX $outsX   $cxx -MMD -MF $out.d $defines $includes $cflags $cflags_cc $cflags_pch_cc -c $in -o $outs   ninja -t msvc -e $arch sH   -- $cc /nologo /showIncludes /FC @$out.rsp /c $in /Fo$out /Fd$pdbname_c sJ   -- $cxx /nologo /showIncludes /FC @$out.rsp /c $in /Fo$out /Fd$pdbname_cc R  s   $out.rspR  s$   $defines $includes $cflags $cflags_cs%   $defines $includes $cflags $cflags_ccs   IDL $insd   %s gyp-win-tool midl-wrapper $arch $outdir $tlb $h $dlldata $iid $proxy $in $midl_includes $idlflagss   RC $insU   %s gyp-win-tool rc-wrapper $arch $rc $defines $resource_includes $rcflags /fo$out $inR   s   ASM $outsS   %s gyp-win-tool asm-wrapper $arch $asm $defines $includes $asmflags /c /Fo $out $inR  s   AR $outs'   rm -f $out && $ar rcs $arflags $out $inR  s(   rm -f $out && $ar rcsT $arflags $out $ins   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; fis;   $ld -shared $ldflags -o $lib -Wl,-soname=$soname %(suffix)sR  sI   { $readelf -d $lib | grep SONAME ; $nm -gD -f p $lib | cut -f1-2 -d' '; }t   extract_tocs   SOLINK $libR  s   @$link_file_listt   suffixs   $link_file_lists<   -Wl,--whole-archive $in $solibs -Wl,--no-whole-archive $libsR  R  s   SOLINK(module) $libs3   -Wl,--start-group $in $solibs $libs -Wl,--end-groupR  s	   LINK $outsH   $ld $ldflags -o $out -Wl,--start-group $in $solibs $libs -Wl,--end-groups   LIB $outsU   %s gyp-win-tool link-wrapper $arch False $ar /nologo /ignore:4221 /OUT:$out @$out.rsps   $in_newline $libflagsRt  R  s	   OBJC $outs[   $cc -MMD -MF $out.d $defines $includes $cflags $cflags_objc $cflags_pch_objc -c $in -o $outR  s   OBJCXX $outs^   $cxx -MMD -MF $out.d $defines $includes $cflags $cflags_objcc $cflags_pch_objcc -c $in -o $outs   LIBTOOL-STATIC $out, POSTBUILDSsa   rm -f $out && ./gyp-mac-tool filter-libtool libtool $libtool_flags -static -o $out $in$postbuildsR  s   LIPO $out, POSTBUILDSs6   rm -f $out && lipo -create $in -output $out$postbuildsR  s   SOLIPO $out, POSTBUILDSs\   rm -f $lib $lib.TOC && lipo -create $in -output $lib$postbuilds &&%(extract_toc)s > $lib.TOCs]   { otool -l $lib | grep LC_ID_DYLIB -A 5; nm -gP $lib | cut -f1-2 -d' ' | grep -v U$$; true; }s(   $ld %(type)s $ldflags -o $lib %(suffix)ss   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; fis   @$link_file_list$postbuildss   SOLINK $lib, POSTBUILDSs   -sharedR0   s   $in $solibs $libst   solink_notocs   SOLINK(module) $lib, POSTBUILDSs   -bundlet   solink_module_notocs   LINK $out, POSTBUILDSs1   $ld $ldflags -o $out $in $solibs $libs$postbuildsRL  s   PREPROCESS INFOPLIST $outsT   $cc -E -P -Wno-trigraphs -x c $defines $in -o $out && plutil -convert xml1 $out $outRO  s   COPY INFOPLIST $ins:   $env ./gyp-mac-tool copy-info-plist $in $out $binary $keysRN  s   MERGE INFOPLISTS $ins-   $env ./gyp-mac-tool merge-info-plist $out $inR@  s   COMPILE XCASSETS $ins.   $env ./gyp-mac-tool compile-xcassets $keys $inR.  s2   COMPILE HEADER MAPS AND COPY FRAMEWORK HEADERS $ins   $env ./gyp-mac-tool compile-ios-framework-header-map $out $framework $in && $env ./gyp-mac-tool copy-ios-framework-headers $framework $copy_headersR4  s   MACTOOL $mactool_cmd $ins1   $env ./gyp-mac-tool $mactool_cmd $in $out $binaryR  s"   PACKAGE FRAMEWORK $out, POSTBUILDSsG   ./gyp-mac-tool package-framework $out $version$postbuilds && touch $outR  s&   PACKAGE IOS FRAMEWORK $out, POSTBUILDSsC   ./gyp-mac-tool package-ios-framework $out $postbuilds && touch $outR   s
   STAMP $outs   %s gyp-win-tool stamp $outs   ${postbuilds}touch $outR%  s   COPY $in $outs)   %s gyp-win-tool recursive-mirror $in $outt   zoss   rm -rf $out && cp -fRP $in $outs>   ln -f $in $out 2>/dev/null || (rm -rf $out && cp -af $in $out)t   build_filessD   make_global_settings needs to be the same for all targets. %s vs. %sR}   R~   Rb   s   .ninjaR^   R   s   Short names for targets.t   phonys(   Empty targets (output for completeness).t   allt   default_target(E   R   RY   R'  R   R(   R)   Rx   RV   R;  R^   R   R$   RP   t   CopyToolR1   t   ParseQualifiedTargetRZ   R   R   R  RB  t   lowerR   R  R   t   ExtractSharedMSVSSystemIncludest   GenerateEnvironmentFilesR  RG  R!   R   R   t$   generator_supports_multiple_toolsetsR   R   R  Rr  R  R  R  R   R  R:   R  t
   AllTargetsR  Ry   Ru   t   MergeGlobalXcodeSettingsToSpect   RelativePatht   QualifiedTargetR  R  R  Rn   R   RI   R   t   tellt   writet   getvaluet   closeR   RC   R(  R   t   commentR   t   default(H   t   target_listt   target_dictst   dataR2  Re   R7  R    R   RO   RR   t   master_ninja_fileR  RV  R   R   RW  R  RX  R  R  R   R   t   cc_host_global_settingt   cxx_host_global_settingt   clang_clRY  R  RZ  R  t
   build_fileR	  R  t   build_to_rootRD  t   keyR   t
   key_prefixR   t   qualified_targett   configst   shared_system_includest   cl_pathsR,   R)   R  R  t
   cc_commandt   cxx_commandt   mtime_preserving_solink_baset   solink_baset   solink_suffixt   all_targetsR~   R  RM   t   target_short_namest   empty_target_namest   non_empty_target_namesRq   R   t   this_make_global_settingsR   t   qualified_target_for_hashRL   t	   base_pathR}   R]   t   ninja_outputt   writerR^  t
   short_nameR   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   GenerateOutputForConfigA  sX   
					+ "									







				
			
"

(


c         C   se   | d } xT | D]L } t  j j | j d |  } d d | g } d | | f GHt j |  q Wd  S(   NR7  RS  RQ   s   -Cs   Building [%s]: %s(   R(   R)   RV   R^   Rh  t
   check_call(   R  R   R2  R7  Ri   t   builddirt	   arguments(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   PerformBuild	  s    
c         C   sE   t  j  t  j t  j  |  \ } } } } } t | | | | |  d  S(   N(   t   signalt   SIGINTt   SIG_IGNR  (   t   arglistR  R  R  R2  Re   (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   CallGenerateOutputForConfig	  s    c   
      C   so  t  j j |  } | j d i   j d d   } t  j j |  d k r~ t j |  |  \ }  } t j	 |  | t
  \ }  } n  | r t |  | | | |  n | |  d d j   } | d rDy\ t j t |   } g  } x* | D]" } | j |  | | | | f  q W| j t |  Wqkt k
 r@}	 | j   |	  qkXn' x$ | D] } t |  | | | |  qKWd  S(   NR   Ri   R   i    R   t   parallel(   R   Ru   t&   CloneConfigurationForDeviceAndEmulatorR   R1   RY   R'  R-  t   ShardTargetst   InsertLargePdbShimsRl   R  RA  t   multiprocessingt   PoolR   R   R1  R  t   KeyboardInterruptt	   terminate(
   R  R  R  R2  t   user_configt   config_namesR  t   arglistsRe   t   e(    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   GenerateOutput	  s2    		


(3   R   R%  R  RD  R  t   os.pathR(   R   R  Rh  R  R   t
   gyp.commonR    t   gyp.msvs_emulationt   gyp.MSVSUtilR-  t   gyp.xcode_emulationt	   cStringIOR   R   t   gyp.ninja_syntaxR$   Rl   R"  R#  R$  R1   R?  RY   t   CrossCompileRequestedR  R   R!   R'   R.   t   objectR/   RI   R  R;  R@  R   RG  Rr  R  R  R  R  R  R  (    (    (    s7   /usr/lib/python2.7/dist-packages/gyp/generator/ninja.pyt   <module>   s~   
			
	n     	4				7		1	  N				