§
    ™æVcƒ'  ã                  óî   — d dl mZ d dlmZ ddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ d d	lZd d	lZd d
lmZ d dlmZ ej        rddlmZ ddlmZ ddlmZ ddlmZ  G d„ de¦  «        Z G d„ d¦  «        Zd	S )é    )Úannotations)ÚPathé   )ÚCMakeTraceParseré   )ÚCMakeSkipCompilerTest)Úlanguage_mapÚcmake_get_generator_args)ÚmlogN)ÚEnum)Údedent)ÚCMakeExecutor)ÚEnvironment)ÚCompiler)ÚMachineChoicec                  ó   — e Zd ZdZdZdS )ÚCMakeExecScopeÚ
subprojectÚ
dependencyN)Ú__name__Ú
__module__Ú__qualname__Ú
SUBPROJECTÚ
DEPENDENCY© ó    ú</usr/lib/python3/dist-packages/mesonbuild/cmake/toolchain.pyr   r   !   s   € € € € € Ø€JØ€J€J€Jr   r   c                  óx   — e Zd Zd!d"d„Zd#d„Zd$d„Zed%d„¦   «         Zd&d„Zd&d„Z	d'd„Z
ed(d„¦   «         Zd)d „ZdS )*ÚCMakeToolchainNÚcmakebinú'CMakeExecutor'Úenvú'Environment'Úfor_machiner   Ú
exec_scoper   Ú	build_dirr   Úpreload_fileúT.Optional[Path]ÚreturnÚNonec                ó¨  — || _         || _        || _        || _        || _        || _        | j                             ¦   «         | _        |dz  | _        |dz  | _        | j         j	        | j                 | _
        | j         j        | j                 | _        | j         j        j        | j                 | _        | j         j        | j                 | _        | j         j        j        | j                 | _        |                      ¦   «         | _        | j                             | j                             ¦   «         ¦  «         | j                             ¦   «         }|t,          j        k    | _        |t,          j        k    r| j        t4          j        k    rd| _        | j                             ¦   «         sd| _        | j                             ¦   «         sJ ‚d S )NzCMakeMesonToolchainFile.cmakezCMakeCache.txtTF)r"   r    r$   r%   r'   r&   ÚresolveÚtoolchain_fileÚcmcache_fileÚmachinesÚminfoÚ
propertiesÚcoredataÚ	compilersÚ	cmakevarsÚcmake_cacheÚ
cmakestateÚget_defaultsÚ	variablesÚupdateÚget_variablesÚget_cmake_skip_compiler_testr   ÚALWAYSÚ
skip_checkÚDEP_ONLYr   r   Úget_cmake_defaultsÚis_absolute)Úselfr    r"   r$   r%   r&   r'   Úskip_statuss           r   Ú__init__zCMakeToolchain.__init__&   s‰  € ØˆŒØ ˆŒØ&ˆÔØ$ˆŒØ(ˆÔØ"ˆŒØœ×/Ò/Ñ1Ô1ˆŒØ'Ð*IÑIˆÔØ%Ð(8Ñ8ˆÔØ”XÔ& tÔ'7Ô8ˆŒ
Øœ(Ô-¨dÔ.>Ô?ˆŒØœÔ*Ô4°TÔ5EÔFˆŒØœÔ+¨DÔ,<Ô=ˆŒØœ(Ô+Ô7¸Ô8HÔIˆŒà×*Ò*Ñ,Ô,ˆŒØŒ×Ò˜dœn×:Ò:Ñ<Ô<Ñ=Ô=Ð=ð ”o×BÒBÑDÔDˆØ%Õ)>Ô)EÒEˆŒØÕ/Ô8Ò8Ð8¸T¼_ÕP^ÔPiÒ=iÐ=iØ"ˆDŒOØŒ×1Ò1Ñ3Ô3ð 	$Ø#ˆDŒOàÔ"×.Ò.Ñ0Ô0Ð0Ð0Ð0Ð0Ð0r   c                óš  — | j         j                             ¦   «         s | j         j                             d¬¦  «         | j                              |                      ¦   «         d¬¦  «         | j                             |                      ¦   «         d¬¦  «         t          j	        | j          
                    ¦   «         ¦  «         | j         S )NT)Úparentsúutf-8©Úencoding)r-   ÚparentÚexistsÚmkdirÚ
