+
    UBib                      a  0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^RI	H
t
 ^RIHt ^RIHt ^RI
HtHtHt ^RIHt ^RIHtHtHt ^R	IHt ^R
IHt ]P6                  '       d0   ^RI	Ht ^RIHtHt ^RIH t  ^RI!H"t" ^RI#H$t$ ^RI%H&t& ^RI
H't' ]t(M])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//t*R"]+R#&   R$. R%. R&. R'R(.R). RGOR+. RHOR-R../t,R/]+R0&   R$. R%. R&. R'R1.R)R1R2.R+R1R2.R-R1./t-R/]+R3&   R$. R%R4.R&R5.R'R(.R)R*R6.R+R,R6.R-R7./t.R/]+R8&    ! R9 R:](4      t/ ! R; R<]4      t0 ! R= R>]4      t1 ! R? R@]]14      t2RA RB lt3 ! RC RD]/]14      t4 ! RE RF]/]14      t5R# )I    )annotationsN)mesonlib)CompilerArgs)RSPFileSyntax)EnvironmentExceptionversion_compare
is_windows)	OptionKey)clike_debug_argsCompilerCompileCheckMode)GnuCompiler)gnu_common_warning_args)	compilers)BuildTarget	DFeatures)
Dependency)MachineInfo)Environment)DynamicLinker)MachineChoicegccunittestz
-funittestdebugz-fdebugversionz	-fversion
import_dirz-Jllvmz	-unittestz-d-debugz
-d-versiondmdz-debugz-versionzT.Dict[str, T.Dict[str, str]]d_feature_argsplain0g1z-O12-O23-O3sz-OzT.Dict[str, T.List[str]]ldc_optimization_argsz-Oz-inlinedmd_optimization_argsz-O0z-Ogz-finline-functionsz-Osgdc_optimization_argsc                    a a ] tR t^\t0 o$ RtR R lt]P                  '       d   / tR]	R&   R R lt
RtR	 R
 ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR:R' V 3R( lllt]R) R* l4       t]R+ R, l4       t]R- R. l4       t]R;R/ R0 ll4       t R1 R2 lt!R3 R4 lt"R5 V 3R6 llt#R7 R8 lt$R9t%V ;t&# )<DmdLikeCompilerMixinzMixin class for DMD and LDC.

LDC has a number of DMD like arguments, and this class allows for code
sharing between them as makes sense.
c                   V ^8  d   QhRR/# )   dmd_frontend_versionT.Optional[str] )formats   ";/usr/lib/python3.14/site-packages/mesonbuild/compilers/d.py__annotate__!DmdLikeCompilerMixin.__annotate__d   s     W W_ W    c                	B    Vf
   RV n         R # \        VR4      V n         R # )NFz	>=2.095.0)_dmd_has_depfiler   )selfr1   s   &&r5   __init__DmdLikeCompilerMixin.__init__d   s"    '$)D! %44H+$VD!r8   r)   
