§
    ƒnóc S  ã                  óð  — d dl 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lm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 neZg dgdœZg g g g g g dœZg dgdgdgdgdgdgdœZdgdgdgdgdgdgdgdgdgdgdœ
Zg d gd!gd"gd#gd"d$gd%œZd&gd'gd(gd)œZi d*g d+¢“d,g d-¢“d.g d/¢“d0d1g“d2d3d4g“d5d6g“d7g d8¢“d9g d:¢“d;d<g“d=d>g“d?d@g“dAdBdCg“dDg dE¢“dFg dG¢“dHdIg“dJg dK¢“dLdMdNg“dOg dP¢i¥Zg dQ¢dRdSgdTgdUgdVœZg dW¢dXgdYgdZgd[d\gd]gg d^¢g d_¢g d`¢dadbgdcddgg de¢g df¢dgœZdhgdigdjdkgdlœZ  ej!        d¬m¦  «        dzdt„¦   «         Z" G du„ dveej#        ¬w¦  «        Z$ G dx„ dye$¦  «        Z%dS ){é    )ÚannotationsNé   )Úmesonlib)Úmlog©Ú	OptionKey)ÚImmutableListProtocol)ÚEnvironmenté   )ÚCompilerz-g)FT)ÚplainÚdebugÚdebugoptimizedÚreleaseÚminsizeÚcustomz-O0z-Ogz-O1z-O2z-O3z-Os)r   Ú0ÚgÚ1Ú2Ú3Úsz-mmmxz-mssez-msse2z-msse3z-mssse3z-msse4.1z-msse4.2z-mavxz-mavx2z
-mfpu=neon)
ÚmmxÚsseÚsse2Ússe3Ússse3Ússe41Ússe42ÚavxÚavx2Úneonz-fvisibility=defaultz-fvisibility=internalz-fvisibility=hiddenz-fvisibility=protectedz-fvisibility-inlines-hidden)Ú ÚdefaultÚinternalÚhiddenÚ	protectedÚinlineshiddenz-fdiagnostics-color=autoz-fdiagnostics-color=alwaysz-fdiagnostics-color=never)ÚautoÚalwaysÚneverú0.0.0)z-Wcast-qualz-Wconversionz-Wfloat-equalz
-Wformat=2z-Winlinez-Wmissing-declarationsz-Wredundant-declsz-Wshadowz-Wundefz-Wuninitializedz-Wwrite-stringsz3.0.0)z-Wdisabled-optimizationz-Wpackedz-Wpaddedz3.3.0)z-Wmulticharz-Wswitch-defaultz-Wswitch-enumz-Wunused-macrosz4.0.0z-Wmissing-include-dirsú4.1.0z-Wunsafe-loop-optimizationsz-Wstack-protectorz4.2.0z-Wstrict-overflow=5z4.3.0)z-Warray-bounds=2z-Wlogical-opz-Wstrict-aliasing=3z-Wvlaú4.6.0)z-Wdouble-promotionz-Wsuggest-attribute=constz-Wsuggest-attribute=noreturnz-Wsuggest-attribute=purez-Wtrampolinesú4.7.0z-Wvector-operation-performanceú4.8.0z-Wsuggest-attribute=formatú4.9.0z-Wdate-timeú5.1.0z-Wformat-signednessz-Wnormalized=nfcú6.1.0)z-Wduplicated-condz-Wnull-dereferencez-Wshift-negative-valuez-Wshift-overflow=2z-Wunused-const-variable=2ú7.1.0)z-Wallocaz-Walloc-zeroz-Wformat-overflow=2z-Wformat-truncation=2z-Wstringop-overflow=3z7.2.0z-Wduplicated-branchesú8.1.0)z-Wattribute-alias=2z-Wcast-align=strictz-Wsuggest-attribute=coldz-Wsuggest-attribute=mallocú10.1.0z-Wanalyzer-too-complexz-Warith-conversionz12.1.0)z-Wbidi-chars=ucnz-Wopenacc-parallelismz-Wtrivial-auto-var-init)z-Wbad-function-castz-Wmissing-prototypesz-Wnested-externsz-Wstrict-prototypesz-Wold-style-definitionz-Winit-selfz-Wc++-compatz-Wunsuffixed-float-constants)r,   z3.4.0r-   z4.5.0)z-Wctor-dtor-privacyz-Weffc++z-Wnon-virtual-dtorz-Wold-style-castz-Woverloaded-virtualz-Wsign-promoz-Wstrict-null-sentinelz
-Wnoexceptz-Wzero-as-null-pointer-constantz	-Wabi-tagz-Wuseless-castz-Wconditionally-supported)z-Wsuggest-final-methodsz-Wsuggest-final-typesz-Wsuggest-override)z-Wmultiple-inheritancez-Wplacement-new=2z-Wvirtual-inheritance)z-Waligned-new=allz-Wnoexcept-typez
-Wregisterz-Wcatch-value=3z-Wextra-semiz-Wdeprecated-copy-dtorz-Wredundant-move)z-Wcomma-subscriptz-Wmismatched-tagsz-Wredundant-tagsz
-Wvolatile)z!-Wdeprecated-enum-enum-conversionz"-Wdeprecated-enum-float-conversionz-Winvalid-imported-macros)r,   z4.0.1r.   r/   r0   r1   r2   r3   r4   r5   z9.1.0r6   z11.1.0z
-Wselectorz-Wundeclared-selectorz-Wassign-interceptz-Wstrict-selector-match)r,   z3.3r-   )ÚmaxsizeÚcompilerúT.Tuple[str, ...]ÚlangÚstrÚreturnú'ImmutableListProtocol[str]'c                óš  — dddddœ}||vrg S ||         }t           j                             ¦   «         }d|d<   t          | ¦  «        d|› �d	d
dgz   }t	          j        |t          j        |¬¦  «        \  }}}d}g }|                     d¦  «        D ]n}	|	 	                    d¦  «        }	|dk    r	|	dk    rd}Œ&|dk    r|	dk    rd}Œ5| 
                    |	¦  «         ŒK|dk    r|	dk    r n| 
                    |	¦  «         Œo|s;t          j        d                     d                     |¦  «        ¬¦  «        ¦  «         |d„ |D ¦   «         z  }|S )NÚczc++zobjective-czobjective-c++)r?   ÚcppÚobjcÚobjcppÚCÚLC_ALLú-xz-Ez-vú-)ÚstderrÚenvr   ú