write_textÚgenerater.   Úgenerate_cacher   Úcmd_ci_includeÚas_posix)rA   s    r   ÚwritezCMakeToolchain.writeC   s®   € ØÔ"Ô)×0Ò0Ñ2Ô2ð 	;ØÔÔ&×,Ò,°TÐ,Ñ:Ô:Ð:ØÔ×&Ò& t§}¢}¡¤ÀÐ&ÑIÔIÐIØÔ×$Ò$ T×%8Ò%8Ñ%:Ô%:ÀWÐ$ÑMÔMÐMÝÔ˜DÔ/×8Ò8Ñ:Ô:Ñ;Ô;Ð;ØÔ"Ð"r   úT.List[str]c                óŽ   — d| j                              ¦   «         z   g}| j        � |d| j                             ¦   «         z   gz  }|S )Nú-DCMAKE_TOOLCHAIN_FILE=z-DMESON_PRELOAD_FILE=)r-   rP   r'   )rA   Úargss     r   Úget_cmake_argszCMakeToolchain.get_cmake_argsK   sN   € Ø)¨DÔ,?×,HÒ,HÑ,JÔ,JÑJÐKˆØÔÐ(ØÐ,¨tÔ/@×/IÒ/IÑ/KÔ/KÑKÐLÑLˆDØˆr   ÚvarsúT.Dict[str, T.List[str]]Ústrc                ót   — d}|                       ¦   «         D ] \  }}|d|z   z  }|D ]}|d|› d�z  }Œ|dz  }Œ!|S )NÚ zset(z "ú"z)
)Úitems)rW   ÚresÚkeyÚvalueÚis        r   Ú_print_varszCMakeToolchain._print_varsQ   sc   € àˆØŸ*š*™,œ,ð 	ð 	‰JˆC�Ø�6˜C‘<ÑˆCØð !ð !�Ø�y˜A�y�y�yÑ ��Ø�5‰LˆCˆCØˆ
r   c                ó,  — t          d¦  «        }| j                             ¦   «         D ]\  }}d„ |D ¦   «         | j        |<   Œ| j        rQ|                      ¦   «          |dz  }| j        D ]+\  }}|d|› d�z  }||                      |¦  «        z  }|dz  }Œ,|dz  }|dz  }||                      | j        ¦  «        z  }|dz  }| j                             ¦   «         }|�7|t          d 	                    | 
                    ¦   «         ¦  «        ¦  «        z  }|S )Naì              ######################################
            ###  AUTOMATICALLY GENERATED FILE  ###
            ######################################

            # This file was generated from the configuration in the
            # relevant meson machine file. See the meson documentation
            # https://mesonbuild.com/Machine-files.html for more information

            if(DEFINED MESON_PRELOAD_FILE)
                include("${MESON_PRELOAD_FILE}")
            endif()

        c                ó:   — g | ]}|                      d d¦  «        ‘ŒS )ú\ú/)Úreplace©Ú.0Úxs     r   ú
<listcomp>z+CMakeToolchain.generate.<locals>.<listcomp>m   s&   € Ð"GÐ"GÐ"G¸A 1§9¢9¨T°3Ñ#7Ô#7Ð"GÐ"GÐ"Gr   z!# CMake compiler state variables
z# -- Variables for language ú
z# Variables from meson
zr
                # Load the CMake toolchain file specified by the user
                include("{}")

            )r   r8   r]   r=   Úupdate_cmake_compiler_stater6   rb   r1   Úget_cmake_toolchain_fileÚformatrP   )rA   r^   r_   r`   ÚlangrW   Ú	user_files          r   rM   zCMakeToolchain.generate[   s`  € Ýð ñ ô ˆð  œ.×.Ò.Ñ0Ô0ð 	Hð 	H‰JˆC�Ø"GÐ"GÀÐ"GÑ"GÔ"GˆDŒN˜3ÑÐð Œ?ð 	Ø×,Ò,Ñ.Ô.Ð.ØÐ7Ñ7ˆCØ"œoð ð ‘