mscrt_argsc                   V ^8  d   QhRR/# r0   returnT.List[str]r3   )r4   s   "r5   r6   r7   n   s    ;;;;r8   c                	    R # Nr3   r;   s   &r5   _get_target_arch_args*DmdLikeCompilerMixin._get_target_arch_argsn   s    r8   -L=c                    V ^8  d   QhRRRR/# r0   
outputnamestrrA   rB   r3   )r4   s   "r5   r6   r7   r   s     % %# %+ %r8   c                	    R V,           .# z-of=r3   r;   rK   s   &&r5   get_output_args$DmdLikeCompilerMixin.get_output_argsr       #$$r8   c                    V ^8  d   QhRRRR/# rJ   r3   )r4   s   "r5   r6   r7   u   s     % % % %r8   c                	    R V,           .# rN   r3   rO   s   &&r5   get_linker_output_args+DmdLikeCompilerMixin.get_linker_output_argsu   rR   r8   c               $    V ^8  d   QhRRRRRR/# )r0   pathrL   	is_systemboolrA   rB   r3   )r4   s   "r5   r6   r7   x   s!      S T k r8   c                	(    VR 8X  d   RpRV,           .# ) .-I=r3   )r;   rX   rY   s   &&&r5   get_include_args%DmdLikeCompilerMixin.get_include_argsx   s    2:D~r8   c               $    V ^8  d   QhRRRRRR/# r0   parameter_listrB   	build_dirrL   rA   r3   )r4   s   "r5   r6   r7   }   s#      [ :=BMr8   c           	     	@   \        V4       EF  w  r4VR ,          R8X  dT   VR ,          \        P                  P                  \        P                  P	                  W$R,          4      4      ,           W&   VR,          R8X  dT   VR,          \        P                  P                  \        P                  P	                  W$R,          4      4      ,           W&   VR,          R8X  dT   VR,          \        P                  P                  \        P                  P	                  W$R,          4      4      ,           W&   VR	,          R
8X  g   EK:  VR	,          \        P                  P                  \        P                  P	                  W$R,          4      4      ,           W&   EK  	  V# ):N   Nr^   rf   NN:N   Nz-L-L:rh   NN:N   Nz-L=-L:ri   NN:N   Nz-Wl,-L:rj   NN	enumerateosrX   normpathjoinr;   rc   rd   idxis   &&&  r5   &compute_parameters_with_absolute_paths;DmdLikeCompilerMixin.compute_parameters_with_absolute_paths}   s   /FCu~&'ebgg.>.>rww||IY[W\?].^&^#u&'ebgg.>.>rww||IY[W\?].^&^#u&'ebgg.>.>rww||IY[W\?].^&^#u &'ebgg.>.>rww||IY[W\?].^&^# 0 r8   c                    V ^8  d   QhRRRR/# r0   levelrL   rA   rB   r3   )r4   s   "r5   r6   r7      s      3 ; r8   c                	    R .# )-wir3   r;   rw   s   &&r5   get_warn_args"DmdLikeCompilerMixin.get_warn_args   s	    wr8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   r7      s       r8   c                	    R .# )z-wr3   rE   s   &r5   get_werror_args$DmdLikeCompilerMixin.get_werror_args   	    vr8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   r7      s      ; r8   c                	    R .# )z-covr3   rE   s   &r5   get_coverage_args&DmdLikeCompilerMixin.get_coverage_args   s	    xr8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   r7      s       r8   c                	    . # rD   r3   rE   s   &r5   get_coverage_link_args+DmdLikeCompilerMixin.get_coverage_link_args       	r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   r7      s      + r8   c                	    R .# )z-Er3   rE   s   &r5   get_preprocess_only_args-DmdLikeCompilerMixin.get_preprocess_only_args   r   r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   r7      s      { r8   c                	    R .# )z-cr3   rE   s   &r5   get_compile_only_args*DmdLikeCompilerMixin.get_compile_only_args   r   r8   c                   V ^8  d   QhRR/# r0   rA   rL   r3   )r4   s   "r5   r6   r7            C r8   c                	    R # depsr3   rE   s   &r5   get_depfile_suffix'DmdLikeCompilerMixin.get_depfile_suffix       r8   c               $    V ^8  d   QhRRRRRR/# r0   	outtargetrL   outfilerA   rB   r3   )r4   s   "r5   r6   r7      !       s { r8   c                	6    V P                   '       d   R V 2.# . # )z
-makedeps=r:   )r;   r   r   s   &&&r5   get_dependency_gen_args,DmdLikeCompilerMixin.get_dependency_gen_args   s#        	*++	r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   r7            k r8   c                	L    V P                   P                  4       '       d   . # R .# z-fPICinfor	   rE   s   &r5   get_pic_args!DmdLikeCompilerMixin.get_pic_args   "    99!!Iyr8   c                    V ^8  d   QhRRRR/# r0   optimization_levelrL   rA   rB   r3   )r4   s   "r5   r6   r7            S [ r8   c                	4    VR 8w  d   V P                  4       # . # r    rF   r;   r   s   &&r5   get_optimization_link_args/DmdLikeCompilerMixin.get_optimization_link_args       (--//	r8   c                    V ^8  d   QhRRRR/# )r0   
implibnamerL   rA   rB   r3   )r4   s   "r5   r6   r7      s     ; ;# ;+ ;r8   c                	8    V P                   P                  V4      # rD   )linkerimport_library_args)r;   r   s   &&r5   gen_import_library_args,DmdLikeCompilerMixin.gen_import_library_args   s    {{..z::r8   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r0   rd   rL   from_dirtargetr   extra_pathsT.Optional[T.List[str]]rA   z"T.Tuple[T.List[str], T.Set[bytes]]r3   )r4   s   "r5   r6   r7      s1     ) )# ) )k )&=)@)r8   c                	  < V P                   P                  4       '       d   . \        4       3# V P                  P                  P                  R 4      '       d   . p\        SV `  WV4      w  rgV Fe  pRV9   dK   VP                  R^R7      w  rVP                  V	4       VP                  V P                  V
,           4       KT  VP                  V4       Kg  	  WW3# \        SV `  WV4      # )ld,maxsplit)r   r	   setr   id
startswithsuperbuild_rpath_argssplitappendLINKER_PREFIX)r;   rd   r   r   r   args
rpath_argsrpath_dirs_to_removerab	__class__s   &&&&&      r5   r   %DmdLikeCompilerMixin.build_rpath_args   s     99!!; ;;>>$$T** !#D161I21.Z!877373DAKKNKK 2 2Q 67KKN   //w') 	)r8   c               (    V ^8  d   QhRRRRRRRR/# r0   r   rB   r   r   link_idrL   rA   r3   )r4   s   "r5   r6   r7      s0     | |[ | |VY |^i |r8   c                	   . pR p. ROpV EFO  p. pVP                  4       '       d   V P                  V4      pM'VP                  4       '       d   V P                  V4      pV'       d   VP	                  V4       Kp  VR8X  d   Ky  VP                  R4      '       d   K  VP                  R4      '       d!   VR8X  g   VP                  R4      '       g   K  VP                  R4      '       d\   WwP                  R4      ^,           R P                  R4      p	V	 F)  p
VP                  RV
P                  4       ,           4       K+  	  EK;  VP                  R4      '       d   VP                  V4       EKf  VP                  R4      '       d   VP                  RV,           4       EK  VP                  R	4      '       dZ   VP                  R
4      '       d!   VP                  RVR,          ,           4       MVP                  RVR,          ,           4       EK  VP                  R4      '       dZ   VP                  R4      '       d!   VP                  RVR,          ,           4       MVP                  RVR,          ,           4       EKx  VP                  R4      '       Edf   VP                  R4      '       d   VR,          pM	VR,          pV'       d   VP                  V4       R pEK  W9   d   RpVP                  R4      '       g   VP                  R4      '       d   VP                  V4       EK"  VP                  4       '       d3   VR8X  d,   VP                  R4      '       d   VP                  V4       EKj  VP                  R4      '       g   VP                  R4      '       dC   \        V4      ^ 8  d3   VP                  R4      '       g   VP                  RV,           4       EK  VP                  RV,           4       EK  VP                  R4      '       g3   VP                  R 4      '       d   VP                  RV,           4       EK>  VP                  V4       EKR  	  V# )!Fz-pthreadz-fstack-protectorz-D-Wl,r   NrH   z-lz-isystemz	-isystem=r^   :	   NN-I:   NNz
-idirafterz-idirafter=:   NN
   NN-Lrg   r0   NNT-@link/.a.lib)z-rpathz-rpath-linkz-sonamez-compatibility_versionz-current_version)z-Ddz-Df)z-link-defaultlibz-linkerz-link-internallyz-linkonce-templatesz-lib)r   r   )r	   translate_arg_to_windows	is_darwin_translate_arg_to_osxextendr   indexr   r   stripendswithlen)clsr   r   r   dcargslink_expect_arglink_flags_with_argargosargslinkargslasuffixs   &&&&        r5   _translate_args_to_nongnu.DmdLikeCompilerMixin._translate_args_to_nongnu   sL    !  
 C"$F  55c:!!2237f% j ~~122~~d##SD[CNN><Z<Z ~~f%%yy~12399#>"BMM%"((*"45 # rss c"%%eck*