z 
	z"#include "..." search starts here:é   z"#include <...> search starts here:r   zEnd of search list.z1No include directory found parsing "{cmd}" outputú )Úcmdc                óL   — g | ]!}t           j                             |¦  «        ‘Œ"S © )ÚosÚpathÚnormpath)Ú.0Úxs     úA/usr/lib/python3/dist-packages/mesonbuild/compilers/mixins/gnu.pyú
<listcomp>z0gnulike_default_include_dirs.<locals>.<listcomp>l  s(   € Ð1Ð1Ð1 a�bŒg×Ò˜qÑ!Ô!Ð1Ð1Ð1ó    )rO   ÚenvironÚcopyÚlistr   Ú
Popen_safeÚ
subprocessÚSTDOUTÚsplitÚstripÚappendr   ÚwarningÚformatÚjoin)
r8   r:   Úlang_maprH   rL   Ú_ÚstdoutÚparse_stateÚpathsÚlines
             rT   Úgnulike_default_include_dirsri   I  sž  € ð ØØØ!ð	ð €Hð �8ÐÐØˆ	Ø�DŒ>€DÝ
Œ*�/Š/Ñ
Ô
€CØ€Cˆ�MÝ
ˆx‰.Œ.˜K ˜K˜K¨¨t°SÐ9Ñ
9€CÝÔ& sµ:Ô3DÈ#ÐNÑNÔN�L€A€vˆqØ€KØ€EØ—’˜TÑ"Ô"ð #ð #ˆØ�zŠz˜)Ñ$Ô$ˆØ˜!ÒÐØÐ;Ò;Ð;Ø�øØ˜AÒÐØÐ;Ò;Ð;Ø��à—’˜TÑ"Ô"Ð"Ð"Ø˜AÒÐØÐ,Ò,Ð,Ø�à—’˜TÑ"Ô"Ð"øØð dÝŒÐH×OÒOÐTW×T\ÒT\Ð]`ÑTaÔTaÐOÑbÔbÑcÔcÐcà	Ð1Ð1¨5Ð1Ñ1Ô1Ñ1€EØ€LrV   c                  ó–  — e Zd ZdZdZdDd„ZdEd„ZdEd„ZdFd„Ze	j
        dGd„¦   «         ZdHd„Ze	j
        dId„¦   «         ZdJd„ZdKd„ZdEd„Ze	j
        dEd„¦   «         ZdLd„ZdMd„ZdId„ZdEd„ZdEd „ZdNd"„ZdOd%„Z ej        ¦   «         dPd(„¦   «         ZdQd*„ZdRd,„Zd-d.d/œdSd3„ZdTd4„ZdUd6„Z dVd9„Z!dEd:„Z"dWd=„Z#e$dXd@„¦   «         Z%dEdA„Z&dEdB„Z'dCS )YÚGnuLikeCompilera   
    GnuLikeCompiler is a common interface to all compilers implementing
    the GNU-style commandline interface. This includes GCC, Clang
    and ICC. Certain functionality between them is different and requires
    that the actual concrete subclass define their own implementation.
    z-Wl,r<   ÚNonec                ór  — d„ dD ¦   «         | _         | j                             ¦   «         sY| j                             ¦   «         s@| j                             ¦   «         s'| j                              t          d¦  «        ¦  «         | j                             ¦   «         r| j                             ¦   «         r'| j                              t          d¦  «        ¦  «         | j                             ¦   «         s'| j                              t          d¦  «        ¦  «         | j                             d¦  «         d S )Nc                ó,   — h | ]}t          |¦  «        ’ŒS rN   r   )rR   Úos     rT   ú	<setcomp>z+GnuLikeCompiler.__init__.<locals>.<setcomp>{  s1   € ð Hð Hð HØ�I�a‰LŒLðHð Hð HrV   )Úb_pchÚb_ltoÚb_pgoÚ