��dØÐ>°dÐ>Ð>Ð>Ñ>�Ø�t×'Ò'¨Ñ-Ô-Ñ-�Ø�t‘��Ø�4‰KˆCð 	Ð)Ñ)ˆØˆt×Ò ¤Ñ/Ô/Ñ/ˆØˆt‰ˆð ”O×<Ò<Ñ>Ô>ˆ	ØÐ Ø•6ð ÷ ’�y×)Ò)Ñ+Ô+Ñ,Ô,ñ	.ô .ñ .ˆCð ˆ
r   c           	     óº   — | j         sdS d}| j        j                             ¦   «         D ]0\  }}||› d|j        › dd                     |j        ¦  «        › d�z  }Œ1|S )Nr[   ú:ú=ú;rl   )r=   r6   r5   r]   ÚtypeÚjoinr`   )rA   r^   ÚnameÚvs       r   rN   zCMakeToolchain.generate_cache‰   st   € ØŒð 	Ø�2àˆØ”Ô2×8Ò8Ñ:Ô:ð 	<ð 	<‰GˆD�!Ø�dÐ;Ð;˜QœVÐ;Ð; c§h¢h¨q¬wÑ&7Ô&7Ð;Ð;Ð;Ñ;ˆCˆCØˆ
r   c                ó–  — i }| j                              ¦   «         s|S ddddddœ}| j                             | j        ¬¦  «        r>|                     | j        j        | j        j        ¦  «        g|d<   | j        j        g|d	<   | j        j	        rd
ndg|d<   | j          
                    ¦   «         }|r|g|d<   dd„}| j                             ¦   «         D ]ò\  }}d                     t          j        ||                     ¦   «         ¦  «        ¦  «        }|                     ¦   «         }|sŒVt#          |¦  «        dk    r>|                      ||d         ¦  «        s" ||d         ¦  «        g||dz   <   |dd …         } ||d         ¦  «        |d<   |||dz   <   |                     ¦   «         dk    r|                     ¦   «         |d<   Œó|S )NÚAndroidÚLinuxÚWindowsÚFreeBSDÚDarwin)ÚandroidÚlinuxÚwindowsÚfreebsdÚdarwin)Úwhen_building_forÚCMAKE_SYSTEM_NAMEÚCMAKE_SYSTEM_PROCESSORÚ8Ú4ÚCMAKE_SIZEOF_VOID_PÚCMAKE_SYSROOTÚexerY   r)   c                ó|   — t          | ¦  «                             ¦   «         r| S t          j        | ¦  «        }|€| S |S ©N)r   r@   ÚshutilÚwhich)rŒ   Úps     r   Úmake_absz-CMakeToolchain.get_defaults.<locals>.make_abs°   s?   € Ý�C‰yŒy×$Ò$Ñ&Ô&ð Ø�
å”˜SÑ!Ô!ˆAØˆyØ�
ØˆHr   z	CMAKE_{}_r   r   r   ÚCOMPILER_LAUNCHERÚCOMPILERzclang-clÚCMAKE_LINKER)rŒ   rY   r)   rY   )r1   r?   r"   Úis_cross_buildr$   Úgetr0   ÚsystemÚ
cpu_familyÚ	is_64_bitÚget_sys_rootr3   r]   ro   r	   ÚupperÚget_exelistÚlenÚis_cmdline_optionÚget_idÚget_linker_exelist)	rA   ÚdefaultsÚ
SYSTEM_MAPÚsys_rootr’   rp   Úcomp_objÚprefixÚexe_lists	            r   r7   zCMakeToolchain.get_defaults’   s  € Øˆð Œ×1Ò1Ñ3Ô3ð 	ØˆOð !ØØ Ø Øð
ð 
ˆ
ð Œ8×"Ò"°TÔ5EÐ"ÑFÔFð 	IØ-7¯^ª^¸D¼JÔ<MÈtÌzÔO`Ñ-aÔ-aÐ,bˆHÐ(Ñ)Ø26´*Ô2GÐ1HˆHÐ-Ñ.à26´*Ô2FÐ+O¨3¨3ÈCÐ*PˆÐ&Ñ'à”?×/Ò/Ñ1Ô1ˆØð 	3Ø)1¨
ˆH�_Ñ%ð	ð 	ð 	ð 	ð #œn×2Ò2Ñ4Ô4ð 	Ið 	I‰NˆD�(Ø ×'Ò'­Ô(8¸¸t¿zºz¹|¼|Ñ(LÔ(LÑMÔMˆFà×+Ò+Ñ-Ô-ˆHØð Øå�8‰}Œ} Ò!Ð!¨$×*@Ò*@ÀÈ8ÐTUÌ;Ñ*WÔ*WÐ!Ø:B¸(À8ÈAÄ;Ñ:OÔ:OÐ9P�˜Ð"5Ñ5Ñ6Ø# A B Bœ<�à"˜( 8¨A¤;Ñ/Ô/ˆH�Q‰KØ,4ˆH�V˜jÑ(Ñ)Ø�ŠÑ Ô  JÒ.Ð.Ø+3×+FÒ+FÑ+HÔ+H�˜Ñ(øàˆr   Úcompilerú
'Compiler'ÚargÚboolc                ó†   — |                       ¦   «         dk    r|                     d¦  «        S |                     d¦  «        S )NÚmsvcrf   ú-)Úget_argument_syntaxÚ
startswith)r¨   rª   s     r   rŸ   z CMakeToolchain.is_cmdline_optionÌ   s=   € à×'Ò'Ñ)Ô)¨VÒ3Ð3Ø—>’> #Ñ&Ô&Ð&à—>’> #Ñ&Ô&Ð&r   c                ó–  — | j         j                             | j                             ¦   «         ¦  «        rd S t          j        d¦  «         t          | j                             ¦   «         ¦  «        }d„ |D ¦   «         }t          dd 	                    |¦  «        › d�¦  «        }t          | j        j        ¦  «        dz  }|                     dd¬¦  «         |d	z  }|                     |d
¬¦  «         |dz  }|                     t                               | j        ¦  «        d
¬¦  «         t%          | j                             ¦   «         || j        ¦  «        }| j                             d|                     ¦   «         ¬¦  «         g }||                     ¦   «         z  }|t1          | j        ¦  «        z  }|d|                     ¦   «         › �dgz  }| j                             ||d¬¦  «        \  }	}
}|	dk    rt          j        d¦  «         d S |                     |¦  «         i |j        ¥| j         _        d„ |j                              ¦   «         D ¦   «         }|D ]j}tC          j"        || #                    ¦   «         ¦  «        }d|› d�}| $                    |i ¦  «        }dg|d|› d�<   | j          %                    ||¦  «         Œkd S )NzBCMake Toolchain: Calling CMake once to generate the compiler statec                ó\   — g | ])}t          j        ||                     ¦   «         ¦  «        ‘Œ*S r   )r	   r—   rœ   rh   s     r   rk   z>CMakeToolchain.update_cmake_compiler_state.<locals>.<listcomp>Û   s-   € ÐFÐFÐF°q•LÔ$ Q¨¯ª©	¬	Ñ2Ô2ÐFÐFÐFr   zN
            cmake_minimum_required(VERSION 3.7)
            project(CompInfo ú z
)
        Ú__CMake_compiler_info__T)rE   Úexist_okzCMakeLists.txtrF   rG   z!CMakeMesonTempToolchainFile.cmakeF)Úprint_cmoutÚalways_capture_stderrrT   ú.)r&   Údisable_cacher   z:CMake Toolchain: Failed to determine CMake compilers statec                ó$   — i | ]\  }}|j         |“ŒS r   )rx   )ri   Úkry   s      r   ú
