§
    öÜÚc»£  ã                  óF  — d dl m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m
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mZ ej        r8dd	lmZ dd
lmZ ddl	mZmZ 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& ddl'm(Z(  G d„ dej)        ¦  «        Z* G d„ de¦  «        Z+dS )é    )ÚannotationsNé   )Úcoredata)Úmlog)ÚEnvironmentExceptionÚ
Popen_safeÚOptionOverrideProxyÚ
is_windowsÚLibTypeÚ	OptionKeyÚversion_compareé   )ÚCompilerÚcuda_buildtype_argsÚcuda_optimization_argsÚcuda_debug_args)ÚCompileCheckMode)ÚBuildTarget)ÚMutableKeyedOptionDictTypeÚKeyedOptionDictType)Ú
Dependency)ÚEnvironment)ÚMachineInfo)ÚDynamicLinker)ÚMachineChoice)ÚExternalProgramc                  ó   — e Zd ZdZdZdS )Ú_PhaseÚcompilerÚlinkerN)Ú__name__Ú
__module__Ú__qualname__ÚCOMPILERÚLINKER© ó    ú;/usr/lib/python3/dist-packages/mesonbuild/compilers/cuda.pyr   r   *   s   € € € € € à€HØ€F€F€Fr'   r   c                  ó�  ‡ — e Zd ZdZdZh d£Zi dd“dd“dd	“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d%“i d&d'“d(d)“d*d+“d,d-“d.d/“d0d1“d2d3“d4d5“d6d7“d8d9“d:d;“d<d=“d>d?“d@dA“dBdC“dDdE“dFdG“¥i dHdI“dJdK“dLdM“dNdO“dPdQ“dRdS“dTdU“dVdW“dXdY“dZd[“d\d]“d^d_“d`da“dbdc“ddde“dfdg“dhdi“¥djdkdlœ¥Zdm„ e                     ¦   «         D ¦   «         ZdnZ		 	 dìdíˆ fdƒ„Z
edîdïdˆ„¦   «         ZedðdŠ„¦   «         Zej        fdñd�„ZdòdŽ„Zdód‘„Zdôd•„Zdodod–œdõdŸ„Zd Zd¡Zd¢Zdöˆ fd¤„Zd÷d§„Zdød¨„Zdød©„Zdùd¯„Zdúd°„Zdúd±„Zdûd³„Zdüdµ„Z düd¶„Z!dýd¸„Z"dúd¹„Z#dþd»„Z$dÿd½„Z%�d dÀ„Z&�d�ddÄ„Z'�ddÆ„Z(�ddÇ„Z)dÿdÈ„Z*�ddÐ„Z+�ddÒ„Z,dúdÓ„Z-�ddÕ„Z.�dd×„Z/dúdØ„Z0e1j2        f�d	dÞ„Z3�d
dà„Z4�d
dá„Z5�dˆ fdã„Z6�dˆ fdæ„Z7�dˆ fdç„Z8dødè„Z9dúdé„Z:dúdê„Z;dúdë„Z<ˆ xZ=S (  ÚCudaCompilerz	-Xlinker=Úcuda>w   ú-Eú-Gú-Mú-Vú-gú-hú-vú-MDú-MMú-MPú-dcú-dwú-pgú-MMDú-ewpú-libú-m32ú-m64ú-ptxú--libú--m32ú--m64ú--ptxú-cudaú-dltoú-keepú-noehú--cudaú--helpú--keepú--linkú-cleanú-cubinú-dlinkú--cubinú--debugú-dryrunú-err-noú-fatbinú-noprofú-sharedú--dryrunú--fatbinú--sharedú-arch-lsú-code-lsú-nodlinkú-objtempú	--compileú	--profileú	--verboseú	--versionú	-Wreorderú	-lineinfoú	-restrictú
--Wreorderú
--device-cú
--device-wú
--restrictú
-res-usageú-save-tempsú-src-in-ptxú--preprocessú--save-tempsú--device-linkú-astoolspatchú-nohdinitlistú--device-debugú--clean-targetsú--list-gpu-archú--list-gpu-codeú--no-exceptionsú--source-in-ptxú--use_fast_mathú--dlink-time-optú--no-device-linkú--resource-usageú-extended-lambdaú--extended-lambdaú--no-align-doubleú--disable-warningsú--dont-use-profileú--objdir-as-tempdirú--generate-line-infoú-expt-extended-lambdaú--display-error-numberú--expt-extended-lambdaú-keep-device-functionsú--generate-dependenciesú--keep-device-functionsú-Wdefault-stream-launchú-expt-relaxed-constexprú--Wdefault-stream-launchú--compile-as-tools-patchú--expt-relaxed-constexprú--extensible-whole-programú-Wext-lambda-captures-thisú--Wext-lambda-captures-thisú-Wno-deprecated-gpu-targetsú-allow-unsupported-compilerú-extra-device-vectorizationú--Wno-deprecated-gpu-targetsú--allow-unsupported-compilerú--extra-device-vectorizationú-Wno-deprecated-declarationsú--Wno-deprecated-declarationsú--generate-dependency-targetsú-forward-unknown-to-host-linkerú --forward-unknown-to-host-linkerú!--generate-nonsystem-dependenciesú!--no-host-device-initializer-listú!-forward-unknown-to-host-compilerú"--forward-unknown-to-host-compilerú$--generate-dependencies-with-compileú.--generate-nonsystem-dependencies-with-compileú-cú-wú--runú-use_fast_mathz--output-fileú-oz--pre-includeú-includez	--libraryú-lz--define-macroú-Dz--undefine-macroú-Uz--include-pathú-Iz--system-includeú-isystemz--library-pathú-Lz--output-directoryz-odirz--dependency-outputz-MFz--compiler-bindirz-ccbinz--archiver-binaryz-arbinz--cudartú-cudartz--cudadevrtz
-cudadevrtz--libdevice-directoryz-ldirz--target-directoryz-target-dirz--optimization-infoz	-opt-infoz
--optimizeú-Oz--ftemplate-backtrace-limitz-ftemplate-backtrace-limitz--ftemplate-depthz-ftemplate-depthz--xz-xz--stdú-stdz	--machineú-mz--compiler-optionsú
-Xcompilerz--linker-optionsz-Xlinkerz--archive-optionsz	-Xarchivez--ptxas-optionsz-Xptxasz--nvlink-optionsz-Xnvlinkz	--threadsú-tz
--keep-dirz	-keep-dirz
--run-argsz	-run-argsz--input-drive-prefixz-idpz--dependency-drive-prefixz-ddpz--drive-prefixz-dpz--dependency-target-namez-MTz--default-streamz-default-streamz--gpu-architecturez-archz
--gpu-codez-codez--generate-codez-gencodez--relocatable-device-codez-rdcz	--entriesz-ez--maxrregcountz-maxrregcountz--ftzz-ftzz
--prec-divz	-prec-divz--prec-sqrtz
-prec-sqrtz--fmadz-fmadz--Werrorz-Werrorz--diag-errorz-diag-errorz--diag-suppressz-diag-suppressz--diag-warnz
-diag-warnz--options-filez-optfz-timez-qpp-config)z--timez--qpp-configc                ó   — i | ]\  }}||“Œ	S r&   r&   )Ú.0ÚkÚvs      r(   ú
<dictcomp>zCudaCompiler.<dictcomp>±   s   € Ð TÐ TÐ T©$¨!¨Q  AÐ TÐ TÐ Tr'   ÚnvccNÚccacheúT.List[str]ÚexelistÚversionÚstrÚfor_machiner   Úis_crossÚboolÚexe_wrapperúT.Optional['ExternalProgram']Úhost_compilerr   Úinfoú'MachineInfo'r    úT.Optional['DynamicLinker']Úfull_versionúT.Optional[str]c           
     óä   •‡ — t          ¦   «                              ||||||	|
|¬¦  «         |‰ _        |‰ _        |j        ‰ _        ˆ fd„|j                             ¦   «         D ¦   «         ‰ _        d S )N)r    rÅ   r½   c                óB   •— i | ]\  }}|‰                      |¦  «        “ŒS r&   )Ú_to_host_flags)r²   ÚlevelÚflagsÚselfs      €r(   rµ   z)CudaCompiler.__init__.<locals>.<dictcomp>¾   s-   ø€ ÐpÐpÐpÁÀÀu˜% ×!4Ò!4°UÑ!;Ô!;ÐpÐpÐpr'   )ÚsuperÚ__init__r¿   rÁ   Úbase_optionsÚ	warn_argsÚitems)rÌ   r·   r¹   rº   r¼   r½   r¿   rÁ   rÂ   r    rÅ   Ú	__class__s   `          €r(   rÎ   zCudaCompiler.__init__µ   sˆ   øø€ õ
 	‰Œ×Ò˜ ¨'°;ÀÈVÐbnð  zBÐñ  	Cô  	Cð  	CØ&ˆÔØ*ˆÔØ)Ô6ˆÔØpÐpÐpÐpÐP]ÔPg×PmÒPmÑPoÔPoÐpÑpÔpˆŒˆˆr'   TÚargÚlistmodeÚreturnc                óò  ‡ ‡— d}d}d}d}||z   |z   Št          t          j        dz   ¦  «        }||vs|sŠ||vr,t          |¦  «                             |¦  «        r||z   |z   S |S ˆ fd„|                     |¦  «        D ¦   «         }t          ˆfd„|D ¦   «         dd	…         g ¦  «        }d
                     |¦  «        S d