++ >>+..MM%#b'/2MM$R.1-->>-00MM%#c("23MM$S/2%%  >>%(( WF WF" MM#&&+O0&*O$$S))V->->s-C-CMM#& ??$$F):v?P?PQT?U?UMM#& <<%%f)=)=6{Qv/@/@/E/Eefn5 eck*^^C((S\\.-I-Ieck*c"] ` r8   c                    V ^8  d   QhRRRR/# r0   r   rL   rA   rB   r3   )r4   s   "r5   r6   r7   L  s      3 ; r8   c                	`   . pVP                  R 4      '       d{   WP                  R4      ^,           R P                  R4      pV FI  pVP                  R4      '       g   K  VP                  RVR,          P	                  4       ,           4       KK  	  V# VP                  R4      '       d   VP                  V4       VR,          P                  4       pV \        J dR   VR8w  d#   VP                  R	4       VP                  R
4       VP                  R4      '       d   VP                  R4       V# )r   r   Nz--out-implib=z-L=/IMPLIB::   NN
-mscrtlib=r   libcmtz-L=/NODEFAULTLIB:libcmtz-L=/NODEFAULTLIB:libvcruntimemsvcrtz+-L=/DEFAULTLIB:legacy_stdio_definitions.lib)r   r   r   r   r   lowerLLVMDCompiler)r   r   r   r   r   mscrtlibs   &&    r5   r   -DmdLikeCompilerMixin.translate_arg_to_windowsK  s    >>&!!99S>A-./55c:H==11KK3 ?@ $  ^^L))KK3x~~'Hm# x'KK 9:KK ?@ &&x00KK MNr8   c                    V ^8  d   QhRRRR/# r  r3   )r4   s   "r5   r6   r7   f  s        r8   c                	h    . pVP                  R 4      '       d   VP                  RV,           4       V# )z-install_namerH   )r   r   )r   r   r   s   && r5   r   *DmdLikeCompilerMixin._translate_arg_to_osxe  s+    >>/**KK$r8   c               (    V ^8  d   QhRRRRRRRR/# r   r3   )r4   s   "r5   r6   r7   m  s0     B B B; BQT B^i Br8   c                	&    V P                  WV4      # rD   )r   )r   r   r   r   s   &&&&r5   _unix_args_to_native)DmdLikeCompilerMixin._unix_args_to_nativel  s    ,,TAAr8   c                    V ^8  d   QhRRRR/# )r0   is_debugrZ   rA   rB   r3   )r4   s   "r5   r6   r7   p  s     8 8t 8 8r8   c                	|    . pV'       d    \         V P                  ,          R ,          .p\        V,          V,           # )r   )r   r   r   )r;   r  ddebug_argss   && r5   get_debug_args#DmdLikeCompilerMixin.get_debug_argsp  s0    )$''27;<K)K77r8   c               $    V ^8  d   QhRRRRRR/# r0   crt_valrL   	buildtyperA   rB   r3   )r4   s   "r5   r6   r7   w  s&     E ES ES E[ Er8   c                	    V P                   P                  4       '       g   . # V P                  V P                  W4      ,          # rD   )r   r	   r>   get_crt_valr;   r  r  s   &&&r5   _get_crt_args"DmdLikeCompilerMixin._get_crt_argsw  s4    yy##%%It//CDDr8   c               0    V ^8  d   QhRRRRRRRRRRRR	/# )
r0   prefixrL   
shlib_namer   	soversiondarwin_versionszT.Tuple[str, str]rA   rB   r3   )r4   s   "r5   r6   r7   |  s9      c s C TW ):?Jr8   c                	B  < \         SV `  WW4V4      p. pV P                  P                  P	                  R 4      '       dT   V FK  pVP                  R^R7      w  rVP                  V	4       VP                  V P                  V
,           4       KM  	  V# V P                  P                  P	                  R4      '       db   V FY  pVP	                  V P                  4      '       g%   VP                  V P                  V,           4       KH  VP                  V4       K[  	  V# V# )zld.r   r   ld64)r   get_soname_argsr   r   r   r   r   r   )r;   r"  r#  r   r$  r%  sargssoargsr   r   r   r   s   &&&&&&     r5   r(  $DmdLikeCompilerMixin.get_soname_args|  s    'F_ !;;>>$$U++yyqy1a d00145  M[[^^&&v..~~d&8&899MM$"4"4s":;MM#&	 
 MLr8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   r7     s     	 	{ 	r8   c                	    V P                   P                  4       pV P                  P                  4       '       d!   V Uu. uF  q"P	                  R R4      NK  	  ppV# u upi )rH   z	-Xcc=-Wl,)r   get_allow_undefined_argsr   r   replace)r;   r   r   s   &  r5   get_allow_undefined_link_args2DmdLikeCompilerMixin.get_allow_undefined_link_args  sR    {{33599   <@@4aIIe[14D@ As   Ar   rD   )r\   )'__name__
__module____qualname____firstlineno____doc__r<   TTYPE_CHECKINGr>   __annotations__rF   r   rP   rU   r_   rs   r{   r   r   r   r   r   r   r   r   r   r   r   classmethodr   r   r   r  r  r  r(  r0  __static_attributes____classcell__)r   __conditional_annotations__s   @@r5   r.   r.   \   s     W 	/1
,1;M%%



;) )4 | ||  2   B B8E
 .	 	r8   r.   c                      ] tR tRtRtRtRtR# )DCompilerArgsi  r3   N)r   r   )r   )r2  r3  r4  r5  prepend_prefixesdedup2_prefixesr;  r3   r8   r5   r?  r?    s    #Or8   r?  c            
      Z  a  ] tR tRtRR.RR.RR.RR	.R