b_coverageÚb_ndebugÚb_staticpicÚb_pieÚb_lundefÚ
b_asneededÚ
b_sanitizer   )	Úbase_optionsÚinfoÚ
is_windowsÚ	is_cygwinÚ
is_openbsdÚaddr   Úis_hurdÚcan_compile_suffixes©Úselfs    rT   Ú__init__zGnuLikeCompiler.__init__z  s(  € ðHð Hð#GðHñ Hô HˆÔð ”	×$Ò$Ñ&Ô&ð 	9¨$¬)×*=Ò*=Ñ*?Ô*?ð 	9À4Ä9×CWÒCWÑCYÔCYð 	9ØÔ×!Ò!¥)¨JÑ"7Ô"7Ñ8Ô8Ð8ØŒy×#Ò#Ñ%Ô%ð 	;¨¬×)<Ò)<Ñ)>Ô)>ð 	;ØÔ×!Ò!¥)¨LÑ"9Ô"9Ñ:Ô:Ð:ØŒy× Ò Ñ"Ô"ð 	;ØÔ×!Ò!¥)¨LÑ"9Ô"9Ñ:Ô:Ð:àÔ!×%Ò% cÑ*Ô*Ð*Ð*Ð*rV   úT.List[str]c                ó¢   — | j                              ¦   «         s2| j                              ¦   «         s| j                              ¦   «         rg S dgS )Nz-fPIC)r|   r}   r~   Ú	is_darwinrƒ   s    rT   Úget_pic_argszGnuLikeCompiler.get_pic_args‡  sO   € ØŒ9×ÒÑ!Ô!ð 	 T¤Y×%8Ò%8Ñ%:Ô%:ð 	¸d¼i×>QÒ>QÑ>SÔ>Sð 	ØˆIØˆyÐrV   c                ó   — dgS )Nz-fPIErN   rƒ   s    rT   Úget_pie_argszGnuLikeCompiler.get_pie_argsŒ  s
   € ØˆyÐrV   Ú	buildtyper;   c                ó   — t           |         S ©N)Úgnulike_buildtype_args)r„   rŒ   s     rT   Úget_buildtype_argsz"GnuLikeCompiler.get_buildtype_args�  s   € Ý% iÔ0Ð0rV   Úoptimization_levelc                ó   — d S rŽ   rN   ©r„   r‘   s     rT   Úget_optimization_argsz%GnuLikeCompiler.get_optimization_args’  ó   € àˆrV   Úis_debugÚboolc                ó   — t           |         S rŽ   )Úclike_debug_args)r„   r–   s     rT   Úget_debug_argszGnuLikeCompiler.get_debug_args–  s   € Ý Ô)Ð)rV   c                ó   — d S rŽ   rN   rƒ   s    rT   Úget_pch_suffixzGnuLikeCompiler.get_pch_suffix™  r•   rV   ÚfnameúT.Tuple[str, str]c                óD   — t           j                             |¦  «        |fS rŽ   )rO   rP   Údirname)r„   r�   s     rT   Úsplit_shlib_to_partsz$GnuLikeCompiler.split_shlib_to_parts�  s   € ÝŒw�Š˜uÑ%Ô% uÐ,Ð,rV   Úinstruction_setúT.Optional[T.List[str]]c                ó8   — t                                |d ¦  «        S rŽ   )Úgnulike_instruction_set_argsÚget)r„   r¢   s     rT   Úget_instruction_set_argsz(GnuLikeCompiler.get_instruction_set_args   s   € Ý+×/Ò/°ÀÑFÔFÐFrV   c                ó’   — t          t          |                      d¬¦  «        ¦  «        | j        ¦  «                             ¦   «         S )NF)Úccache)ri   ÚtupleÚget_exelistÚlanguagerX   rƒ   s    rT   Úget_default_include_dirsz(GnuLikeCompiler.get_default_include_dirs£  s;   € Ý+­E°$×2BÒ2BÈ%Ð2BÑ2PÔ2PÑ,QÔ,QÐSWÔS`ÑaÔa×fÒfÑhÔhÐhrV   c                ó   — d S rŽ   rN   rƒ   s    rT   Úopenmp_flagszGnuLikeCompiler.openmp_flags¦  r•   rV   Úvistypec                ó>   — |dk    r| j         dvrd}t          |         S )Nr(   ¾   r@   rB   r&   )r¬   Úgnu_symbol_visibility_args)r„   r°   s     rT   r³   z*GnuLikeCompiler.gnu_symbol_visibility_argsª  s*   € Ø�oÒ%Ð%¨$¬-Ð?PÐ*PÐ*PØˆGÝ)¨'Ô2Ð2rV   Údefsfilec                ó¸   — t          |t          ¦  «        st          d¦  «        ‚| j                             ¦   «         s| j                             ¦   «         r|gS g S )Nz%Module definitions file should be str)Ú