g}d}	t          |¦  «        }
|
D ]€}||k    r|	s|                     d
¦  «         Œ ||k    r|d	xx         |z  cc<   |	 }	Œ:||k    r0	 |d	xx         t          |
¦  «        z  cc<   Œ_# t          $ r Y  nw xY w|d	xx         |z  cc<   Œ�ˆ fd„|D ¦   «         }d                     |¦  «        S )a  
        Shield an argument against both splitting by NVCC's list-argument
        parse logic, and interpretation by any shell.

        NVCC seems to consider every comma , that is neither escaped by \ nor inside
        a double-quoted string a split-point. Single-quotes do not provide protection
        against splitting; In fact, after splitting they are \-escaped. Unfortunately,
        double-quotes don't protect against shell expansion. What follows is a
        complex dance to accommodate everybody.
        ú'ú"ú,ú\z"$`\c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r&   ©Ú_shield_nvcc_list_arg©r²   ÚsÚclss     €r(   ú
<listcomp>z6CudaCompiler._shield_nvcc_list_arg.<locals>.<listcomp>ß   s'   ø€ ÐIÐIÐI°a�S×.Ò.¨qÑ1Ô1ÐIÐIÐIr'   c                ó   •— g | ]}|‰g‘ŒS r&   r&   )r²   rß   ÚDQSQs     €r(   rá   z6CudaCompiler._shield_nvcc_list_arg.<locals>.<listcomp>à   s   ø€ Ð.Ð.Ð. q˜!˜T˜Ð.Ð.Ð.r'   NéÿÿÿÿÚ Fc                ó>   •— g | ]}‰                      |d ¬¦  «        ‘ŒS )F)rÔ   rÜ   rÞ   s     €r(   rá   z6CudaCompiler._shield_nvcc_list_arg.<locals>.<listcomp>ø   s,   ø€ ÐIÐIÐIÀ!�×*Ò*¨1°uÐ*Ñ=Ô=ÐIÐIÐIr'   z\,)ÚsetÚstringÚ
whitespaceÚintersectionÚsplitÚsumÚjoinÚiterÚappendÚnextÚStopIteration)rà   rÓ   rÔ   ÚSQÚDQÚCMÚBSÚquotableÚlÚinstringÚargitÚcrã   s   `           @r(   rÝ   z"CudaCompiler._shield_nvcc_list_argÀ   sæ  øø€ ð ˆØˆØˆØˆØ�"‰u�R‰xˆÝ•vÔ(¨Ñ0Ñ1Ô1ˆà�Sˆ=ˆ= ˆ=Ø˜ˆ}ˆ}õ �s‘8”8×(Ò(¨Ñ2Ô2ð Ø˜c™6 "™9Ð$à�Jð JÐIÐIÐI¸3¿9º9ÀR¹=¼=ÐIÑIÔI�ÝÐ.Ð.Ð.Ð.¨AÐ.Ñ.Ô.¨s°¨sÔ3°RÑ8Ô8�Ø—w’w˜q‘z”zÐ!ð �ˆAØˆHÝ˜‘I”IˆEØð ð �Ø˜’7�7 8�7Ø—H’H˜R‘L”L�L�LØ˜"’W�WØ�b�E�E”E˜Q‘J�E�E‘EØ#+˜|�H�HØ˜"’W�WðØ˜"˜˜œ¥ e¡¤Ñ,˜˜™˜øÝ(ð ð ð Ø˜˜ðøøøð �b�E�E”E˜Q‘J�E�E‘E�Eð JÐIÐIÐIÀqÐIÑIÔIˆAØ—:’:˜a‘=”=Ð s   ÄD4Ä4
EÅErË   c                ó  ‡‡	— t          |¦  «        dk    r|S t          |¦  «        }g }dd„Š	dd„Šdˆˆ	fd„}dˆfd„}d}|D ]Å} ||¦  «        sd}|                     |¦  «         Œ%|r+|dxx         dz  cc<   |dxx          |||¦  «        z  cc<   ŒR ‰	|¦  «        r7d}|                     |¦  «         |                      |||¦  «        ¦  «         Œ” ‰|¦  «        rd}|                     |¦  «         Œ·t          d¦  «        ‚|S )zÈ
        The flags to NVCC gets exceedingly verbose and unreadable when too many of them
        are shielded with -Xcompiler. Merge consecutive -Xcompiler-wrapped arguments
        into one.
        r   Úflagr»   rÕ   r¾   c                ó   — | dk    S )Nr¯   r&   ©rü   s    r(   Úis_xcompiler_flag_isolatedz=CudaCompiler._merge_flags.<locals>.is_xcompiler_flag_isolated  s   € Ø˜<Ò'Ð'r'   c                ó,   — |                       d¦  «        S )Nú-Xcompiler=)Ú
startswithrþ   s    r(   Úis_xcompiler_flag_gluedz:CudaCompiler._merge_flags.<locals>.is_xcompiler_flag_glued
  s   € Ø—?’? =Ñ1Ô1Ð1r'   c                ó0   •—  ‰| ¦  «        p
 ‰| ¦  «        S ©Nr&   )rü   r  rÿ   s    €€r(   Úis_xcompiler_flagz4CudaCompiler._merge_flags.<locals>.is_xcompiler_flag  s%   ø€ Ø-Ð-¨dÑ3Ô3ÐTÐ7NÐ7NÈtÑ7TÔ7TÐTr'   ÚflagitúT.Iterator[str]c                óŠ   •—  ‰| ¦  «        r| t          d¦  «        d …         S 	 t          |¦  «        S # t          $ r Y dS w xY w)Nr  rå   )Úlenrð   rñ   )rü   r  r  s     €r(   Úget_xcompiler_valz4CudaCompiler._merge_flags.<locals>.get_xcompiler_val  sb   ø€ Ø&Ð& tÑ,Ô,ð Ø�C Ñ.Ô.Ð/Ð/Ô0Ð0ðÝ ™<œ<Ð'øÝ$ð ð ð Ø˜2˜2ðøøøs   ¥4 ´
AÁAFrä   rÙ   Tz6-Xcompiler flag merging failed, unknown argument form!)rü   r»   rÕ   r¾   )rü   r»   r  r  rÕ   r»   )r
  rî   rï   Ú
ValueError)
rà   rË   r  Úxflagsr  r  Úingrouprü   r  rÿ   s
           @@r(   Ú_merge_flagszCudaCompiler._merge_flagsû   sµ  øø€ õ ˆu‰:Œ:˜Š?ˆ?ØˆLÝ�e‘”ˆØˆð	(ð 	(ð 	(ð 	(ð	2ð 	2ð 	2ð 	2ð	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð	ð 	ð 	ð 	ð 	ð 	ð ˆØð 	[ð 	[ˆDØ$Ð$ TÑ*Ô*ð [Ø�Ø—’˜dÑ#Ô#Ð#Ð#Øð [Ø�r�
�
”
˜cÑ!�
�
‘
Ø�r�
�
”
Ð/Ð/°°fÑ=Ô=Ñ=�
�
‘
�
Ø+Ð+¨DÑ1Ô1ð [Ø�Ø—’˜dÑ#Ô#Ð#Ø—’Ð/Ð/°°fÑ=Ô=Ñ>Ô>Ð>Ð>Ø(Ð(¨Ñ.Ô.ð [Ø�Ø—’˜dÑ#Ô#Ð#Ð#å Ð!YÑZÔZÐZØˆr'   Úphaser   c           	     ó
  — g }t          |¦  «        }|D �]à}|| j        v r|                     |¦  «         Œ"|dd…         dvr|                     |¦  «         ŒD|dd…         dk    r-d|v rdnd}|                     d|j        › d	|› |› |› �¦  «         Œt	          |¦  «        d
k    rt|d         dk    rh|d         dv r^|d
d…         dk    r!	 t          |¦  «        }n3# t          $ r Y n'w xY w|d
d…         d	k    r|dd…         }n
|d
d…         }|dd
…         }�nú|| j        v s	|| j        v r#	 t          |¦  «        }�nÖ# t          $ r Y �nÉw xY w| 	                    d	d¦  «        d         | j        v s#| 	                    d	d¦  «        d         | j        v r| 	                    d	d¦  «        \  }}�nd| 
                    d¦  «        r(|dd…                              ¦   «         }|dd…         }�n'|dk    r.|                     d¦  «         |                     d|z   ¦  «         nñ|dk    rX|                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d|z   ¦  «         n“|dk    r.|                     d¦  «         |                     d|z   ¦  «         n_|dk    r.|                     d¦  «         |                     d|z   ¦  «         n+|                     d|                      |¦  «        z   ¦  «         �Œ |€J ‚| j                             ||¦  «        }|dv r¢t	          |¦  «        d
k    r-|                     ||                      |¦  «        z   ¦  «         �Œc|dk    r|| j                             ¦   «         v r�Œ†|                     |¦  «         |                     |                      |¦  «        ¦  «         �ŒÅ|dk    r¬|dk    rY|                     d¦  «         |                     d¦  «         |                     d¦  «         |                     ||z   ¦  «         �Œ*|d v r/|                     d¦  «         |                     ||z   ¦  «         �Œ]|                     ||z   ¦  «         �Œw|d!v r|                     ||z   ¦  «         �Œ•|d"v r|                     |d	z   |z   ¦  «         �Œ¶|                     |¦  «         |                     |¦  «         �Œâ|                      |¦  «        S )#zá
        Translate generic "GCC-speak" plus particular "NVCC-speak" flags to NVCC flags.

        NVCC's "short" flags have broad similarities to the GCC standard, but have
        gratuitous, irritating differences.
        Nr   z-/ú/rÙ   rØ   rå   z-Xú=r   r   ú-ÚIDULlmOxmteé   r©   é   z-ffast-mathr¢   r  z-fno-fast-mathz
-ftz=falsez-prec-div=truez-prec-sqrt=truez-freciprocal-mathz-prec-div=falsez-fno-reciprocal-math>   r¨   rª   r¥   r¤   r©   r¬   Úfastz-O3r¯   >   Úgrß   Úz>   r¦   r§   r®   r°   >   r­   )rî   Ú_FLAG_PASSTHRU_NOARGSrï   Úvaluer
  rð   rñ   Ú_FLAG_LONG2SHORT_WITHARGSÚ_FLAG_SHORT2LONG_WITHARGSrë   r  ÚstriprÝ   ÚgetrÁ   Úget_default_include_dirsr  )rÌ   rË   r  r  r  rü   ÚwrapÚvals           r(   rÉ   zCudaCompiler._to_host_flags,  s�  € ð ˆÝ�e‘”ˆàð d	#ñ d	#ˆDðf �tÔ1Ð1Ð1Ø—’˜dÑ#Ô#Ð#Øð �B�Q�BŒx˜tÐ#Ð#à—’˜dÑ#Ô#Ð#ØØ�b�q�b”˜S’�ð " T˜k˜k�s�s¨r�Ø—’ÐC 5¤;ÐCÐC°ÐC°tÐC¸TÐCÐCÑDÔDÐDØÝ�T‘”˜a’� D¨¤G¨s¢N N°t¸A´wÀ-Ð7OÐ7Oð ˜˜!˜”9 ’?�?ðÝ" 6™lœl˜˜øÝ(ð ð ð Ø˜ðøøøà˜!˜A˜#”Y #Ò%Ð%Ø˜q˜r˜rœ(�C�Cà˜q˜r˜rœ(�CØ˜B˜Q˜B”x�‘Ø˜Ô7Ð7Ð7Ø˜DÔ:Ð:Ð:ðÝ˜v™,œ,�C‘CøÝ$ð ð ð Ø‘Dðøøøà—’˜C Ñ#Ô# AÔ&¨$Ô*HÐHÐHØ—J’J˜s AÑ&Ô& qÔ)¨TÔ-KÐKÐKð !ŸJšJ s¨AÑ.Ô.‘	��c‘cà—’ Ñ,Ô,ð Ø˜1˜2˜2”h—n’nÑ&Ô&�Ø˜B˜Q˜B”x�‘ð ˜=Ò(Ð(Ø—M’MÐ"2Ñ3Ô3Ð3Ø—M’M -°Ñ"4Ñ5Ô5Ð5Ð5ØÐ-Ò-Ð-Ø—M’M ,Ñ/Ô/Ð/Ø—M’MÐ"2Ñ3Ô3Ð3Ø—M’MÐ"3Ñ4Ô4Ð4Ø—M’M -°Ñ"4Ñ5Ô5Ð5Ð5ØÐ0Ò0Ð0Ø—M’MÐ"3Ñ4Ô4Ð4Ø—M’M -°Ñ"4Ñ5Ô5Ð5Ð5ØÐ3Ò3Ð3Ø—M’MÐ"2Ñ3Ô3Ð3Ø—M’M -°Ñ"4Ñ5Ô5Ð5Ð5à—M’M -°×0JÒ0JÈ4Ñ0PÔ0PÑ"PÑQÔQÐQáà�?�?�?ð Ô1×5Ò5°d¸DÑAÔAˆDàÐAÐAÐAõ �t‘9”9 ’>�>Ø—M’M $ t×'AÒ'AÀ#Ñ'FÔ'FÑ"FÑGÔGÐGÑGØ˜ZÒ'Ð'¨C°4Ô3E×3^Ò3^Ñ3`Ô3`Ð,`Ð,`ñ à—M’M $Ñ'Ô'Ð'Ø—M’M $×"<Ò"<¸SÑ"AÔ"AÑBÔBÐBÑBØ˜’�à˜&’=�=Ø—M’M %Ñ(Ô(Ð(Ø—M’MÐ"2Ñ3Ô3Ð3Ø—M’M ,Ñ/Ô/Ð/Ø—M’M $ s¡(Ñ+Ô+Ð+Ñ+Ø˜OÐ+Ð+Ø—M’M ,Ñ/Ô/Ð/Ø—M’M $ s¡(Ñ+Ô+Ð+Ñ+à—M’M $ s¡(Ñ+Ô+Ð+Ñ+ØÐ1Ð1Ð1Ø—’˜d 3™hÑ'Ô'Ð'Ñ'Ø˜Ð!Ð!Ø—’˜d 3™h s™lÑ+Ô+Ð+Ñ+à—’˜dÑ#Ô#Ð#Ø—’˜cÑ"Ô"Ð"Ñ"à× Ò  Ñ(Ô(Ð(s$   ÃCÃ
C(Ã'C(Ä-D>Ä>
EÅEc                ó   — dS )NFr&   ©rÌ   s    r(   Úneeds_static_linkerz CudaCompiler.needs_static_linkerß  s   € Øˆur'   Úenvironmentú'Environment'c                ór   — |                       | j                             |¦  «        t          j        ¦  «        S r  )rÉ   rÁ   Úthread_link_flagsr   r%   )rÌ   r'  s     r(   r*  zCudaCompiler.thread_link_flagsâ  s-   € Ø×"Ò" 4Ô#5×#GÒ#GÈÑ#TÔ#TÕV\ÔVcÑdÔdÐdr'   Úwork_dirÚenvÚNonec                ó€  — t          j        d|                      ¦   «         z   dz   d                     | j        ¦  «        ¦  «         t          j        dt          | j        ¦  «        z  ¦  «         d}d}|                     dd¦  «        d	         }|| j        rd
ndz  }t          j	                             ||¦  «        }t          j	                             ||dz   ¦  «        }t          |dd¬¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   d| _        g }	|	ddd|gz  }	|	|                      |j        j        ¦  «        z  }	| j        r| j        €|	|                      ¦   «         z  }	|	|                      |¦  «        z  }	| j        |	z   }
t          j        dd                     |
¦  «        ¦  «         t'          |
|¬¦  «        \  }}}t          j        d¦  «         t          j        |¦  «         t          j        d¦  «         t          j        |¦  «         t          j        d¦  «         |j        d	k    r%t+          d|                      ¦   «         › d�¦  «        ‚| j        r'| j        €d S | j                             ¦   «         |gz   }
n| j        dd|z   dz   gz   }
t          j        dd                     |
¦  «        ¦  «         t'          |
|¬¦  «        \  }}}t          j        d¦  «         t          j        |¦  «         t          j        d¦  «         t          j        |¦  «         t          j        d¦  «         |                     ¦   «          |j        d	k    r-t+          d| j        › d |                      ¦   «         › d!�¦  «        ‚|dk    r	|| _        d S t          j        d"|z   ¦  «         d S )#NzSanity testing z
 compiler:ú zIs cross compiler: %s.zsanitycheckcuda.cua¹  
        #include <cuda_runtime.h>
        #include <stdio.h>

        __global__ void kernel (void) {}

        int main(void){
            struct cudaDeviceProp prop;
            int count, i;
            cudaError_t ret = cudaGetDeviceCount(&count);
            if(ret != cudaSuccess){
                fprintf(stderr, "%d\n", (int)ret);
            }else{
                for(i=0;i<count;i++){
                    if(cudaGetDeviceProperties(&prop, i) == cudaSuccess){
                        fprintf(stdout, "%d.%d\n", prop.major, prop.minor);
                    }
                }
            }
            fflush(stderr);
            fflush(stdout);
            return 0;
        }
        ú.r   r   Ú_crossrå   z.exeÚwzutf-8)Úencodingr    r«   Ústaticz$Sanity check compiler command line: )ÚcwdzSanity check compile stdout: z"-----
Sanity check compile stderr:z-----z	Compiler z can not compile programs.r¡   rØ   zSanity check run command line: zSanity check run stdout: z-----
Sanity check run stderr:zExecutables created by z
 compiler z are not runnable.zcudaGetDeviceCount() returned )r   ÚdebugÚget_display_languagerí   r¹   r»   r½   ÚrsplitÚosÚpathÚopenÚwriteÚdetected_ccÚget_ccbin_argsr   Úoptionsr¿   Úget_compile_only_argsÚget_output_argsr   Ú
returncoder   Úname_stringÚget_commandÚwaitÚlanguage)rÌ   r+  r,  ÚsnameÚcodeÚbinnameÚsource_nameÚbinary_nameÚofilerË   ÚcmdlistÚpcÚstdoÚstdeÚpes                  r(   Úsanity_checkzCudaCompiler.sanity_checkå  s	  € ÝŒ
Ð$ t×'@Ò'@Ñ'BÔ'BÑBÀ\ÑQÐSV×S[ÒS[Ð\`Ô\hÑSiÔSiÑjÔjÐjÝŒ
Ð+­c°$´-Ñ.@Ô.@Ñ@ÑAÔAÐAà$ˆðˆð0 —,’,˜s AÑ&Ô& qÔ)ˆØ˜tœ}Ð4�8�8°"Ñ4ˆÝ”g—l’l 8¨UÑ3Ô3ˆÝ”g—l’l 8¨W°vÑ-=Ñ>Ô>ˆÝ�+˜s¨WÐ5Ñ5Ô5ð 	¸Ø�KŠK˜ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˆÔØˆð 	�$˜	 8¨[Ð9Ñ9ˆð
 	�×$Ò$ S¤\Ô%9Ñ:Ô:Ñ:ˆð Œ=ð 	2˜TÔ-Ð5ð �T×/Ò/Ñ1Ô1Ñ1ˆEØ�×%Ò% kÑ2Ô2Ñ2ˆð ”, Ñ&ˆÝŒ
Ð9¸3¿8º8ÀGÑ;LÔ;LÑMÔMÐMÝ# G°Ð:Ñ:Ô:‰ˆˆD�$ÝŒ
Ð2Ñ3Ô3Ð3ÝŒ
�4ÑÔÐÝŒ
Ð8Ñ9Ô9Ð9ÝŒ
�4ÑÔÐÝŒ
�7ÑÔÐØŒ=˜AÒÐÝ&Ð'a°4×3CÒ3CÑ3EÔ3EÐ'aÐ'aÐ'aÑbÔbÐbð Œ=ð 	HØÔÐ'Ø�àÔ*×6Ò6Ñ8Ô8¸K¸=ÑH��à”l g¨s°[Ñ/@À3Ñ/FÐ%GÑGˆGÝŒ
Ð4°c·h²h¸wÑ6GÔ6GÑHÔHÐHÝ# G°Ð:Ñ:Ô:‰ˆˆD�$ÝŒ
Ð.Ñ/Ô/Ð/ÝŒ
�4ÑÔÐÝŒ
Ð4Ñ5Ô5Ð5ÝŒ
�4ÑÔÐÝŒ
�7ÑÔÐØ
�Š‰	Œ	ˆ	ØŒ=˜AÒÐÝ&ð  (AÀÄð  (Að  (AÐZ^×ZjÒZjÑZlÔZlð  (Að  (Að  (Añ  Bô  Bð  Bð
 �2Š:ˆ:Ø#ˆDÔÐÐåŒJÐ7¸$Ñ>Ñ?Ô?Ð?Ð?Ð?s   Ã2DÄDÄD©Ú
extra_argsÚdependenciesÚhnameÚsymbolÚprefixrT  úGT.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]]rU  ú T.Optional[T.List['Dependency']]úT.Tuple[bool, bool]c               óà   — |€g }|||dœ}d}|                       |                     |¦  «        |||¬¦  «        \  }	}
|	rd|
fS d}|                       |                     |¦  «        |||¬¦  «        S )N)rX  ÚheaderrW  zò{prefix}
        #include <{header}>
        int main(void) {{
            /* If it's not defined as a macro, try to use as a symbol */
            #ifndef {symbol}
                {symbol};
            #endif
            return 0;
        }}rS  Tzw{prefix}
        #include <{header}>
        using {symbol};
        int main(void) {{
            return 0;
        }})ÚcompilesÚ
format_map)rÌ   rV  rW  rX  r,  rT  rU  ÚfargsÚtÚfoundÚcacheds              r(   Úhas_header_symbolzCudaCompiler.has_header_symbolM  s“   € ð ÐØˆJØ!¨U¸fÐEÐEˆðˆð Ÿš a§l¢l°5Ñ&9Ô&9¸3È:Ðdp˜ÑqÔq‰ˆˆvØð 	 Ø˜�<Ððˆð �}Š}˜QŸ\š\¨%Ñ0Ô0°#À*Ð[gˆ}ÑhÔhÐhr'   z>=9.0z>=11.0z>=12.0ú'MutableKeyedOptionDictType'c           	     ó   •— t          ¦   «                              ¦   «         }t          d| j        | j        ¬¦  «        }t          d| j        | j        ¬¦  «        }g d¢}t          | j        | j        ¦  «        r|dgz  }t          | j        | j        ¦  «        r|dgz  }t          | j        | j	        ¦  «        r|dgz  }| 
                    |t          j        d|d	¦  «        |t          j        d
d¦  «        i¦  «         |S )NÚstd©ÚmachineÚlangÚccbindir)Únonezc++03zc++11zc++14zc++17zc++20z&C++ language standard to use with CUDArl  z4CUDA non-default toolchain directory to use (-ccbin)rå   )rÍ   Úget_optionsr   r¼   rF  r   rº   Ú_CPP14_VERSIONÚ_CPP17_VERSIONÚ_CPP20_VERSIONÚupdater   ÚUserComboOptionÚUserStringOption)rÌ   ÚoptsÚstd_keyÚccbindir_keyÚcpp_stdsrÒ   s        €r(   rm  zCudaCompiler.get_optionsn  s  ø€ Ý‰wŒw×"Ò"Ñ$Ô$ˆÝ˜E¨4Ô+;À$Ä-ÐPÑPÔPˆÝ  °TÔ5EÈDÌMÐZÑZÔZˆà-Ð-Ð-ˆÝ˜4œ<¨Ô)<Ñ=Ô=ð 	"Ø˜˜	Ñ!ˆHÝ˜4œ<¨Ô)<Ñ=Ô=ð 	"Ø˜˜	Ñ!ˆHÝ˜4œ<¨Ô)<Ñ=Ô=ð 	"Ø˜˜	Ñ!ˆHà�ŠØ�(Ô2Ð3[Ø3;¸VñEô Eà�(Ô3Ð4jØ46ñ8ô 8ð
ñ 	ô 	ð 	ð ˆr'   r?  ú'KeyedOptionDictType'c                óÜ   ‡— ˆfd„| j                              ¦   «                              ¦   «         D ¦   «         }t          d| j        | j         j        ¬¦  «        }|di}t          ||¦  «        S )zM
        Convert an NVCC Option set to a host compiler's option set.
        c                óD   •— i | ]\  }}|‰                      ||¦  «        “ŒS r&   )r   )r²   ÚkeyÚoptr?  s      €r(   rµ   z:CudaCompiler._to_host_compiler_options.<locals>.<dictcomp>Š  s-   ø€ ÐlÐlÐl±x°s¸C˜˜WŸ[š[¨¨cÑ2Ô2ÐlÐlÐlr'   rg  rh  rl  )rÁ   rm  rÑ   r   r¼   rF  r	   )rÌ   r?  Úhost_optionsru  Ú	overridess    `   r(   Ú_to_host_compiler_optionsz&CudaCompiler._to_host_compiler_optionsƒ  sq   ø€ ð mÐlÐlÐlÀ4ÔCU×CaÒCaÑCcÔCc×CiÒCiÑCkÔCkÐlÑlÔlˆÝ˜E¨4Ô+;À$ÔBTÔB]Ð^Ñ^Ô^ˆØ˜fÐ%ˆ	Ý" 9¨lÑ;Ô;Ð;r'   c                óf  — |                       |¦  «        }t          ¦   «         sLt          d| j        | j        ¬¦  «        }||         }|j        dk    r|                     d|j        z   ¦  «         ||                      | j         	                    |  
                    |¦  «        ¦  «        ¦  «        z   S )Nrg  rh  rl  z--std=)r>  r
   r   r¼   rF  r  rï   rÉ   rÁ   Úget_option_compile_argsr  )rÌ   r?  Úargsr{  rg  s        r(   r�  z$CudaCompiler.get_option_compile_args�  s¥   € Ø×"Ò" 7Ñ+Ô+ˆõ ‰|Œ|ð 	2Ý˜E¨4Ô+;À$Ä-ÐPÑPÔPˆCØ˜#”,ˆCØŒy˜FÒ"Ð"Ø—’˜H s¤yÑ0Ñ1Ô1Ð1à�d×)Ò)¨$Ô*<×*TÒ*TÐUY×UsÒUsÐt{ÑU|ÔU|Ñ*}Ô*}Ñ~Ô~Ñ~Ð~r'   c                óÈ   — |                       |¦  «        }||                      | j                             |                      |¦  «        ¦  «        t
          j        ¦  «        z   S r  )r>  rÉ   rÁ   Úget_option_link_argsr  r   r%   )rÌ   r?  r‚  s      r(   r„  z!CudaCompiler.get_option_link_argsœ  si   € Ø×"Ò" 7Ñ+Ô+ˆØ�d×)Ò)¨$Ô*<×*QÒ*QÐRV×RpÒRpÐqxÑRyÔRyÑ*zÔ*zõ  }Cô  }Jñ  Kô  Kñ  Kð  	Kr'   Ú