R./tRtRRRR/R V 3R llltR R ltR R ltR R lt	R R lt
R R ltR R ltR7R R lltR  R! ltR" R# ltR$ R% ltR& R' ltR7R( R) lltR8R* V 3R+ llltR,RR-R/R. R/ lltR,RR-R/R0 R1 lltR,RR-RR2R3/R4 R5 lltR6tV ;t# )9	DCompileri  noner  mdz-mscrtlib=msvcrtmddz-mscrtlib=msvcrtdmtz-mscrtlib=libcmtmtdz-mscrtlib=libcmtddr   Nfull_versionc               4    V ^8  d   QhRRRRRRRRR	RR
RRR/# r0   exelistrB   r   rL   for_machiner   envr   archr   T.Optional['DynamicLinker']rJ  r2   r3   )r4   s   "r5   r6   DCompiler.__annotate__  sC       c  !),4  /r8   c          
     	<   < \         SV `  . WW4VVR 7       WPn        R# )r   rJ  N)r   r<   rP  )	r;   rM  r   rN  rO  rP  r   rJ  r   s	   &&&&&&$$r5   r<   DCompiler.__init__  s'     	W{&2 	 	4	r8   c                    V ^8  d   QhRRRR/# )r0   work_dirrL   rA   Noner3   )r4   s   "r5   r6   rR    s     D DS DT Dr8   c                	   \         P                  P                  VR 4      p\         P                  P                  VR4      p\        VRRR7      ;_uu_ 4       pVP	                  R4       RRR4       V P
                  V P                  V4      ,           V P                  4       ,           V.,           pV P                  '       d7   V P                  P                  4       '       g   WPP                  4       ,          p\        P                  ! WQR7      pVP                  4        VP                  ^ 8w  d!   \!        RV P#                  4       ,          4      hV P%                  V.V4      w  rxR#   + '       g   i     EL; i)	zsanity.ddtestwzutf-8)encodingzvoid main() { }N)cwdz&D compiler %s cannot compile programs.)rm   rX   ro   openwriterM  rP   rF   is_crossenvironmenthas_exe_wrapperr   
subprocessPopenwait
returncoder   name_stringrun_sanity_check)	r;   rW  source_nameoutput_nameofilecompile_cmdlistpcstdostdes	   &&       r5   sanity_checkDCompiler.sanity_check  s   ggll8Z8ggll8W5+sW55KK-. 6 ,,)=)=k)JJTMgMgMiimxlyy ===!1!1!A!A!C!C99;;Oo<
	==A&'ORVRbRbRd'dee**K=(C
d 655s   E''E8	c                   V ^8  d   QhRR/# r0   rA   rZ   r3   )r4   s   "r5   r6   rR    s      T r8   c                	    R # )Tr3   rE   s   &r5   needs_static_linkerDCompiler.needs_static_linker  s    r8   c                   V ^8  d   QhRR/# r   r3   )r4   s   "r5   r6   rR    r   r8   c                	    R # r   r3   rE   s   &r5   r   DCompiler.get_depfile_suffix  r   r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   rR    r   r8   c                	L    V P                   P                  4       '       d   . # R .# r   r   rE   s   &r5   r   DCompiler.get_pic_args  r   r8   c               $    V ^8  d   QhRRRRRR/# )r0   kwargsr   build_to_srcrL   rA   rB   r3   )r4   s   "r5   r6   rR    s!     < <y < < <r8   c                	~   . p\         V P                  ,          R ,          pV'       g!   \        RV P                  4       ,          4      hVR ,          '       d   VP	                  V4       Rp\         V P                  ,          R,          pV'       g!   \        RV P                  4       ,          4      hVR,           F  p\        V\        4      '       d   \        WW4      pK&  \        V\        4      '       d.   VP                  4       '       d   \        V\        V4      4      pKi  VP	                  V RV 24       K  	  V^ 8  d   VP	                  V RV 24       Rp\         V P                  ,          R,          p	V	'       g!   \        RV P                  4       ,          4      hVR,           F  p
\        V
\        4      '       d   \        W4      pK&  \        V
\        4      '       d.   V
P                  4       '       d   \        V\        V
4      4      pKi  VP	                  V	 RV
 24       K  	  V^ 8  d   VP	                  V	 RV 24       \         V P                  ,          R,          pV'       g!   \        R	V P                  4       ,          4      hVR
,           F  pVP                  4       pVP                  4        Fx  p\        P                  P                  W4      pVR9  d   TpMTp\        P                  P                  VV4      pVP	                  V V 24       VP	                  V V 24       Kz  	  K  	  V# )r   z6D compiler %s does not support the "unittest" feature.r   z=D compiler %s does not support conditional debug identifiers.=r   z?D compiler %s does not support conditional version identifiers.versionsr   zGD compiler %s does not support the "string import directories" feature.import_dirs)r\   r]   )r   r   r   rg  r   
isinstanceintmaxrL   isdigit
get_curdirget_incdirsrm   rX   ro   )r;   r~  r  resunittest_argdebug_level	debug_argrI  version_levelversion_argvimport_dir_argidir_objbasediridir
bldtreedirexpdir
srctreedirs   &&&               r5   get_feature_argsDCompiler.get_feature_args  s   %dgg.z:&'_bfbrbrbt'tuu*JJ|$"477+G4	&'fimiyiyi{'{|| A!S!!!+1As##		!+s1v6

i[!-. ! !JJ)Ak]34$TWW-i8&'hkok{k{k}'}~~ 
##A!S!! #M 5As##		 #M3q6 :

k]!A3/0 $ AJJ+a78'0>&'psw  tD  tD  tF  (F  G  G }--H))+G ,,.WW\\'8
y('F$FWW\\,?


n-j\:;

n-j\:; / . 
r8   c                    V ^8  d   QhRRRR/# r   r3   )r4   s   "r5   r6   rR    r   r8   c                	4    VR 8w  d   V P                  4       # . # r   r   r   s   &&r5   r   $DCompiler.get_optimization_link_args  r   r8   c                    V ^8  d   QhRRRR/# )r0   r   zT.Optional[T.Iterable[str]]rA   r?  r3   )r4   s   "r5   r6   rR    s     ) )"= ) )r8   c                	    \        W4      # rD   )r?  r;   r   s   &&r5   compiler_argsDCompiler.compiler_args  s    T((r8   c                    V ^8  d   QhRRRR/# )r0   r   rB   rA   T.Tuple[bool, bool]r3   )r4   s   "r5   r6   rR    s     : : :8K :r8   c                	(    V P                  R VR7      # )zint i;
)
extra_args)compilesr  s   &&r5   has_multi_argumentsDCompiler.has_multi_arguments  s    }}ZD}99r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   rR         	 	{ 	r8   c                	    V P                   P                  4       '       d;   V P                  '       d   R V P                   R2.# V P                  R8X  d   R.# R.# . # )z	-mtriple=z-windows-msvcx86_64-m64-m32)r   r	   r`  rP  rE   s   &r5   rF   DCompiler._get_target_arch_args  sU     99!!}}}#DII;m<==h&x8O	r8   c               $    V ^8  d   QhRRRRRR/# r  r3   )r4   s   "r5   r6   rR  )  s!      C C K r8   c                	    . # rD   r3   r  s   &&&r5   get_crt_compile_argsDCompiler.get_crt_compile_args)  r   r8   c               $    V ^8  d   QhRRRRRR/# r  r3   )r4   s   "r5   r6   rR  ,  s!         r8   c                	    . # rD   r3   r  s   &&&r5   get_crt_link_argsDCompiler.get_crt_link_args,  r   r8   c                    V ^8  d   QhRRRR/# )r0   r  GT.Union[T.List[str], T.Callable[[CompileCheckMode], T.List[str]], None]rA   rB   r3   )r4   s   "r5   r6   rR  /  s      	 	2y 	  FQ 	r8   c                	$   V P                  4       pV'       dx   \        V4      '       d   V! \        P                  4      p\	        V\
        4      '       d   VP                  V4       V# \	        V\        4      '       d   VP                  V4       V# rD   )	rF   callabler   COMPILEr  listr   rL   r   )r;   r  r   s   && r5   _get_compile_extra_args!DCompiler._get_compile_extra_args/  so    ))+