isinstancer;   ÚRuntimeErrorr|   r}   r~   )r„   r´   s     rT   Úgen_vs_module_defs_argsz'GnuLikeCompiler.gen_vs_module_defs_args¯  s^   € Ý˜(¥CÑ(Ô(ð 	HÝÐFÑGÔGÐGð Œ9×ÒÑ!Ô!ð 	 T¤Y×%8Ò%8Ñ%:Ô%:ð 	Ø�:Ðàˆ	rV   c                ó   — dS )NÚgccrN   rƒ   s    rT   Úget_argument_syntaxz#GnuLikeCompiler.get_argument_syntax¹  ó   € ØˆurV   c                ó   — dgS )Nz-fprofile-generaterN   rƒ   s    rT   Úget_profile_generate_argsz)GnuLikeCompiler.get_profile_generate_args¼  s   € Ø$Ð%Ð%rV   c                ó   — dgS )Nz-fprofile-userN   rƒ   s    rT   Úget_profile_use_argsz$GnuLikeCompiler.get_profile_use_args¿  s   € ØÐ Ð rV   Úvaluec                ó   — |rdndgS )Nz	-mwindowsz	-mconsolerN   )r„   rÁ   s     rT   Úget_gui_app_argsz GnuLikeCompiler.get_gui_app_argsÂ  s   € Ø$Ð5��¨+Ð6Ð6rV   Úparameter_listÚ	build_dirc           
     ó  — t          |¦  «        D ]t\  }}|d d…         dk    s|d d…         dk    rS|d d…         t          j                             t          j                             ||dd …         ¦  «        ¦  «        z   ||<   Œu|S )Nr   ú-Iz-L)Ú	enumeraterO   rP   rQ   rb   )r„   rÄ   rÅ   ÚidxÚis        rT   Ú&compute_parameters_with_absolute_pathsz6GnuLikeCompiler.compute_parameters_with_absolute_pathsÅ  s‹   € Ý Ñ/Ô/ð 	_ð 	_‰FˆC�Ø��!�Œu˜Š}ˆ}  " 1 "¤¨¢ Ø&'¨¨¨¤e­b¬g×.>Ò.>½r¼w¿|º|ÈIÐWXÐYZÐY[ÐY[ÔW\Ñ?]Ô?]Ñ.^Ô.^Ñ&^�˜sÑ#øàÐrV   rH   ú'Environment'c                ó€   — dg}|                       d||d dd¬¦  «        5 }|j        cd d d ¦  «         S # 1 swxY w Y   d S )Nz--print-search-dirsr#   ÚcompileT)Ú