shlib_nameÚsuffixÚ	soversionÚdarwin_versionsúT.Tuple[str, str]c           
     ó|   — |                       | j                             ||||||¦  «        t          j        ¦  «        S r  )rÉ   rÁ   Úget_soname_argsr   r%   )rÌ   r,  rX  r…  r†  r‡  rˆ  s          r(   r‹  zCudaCompiler.get_soname_args   sH   € ð ×"Ò" 4Ô#5×#EÒ#EØ�˜ V¨Y¸ñ$Iô $IÝJPÌ-ñYô Yð 	Yr'   c                ó   — dgS )NrŸ   r&   r%  s    r(   r@  z"CudaCompiler.get_compile_only_args¦  s	   € Øˆvˆr'   c                ó   — dgS )Nz-O0r&   r%  s    r(   Úget_no_optimization_argsz%CudaCompiler.get_no_optimization_args©  s	   € Øˆwˆr'   Úoptimization_levelc                ó   — t           |         S r  )r   )rÌ   r�  s     r(   Úget_optimization_argsz"CudaCompiler.get_optimization_args¬  s   € õ &Ð&8Ô9Ð9r'   r  c                ó\   — |                       | j                             |¦  «        ¦  «        S r  )rÉ   rÁ   Úsanitizer_compile_args©rÌ   r  s     r(   r“  z#CudaCompiler.sanitizer_compile_args²  s'   € Ø×"Ò" 4Ô#5×#LÒ#LÈUÑ#SÔ#SÑTÔTÐTr'   c                ó\   — |                       | j                             |¦  «        ¦  «        S r  )rÉ   rÁ   Úsanitizer_link_argsr”  s     r(   r–  z CudaCompiler.sanitizer_link_argsµ  s'   € Ø×"Ò" 4Ô#5×#IÒ#IÈ%Ñ#PÔ#PÑQÔQÐQr'   Úis_debugc                ó   — t           |         S r  )r   )rÌ   r—  s     r(   Úget_debug_argszCudaCompiler.get_debug_args¸  s   € Ý˜xÔ(Ð(r'   c                ó   — dgS )NzB-Werror=cross-execution-space-call,deprecated-declarations,reorderr&   r%  s    r(   Úget_werror_argszCudaCompiler.get_werror_args»  s   € ØTÐUÐUr'   rÊ   c                ó   — | j         |         S r  )rÐ   )rÌ   rÊ   s     r(   Úget_warn_argszCudaCompiler.get_warn_args¾  s   € ØŒ~˜eÔ$Ð$r'   Ú	buildtypec                ó�   — d„ | j                              |¦  «        D ¦   «         }t          |         |                      |¦  «        z   S )Nc                ó"   — g | ]}|d k    rdn|‘ŒS )z/ZIz/Zir&   ©r²   rÓ   s     r(   rá   z3CudaCompiler.get_buildtype_args.<locals>.<listcomp>Ä  s$   € ÐpÐpÐp¸˜c Ušl˜l�U�U°ÐpÐpÐpr'   )rÁ   Úget_buildtype_argsr   rÉ   )rÌ   rž  Ú	host_argss      r(   r¢  zCudaCompiler.get_buildtype_argsÁ  sH   € ð qÐp¸tÔ?Q×?dÒ?dÐenÑ?oÔ?oÐpÑpÔpˆ	Ý" 9Ô-°×0CÒ0CÀIÑ0NÔ0NÑNÐNr'   r:  Ú	is_systemc                ó.   — |dk    rd}|rd|z   gnd|z   gS )Nrå   r0  z	-isystem=r¨   r&   )rÌ   r:  r¤  s      r(   Úget_include_argszCudaCompiler.get_include_argsÇ  s.   € Ø�2Š:ˆ:ØˆDØ'0ÐC�˜dÑ"Ð#Ð#°t¸d±{°mÐCr'   FÚrel_objÚpchc                ó^   — |                       | j                             ||¦  «        ¦  «        S r  )rÉ   rÁ   Úget_compile_debugfile_args)rÌ   r§  r¨  s      r(   rª  z'CudaCompiler.get_compile_debugfile_argsÌ  s+   € Ø×"Ò" 4Ô#5×#PÒ#PÐQXÐZ]Ñ#^Ô#^Ñ_Ô_Ð_r'   Ú
targetfilec                ór   — |                       | j                             |¦  «        t          j        ¦  «        S r  )rÉ   rÁ   Úget_link_debugfile_argsr   r%   )rÌ   r«  s     r(   r­  z$CudaCompiler.get_link_debugfile_argsÏ  s-   € Ø×"Ò" 4Ô#5×#MÒ#MÈjÑ#YÔ#YÕ[aÔ[hÑiÔiÐir'   c                ó   — dS )NÚdr&   r%  s    r(   Úget_depfile_suffixzCudaCompiler.get_depfile_suffixÒ  s   € Øˆsr'   c                ór   — |                       | j                             |¦  «        t          j        ¦  «        S r  )rÉ   rÁ   Úget_buildtype_linker_argsr   r%   )rÌ   rž  s     r(   r²  z&CudaCompiler.get_buildtype_linker_argsÕ  s.   € Ø×"Ò" 4Ô#5×#OÒ#OÐPYÑ#ZÔ#ZÕ\bÔ\iÑjÔjÐjr'   Ú	build_dirÚfrom_dirÚrpath_pathsúT.Tuple[str, ...]Úbuild_rpathÚinstall_rpathú"T.Tuple[T.List[str], T.Set[bytes]]c                óŠ   — | j                              ||||||¦  «        \  }}|                      |t          j        ¦  «        |fS r  )rÁ   Úbuild_rpath_argsrÉ   r   r%   )	rÌ   r,  r³  r´  rµ  r·  r¸  Ú
rpath_argsÚrpath_dirs_to_removes	            r(   r»  zCudaCompiler.build_rpath_argsØ  sO   € ð .2Ô-?×-PÒ-PØ�˜H k°;Àñ.Oô .OÑ*ˆÐ)à×#Ò# Jµ´Ñ>Ô>Ð@TÐUÐUr'   r‚  c                ó   — |S r  r&   )rÌ   r‚  s     r(   Úlinker_to_compiler_argsz$CudaCompiler.linker_to_compiler_argsß  s   € Øˆr'   c                óZ   — |                       | j                             ¦   «         ¦  «        S r  )rÉ   rÁ   Úget_pic_argsr%  s    r(   rÁ  zCudaCompiler.get_pic_argsâ  s%   € Ø×"Ò" 4Ô#5×#BÒ#BÑ#DÔ#DÑEÔEÐEr'   Úparameter_listc                ó   — g S r  r&   )rÌ   rÂ  r³  s      r(   Ú&compute_parameters_with_absolute_pathsz3CudaCompiler.compute_parameters_with_absolute_pathså  s   € àˆ	r'   Útargetc                ó
   — d|gS )Nr£   r&   )rÌ   rÅ  s     r(   rA  zCudaCompiler.get_output_argsé  s   € Ø�fˆ~Ðr'   c                óp   — |                       | j                             ¦   «         t          j        ¦  «        S r  )rÉ   rÁ   Úget_std_exe_link_argsr   r%   r%  s    r(   rÈ  z"CudaCompiler.get_std_exe_link_argsì  s)   € Ø×"Ò" 4Ô#5×#KÒ#KÑ#MÔ#MÍvÌ}Ñ]Ô]Ð]r'   ÚlibnameÚ
extra_dirsÚlibtyper   úT.Optional[T.List[str]]c                ó   — d|z   gS )Nr¥   r&   )rÌ   rÉ  r,  rÊ  rË  s        r(   Úfind_libraryzCudaCompiler.find_libraryï  s   € à�w‘ÐÐr'   Úcrt_valc                ó^   — |                       | j                             ||¦  «        ¦  «        S r  )rÉ   rÁ   Úget_crt_compile_args)rÌ   rÏ  rž  s      r(   rÑ  z!CudaCompiler.get_crt_compile_argsó  s*   € Ø×"Ò" 4Ô#5×#JÒ#JÈ7ÐT]Ñ#^Ô#^Ñ_Ô_Ð_r'   c                óò   — g }| j                              ||¦  «        }t          d„ |D ¦   «         ¦  «        r|dgz  }|                      || j                              ||¦  «        z   t
          j        ¦  «        S )Nc              3  ó   K  — | ]}|d v V — Œ	dS )>   ú/MDú/MDdú/MTdNr&   r¡  s     r(   ú	<genexpr>z1CudaCompiler.get_crt_link_args.<locals>.<genexpr>û  s(   è è € ÐOÐO°#ˆsÐ-Ð-ÐOÐOÐOÐOÐOÐOr'   z/NODEFAULTLIB:LIBCMT.lib)rÁ   rÑ  ÚanyrÉ   Úget_crt_link_argsr   r%   )rÌ   rÏ  rž  Úhost_link_arg_overridesÚhost_crt_compile_argss        r(   rÙ  zCudaCompiler.get_crt_link_argsö  s–   € ð #%ÐØ $Ô 2× GÒ GÈÐQZÑ [Ô [ÐÝÐOÐOÐ9NÐOÑOÔOÑOÔOð 	DØ#Ð(BÐ'CÑCÐ#Ø×"Ò"Ð#:¸TÔ=O×=aÒ=aÐbiÐktÑ=uÔ=uÑ#uÕw}ô  xEñ  Fô  Fð  	Fr'   ú'BuildTarget'c                ó‚   •— |                       t          ¦   «                              |¦  «        t          j        ¦  «        S r  )rÉ   rÍ   Úget_target_link_argsr   r%   )rÌ   rÅ  rÒ   s     €r(   rÞ  z!CudaCompiler.get_target_link_argsÿ  s-   ø€ Ø×"Ò"¥5¡7¤7×#?Ò#?ÀÑ#GÔ#GÍÌÑWÔWÐWr'   Údepú'Dependency'c                ól   •— |                       t          ¦   «                              |¦  «        ¦  «        S r  )rÉ   rÍ   Úget_dependency_compile_args©rÌ   rß  rÒ   s     €r(   râ  z(CudaCompiler.get_dependency_compile_args  s)   ø€ Ø×"Ò"¥5¡7¤7×#FÒ#FÀsÑ#KÔ#KÑLÔLÐLr'   c                ó‚   •— |                       t          ¦   «                              |¦  «        t          j        ¦  «        S r  )rÉ   rÍ   Úget_dependency_link_argsr   r%   rã  s     €r(   rå  z%CudaCompiler.get_dependency_link_args  s-   ø€ Ø×"Ò"¥5¡7¤7×#CÒ#CÀCÑ#HÔ#HÍ&Ì-ÑXÔXÐXr'   c                óÂ   — t          d| j        | j        ¬¦  «        }||         j        }t	          |t
          ¦  «        r |dk    r|                      d|z   d¦  «        gS g S )Nrk  rh  rå   z-ccbin=F)r   r¼   rF  r  Ú