##'(8(@(@A
*d++J'  J,,J'r8   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r0   codez'mesonlib.FileOrString'r  r  dependencies T.Optional[T.List['Dependency']]run_envzT.Optional[T.Dict[str, str]]run_cwdr2   rA   zcompilers.RunResultr3   )r4   s   "r5   r6   rR  :  sK     M M/ M_M:M 2M %	M 1D	Mr8   c                	H   < V P                  V4      p\        SV `	  WW4V4      # rD   )r  r   run)r;   r  r  r  r  r  r   s   &&&&&&r5   r  DCompiler.run:  s(    
 11*=
w{4\GLLr8   r  r  c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r0   typenamerL   r"  r  zGT.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]]r  r  rA   T.Tuple[int, bool]r3   )r4   s   "r5   r6   rR  B  s2     + +s +C +b+=+I[+r8   c               	    Vf   . pRV RV R2pV P                  WSVR7      pVP                  '       g   R# VP                  ^ 8w  d   \        P                  ! R4      h\        VP                  4      VP                  3# )N-
        import std.stdio : writeln;
        ,
        void main() {
            writeln((z).sizeof);
        }
        r  r  z!Could not run sizeof test binary.)r  F)
cached_runcompiledrf  r   r   r  stdoutcached)r;   r  r"  r  r  tr  s   &&&$$  r5   sizeofDCompiler.sizeofB  s     J		 Z  		 ooa+7  9|||>>Q//0STT3::