extra_argsÚdependenciesÚmodeÚwant_output)Ú_build_wrapperre   )r„   rH   rÏ   Úps       rT   Ú_get_search_dirsz GnuLikeCompiler._get_search_dirsÌ  sš   € à+Ð,ˆ
Ø× Ò   S°ZØ.2¸Ø-1ð !ñ 3ô 3ð 	à67Ø”8ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Ÿ3³7º7Úpathstrc                ó  — t           j        }|dk    rt          j        dd|¦  «        }d„ |                     |¦  «        D ¦   «         }g }|D ]º}t          j        |¦  «        }|                     ¦   «         }|                     ¦   «         r|||vr| 	                    |¦  «         	 t          j        |¦  «         
                    ¦   «                              ¦   «         }||vr| 	                    |¦  «         Œª# t          $ r Y Œ¶w xY wŒ»|S )Nú;z	:([^/\\])z;\1c                ó   — g | ]}|¯|‘ŒS rN   rN   )rR   rÔ   s     rT   rU   z:GnuLikeCompiler._split_fetch_real_dirs.<locals>.<listcomp>à  s   € Ð8Ð8Ð8�q°aÐ8�Ð8Ð8Ð8rV   )rO   ÚpathsepÚreÚsubr]   ÚpathlibÚPathÚas_posixÚexistsr_   ÚresolveÚFileNotFoundError)	r„   rÖ   rÚ   rg   ÚresultrÔ   ÚpobjÚ
unresolvedÚresolveds	            rT   Ú_split_fetch_real_dirsz&GnuLikeCompiler._split_fetch_real_dirsÔ  s  € õ ”*ˆð �cŠ>ˆ>Ý”f˜\¨6°7Ñ;Ô;ˆGð 9Ð8˜GŸMšM¨'Ñ2Ô2Ð8Ñ8Ô8ˆàˆØð 	ð 	ˆAõ ”< ‘?”?ˆDØŸš™œˆJØ�{Š{‰}Œ}ð Ø VÐ+Ð+Ø—M’M *Ñ-Ô-Ð-ðÝ&œ|¨A™œ×6Ò6Ñ8Ô8×AÒAÑCÔC�HØ vÐ-Ð-ØŸš hÑ/Ô/Ð/øøÝ(ð ð ð Ø�Dðøøøðð ˆs   Â$AC6Ã6
DÄDÚnamec                óò   — |                       |¦  «        }|                     d¦  «        D ]K}|                     |dz   ¦  «        r1|                      |                     dd¦  «        d         ¦  «        c S ŒLg S )zP
        Get dirs from the compiler, either `libraries:` or `programs:`
        rI   ú:ú=rJ   )rÕ   r]   Ú
startswithrç   )r„   rH   rè   Ústdorh   s        rT   Úget_compiler_dirsz!GnuLikeCompiler.get_compiler_dirsù  s…   € ð ×$Ò$ SÑ)Ô)ˆØ—J’J˜tÑ$Ô$ð 	Jð 	JˆDØ�Š˜t c™zÑ*Ô*ð JØ×2Ò2°4·:²:¸cÀ1Ñ3EÔ3EÀaÔ3HÑIÔIÐIÐIÐIðJàˆ	rV   r   r$   ©ÚthreadsrÑ   rð   ÚintrÑ   c               ó   — dgS )Nz-fltorN   )r„   rð   rÑ   s      rT   Úget_lto_compile_argsz$GnuLikeCompiler.get_lto_compile_args  s   € ð ˆyÐrV   c                óT   — |dk    rg S d|z   g}d|v r|                      d¦  «         |S )NÚnonez-fsanitize=Úaddressz-fno-omit-frame-pointer)r_   )r„   rÁ   Úargss      rT   Úsanitizer_compile_argsz&GnuLikeCompiler.sanitizer_compile_args  s@   € Ø�FŠ?ˆ?ØˆIØ Ñ%Ð&ˆØ˜ÐÐØ�KŠKÐ1Ñ2Ô2Ð2ØˆrV   Útargetc                ó
   — d|gS )Nú-orN   )r„   rù   s     rT   Úget_output_argszGnuLikeCompiler.get_output_args  s   € Ø�fˆ~ÐrV   Ú	outtargetÚoutfilec                ó   — dd|d|gS )Nz-MDz-MQz-MFrN   )r„   rý   rþ   s      rT   Úget_dependency_gen_argsz'GnuLikeCompiler.get_dependency_gen_args  s   € Ø�u˜i¨°Ð8Ð8rV   c                ó   — dgS )Nz-crN   rƒ   s    rT   Úget_compile_only_argsz%GnuLikeCompiler.get_compile_only_args  s	   € ØˆvˆrV   rP   Ú	is_systemc                ó&   — |sd}|rd|z   gS d|z   gS )Nú.z-isystemrÇ   rN   )r„   rP   r  s      rT   Úget_include_argsz GnuLikeCompiler.get_include_args  s1   € Øð 	ØˆDØð 	'Ø Ñ%Ð&Ð&Ø�t‘ˆ}ÐrV   ÚlinkerÚversionc                óF   — |dvrt          j        d|› d�¦  «        ‚d|› �gS )N>   ÚbfdÚlldÚgoldz?Unsupported linker, only bfd, gold, and lld are supported, not r  z	-fuse-ld=)r   ÚMesonException)Úclsr  r  s      rT   Úuse_linker_argszGnuLikeCompiler.use_linker_args   sF   € àÐ/Ð/Ð/ÝÔ)Ø[ÐRXÐ[Ð[Ð[ñ]ô ]ð ]à$˜FÐ$Ð$Ð%Ð%rV   c                ó   — dgS )Nz