isinstancer»   rÝ   )rÌ   r?  r{  rk  s       r(   r>  zCudaCompiler.get_ccbin_args  sd   € Ý˜
¨DÔ,<À4Ä=ÐQÑQÔQˆØ˜3”<Ô%ˆÝ�h¥Ñ$Ô$ð 	¨°Rª¨Ø×.Ò.¨y¸Ñ/AÀ5ÑIÔIÐJÐJàˆIr'   c                óH   — d„ | j                              ¦   «         D ¦   «         S )Nc                ó   — g | ]}d |z   ‘ŒS ©r  r&   ©r²   Úxs     r(   rá   z:CudaCompiler.get_profile_generate_args.<locals>.<listcomp>  s   € ÐZÐZÐZ a� Ñ!ÐZÐZÐZr'   )rÁ   Úget_profile_generate_argsr%  s    r(   rí  z&CudaCompiler.get_profile_generate_args  s%   € ØZÐZ¨4Ô+=×+WÒ+WÑ+YÔ+YÐZÑZÔZÐZr'   c                óH   — d„ | j                              ¦   «         D ¦   «         S )Nc                ó   — g | ]}d |z   ‘ŒS rê  r&   rë  s     r(   rá   z5CudaCompiler.get_profile_use_args.<locals>.<listcomp>  s   € ÐUÐUÐU a� Ñ!ÐUÐUÐUr'   )rÁ   Úget_profile_use_argsr%  s    r(   rð  z!CudaCompiler.get_profile_use_args  s%   € ØUÐU¨4Ô+=×+RÒ+RÑ+TÔ+TÐUÑUÔUÐUr'   c                ó4   — | j                              ¦   «         S r  )rÁ   Úget_disable_assert_argsr%  s    r(   rò  z$CudaCompiler.get_disable_assert_args  s   € ØÔ!×9Ò9Ñ;Ô;Ð;r'   )NN)r·   r¸   r¹   r¸   rº   r»   r¼   r   r½   r¾   r¿   rÀ   rÁ   r   rÂ   rÃ   r    rÄ   rÅ   rÆ   )T)rÓ   r»   rÔ   r¾   rÕ   r»   )rË   r¸   rÕ   r¸   )rË   r¸   r  r   rÕ   r¸   )rÕ   r¾   )r'  r(  rÕ   r¸   )r+  r»   r,  r(  rÕ   r-  )rV  r»   rW  r»   rX  r»   r,  r(  rT  rY  rU  rZ  rÕ   r[  )rÕ   re  )r?  rx  rÕ   rx  )r?  rx  rÕ   r¸   )r,  r(  rX  r»   r…  r»   r†  r»   r‡  r»   rˆ  r‰  rÕ   r¸   )rÕ   r¸   )r�  r»   rÕ   r¸   )r  r»   rÕ   r¸   )r—  r¾   rÕ   r¸   )rÊ   r»   rÕ   r¸   )rž  r»   rÕ   r¸   )r:  r»   r¤  r¾   rÕ   r¸   )F)r§  r»   r¨  r¾   rÕ   r¸   )r«  r»   rÕ   r¸   )rÕ   r»   )r,  r(  r³  r»   r´  r»   rµ  r¶  r·  r»   r¸  r»   rÕ   r¹  )r‚  r¸   rÕ   r¸   )rÂ  r¸   r³  r»   rÕ   r¸   )rÅ  r»   rÕ   r¸   )
rÉ  r»   r,  r(  rÊ  r¸   rË  r   rÕ   rÌ  )rÏ  r»   rž  r»   rÕ   r¸   )rÅ  rÜ  rÕ   r¸   )rß  rà  rÕ   r¸   )>r!   r"   r#   ÚLINKER_PREFIXrF  r  r  rÑ   r  ÚidrÎ   ÚclassmethodrÝ   r  r   r$   rÉ   r&  r*  rR  rd  rn  ro  rp  rm  r  r�  r„  r‹  r@  rŽ  r‘  r“  r–  r™  r›  r�  r¢  r¦  rª  r­  r°  r²  r»  r¿  rÁ  rÄ  rA  rÈ  r   ÚPREFER_SHAREDrÎ  rÑ  rÙ  rÞ  râ  rå  r>  rí  rð  rò  Ú__classcell__)rÒ   s   @r(   r*   r*   0   s¤  ø€ € € € € à€MØ€Hð@ð @ð @ÐðF6!Ø°ð6!à°
ð6!ð 	°ð6!ð 	°ð	6!ð
 	°ð6!ð 	°ð6!ð 	°