**r8   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r0   r  rL   r"  r  r   r  r  rA   r  r3   )r4   s   "r5   r6   rR  V  s2     ! !# !s !5! @!L^!r8   c               	j   Vf   . pRV RV R2pV P                  WSVR7      pVP                  '       g   \        P                  ! R4      hVP                  ^ 8w  d   \        P                  ! R4      h\        VP                  4      pV^ 8X  d   \        P                  ! RV R24      hWvP                  3# )	Nr  r  z).alignof);
        }
        r  z!Could not compile alignment test.z$Could not run alignment test binary.z!Could not determine alignment of z&. Sorry. You might want to file a bug.)r  r  r   r   rf  r  r  r  )r;   r  r"  r  r  r  r  aligns   &&&$$   r5   	alignmentDCompiler.alignmentV  s     J		 Z  		 hhqlhK|||//0STT>>Q//0VWWCJJA://2ST\S]  ^D  1E  F  Fjj  r8   disable_cacheFc               0    V ^8  d   QhRRRRRRRRRR	R
R/# )r0   hnamerL   r"  r  zIT.Union[None, T.List[str], T.Callable[['CompileCheckMode'], T.List[str]]]r  r  r  rZ   rA   r  r3   )r4   s   "r5   r6   rR  l  sG     
t 
t 
tS 
th
t!A
t #'
t 4G
tr8   c               	z    V P                  V4      pV R V R2pV P                  WcV\        P                  VR7      # )z
        import z
;
        )r  r  moder  )r  r  r   r  )r;   r  r"  r  r  r  r  s   &&&$$$ r5   
has_headerDCompiler.has_headerl  sZ    
 11*=
8 w 	 }}T*6=M=U=Uer  t 	tr8   )rP  rD   )NNNN)r2  r3  r4  r5  r>   languager<   rp  ru  r   r   r  r   r  r  rF   r  r  r  r  r  r  r  r;  r<  r   s   @r5   rC  rC    s    !"#$!"#$J H7; 26 D&
<|
):		M M+ei+@D+(!8<!CG!,
tko
tDH
t */
t 
tr8   rC  c                     a  ] tR tRt]P
                  tRtRRRR/R R lltR V 3R	 lltR
 V 3R llt	R R lt
R R ltR R ltR R ltR V 3R lltR R ltRtV ;t# )GnuDCompilerix  r   r   NrJ  c               4    V ^8  d   QhRRRRRRRRR	RR
RRR/# rL  r3   )r4   s   "r5   r6   GnuDCompiler.__annotate__~  sL     H H Hc H H!H),H4H  /Hr8   c               	   \         P                  WW#WEWgR 7       \        P                  ! V / 4       RR.pR. RVRVR.,           RVRR.,           R	VRR.,           V P                  \        4      ,           /V n        R U	u0 uF  p	\        V	4      kK  	  up	V n        \        V P                  R
4      V n
        \        V P                  R4      V n        R# u up	i )rT  z-Wallz-Wdeprecatedr!   r#   r$   z-Wextrar&   z
-Wpedantic
everythingz>=4.9z>=7.1N)
b_colorout
b_sanitizeb_staticpicb_vscrt
b_coverageb_pgob_ndebug)rC  r<   r   supported_warn_argsr   	warn_argsr
   base_optionsr   r   _has_color_support_has_deps_support)
r;   rM  r   rN  rO  rP  r   rJ  default_warn_argsos
   &&&&&&$$  r5   r<   GnuDCompiler.__init__~  s     	4'"( 	 	ET2&$n5r00I;>0I|3LL&):i=V)V)-)A)ABY)Z*[	]#01#0QIaL #01
 #2$,,"H "1w!G1s   >Cc                    V ^8  d   QhRRRR/# r0   	colortyperL   rA   rB   r3   )r4   s   "r5   r6   r          3 ; r8   c                	J   < V P                   '       d   \        SV `	  V4       . # rD   )r  r   get_colorout_args)r;   r  r   s   &&r5   r   GnuDCompiler.get_colorout_args  s!    """G%i0	r8   c               $    V ^8  d   QhRRRRRR/# r   r3   )r4   s   "r5   r6   r    r   r8   c                	J   < V P                   '       d   \        SV `	  W4      # . # rD   )r  r   r   )r;   r   r   r   s   &&&r5   r   $GnuDCompiler.get_dependency_gen_args  s$    !!!729FF	r8   c                    V ^8  d   QhRRRR/# rv   r3   )r4   s   "r5   r6   r    s     % %3 %; %r8   c                	(    V P                   V,          # rD   )r  rz   s   &&r5   r{   GnuDCompiler.get_warn_args  s    ~~e$$r8   c                    V ^8  d   QhRRRR/# r   r3   )r4   s   "r5   r6   r    s     9 9 9 9r8   c                	    \         V,          # rD   )r,   r   s   &&r5   get_optimization_args"GnuDCompiler.get_optimization_args  s    $%788r8   c               $    V ^8  d   QhRRRRRR/# rb   r3   )r4   s   "r5   r6   r    s#      [ :=BMr8   c           	     	   \        V4       Fv  w  r4VR ,          R8X  g   VR ,          R8X  g   K#  VR ,          \        P                  P                  \        P                  P	                  W$R,          4      4      ,           W&   Kx  	  V# ):Nr0   Nr   r   r   rk   rp   s   &&&  r5   rs   3GnuDCompiler.compute_parameters_with_absolute_paths  sc    /FCu}"&'ebgg.>.>rww||IY[W\?].^&^# 0 r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   r    s     6 6{ 6r8   c                	6    V P                   P                  4       # rD   )r   r.  rE   s   &r5   r0  *GnuDCompiler.get_allow_undefined_link_args  s    {{3355r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   r    s     , , ,r8   c                	x   < \         SV `  4       pV P                  P                  4       '       d   V# VR .,           # )z-shared-libphobosr   get_linker_always_argsr   r	   r;   r   r   s   & r5   r  #GnuDCompiler.get_linker_always_args  s7    w-/99!!K*+++r8   c                    V ^8  d   QhRRRR/# r0   disablerZ   rA   rB   r3   )r4   s   "r5   r6   r          t  r8   c                	    V'       d   R .# . # )z	-freleaser3   r;   r  s   &&r5   get_assert_argsGnuDCompiler.get_assert_args      = 	r8   )r  r  r  r  )r2  r3  r4  r5  r   r   r   r<   r   r   r{   r
  rs   r0  r  r  r;  r<  r  s   @r5   r  r  x  sk      --M	BH7;H 26H2 
 
