§
    Ö)ögJ
  ã            
       óL  — d 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mZm	Z	 de	j	        _
         ej        dd¦  «         ej        d¦  «        d„ ¦   «         ¦   «         Zd	„ Zd
D ]AZee	j        vrŒe	j        e         Zd„ Z eed eedd¦  «        ¦  «          eede¦  «         ŒBdS )a  
Writes the c and cpp compile commands into build/compile_commands.json
see http://clang.llvm.org/docs/JSONCompilationDatabase.html

Usage:

    def configure(conf):
        conf.load('compiler_cxx')
        ...
        conf.load('clang_compilation_database')
é    N)ÚLogsÚTaskGenÚTaskTÚcÚcxxÚprocess_usec                 óT  — 	 | j         j        }n=# t          $ r0 g x}| j         _        | j                              t          ¦  «         Y nw xY wt          d„ d„ dD ¦   «         D ¦   «         ¦  «        }t          | dg ¦  «        D ]'}t          ||¦  «        r|                     |¦  «         Œ(dS )z3Add a compilation database entry for compiled tasksc              3   ó   K  — | ]}|¯|V — Œ	d S ©N© )Ú.0Úys     úB/git_repos/midimsg-lv2/waflib/extras/clang_compilation_database.pyú	<genexpr>z/collect_compilation_db_tasks.<locals>.<genexpr>    s'   è è € ÐIÐI�1ÀqÐIˆQÐIÐIÐIÐIÐIÐIó    c                 óL   — g | ]!}t           j                             |¦  «        ‘Œ"S r   )r   ÚclassesÚget©r   Úxs     r   ú
<listcomp>z0collect_compilation_db_tasks.<locals>.<listcomp>    s(   € ÐCÐCÐC°�œ×)Ò)¨!Ñ,Ô,ÐCÐCÐCr   ©r   r   Úcompiled_tasksN)	ÚbldÚ clang_compilation_database_tasksÚAttributeErrorÚadd_post_funÚwrite_compilation_databaseÚtupleÚgetattrÚ
isinstanceÚappend)ÚselfÚclang_dbÚtupÚtasks       r   Úcollect_compilation_db_tasksr'      sÒ   € ð4ØŒXÔ6€(€(øÝð 4ð 4ð 4Ø9;Ð;€(ˆTŒXÔ6Ø„(×ÒÕ2Ñ3Ô3Ð3Ð3Ð3ð4øøøõ ÐIÐIÐCÐC°lÐCÑCÔCÐIÑIÔIÑIÔI€Ý�TÐ+¨RÑ0Ô0ð ð €TÝ��cÑÔð Ø‡?‚?�4ÑÔÐøðð s   ‚ �7A	ÁA	c                 óÄ  — | j                              d¦  «        }t          j        d|                     | j        ¦  «        ¦  «         	 t          j        |¦  «        }n# t          $ r g }Y nw xY wt          d„ |D ¦   «         ¦  «        }t          | dg ¦  «        D ]{}	 |j        }n# t          $ r Y Œw xY wt          |d| j        ¦  «        }|j        d         }t          j                             |                     ¦   «         |¦  «        }|||dœ}	|	||<   Œ|t%          |                     ¦   «         ¦  «        }|                     t          j        |d¬	¦  «        ¦  «         d
S )z,Write the clang compilation database as JSONzcompile_commands.jsonz#Build commands will be stored in %sc              3   ó*   K  — | ]}|d          |fV — ŒdS )ÚfileNr   r   s     r   r   z-write_compilation_database.<locals>.<genexpr>-   s*   è è € Ð.Ð. A�!�F”)˜Q�Ð.Ð.Ð.Ð.Ð.Ð.r   r   Úcwdr   )Ú	directoryÚ	argumentsr*   é   )ÚindentN)ÚbldnodeÚ	make_noder   ÚinfoÚ	path_fromÚpathÚjsonÚloadÚIOErrorÚdictr    Úlast_cmdr   Úvariant_dirÚinputsÚosÚrelpathÚabspathÚlistÚvaluesÚwriteÚdumps)
ÚctxÚdatabase_fileÚrootr$   r&   Úcmdr,   Úf_nodeÚfilenameÚentrys
             r   r   r   %   s|  € à”×&Ò&Ð'>Ñ?Ô?€Ý„Ð0°-×2IÒ2IÈ#Ì(Ñ2SÔ2SÑTÔTÐTðÝ	Œ�=Ñ	!Ô	!€$€$øÝð ð ð Ø	€$€$€$ðøøøåÐ.Ð.¨Ð.Ñ.Ô.Ñ.Ô.€Ý�SÐ<¸bÑAÔAð ð €TðØ	Œ€3€3øÝ	ð ð ð Ø€8ðøøøå�d˜E 3¤?Ñ3Ô3€)ØŒ;�qŒ>€&ÝŒW�_Š_˜VŸ^š^Ñ-Ô-¨yÑ9Ô9€(àØØðð €%ð
 €(ˆ8ÑÐÝˆX�_Š_ÑÔÑÔ€Ø×Ò•T”Z ¨QÐ/Ñ/Ô/Ñ0Ô0Ð0Ð0Ð0s$   Á	A ÁA-Á,A-ÂB%Â%
B2Â1B2r   c           	      ó  — d„ }|                       ¦   «         }|t          j        k    ret          | dt	          | dd ¦  «        ¦  «         t          | d|¦  «         |                      ¦   «          t          | dt	          | dd ¦  «        ¦  «         |S )Nc                 ó   — d S r   r   )rF   Úkws     r   Úexec_commandz%runnable_status.<locals>.exec_commandI   s   € Ø€4r   Úold_exec_commandrM   )Úold_runnable_statusr   ÚSKIP_MEÚsetattrr    Úrun)r#   rM   Ú
run_statuss      r   Úrunnable_statusrT   H   s”   € ðð ð ð ×'Ò'Ñ)Ô)€*Ø•4”<ÒÐÝ
ˆ4Ð#¥W¨T°>À4Ñ%HÔ%HÑIÔIÐIÝ
ˆ4� Ñ.Ô.Ð.Ø‡8‚8�:„:€:Ý
ˆ4�¥¨Ð/AÀ4Ñ!HÔ!HÑIÔIÐIØ	Ðr   rO   rT   )Ú__doc__Úsysr<   r5   ÚshlexÚpipesÚwaflibr   r   r   Úkeep_last_cmdÚfeatureÚafter_methodr'   r   r   r   ÚtrT   rQ   r    r   r   r   ú<module>r^      sG  ðð

ð 
ð #Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à€„	Ô à€„��eÑÔØ€Ô�mÑ$Ô$ðð ñ %Ô$ñ Ôðð1ð 1ð 1ð: 
ð 0ð 0€AØˆTŒ\ÐÐØ
à	„\�!„_€ð
ð 
ð 
ð 	€ˆÐ! 7 7¨1Ð.?ÀÑ#FÔ#FÑGÔGÐGØ€ˆÐ˜Ñ/Ô/Ð/Ð/ð'0ð 0r   