ð6!ð 	°ð6!ð 	°ð6!ð 	°ð6!ð 	°ð6!ð 	°ð6!ð 	°	ð6!ð 	°ð6!ð 	 °ð6!ð  	°ð!6!ð" 	°ð#6!ð 6!ð$ 	°ð%6!ð& 	&Ð0Lð'6!ð( 	Ð0Bð)6!ð* 	°ð+6!ð, 	°ð-6!ð. 	°ð/6!ð0 	°ð16!ð2 	°
ð36!ð4 	°ð56!ð6 	°	ð76!ð8 	°
ð96!ð: 	°ð;6!ð< 	°ð=6!ð> 	°ð?6!ð@ 	°ðA6!ðB 	$°ðC6!ðD 	°ðE6!ð 6!ð 6!ðF 	#°ðG6!ðH 	Ð0AðI6!ðJ 	°ðK6!ðL 	°ðM6!ðN 	°
ðO6!ðP 	$°ðQ6!ðR 	°ðS6!ðT 	°ðU6!ðV 	°ðW6!ðX 	°ðY6!ðZ 	°ð[6!ð\ 	°ð]6!ð^ 	°	ð_6!ð` 	°ða6!ðb 	Ð0@ðc6!ðd 	°ðe6!ðf 	°ðg6!ð 6!ðh 18Ø0=ðk6!ð 6!ð 6!Ððp !UÐ TÐ2K×2QÒ2QÑ2SÔ2SÐ TÑ TÔ TÐà	€Bð
 8<Ø15ð		qð 	qð 	qð 	qð 	qð 	qð 	qð ð8!ð 8!ð 8!ð 8!ñ „[ð8!ðt ð.ð .ð .ñ „[ð.ð` BHÄð q)ð q)ð q)ð q)ð q)ðfð ð ð ðeð eð eð eðf@ð f@ð f@ð f@ðT quØKOðið ið ið ið ið ið: €NØ€NØ€Nðð ð ð ð ð ð*