<dictcomp>z>CMakeToolchain.update_cmake_compiler_state.<locals>.<dictcomp>û   s    € ÐKÐKÐK¡f q¨!˜œ ÐKÐKÐKr   ÚCMakezCompiler.cmakeÚ1ÚCMAKE_Ú_COMPILER_FORCED)&r6   Ú	languagesÚ
issupersetr3   Úkeysr   ÚdebugÚlistr   rw   r   r"   Úscratch_dirrK   rL   r   rb   r8   r   r    ÚversionÚset_exec_modeÚrequires_stderrÚ
trace_argsr
   rP   ÚcallÚwarningÚparseÚcacher5   Úvars_by_filer]   r	   r—   rœ   Ú
setdefaultr9   )rA   rÁ   Úlang_idsÚcmake_contentr&   Ú
cmake_fileÚtemp_toolchain_fileÚtraceÚ
cmake_argsÚrcÚ_Ú	raw_tracerÏ   rp   Ú
lang_cmakeÚ	file_namerW   s                    r   rm   z*CMakeToolchain.update_cmake_compiler_stateÓ   sã  € àŒ?Ô$×/Ò/°´×0CÒ0CÑ0EÔ0EÑFÔFð 	ØˆFõ 	Œ
ÐWÑXÔXÐXÝ˜œ×,Ò,Ñ.Ô.Ñ/Ô/ˆ	ØFÐF¸IÐFÑFÔFˆÝð  à!Ÿhšh xÑ0Ô0ð ð  ð  ñ ô ˆõ
 ˜œÔ-Ñ.Ô.Ð1JÑJˆ	Ø�Š ¨tˆÑ4Ô4Ð4ØÐ!1Ñ1ˆ
