o
    ©ÙldI'  ã                   @  s˜   d dl mZ d dlmZ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d„Zddd„ZedkrJe eejdd… ƒ¡ dS dS )é    )Úannotations)ÚenvironmentÚmesonlibNÚoutputsúT.List[str]Úsource_rootÚstrÚsubproject_rootÚ
build_rootÚlog_dirÚuse_llvm_covÚboolÚreturnÚintc                 C  sÖ  g }d}t  ¡ \}}	}
}}tj |d¡}tj |¡rd|g}ng }dt |¡g}|rDt 	|	d¡rD|d||g}tj tj |d¡¡rCg }n|d|g}|rRd|d	 g}ng }| rZd
| v r‰|rt 	|	d¡rt
 || ddtj |d¡g | ¡ | dt |d¡f¡ n| r‰tdƒ d}| rd| v r¾|r¶t 	|	d¡r¶t
 || ddtj |d¡g | ¡ | dt |d¡f¡ n| r¾tdƒ d}| rÄd| v rò|rêt 	|	d¡rêt
 || dtj |d¡g | ¡ | dt |d¡f¡ n| ròtdƒ d}| rùd| v rE|
rþ|rþtj |d¡}tj |d¡}|d }|d }|d  }|r„t ¡ rJtj |d!¡}t|d"d#d$}| d%|› d&¡ W d   ƒ n	1 sDw   Y  n5tj |d'¡}t|d"d#d$}| d(|› d)¡ W d   ƒ n	1 smw   Y  t |t |¡jtjB ¡ d*|g}ng }t
 |
d+|d,d-d.|g| | ¡ t
 |
d+|d,d.|d/d0d1g	| | ¡ t
 |
d2|d2|d0d1d|g	| ¡ t
 |
d3|tj |d4¡d0d1d.|g| ¡ t
 |
d5|tj |d4¡d0d1d.|g| ¡ t
 |d6|d6|d7|d8d9d:d;d<|g¡ | d=t |d>¡f¡ nG|r<t 	|	d¡r<tj |d¡}tj |¡st |¡ t
 || d?d@dAdtj |d>¡g | ¡ | d=t |d>¡f¡ n	| rEtdBƒ d}| sQ|sQtdCƒ d}|ritdDƒ |D ]\}}t|dE | ¡ ƒ qZ|S )FNr   z.lcovrcz--config-filez-ez>=4.2z-rz	gcovr.cfgz--gcov-executablez gcovÚxmlz>=3.3z-xz-ozcoverage.xmlZXmlz3gcovr >= 3.3 needed to generate Xml coverage reporté   Ú	sonarqubeú--sonarqubezsonarqube.xmlZ	Sonarqubez3gcovr >= 4.2 needed to generate Xml coverage reportÚtextzcoverage.txtÚTextz4gcovr >= 3.3 needed to generate text coverage reportÚhtmlZcoveragereportzcoverage.infoz.initialz.runz.rawzllvm-cov.batÚwzutf-8)Úencodingz@"z	" gcov %*zllvm-cov.shz#!/usr/bin/env sh
exec "z	" gcov $@z--gcov-toolz--directoryz	--capturez	--initialz--output-filez--no-checksumz--rczlcov_branch_coverage=1z-az	--extractÚ*z--removez--prefixz--output-directoryz--titlezCode coveragez--legendz--show-detailsz--branch-coverageZHtmlz
index.htmlú--htmlz--html-detailsz--print-summaryzDlcov/genhtml or gcovr >= 3.3 needed to generate Html coverage reportz;Need gcovr or lcov/genhtml to generate any coverage reportsÚ z  coverage report can be found at)r   Zfind_coverage_toolsÚosÚpathÚjoinÚexistsÚreÚescaper   Zversion_compareÚ
subprocessÚ
check_callÚappendÚpathlibÚPathÚprintZ
is_windowsÚopenÚwriteÚchmodÚstatÚst_modeÚS_IEXECÚisdirÚmkdirÚas_uri)r   r   r	   r
   r   r   ÚoutfilesÚexitcodeZ	gcovr_exeZgcovr_versionZlcov_exeZgenhtml_exeZllvm_cov_exeZlcovrcZlcov_configZgcovr_configZgcovr_base_cmdZgcov_exe_argsZ
htmloutdirZcovinfoZinitial_tracefileZrun_tracefileZraw_tracefileZllvm_cov_shim_pathZllvm_cov_batZllvm_cov_shZgcov_tool_argsZfiletyper   © r3   úzhome/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/scripts/coverage.pyÚcoverage   s:  
€

ÿÿý
ÿÿý
ÿþ
ÿ€ÿ
ûúùûúù	üüüüüüø	

ýÿûr5   Úargsc                 C  sÔ   t j d¡stdƒ dS tjdd}|jdddd	d
d |jdddddd |jdddddd |jdddddd |jdddd | d¡ | d¡ | d¡ | d¡ | | ¡}t|j	|j
|j|j|j|jƒS )Nzbuild.ninjaz5Coverage currently only works with the Ninja backend.r   zGenerate coverage reports)Údescriptionz--textr   Zappend_constr   zgenerate Text report)ÚdestÚactionÚconstÚhelpz--xmlr   zgenerate Xml reportr   r   zgenerate Sonarqube Xml reportr   r   zgenerate Html reportz--use_llvm_covÚ
store_truezuse llvm-cov)r9   r;   r   r	   r
   r   )r   r   Úisfiler'   ÚargparseÚArgumentParserÚadd_argumentÚ
parse_argsr5   r   r   r	   r
   r   r   )r6   ÚparserÚoptionsr3   r3   r4   Úrun±   s8   
ÿ
ÿ
ÿ
ÿÿ





þrD   Ú__main__r   )r   r   r   r   r	   r   r
   r   r   r   r   r   r   r   )r6   r   r   r   )Ú
__future__r   Z
mesonbuildr   r   r>   r    Úsysr   r"   r%   r+   ÚtypingÚTr5   rD   Ú__name__ÚexitÚargvr3   r3   r3   r4   Ú<module>   s   8
 
ÿ