<ð 
<ð 
<ð 
<ðð ð ð ðKð Kð Kð KðYð Yð Yð Yðð ð ð ðð ð ð ð:ð :ð :ð :ðUð Uð Uð UðRð Rð Rð Rð)ð )ð )ð )ðVð Vð Vð Vð%ð %ð %ð %ðOð Oð Oð OñDð Dð Dð Dñ
`ñ `ð `ð `ð `ñjð jð jð jñð ð ð ðkð kð kð kñVð Vð Vð Vñð ð ð ðFð Fð Fð Fñð ð ð ñð ð ð ð^ð ^ð ^ð ^ð )0Ô(=ð ñ  ð  ð  ð  ñ`ð `ð `ð `ñFð Fð Fð FñXð Xð Xð Xð Xð XñMð Mð Mð Mð Mð MñYð Yð Yð Yð Yð Yðð ð ð ð[ð [ð [ð [ðVð Vð Vð Vð<ð <ð <ð <ð <ð <ð <ð <r'   r*   ),Ú
__future__r   ÚenumÚos.pathr9  rè   ÚtypingÚTrå   r   r   Úmesonlibr   r   r	   r
   r   r   r   Ú	compilersr   r   r   r   ÚTYPE_CHECKINGr   Úbuildr   r   r   rU  r   r'  r   Ú	envconfigr   Úlinkersr   r   Úprogramsr   ÚEnumr   r*   r&   r'   r(   ú<module>r     s  ðð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð)ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð „?ð 	+Ø+Ð+Ð+Ð+Ð+Ð+Ø#Ð#Ð#Ð#Ð#Ð#ØJÐJÐJÐJÐJÐJÐJÐJØ)Ð)Ð)Ð)Ð)Ð)Ø)Ð)Ð)Ð)Ð)Ð)Ø'Ð'Ð'Ð'Ð'Ð'Ø'Ð'Ð'Ð'Ð'Ð'Ø(Ð(Ð(Ð(Ð(Ð(Ø*Ð*Ð*Ð*Ð*Ð*ðð ð ð ð ˆTŒYñ ô ð ðg<ð g<ð g<ð g<ð g<�8ñ g<ô g<ð g<ð g<ð g<r'   