ó
óÏù]c           @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z m Z m Z m Z m	 Z	 m
 Z
 m Z d  d l m Z m Z m Z e a d a e d d ƒ e d ƒ d „  ƒ ƒ Z e d	 „ Z d
 e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d d d „ Z" d „  Z# d „  Z$ d „  Z% d „  Z& i  d „ Z' d „  Z( d „  Z) d „  Z* d „  Z+ d d  „ Z, d d! „ Z- d d" „ Z. d d# „ Z/ d$ „  Z0 d% „  Z1 d& g d' „ Z2 d& g d( d) g d* „ Z3 d d& g d+ d, „ Z4 d- „  Z5 d. „  Z6 d S(/   iÿÿÿÿN(   t	   Configuret   Contextt   Logst   Nodet   Optionst   Taskt   Utils(   t   featuret   beforet   afteri    t   ct   cxxt   apply_incpathsc         C   s#   |  j  j d |  j j j ƒ  ƒ d  S(   Nt   INCPATHS(   t   envt   append_valuet   bldt   bldnodet   abspath(   t   self(    (    s   tools/waf/autowaf.pyt   include_config_h   s    c      
   C   sI  t  d k r d S|  j d d ƒ } xF d4 D]> } |  j j | ƒ } | r) |  j j | ƒ | j | ƒ q) q) W| j d d d	 d
 d ƒ| j d d d	 d
 d ƒ| j d d d	 d
 d ƒ| j d d d	 d
 d ƒ| j d d d	 d
 d ƒ| j d d d	 d
 d ƒ| j d d d	 d
 d ƒ| rH|  j d d d d t d d d
 d ƒn% |  j d d d  d t d d d
 d! ƒ|  j d" d d  d t d d# d
 d$ ƒ|  j d% d d  d t d d& d
 d' ƒ|  j d( d d  d t d d) d
 d* ƒ|  j d+ d d  d t d d, d
 d- ƒ|  j d. d d  d t d d/ d
 d0 ƒ| j d1 d d	 d
 d2 ƒd3 a  d S(5   s:   Add standard autowaf options if they havn't been added yeti    Ns   Installation directoriest    s   --prefixs	   --destdirs   --bindirt   typet   stringt   helps)   Executable programs [Default: PREFIX/bin]s   --configdirs(   Configuration data [Default: PREFIX/etc]s	   --datadirs#   Shared data [Default: PREFIX/share]s   --includedirs&   Header files [Default: PREFIX/include]s   --libdirs   Libraries [Default: PREFIX/lib]s   --mandirs#   Manual pages [Default: DATADIR/man]s   --docdirs)   HTML documentation [Default: DATADIR/doc]s
   --optimizet   actiont   store_falset   defaultt   destt   debugs   Build optimized binariess   --debugt
   store_trues   Build debuggable binariess   --grindt   grinds   Run tests in valgrinds   --strictt   stricts/   Use strict compiler flags and show all warningss   --docst   docss&   Build documentation - requires doxygens
   --lv2-usert   lv2_users$   Install LV2 bundles to user locations   --lv2-systemt
   lv2_systems&   Install LV2 bundles to system locations   --lv2dirs!   LV2 bundles [Default: LIBDIR/lv2]i   (   s   --prefixs	   --destdir(   t   g_stept   add_option_groupt   parsert
   get_optiont   remove_optiont
   add_optiont   Truet   False(   t   optt   debug_by_defaultt   dirs_optionst   kt   option(    (    s   tools/waf/autowaf.pyt   set_options!   sP    
R   c      	   C   s®   d } t  j d k r d } n  | d k r6 |  j } n- | d k rN |  j } n t j d | ƒ d S| d k r‘ | d | d	 | d
 | d | ƒ n | d | d	 | d | ƒ d S(   s   Check for a headerR   t   darwins   /opt/local/includeR
   R   s   Unknown header language `%s'Nt   header_namet   includest   define_namet	   mandatory(   t   syst   platformt   check_cct	   check_cxxR   t   error(   t   conft   langt   namet   defineR6   R4   t
   check_func(    (    s   tools/waf/autowaf.pyt   check_headerX   s    	c         C   s4   |  j  d d ƒ j  d d ƒ j  d d ƒ j  d d ƒ S(   Nt   /t   _s   ++t   PPt   -t   .(   t   replace(   R>   (    (    s   tools/waf/autowaf.pyt   nameifyl   s    c         C   s!   |  j  | | ƒ | |  j | <d  S(   N(   R?   R   (   R<   t   var_namet   value(    (    s   tools/waf/autowaf.pyR?   o   s    c         K   sR  | d j  ƒ  |  j d k r! d Sd d d „  ƒ  Y} d t | d ƒ } | |  j k } d | k pj | d } | r³ d | k r³ |  j d	 | } | r³ | | d k  r³ t } q³ n  | rß | rß |  j | | j k rß t } n  | r%|  j d
 | d d | � d | k r%| d |  j d	 | <q%n  | r>| j |  j | <n | j |  j | <d S(   s6   Check for a package iff it hasn't been checked for yett   uselib_storet   AUTOWAF_LOCAL_LIBSNt	   CheckTypec           B   s   e  Z d  Z d Z RS(   i   i   (   t   __name__t
   __module__t   OPTIONALt	   MANDATORY(    (    (    s   tools/waf/autowaf.pyRM   w   s   t   CHECKED_R6   t   atleast_versiont   VERSION_t   packaget   argss   --cflags --libs(    (   t   lowerR   RH   R*   RP   t	   check_cfgRQ   (   R<   R>   RV   RM   RI   t   checkR6   t   checked_version(    (    s   tools/waf/autowaf.pyt	   check_pkgs   s&    #	c         C   s?   t  j d k r+ t j j |  ƒ j d d ƒ St j j |  ƒ Sd  S(   Nt   win32s   \RB   (   R7   R8   t   ost   patht   normpathRG   (   R^   (    (    s   tools/waf/autowaf.pyR_   �   s    c            sý  t  d k r d  S‡  f d †  } d GHt d ƒ t j j rJ ˆ  j d ƒ n  t j j ˆ  j d <t j j ˆ  j d <t j j ˆ  j d <t	 t
 j j t
 j j ˆ  j d	 ƒ ƒ ƒ ˆ  j d	 <‡  f d
 †  } t j } ˆ  j d	 } | d | j t
 j j | d ƒ ƒ | d | j t
 j j | d ƒ ƒ | d | j t
 j j | d ƒ ƒ | d | j t
 j j | d ƒ ƒ | d | j t
 j j | d ƒ ƒ | d | j t
 j j ˆ  j d d ƒ ƒ | d | j t
 j j ˆ  j d d ƒ ƒ t j j røt j j ˆ  j d <nMt j j ršt j d k r;t
 j j t
 j d ƒ d ƒ ˆ  j d <qEt j d k rrt
 j j t
 j d ƒ d ƒ ˆ  j d <qEt
 j j t
 j d ƒ d  ƒ ˆ  j d <n« t j j r"t j d k rÅd! ˆ  j d <qEt j d k rüt
 j j t
 j d" ƒ d ƒ ˆ  j d <qEt
 j j ˆ  j d d# ƒ ˆ  j d <n# t
 j j ˆ  j d d# ƒ ˆ  j d <t	 ˆ  j d ƒ ˆ  j d <t j j r“ˆ  j d$ ƒ } | s“ˆ  j d% ƒ q“n  t j j rÈd& d' g ˆ  j d( <d& d' g ˆ  j d) <n
 | d* ƒ t j j r ˆ  j j d( d+ d, g ƒ ˆ  j j d) d- d. d/ g ƒ | d0 ƒ n  ˆ  j d1 s:| d2 ƒ n  ˆ  j j d( d3 t
 j j d4 ƒ ƒ ˆ  j j d) d3 t
 j j d4 ƒ ƒ t  ˆ  d5 ˆ  j d	 ƒ t  ˆ  d6 t! ˆ  j d ƒ ƒ t  ˆ  d7 t! ˆ  j d ƒ ƒ t  ˆ  d8 t! ˆ  j d ƒ ƒ d GHd9 a  d  S(:   Ni   c            s6   ˆ  j  j d |  j ƒ  ƒ ˆ  j  j d |  j ƒ  ƒ d  S(   Nt   CFLAGSt   CXXFLAGS(   R   R   t   split(   t   vals(   R<   (    s   tools/waf/autowaf.pyt   append_cxx_flags™   s    R   s   Global Configurationt   doxygent   DOCSt   DEBUGt   STRICTt   PREFIXc            s3   | r t  | ƒ ˆ  j |  <n t  | ƒ ˆ  j |  <d  S(   N(   R_   R   (   t   varR,   R   (   R<   (    s   tools/waf/autowaf.pyt
   config_dir§   s    t   BINDIRt   bint
   SYSCONFDIRt   etct   DATADIRt   sharet
   INCLUDEDIRt   includet   LIBDIRt   libt   MANDIRt   mant   DOCDIRt   doct   LV2DIRR2   t   HOMEs   Library/Audio/Plug-Ins/LV2R\   t   APPDATAt   LV2s   .lv2s   /Library/Audio/Plug-Ins/LV2t   COMMONPROGRAMFILESt   lv2t   dots/   Graphviz (dot) is required to build with --docss   -O0s   -gR`   Ra   s   -DNDEBUGs   -std=c99s	   -pedantics   -ansis   -Woverloaded-virtuals   -Wnon-virtual-dtors#   -Wall -Wextra -Wno-unused-parametert   MSVC_COMPILERs   -fshow-columns   -IRF   s   Install prefixs   Debuggable builds   Strict compiler flagss   Build documentationi   ("   R$   t   display_headerR   t   optionsR!   t   loadR   R   R    R_   R]   R^   R   t
   expandusert   bindirt   joint	   configdirt   datadirt
   includedirt   libdirt   mandirt   docdirt   lv2dirR"   R7   R8   t   getenvR#   t   find_programt   fatalR   t   prepend_valuet   display_msgt   str(   R<   Rd   Rk   t   optst   prefixR€   (    (   R<   s   tools/waf/autowaf.pyt	   configure•   sv    
2	"""""))((((&#
##c         C   s?   |  j  j r( |  j  j d d d g ƒ n |  j  j d d ƒ d  S(   NR`   s   -TPs   -MDs   -std=c99(   R   R�   t   append_unique(   R<   (    (    s   tools/waf/autowaf.pyt   set_c99_modeï   s    c         C   s³   d t  | j ƒ  ƒ } t |  | d ƒ | ro t |  j d ƒ t k rU i  |  j d <n  t |  j d | j ƒ  <n@ t |  j d ƒ t k r˜ i  |  j d <n  t |  j d | j ƒ  <d  S(   Nt   HAVE_i   RL   t   AUTOWAF_LOCAL_HEADERS(   RH   t   upperR?   R   R   t   dictR*   RW   (   R<   R>   t   has_objectsRI   (    (    s   tools/waf/autowaf.pyt   set_local_libö   s    c         C   sC   t  |  | ƒ r/ t |  | t |  | ƒ | ƒ n t |  | | ƒ d  S(   N(   t   hasattrt   setattrt   getattr(   t   objt   keyt   val(    (    s   tools/waf/autowaf.pyt   append_property  s     c   
      C   s%  t  j j d ƒ } | j ƒ  } x | D]ø } | j ƒ  |  j d k } | j ƒ  |  j d k } | r› t | d d | j ƒ  ƒ t | d |  j d | ƒ n  | s§ | r	d t  j j | | j ƒ  ƒ } xT d	 d
 g D]/ }	 | |  j |	 k rÓ |  j j |	 | ƒ qÓ qÓ Wq% t | d d | ƒ q% Wd  S(   NRF   R›   RL   t   uses    lib%s t	   frameworkt
   FRAMEWORK_s   -iquote R`   Ra   t   uselibt    (	   R]   R^   R   Rb   RW   R   R¦   R‡   R’   (
   R   R£   t   libst	   abssrcdirt	   libs_listt   lt
   in_headerst   in_libst   inc_flagt   f(    (    s   tools/waf/autowaf.pyt   use_lib  s    c         C   s   t  j d |  ƒ d  S(   Nt   BOLD(   R   t   pprint(   t   title(    (    s   tools/waf/autowaf.pyR‚     s    c         C   sË   d } t  | ƒ t k r | s* | d k r3 d } n. t  | ƒ t k rL | sX | d k ra d } n  t j d d d d	 ƒt j d
 d | j |  j d ƒ d d	 ƒt j d d d d	 ƒt j | | ƒ d  S(   Nt   CYANR*   t   GREENR+   t   YELLOWRµ   s    *t   sepR   t   NORMALs   %si   t   :(   R   t   boolR   R¶   t   ljustt	   line_just(   R<   t   msgt   statust   color(    (    s   tools/waf/autowaf.pyR“     s    $	%	*c            s'   d j  t ‡  f d †  ˆ  d | ƒ ƒ S(   NR«   c            s   ˆ  d |  S(   Nt   LIB_ST(    (   t   x(   R   (    s   tools/waf/autowaf.pyt   <lambda>(  s    t   LIB_(   R‡   t   map(   R   Ru   (    (   R   s   tools/waf/autowaf.pyt
   link_flags'  s    c            s'   d j  t ‡  f d †  ˆ  d | ƒ ƒ S(   NR«   c            s   ˆ  d |  S(   Nt
   CPPPATH_ST(    (   RÅ   (   R   (    s   tools/waf/autowaf.pyRÆ   +  s    t	   INCLUDES_(   R‡   RÈ   (   R   Ru   (    (   R   s   tools/waf/autowaf.pyt   compile_flags*  s    c           C   s
   t  a d  S(   N(   R*   t
   g_is_child(    (    (    s   tools/waf/autowaf.pyt   set_recursive-  s    c           C   s   t  S(   N(   RÍ   (    (    (    s   tools/waf/autowaf.pyt   is_child1  s    c         C   sß  |  j  d } | d d k r* | d  } n  | j ƒ  } | d k rS | d | 7} n  | d 7} |  j  d } | j | ƒ rŽ | j | d ƒ } n  |  j  d	 }	 |	 j | ƒ r¿ |	 j | d
 ƒ }	 n  |  d d d d | j ƒ  d | d t j j |  j  d d ƒ d d
 d | d d
 d | d	 |	 ƒ 	}
 t | ƒ t k r?| j	 ƒ  } n  | | | d <| d | j
 d ƒ !| | d <x] | D]U } t |  j  | ƒ | | d <t |  j  | ƒ } | d k r¹d } n  | | | d <qrW|
 j j | ƒ d S(   s4  Build a pkg-config file for a library.
    name           -- uppercase variable name     (e.g. 'SOMENAME')
    version        -- version string              (e.g. '1.2.3')
    version_suffix -- name version suffix         (e.g. '2')
    libs           -- string/list of dependencies (e.g. 'LIBFOO GLIB')
    Ri   iÿÿÿÿRB   R   RE   s   .pcRt   s   ${exec_prefix}Rr   s	   ${prefix}t   featurest   substt   sources   %s.pc.int   targett   install_patht	   pkgconfigt   exec_prefixt   EXEC_PREFIXt   _VERSIONi    RF   t   _MAJOR_VERSIONt   _LIBSR«   t   _CFLAGSN(   R   RW   t
   startswithRG   R]   R^   R‡   R   t   listRb   t   findRÉ   RÌ   t   __dict__t   update(   R   R>   t   versiont   version_suffixR¬   t
   subst_dictt
   pkg_prefixRÓ   R‹   RŠ   R£   t   it
   lib_cflags(    (    s   tools/waf/autowaf.pyt   build_pc6  sB    
		c         C   s6   t  ƒ  r t j j d |  | ƒ St j j d | ƒ Sd  S(   Nt   build(   RÏ   R]   R^   R‡   (   R>   t   subdir(    (    s   tools/waf/autowaf.pyt	   build_dirf  s    	c         C   s  |  j  ƒ  }  |  j ƒ  } yÅt j ƒ  } t j t |  d ƒ ƒ d |  } t j j | ƒ s] d  Sxw d | d g d |  d g d d g d d g d d g d d g d	 d
 g g D]( } t j d | d | d | f ƒ q« Wt j	 d |  d ƒ xf t
 j
 d ƒ t
 j
 d ƒ t
 j
 d ƒ t
 j
 d ƒ D]. } | d k r"| d k r"t j | ƒ q"q"Wt j | ƒ t j t |  d ƒ ƒ x. t
 j
 d ƒ D] } t j d | | f ƒ q‡Wx$ t
 j
 d ƒ D] } t j | ƒ q¸Wt j | ƒ Wn* t k
 r	} t j d |  | f ƒ n Xd  S(   Ns   doc/htmls   group__%s.htmls   %s_API R   s   &#160;s   <script.*><\/script>s6   <hr\/><a name="details" id="details"><\/a><h2>.*<\/h2>s:   <link href="tabs.css" rel="stylesheet" type="text\/css"\/>s6   <img class="footer" src="doxygen.png" alt="doxygen"\/>t   Doxygens   sed -i 's/%s/%s/g' %si    i   s
   index.htmls   *.pngs   *.htmls   *.jss   *.csss	   style.csss   doc/man/man3s   *.3s   sed -i 's/%s_API //' %ss   _*s%   Failed to fix up %s documentation: %s(   RW   Rœ   R]   t   getcwdt   chdirRê   R^   t   existst   systemt   renamet   globt   removet	   ExceptionR   R;   (   R>   t   NAMEt   topt   pageRå   t   e(    (    s   tools/waf/autowaf.pyt   make_simple_doxm  sD    
			&&c         C   s¶  |  j  d s d  St ƒ  rV t j j | | j ƒ  ƒ } t j j | | j ƒ  d ƒ } n | } t j j | d ƒ } |  d d d d d d d	 d
 d d ƒ } i | | d 6t j j | ƒ | d 6t j j | ƒ | d 6} | j j | ƒ | j	 ƒ  |  d d d d ƒ }	 |	 j	 ƒ  |  j
 d | j ƒ  |  j j ƒ  j d ƒ ƒ |  j
 d | j ƒ  |  j j ƒ  j d ƒ ƒ xG t d d ƒ D]6 }
 |  j
 d |
 |  j j ƒ  j d |
 d d ƒƒ qxWd  S(   NRf   Ry   RÐ   RÑ   RÒ   s   doc/reference.doxygen.inRÓ   s   doc/reference.doxygenRÔ   R   R>   t   doxyfileRØ   t   _SRCDIRt   _DOC_DIRRe   s   ${DOCDIR}/%s-1/htmls
   doc/html/*s   ${DOCDIR}/%s-1/html/searchs   doc/html/search/*i   i   s   ${MANDIR}/man%ds   doc/man/man%d/*t   excls   **/_*(   R   RÏ   R]   R^   R‡   RW   R   Rß   Rà   t   postt   install_filest   get_bldt   ant_globt   range(   R   R>   Rá   t   srcdirt   blddirt   src_dirt   doc_dirt   subst_tgRã   R!   Rå   (    (    s   tools/waf/autowaf.pyt	   build_dox“  s:    	!	
	
c         C   s¶  t  j j |  ƒ }  t  j j | ƒ } d | d t | ƒ d } | d | d t | ƒ d 7} | d | d t | ƒ d 7} y* t | d ƒ } | j | ƒ | j ƒ  Wn/ t k
 rÛ t j	 d | ƒ t
 j d ƒ n Xd	 | d
 } | d | d
 7} | d | d 7} | d | d 7} | d | d 7} | d | d 7} | d | d 7} y* t |  d ƒ } | j | ƒ | j ƒ  Wn/ t k
 r±t j d |  ƒ t
 j d ƒ n Xd  S(   Ns   int s   _major_version = s   ;
s   _minor_version = s   _micro_version = t   ws   Failed to open %s for writing
iÿÿÿÿs
   #ifndef __s   _version_h__
s
   #define __s   extern const char* s   _revision;
s   extern int s   _major_version;
s   _minor_version;
s   _micro_version;
s   #endif /* __s   _version_h__ */
(   R]   R^   R   R”   t   opent   writet   closet   IOErrorR   R;   R7   t   exitt   warnt   None(   t   header_patht   source_patht   domaint   majort   minort   microt   textt   o(    (    s   tools/waf/autowaf.pyt   build_version_files¾  s6      c         C   s‘   t  j d | ƒ d | } d d d d d d | g } | rP | d	 | g 7} n  | | 7} t  j d
 | ƒ t j | d t j j | | ƒ ƒd  S(   Ns   Generating pot file from %ss   %s.pott   xgettexts   --keyword=_s   --keyword=N_s   --keyword=S_s   --from-code=UTF-8s   -os   --copyright-holder="%s"s	   Updating t   cwd(   R   t   infot
   subprocesst   callR]   R^   R‡   (   R   R  t   dirR>   t   sourcest   copyright_holdert   pot_filet   cmd(    (    s   tools/waf/autowaf.pyt   build_i18n_potÝ  s    

c         C   s“   t  j ƒ  } t  j t  j j | | ƒ ƒ d | } t j d ƒ } x> | D]6 }	 d d |	 | g }
 t j d |	 ƒ t j	 |
 ƒ qH Wt  j | ƒ d  S(   Ns   %s.pots   po/*.pot   msgmerges   --updates	   Updating (
   R]   Rì   Rí   R^   R‡   Rñ   R   R  R  R  (   R   R  R  R>   R  R   t   pwdR!  t   po_filest   po_fileR"  (    (    s   tools/waf/autowaf.pyt   build_i18n_poï  s    
	c         C   s«   t  j ƒ  } t  j t  j j | | ƒ ƒ d | } t j d ƒ } xV | D]N }	 |	 j d d ƒ }
 d d d d |
 |	 g } t j d	 |	 ƒ t	 j
 | ƒ qH Wt  j | ƒ d  S(
   Ns   %s.pots   po/*.pos   .pos   .mot   msgfmts   -cs   -fs   -os   Generating (   R]   Rì   Rí   R^   R‡   Rñ   RG   R   R  R  R  (   R   R  R  R>   R  R   R%  R!  R&  R'  t   mo_fileR"  (    (    s   tools/waf/autowaf.pyt   build_i18n_moý  s    
	c         C   sO   t  |  | | | | | ƒ t |  | | | | | ƒ t |  | | | | | ƒ d  S(   N(   R#  R(  R+  (   R   R  R  R>   R  R   (    (    s   tools/waf/autowaf.pyt
   build_i18n  s    c         C   s†   t  j j t  j ƒ } t |  j ƒ d k } | rO t  j t  j j d | ƒ ƒ n t  j d ƒ t j	 d d t  j j t  j
 ƒ  ƒ ƒ d  S(   Ni   Rè   R¹   s   Waf: Entering directory `%s'(   R]   R^   R   t   curdirt   lent
   stack_pathRí   R‡   R   R¶   Rì   (   t   ctxt   appnamet   orig_dirt	   top_level(    (    s   tools/waf/autowaf.pyt   cd_to_build_dir  s    c         C   s6   | r% t  j t  j j d d ƒ ƒ n t  j d ƒ d  S(   Ns   ..(   R]   Rí   R^   R‡   (   R0  t   child(    (    s   tools/waf/autowaf.pyt   cd_to_orig_dir  s    t   srcc         C   s•   d } x | D] } | d | 7} q Wt  |  | ƒ t d d ƒ } zB y' t j d | j ƒ  d | d | ƒWn t j d ƒ n XWd  | j ƒ  Xd  S(	   NR   s    -d s   lcov-clear.logR  s
   lcov %s -zt   stdoutt   stderrs8   Failed to run lcov, no coverage report will be generated(   R4  R	  R  R  Rb   R   R  R  (   R0  R1  t   dirst   diroptsRå   t	   clear_log(    (    s   tools/waf/autowaf.pyt   pre_test"  s    s   *boost*s   c++*c         C   sÂ  d } x | D] } | d | 7} q Wt  d d ƒ } t  d d ƒ } t  d d ƒ } zÄ y© d }	 t rm d }	 n  t j d	 | |	 f j ƒ  d
 | d | ƒt j d d d g | d
 | d | ƒt j j d ƒ sÞ t j d ƒ n  t j d j ƒ  d
 | d | ƒWn t	 j
 d ƒ n XWd  | j ƒ  | j ƒ  | j ƒ  d GHt	 j d d t j j t j ƒ  ƒ ƒ t |  j ƒ d k }
 |
 r�t |  |
 ƒ n  Xd GHt	 j d d d d ƒd t j j d ƒ GHd  S(   NR   s    -d s   lcov-coverage.logR  s   coverage.lcovs   coverage-stripped.lcovRF   s   ..s   lcov -c %s -b %sR8  R9  t   lcovs   --removet   coverages*   genhtml -o coverage coverage-stripped.lcovs8   Failed to run lcov, no coverage report will be generatedR¹   s   Waf: Leaving directory `%s'i   Rµ   s	   Coverage:R»   s   <file://%s>

s   coverage/index.html(   R	  RÍ   R  R  Rb   R]   R^   t   isdirt   makedirsR   R  R  R¶   R   Rì   R.  R/  R6  (   R0  R1  R:  Rò   R;  Rå   t   coverage_logt   coverage_lcovt   coverage_stripped_lcovt   baseR3  (    (    s   tools/waf/autowaf.pyt	   post_test2  sB    	


&t   *c         C   sQ  d } d } x | D] } | d | 7} q WxÔ | D]Ì } | }	 t  | ƒ t  g  ƒ k rh d j | ƒ }	 n  d GHt j d d d d ƒt j d d	 |	 ƒ | }
 t j j r¶ d
 | }
 n  t j |
 d t	 ƒ| k rä t j d d ƒ q2 | d 7} t j d d ƒ q2 Wd GH| d k r0t j d d | | f ƒ n t j d d | | | f ƒ d  S(   Ni    R   s    -d R«   Rµ   s   ** TestR»   R¼   s   %ss	   valgrind t   shellR¹   s   ** Passi   t   REDs   ** FAILs   ** Pass: All %s.%s tests passeds   ** FAIL: %d %s.%s tests failed(
   R   R‡   R   R¶   R   Rƒ   R   R  R  R*   (   R0  R1  t   testst   desired_statusR:  R>   t   failuresR;  Rå   t   sR"  (    (    s   tools/waf/autowaf.pyt	   run_tests_  s,    
c         C   sš   |  j  d k r– |  j d r– |  j d r– d t j k r– t j j r– yC t j d |  j d ƒ t	 j
 d |  j d g ƒ t |  j d <Wq– q– Xn  d  S(   Nt   installt   RAN_LDCONFIGRt   t   DESTDIRs    Waf: Running `/sbin/ldconfig %s's   /sbin/ldconfig(   R"  R   R]   t   environR   Rƒ   t   destdirR   R  R  R  R*   (   R0  (    (    s   tools/waf/autowaf.pyt   run_ldconfig|  s    c      
   C   s`  d d  l  } d d  l } d d l m } m } | j d ƒ } | j d ƒ } | j d ƒ }	 | j d ƒ }
 | j d ƒ } | j ƒ  } y( x! | D] } | j | d d	 ƒq� WWn t j	 d
 ƒ d  SX| j
 d  | j | j ƒ } xP | j | |	 j d  g ƒ D]3 } | d j d ƒ rü | j | d d d	 ƒqü qü Wi  } x¾| j | | j d  g ƒ D]¡} | d } | j
 | | j d  ƒ } | j
 | | j d  ƒ } | j
 | | j d  ƒ } | j
 | | j d  ƒ } | rå| rå| rå| råd |  | f } x_ | j | | j d  g ƒ D]B } | d d j | j | j
 | d |	 j d  ƒ d d ƒƒ 7} q	W| d 7} | j
 | |
 j d  ƒ } | j
 | |
 j d  ƒ } | r¸| r¸| d | | j d d ƒ f 7} n  | d | d | | d ƒ ƒ 7} | | | <qUt j	 d |  ƒ qUWt | ƒ d k r\t | d ƒ } x1 t | j  ƒ  d t! ƒD] } | j" | | ƒ q4W| j# ƒ  n  d  S(   Niÿÿÿÿ(   t   strftimet   strptimes   http://usefulinc.com/ns/doap#s"   http://ontologi.es/doap-changeset#s%   http://www.w3.org/2000/01/rdf-schema#s   http://xmlns.com/foaf/0.1/s+   http://www.w3.org/1999/02/22-rdf-syntax-ns#t   formatt   n3s+   Error parsing data, unable to generate NEWSi   s   .ttls   %s (%s) stable;
s   
  * s   
    t   widthiO   s   

 --s    %s <%s>s   mailto:R   s     %s

s   %a, %d %b %Y %H:%M:%S +0000s   %Y-%m-%ds)   Ignored incomplete %s release descriptioni    R  t   reverse($   t   rdflibt   textwrapt   timeRU  RV  t	   Namespacet   ConjunctiveGrapht   parseR   R  RJ   R  R   t   Projectt   triplest   seeAlsot   endswitht   releaset   revisiont   createdt   blamet	   changesett   itemR‡   t   wrapt   labelR>   t   mboxRG   R.  R	  t   sortedt   keysR*   R
  R  (   R>   t   in_filest   out_fileR[  R\  RU  RV  t   doapt   dcst   rdfst   foaft   rdft   mRå   t   projR³   t   entriest   rRe  Rf  t   datet   blameeRi  t   entryt   blamee_namet   blamee_mboxt   newsR÷   (    (    s   tools/waf/autowaf.pyt
   write_news‰  s\    ""
"4
	(7   R]   R  R7   Rñ   t   waflibR    R   R   R   R   R   R   t   waflib.TaskGenR   R   R	   R+   RÍ   R$   R   R1   R*   RA   RH   R?   R[   R_   R—   R™   RŸ   R¦   R´   R‚   R  R“   RÉ   RÌ   RÎ   RÏ   Rç   Rê   Rø   R  R  R#  R(  R+  R,  R4  R6  R=  RF  RN  RT  R�  (    (    (    s   tools/waf/autowaf.pyt   <module>	   sT   47					Z									0		&	+				-	