%96, , r8   r  c                    V ^8  d   QhRRRR/# )r0   version_outputr2   rA   r3   )r4   s   "r5   r6   r6     s      / o r8   c                r    V f   R # \         P                  ! RV 4      pV'       d   VP                  ^4      # R # )NzDMD v(\d+\.\d+\.\d+))researchgroup)r"  version_regexs   & r5   find_ldc_dmd_frontend_versionr(    s3    II5~FM""1%%r8   c                     a  ] tR tRtRtRRRRRR/R R lltR	 R
 ltR R ltR R ltR R lt	R R lt
R R lt]R R l4       tR V 3R lltR R ltR R ltRtV ;t# )r  i  r   r   NrJ  r"  c               8    V ^8  d   QhRRRRRRRRR	RR
RRRRR/# )r0   rM  rB   r   rL   rN  r   rO  r   rP  r   rQ  rJ  r2   r"  r3   )r4   s   "r5   r6   LLVMDCompiler.__annotate__  sW     h h hc h h!h),h4h  /h "1	hr8   c               	    \         P                  WW#WEWgR 7       \        P                  V \        V4      R7       R U	u0 uF  p	\	        V	4      kK  	  up	V n        R# u up	i )rT  )r1   Nr  r  r  r  )rC  r<   r.   r(  r
   r  )
r;   rM  r   rN  rO  rP  r   rJ  r"  r  s
   &&&&&&$$$ r5   r<   LLVMDCompiler.__init__  s[    
 	4'"( 	 	E%%dA^_mAn%o3fg3faYq\3fggs   Ac                    V ^8  d   QhRRRR/# r  r3   )r4   s   "r5   r6   r+    r  r8   c                	    VR 8X  d   R.# . # )alwaysz-enable-colorr3   r;   r  s   &&r5   r   LLVMDCompiler.get_colorout_args  s     #$$	r8   c                    V ^8  d   QhRRRR/# rv   r3   )r4   s   "r5   r6   r+    s      3 ; r8   c                	0    VR9   d   RR.# VR8X  d   R.# . # )r$   ry   z-dwr#   >   r$   r&   r3   rz   s   &&r5   r{   LLVMDCompiler.get_warn_args  s'    J5>!c\7N	r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   r+    s     ) )k )r8   c                	    R .# )z-relocation-model=picr3   rE   s   &r5   r   LLVMDCompiler.get_pic_args  s    '((r8   c               $    V ^8  d   QhRRRRRR/# r  r3   )r4   s   "r5   r6   r+    s!     6 6 6 6 6r8   c                	$    V P                  W4      # rD   r  r  s   &&&r5   r  LLVMDCompiler.get_crt_link_args      !!'55r8   c                    V ^8  d   QhRRRR/# r0   r   rB   rA   r3   )r4   s   "r5   r6   r+         J J J Jr8   c                	b    V P                  WP                  V P                  P                  4      # rD   r  r   r   r   r  s   &&r5   unix_args_to_native!LLVMDCompiler.unix_args_to_native  !    ((yy$++..IIr8   c                    V ^8  d   QhRRRR/# r   r3   )r4   s   "r5   r6   r+         9 9 9 9r8   c                	n    VR 8w  d#   V P                  4       \        V,          ,           # \        V,          # r   )rF   r*   r   s   &&r5   r
  #LLVMDCompiler.get_optimization_args  1    (--/2GHZ2[[[$%788r8   c               $    V ^8  d   QhRRRRRR/# )r0   r   rL   r   rA   rB   r3   )r4   s   "r5   r6   r+    s!     % %S %3 %; %r8   c                	    R V 2.# )z-linker=r3   )r   r   r   s   &&&r5   use_linker_argsLLVMDCompiler.use_linker_args  s    6(#$$r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   r+    s     2 2 2r8   c                	x   < \         SV `  4       pV P                  P                  4       '       d   V# VR .,           # )z-link-defaultlib-sharedr  r  s   & r5   r  $LLVMDCompiler.get_linker_always_args  s7    w-/99!!K0111r8   c                    V ^8  d   QhRRRR/# r  r3   )r4   s   "r5   r6   r+    r  r8   c                	    V'       d   R .# . # )z	--releaser3   r  s   &&r5   r  LLVMDCompiler.get_assert_args  r   r8   c                   V ^8  d   QhRR/# r0   rA   r   r3   )r4   s   "r5   r6   r+    s     I I Ir8   c                	b    \        4       '       d   \        P                  # \        P                  # rD   )r	   r   MSVCGCCrE   s   &r5   rsp_file_syntaxLLVMDCompiler.rsp_file_syntax  s!     &0\\}!!H}7H7HHr8   r  )r2  r3  r4  r5  r   r<   r   r{   r   r  rD  r
  r:  rN  r  r  r[  r;  r<  r  s   @r5   r  r    s{    	Bh7;h 26h 48	h
)6J9
 % %2 2
I Ir8   r  c                     a  ] tR tRtRtRRRR/R R lltR R	 ltR
 R ltR R ltR R lt	R R lt