Ø×Ò˜m°gÐÑ>Ô>Ð>ð (Ð*MÑMÐØ×&Ò&¥~×'AÒ'AÀ$Ä.Ñ'QÔ'QÐ\cÐ&ÑdÔdÐdõ ! ¤×!6Ò!6Ñ!8Ô!8¸)ÀTÄXÑNÔNˆØŒ×#Ò#°ÈU×MbÒMbÑMdÔMdÐ#ÑeÔeÐeØˆ
Ø�e×&Ò&Ñ(Ô(Ñ(ˆ
ØÕ.¨t¬xÑ8Ô8Ñ8ˆ
ØÐQÐ1D×1MÒ1MÑ1OÔ1OÐQÐQÐSVÐWÑWˆ
Øœ=×-Ò-¨jÀIÐ]aÐ-ÑbÔbÑˆˆAˆyà�Š7ˆ7ÝŒLÐUÑVÔVÐVØˆFð 	�Š�IÑÔÐØ&5¨¬ oˆŒÔ#àKÐK°Ô0B×0HÒ0HÑ0JÔ0JÐKÑKÔKˆàð 	/ð 	/ˆDÝ%Ô)¨$°·
²
±´Ñ=Ô=ˆJØ: 
Ð:Ð:Ð:ˆIØ×*Ò*¨9°bÑ9Ô9ˆDØ;>¸%ˆDÐ6˜*Ð6Ð6Ð6Ñ7ØŒO×"Ò" 4¨Ñ.Ô.Ð.Ð.ð	/ð 	/r   rŽ   )r    r!   r"   r#   r$   r   r%   r   r&   r   r'   r(   r)   r*   )r)   r   )r)   rR   )rW   rX   r)   rY   )r)   rY   )r)   rX   )r¨   r©   rª   rY   r)   r«   )r)   r*   )r   r   r   rC   rQ   rV   Ústaticmethodrb   rM   rN   r7   rŸ   rm   r   r   r   r   r   %   sç   € € € € € ð1ð 1ð 1ð 1ð 1ð:#ð #ð #ð #ðð ð ð ð ðð ð ñ „\ðð,ð ,ð ,ð ,ð\ð ð ð ð8ð 8ð 8ð 8ðt ð'ð 'ð 'ñ „\ð'ð//ð //ð //ð //ð //ð //r   r   )Ú
__future__r   Úpathlibr   Útraceparserr   Ú	envconfigr   Úcommonr	   r
   r[   r   r�   ÚtypingÚTÚenumr   Útextwrapr   ÚTYPE_CHECKINGÚexecutorr   Úenvironmentr   r3   r   Úmesonlibr   r   r   r   r   r   ú<module>rê      sj  ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø -Ð -Ð -Ð -Ð -Ð -Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à„?ð )Ø'Ð'Ð'Ð'Ð'Ð'Ø)Ð)Ð)Ð)Ð)Ð)Ø$Ð$Ð$Ð$Ð$Ð$Ø(Ð(Ð(Ð(Ð(Ð(ðð ð ð ð �Tñ ô ð ð]/ð ]/ð ]/ð ]/ð ]/ñ ]/ô ]/ð ]/ð ]/ð ]/r   