--coveragerN   rƒ   s    rT   Úget_coverage_argsz!GnuLikeCompiler.get_coverage_args'  s
   € Øˆ~ÐrV   c                ó4   — |                       ¦   «         ddgz   S )NrE   zassembler-with-cpp)Úget_preprocess_only_argsrƒ   s    rT   Úget_preprocess_to_file_argsz+GnuLikeCompiler.get_preprocess_to_file_args*  s!   € ð ×,Ò,Ñ.Ô.°$Ð8LÐ1MÑMÐMrV   N)r<   rl   ©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†   )rH   rÌ   r<   r;   )rÖ   r;   r<   r†   )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<   r†   )rP   r;   r  r—   r<   r†   ©r  r;   r  r;   r<   r†   )(Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚLINKER_PREFIXr…   r‰   r‹   r�   ÚabcÚabstractmethodr”   rš   rœ   r¡   r§   r­   r¯   r³   r¸   r»   r¾   rÀ   rÃ   rË   Ú	functoolsÚ	lru_cacherÕ   rç   rî   ró   rø   rü   r   r  r  Úclassmethodr  r  r  rN   rV   rT   rk   rk   p  sñ  € € € € € ðð ð €Mð+ð +ð +ð +ðð ð ð ð
ð ð ð ð1ð 1ð 1ð 1ð 	Ôðð ð ñ Ôðð*ð *ð *ð *ð 	Ôðð ð ñ Ôðð-ð -ð -ð -ðGð Gð Gð Gðið ið ið ið 	Ôðð ð ñ Ôðð3ð 3ð 3ð 3ð
ð ð ð ðð ð ð ð&ð &ð &ð &ð!ð !ð !ð !ð7ð 7ð 7ð 7ðð ð ð ð €YÔÑÔðð ð ñ Ôðð#ð #ð #ð #ðJð ð ð ð 67ÀIð ð ð ð ð ð ð
ð ð ð ðð ð ð ð9ð 9ð 9ð 9ðð ð ð ðð ð ð ð ð&ð &ð &ñ „[ð&ðð ð ð ðNð Nð Nð Nð Nð NrV   rk   )Ú	metaclassc                  óÀ   ‡ — e Zd ZdZdZd/ˆ fd„Zd0d
„Zd1ˆ fd„Zd2d„Zd3d„Z	d4d„Z
d5d„Zd6d„Zd7d„Zd8d„Zd9d!„Zd:d$„Zd%d&d'œd;ˆ fd*„Zed<ˆ fd-„¦   «         Zd7ˆ fd.„Zˆ xZS )=ÚGnuCompilerz–
    GnuCompiler represents an actual GCC in its many incarnations.
    Compilers imitating GCC (Clang/Intel) should use the GnuLikeCompiler ABC.
    rº   ÚdefinesúT.Optional[T.Dict[str, str]]c                óÆ   •— t          ¦   «                              ¦   «          |pi | _        | j                             t          d¦  «        t          d¦  «        h¦  «         d S )NÚ