R R ltR R ltR R ltR V 3R lltR R ltR R ltRtV ;t# )DmdDCompileri	  r   r   NrJ  c               4    V ^8  d   QhRRRRRRRRR	RR
RRR/# rL  r3   )r4   s   "r5   r6   DmdDCompiler.__annotate__  sL     h h hc h h!h),h4h  /hr8   c               	    \         P                  WW#WEWgR 7       \        P                  W4       R Uu0 uF  p\        V4      kK  	  upV n        R# u upi )rT  Nr-  )rC  r<   r.   r
   r  )	r;   rM  r   rN  rO  rP  r   rJ  r  s	   &&&&&&$$ r5   r<   DmdDCompiler.__init__  sO     	4'"( 	 	E%%d43fg3faYq\3fggs   Ac                    V ^8  d   QhRRRR/# r  r3   )r4   s   "r5   r6   ra    r  r8   c                	    VR 8X  d   R.# . # )r1  z	-color=onr3   r2  s   &&r5   r   DmdDCompiler.get_colorout_args  s     = 	r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   ra    r  r8   c                	    V P                   P                  4       '       d,   V P                  R 8X  d   R.# V P                  R8X  d   R.# R.# . # )r  phobos64.lib
x86_mscoffphobos32mscoff.lib
phobos.libr   r	   rP  rE   s   &r5   get_std_exe_link_args"DmdDCompiler.get_std_exe_link_args  sN    99!! yyH$&''l*,-- >!	r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   ra  &  s     	5 	5k 	5r8   c                	    R pV P                   P                  4       '       d+   V P                  R8X  d   RpMV P                  R8X  d   RpMRpRRV,           .# )zlibphobos2.sor  ri  rj  rk  rl  z-sharedz-defaultlib=rm  )r;   libnames   & r5   get_std_shared_lib_link_args)DmdDCompiler.get_std_shared_lib_link_args&  sQ    !99!!yyH$(l*.&>G344r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   ra  1  s     
 
{ 
r8   c                	    V P                   P                  4       '       d,   V P                  R 8X  d   R.# V P                  R8X  d   R.# R.# . # )r  r  rj  z
-m32mscoffr  rm  rE   s   &r5   rF   "DmdDCompiler._get_target_arch_args1  sJ     99!!yyH$xl*$~%8O	r8   c               $    V ^8  d   QhRRRRRR/# r  r3   )r4   s   "r5   r6   ra  =  s!     6 6C 6C 6K 6r8   c                	$    V P                  W4      # rD   r<  r  s   &&&r5   r  !DmdDCompiler.get_crt_compile_args=  r>  r8   c                    V ^8  d   QhRRRR/# r@  r3   )r4   s   "r5   r6   ra  @  rA  r8   c                	b    V P                  WP                  V P                  P                  4      # rD   rC  r  s   &&r5   rD   DmdDCompiler.unix_args_to_native@  rF  r8   c                    V ^8  d   QhRRRR/# r   r3   )r4   s   "r5   r6   ra  C  rH  r8   c                	n    VR 8w  d#   V P                  4       \        V,          ,           # \        V,          # r   )rF   r+   r   s   &&r5   r
  "DmdDCompiler.get_optimization_argsC  rK  r8   c                   V ^8  d   QhRR/# rs  r3   )r4   s   "r5   r6   ra  H  s      t r8   c                	    R # )Fr3   rE   s   &r5   can_linker_accept_rsp"DmdDCompiler.can_linker_accept_rspH  s    r8   c                   V ^8  d   QhRR/# r@   r3   )r4   s   "r5   r6   ra  K  s     C C Cr8   c                	z   < \         SV `  4       pV P                  P                  4       '       d   V# VR R.,           # )z-defaultlib=phobos2z-debuglib=phobos2r  r  s   & r5   r  #DmdDCompiler.get_linker_always_argsK  s:    w-/99!!K,.ABBBr8   c                    V ^8  d   QhRRRR/# r  r3   )r4   s   "r5   r6   ra  Q  r  r8   c                	    V'       d   R .# . # )z-releaser3   r  s   &&r5   r  DmdDCompiler.get_assert_argsQ  s    <	r8   c                   V ^8  d   QhRR/# rW  r3   )r4   s   "r5   r6   ra  V  s     " " "r8   c                	"    \         P                  # rD   )r   rY  rE   s   &r5   r[  DmdDCompiler.rsp_file_syntaxV  s    !!!r8   r]  )r2  r3  r4  r5  r   r<   r   rn  rs  rF   r  rD  r
  r  r  r  r[  r;  r<  r  s   @r5   r_  r_  	  sf    	Bh7;h 26h
		5
6J9
C C
" "r8   r_  )r%   -enable-inlining-Hkeep-all-bodies)r'   r  r  )6r=  
__future__r   os.pathrm   r$  rc  typingr7  r\   r   arglistr   linkersr   r   r   r	   optionsr
   r   r   r   r   
mixins.gnur   r   r8  buildr   r   r  r   	envconfigr   ra  r   linkers.linkersr   r   CompilerMixinBaseobjectr   r9  r*   r+   r,   r.   r?  rC  r  r(  r  r_  )r=  s   @r5   <module>r     s   # "  	    " #    
 $ /???.)')/(  
L;d	 K<d	 
K:d	1- , R%	9	9%3 /  R$$		$		$3 /  R%%%%%	&%%	&%3 / @, @F
L 
Rt RthC;	 CV;I() ;I|N"' N"r8   