b_coloroutÚb_lto_threads)Úsuperr…   r'  r{   Úupdater   )r„   r'  Ú	__class__s     €rT   r…   zGnuCompiler.__init__8  sV   ø€ Ý‰Œ×ÒÑÔÐØ�} "ˆŒØÔ× Ò ¥)¨LÑ"9Ô"9½9À_Ñ;UÔ;UÐ!VÑWÔWÐWÐWÐWrV   Ú	colortyper;   r<   r†   c                ód   — t          j        | j        d¦  «        rt          |         d d …         S g S )Nz>=4.9.0)r   Úversion_comparer  Úgnu_color_args)r„   r/  s     rT   Úget_colorout_argszGnuCompiler.get_colorout_args=  s2   € ÝÔ# D¤L°)Ñ<Ô<ð 	0Ý! )Ô,¨Q¨Q¨QÔ/Ð/Øˆ	rV   Úlevelc                ó¶   •— t          ¦   «                              |¦  «        }t          j        | j        d¦  «        rd|v rd||                     d¦  «        <   |S )Nz<4.8.0z
-Wpedanticz	-pedantic)r,  Úget_warn_argsr   r1  r  Úindex)r„   r4  r÷   r.  s      €rT   r6  zGnuCompiler.get_warn_argsB  sY   ø€ å‰wŒw×$Ò$ UÑ+Ô+ˆÝÔ# D¤L°(Ñ;Ô;ð 	9ÀÐPTÐ@TÐ@Tð .9ˆD�—’˜LÑ)Ô)Ñ*ØˆrV   Úwarn_args_by_versionúT.Dict[str, T.List[str]]c                ó‚   — g }|                      ¦   «         D ]'\  }}t          j        | j        d|z   ¦  «        r||z  }Œ(|S )Nz>=)Úitemsr   r1  r  )r„   r8  rã   r  Ú	warn_argss        rT   Úsupported_warn_argszGnuCompiler.supported_warn_argsK  sR   € ØˆØ"6×"<Ò"<Ñ">Ô">ð 	$ð 	$ÑˆG�YÝÔ'¨¬°d¸W±nÑEÔEð $Ø˜)Ñ#�øØˆrV   Údefiner—   c                ó   — || j         v S rŽ   ©r'  ©r„   r>  s     rT   Úhas_builtin_definezGnuCompiler.has_builtin_defineR  s   € Ø˜œÐ%Ð%rV   úT.Optional[str]c                ó2   — || j         v r| j         |         S d S rŽ   r@  rA  s     rT   Úget_builtin_definezGnuCompiler.get_builtin_defineU  s!   € Ø�T”\Ð!Ð!Ø”< Ô'Ð'ØˆtrV   r‘   c                ó   — t           |         S rŽ   )Úgnu_optimization_argsr“   s     rT   r”   z!GnuCompiler.get_optimization_argsZ  s   € Ý$Ð%7Ô8Ð8rV   c                ó   — dS )NÚgchrN   rƒ   s    rT   rœ   zGnuCompiler.get_pch_suffix]  r¼   rV   c                ó   — dgS )Nz-fopenmprN   rƒ   s    rT   r¯   zGnuCompiler.openmp_flags`  s
   € Øˆ|ÐrV   r÷   rH   rÌ   ÚcoderÑ   úT.Tuple[bool, bool]c                óÜ   — |                       |||d |¦  «        5 }|j        dk    }| j        dv rd|j        v rd}| j        dv rd|j        v rd}d d d ¦  «         n# 1 swxY w Y   ||j        fS )Nr   r²   zis valid for C/ObjCF>   r?   rA   zis valid for C++/ObjC++)rÓ   Ú
returncoder¬   rG   Úcached)r„   r÷   rH   rK  rÑ   rÔ   rã   s          rT   Úhas_argumentszGnuCompiler.has_argumentsc  sÌ   € ð
 × Ò   s¨D°$¸Ñ=Ô=ð 	ÀØ”\ QÒ&ˆFØŒ}Ð 1Ð1Ð1Ð6KÈqÌxÐ6WÐ6WØ�ØŒ} Ð-Ð-Ð2KÈqÌxÐ2WÐ2WØ�ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð �q”xÐÐs   š4AÁAÁ!Arè   c                ó   — dgS )Nz-Werror=attributesrN   )r„   rè   s     rT   Ú!get_has_func_attribute_extra_argsz-GnuCompiler.get_has_func_attribute_extra_argsp  s   € ð %Ð%Ð%rV   Úprelink_nameÚobj_listc                ó   — dd|g|z   S )Nz-rrû   rN   )r„   rS  rT  s      rT   Úget_prelink_argszGnuCompiler.get_prelink_argsu  s   € Ø�d˜LÐ)¨HÑ4Ð4rV   r   r$   rï   rð   rñ   c               óÔ   •— |dk    r4t          j        | j        d¦  «        rdgS dt          j        ¦   «         › �gS |dk    rd|› �gS t          ¦   «                              |¬¦  «        S )Nr   z>= 10.0z
-flto=autoz-flto=)rð   )r   r1  r  ÚmultiprocessingÚ	cpu_countr,  ró   )r„   rð   rÑ   r.  s      €rT   ró   z GnuCompiler.get_lto_compile_argsx  sz   ø€ Ø�aŠ<ˆ<ÝÔ'¨¬°iÑ@Ô@ð &Ø$�~Ð%à:�_Ô6Ñ8Ô8Ð:Ð:Ð;Ð;Ø�qŠ[ˆ[Ø&˜WÐ&Ð&Ð'Ð'Ý‰wŒw×+Ò+°GÐ+Ñ<Ô<Ð<rV   r  r  c                ó„   •— |dk    rt          j        |d¦  «        rdgS t          ¦   «                              ||¦  «        S )NÚmoldz>=12.0.1z-fuse-ld=mold)r   r1  r,  r  )r  r  r  r.  s      €rT   r  zGnuCompiler.use_linker_args‚  sC   ø€ à�VÒÐ¥Ô 8¸À*Ñ MÔ MÐØ#Ð$Ð$Ý‰wŒw×&Ò& v¨wÑ7Ô7Ð7rV   c                óL   •— t          ¦   «                              ¦   «         dgz   S )Nz-fprofile-correction)r,  rÀ   )r„   r.  s    €rT   rÀ   z GnuCompiler.get_profile_use_argsˆ  s"   ø€ Ý‰wŒw×+Ò+Ñ-Ô-Ð1GÐ0HÑHÐHrV   )r'  r(  )r/  r;   r<   r†   )r4  r;   r<   r†   )r8  r9  r<   r†   )r>  r;   r<   r—   )r>  r;   r<   rC  r  r  r  )
r÷   r†   rH   rÌ   rK  r;   rÑ   r;   r<   rL  )rè   r;   r<   r†   )rS  r;   rT  r†   r<   r†   r  r  )r  r  r  r  Úidr…   r3  r6  r=  rB  rE  r”   rœ   r¯   rP  rR  rV  ró   r#  r  rÀ   Ú__classcell__)r.  s   @rT   r&  r&  1  s»  ø€ € € € € ðð ð 
€BðXð Xð Xð Xð Xð Xð
ð ð ð ð
ð ð ð ð ð ðð ð ð ð&ð &ð &ð &ðð ð ð ð
9ð 9ð 9ð 9ðð ð ð ðð ð ð ð ð  ð  ð  ð&ð &ð &ð &ð
5ð 5ð 5ð 5ð 67ÀIð =ð =ð =ð =ð =ð =ð =ð =ð ð8ð 8ð 8ð 8ð 8ñ „[ð8ð
Ið Ið Ið Ið Ið Ið Ið Ið Ið IrV   r&  )r8   r9   r:   r;   r<   r=   )&Ú
__future__r   r  r!  rO   rX  rÝ   rÛ   r[   ÚtypingÚTr#   r   r   r   ÚTYPE_CHECKINGÚ_typingr	   Úenvironmentr
   Ú	compilersr   Úobjectr™   r�   rG  r¥   r³   r2  Úgnu_common_warning_argsÚgnu_c_warning_argsÚgnu_cpp_warning_argsÚgnu_objc_warning_argsr"  ri   ÚABCMetark   r&  rN   rV   rT   ú<module>rl     s•  ðð #Ð "Ð "Ð "Ð "Ð "à ?à 
€
€
€
Ø Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !à„?ð 	Ø0Ð0Ð0Ð0Ð0Ð0Ø*Ð*Ð*Ð*Ð*Ð*Ø$Ð$Ð$Ð$Ð$Ð$Ð$ð €Hð
 Øˆ&ðð Ð ð ØØØØØðð Ð ð Ø
ˆØ
ˆØ
ˆØ
ˆØ
ˆØ
ˆðð Ð ð ˆ9Øˆ9ØˆJØˆJØˆ[Øˆ\Øˆ\Øˆ9ØˆJØˆNð ð  Ð ð 	Ø&Ð'Ø(Ð)Ø$Ð%Ø*Ð+Ø+Ð-JÐKðð Ð ð (Ð(Ø+Ð,Ø)Ð*ðð €ð<]Øð ð ð ð]ð ð ð ð ð]ð& ð ð ð ð']ð2 Ø ðð3]ð8 Ø%Øðð9]ð@ ØððA]ðF ð ð ð ðG]ðR ð ð ð ðS]ð` Ø(ðða]ðf Ø$ððg]ðl Øððm]ðr ØØððs]ðz ð ð ð ð{]ðH ð ð ð ðI]ðV ØððW]ð\ ð ð ð ð]]ðh Ø Øðði]ðp ð ð ð ðq]ð ]Ð ðPð ð ð 	!Øðð
 	ðð 	'ððð Ð ð8ð ð ð 	!ðð 	ðð 	*ðð 	Øðð
 	$ððð ð ð
ð ð ð
ð ð ð 	Øðð
 	!Øððð ð ðð ð ðm;ð ;Ð ðF 	ðð 	 ðð 	Ø!ððð Ð ð €Ô˜TÐ"Ñ"Ô"ð#ð #ð #ñ #Ô"ð#ðL~Nð ~Nð ~Nð ~Nð ~N�h¨#¬+ð ~Nñ ~Nô ~Nð ~NðBXIð XIð XIð XIð XI�/ñ XIô XIð XIð XIð XIrV   