
    -Ph                       U 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	m
Z
 ddlmZmZmZ ddlmZmZ ej        r*ddlmZ dd	l
mZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ g g g dgdgdgdgdZded<    G d de          Z dS )    )annotationsN   )mlogoptions)EnvironmentExceptionMesonExceptionversion_compare   )Compilerclike_debug_args)build)MutableKeyedOptionDictType)
Dependency)MachineInfo)Environment)DynamicLinker)MachineChoicez-O)plain0g123szT.Dict[str, T.List[str]]swift_optimization_argsc                       e Zd ZdgZdZdZ	 	 dEdF fdZdGdZdGdZdHdZ	dGdZ
dIdZdJdZdKd ZdLd!ZdMd#ZdNd%ZdOd'ZdGd(ZdPd*ZdGd+ZdQd.ZdGd/ZdR fd1ZdSdTd6ZdUd8ZdVd;ZdWd@ZdXdBZdYdDZ xZS )ZSwiftCompilerz-XlinkerswiftllvmNexelistT.List[str]versionstrfor_machiner   is_crossboolinfo'MachineInfo'full_versionT.Optional[str]linkerT.Optional['DynamicLinker']c           
        t                                          g |||||||           || _        | j                                        r	 t          j        ddgddt
          j                                                  | _	        d S # t
          j
        $ r0}t          j        d|j        z              t          d          d }~wt          $ r$ t          j        d	           t          d
          w xY wd S )N)r%   r)   r+   xcrunz--show-sdk-pathTutf-8)universal_newlinesencodingstderrzFailed to get Xcode SDK path: z?Xcode license not accepted yet. Run `sudo xcodebuild -license`.z5xcrun not found. Install Xcode to compile Swift code.z@Could not detect Xcode. Please install it to compile Swift code.)super__init__r"   r'   	is_darwin
subprocesscheck_outputSTDOUTstripsdk_pathCalledProcessErrorr   erroroutputr   FileNotFoundError)
selfr    r"   r$   r%   r'   r)   r+   e	__class__s
            Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/compilers/swift.pyr4   zSwiftCompiler.__init__(   s1    	Wg{D"* & 	 	( 	( 	( 9   
	i	i * 7BS8TKOAHQ[Qb!d !d !ddididkdk  0 h h h
;ahFGGG$%fggg$ i i i
RSSS$%ghhhi
	i 
	is   ;B	 	C4+C1C4returnc                    g S N r?   s    rB   get_pic_argszSwiftCompiler.get_pic_args;       	    c                    g S rE   rF   rG   s    rB   get_pie_argszSwiftCompiler.get_pie_args>   rI   rJ   c                    dS )NTrF   rG   s    rB   needs_static_linkerz!SwiftCompiler.needs_static_linkerA   s    trJ   c                    dgS )Nz-warnings-as-errorsrF   rG   s    rB   get_werror_argszSwiftCompiler.get_werror_argsD   s    %&&rJ   	outtargetoutfilec                    dgS )Nz-emit-dependenciesrF   )r?   rQ   rR   s      rB   get_dependency_gen_argsz%SwiftCompiler.get_dependency_gen_argsG   s    $%%rJ   depr   c                T   |                                 }| j                                        s|S t          j        d          }t          |          D ]T\  }}|                    d          r:|                    |          }|r#d| j        z   |	                    d          z   ||<   U|S )Nz.*\/MacOSX[^\/]*\.sdk(\/.*|$)-Ir
   )
get_compile_argsr'   r5   recompile	enumerate
startswithmatchr:   group)r?   rU   argspatterniargr]   s          rB   get_dependency_compile_argsz)SwiftCompiler.get_dependency_compile_argsJ   s    ##%%
 y""$$ 	K*=>>oo 	D 	DFAs~~d## Dc** D"T]2U[[^^CDGrJ   objfilec                |    t           j                            |          d         dz   |                                 z   S )Nr   .)ospathsplitextget_depfile_suffix)r?   rd   s     rB   depfile_for_objectz SwiftCompiler.depfile_for_objectZ   s3    w((+c1D4K4K4M4MMMrJ   c                    dS )NdrF   rG   s    rB   rj   z SwiftCompiler.get_depfile_suffix]   s    srJ   targetc                
    d|gS )N-orF   )r?   rn   s     rB   get_output_argszSwiftCompiler.get_output_args`   s    f~rJ   
headernamec                
    d|gS )Nz-import-objc-headerrF   )r?   rr   s     rB   get_header_import_argsz$SwiftCompiler.get_header_import_argsc   s    %z22rJ   levelc                    g S rE   rF   )r?   ru   s     rB   get_warn_argszSwiftCompiler.get_warn_argsf   rI   rJ   c                    dgS )N-emit-executablerF   rG   s    rB   get_std_exe_link_argsz#SwiftCompiler.get_std_exe_link_argsi   s    "##rJ   modnamec                
    d|gS )Nz-module-namerF   )r?   r{   s     rB   get_module_argszSwiftCompiler.get_module_argsl   s    ((rJ   c                    dgS )Nz-emit-modulerF   rG   s    rB   get_mod_gen_argszSwiftCompiler.get_mod_gen_argso   s    rJ   rh   	is_systemc                    d|z   gS )NrW   rF   )r?   rh   r   s      rB   get_include_argszSwiftCompiler.get_include_argsr   s    t}rJ   c                    dgS )Nz-crF   rG   s    rB   get_compile_only_argsz#SwiftCompiler.get_compile_only_argsu   s	    vrJ   r   c                    t                                                      }|                     d          }t          j        |                     |          ddg d          ||<   |S )NstdzSwift language version.none)r   4z4.256)choices)r3   get_optionsform_compileropt_keyr   UserComboOptionmake_option_name)r?   optskeyrA   s      rB   r   zSwiftCompiler.get_optionsx   sm    ww""$$''..+!!#&&%2224 4 4S	 rJ   build.BuildTargetenvr   
subprojectc                    g }|                      d|||          }t          |t                    sJ |dk    r|d|gz  }|S )Nr   r   z-swift-version)get_compileropt_value
isinstancer#   )r?   rn   r   r   r_   r   s         rB   get_option_std_argsz!SwiftCompiler.get_option_std_args   sT    ((VZHH#s#####&==%s++DrJ   T.Optional[T.List[str]]c                8    t          | j        d          rd S d|gS )Nz<4.2z-working-directory)r	   r"   )r?   rh   s     rB   get_working_directory_argsz(SwiftCompiler.get_working_directory_args   s&    4<00 	4$d++rJ   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   rW   z-L)r[   rg   rh   normpathjoin)r?   r   r   idxra   s        rB   &compute_parameters_with_absolute_pathsz4SwiftCompiler.compute_parameters_with_absolute_paths   s    // 	_ 	_FC!u}}"1"&'ebg.>.>rw||IWXYZY[Y[W\?]?].^.^&^s#rJ   work_direnvironment'Environment'Nonec                D   d}t           j                            ||          }t           j                            |d          }g }||j                            | j        | j                  z  }| j        r||                                 z  }n(||j        	                    | j        | j                  z  }t          |dd          5 }|                    d           d d d            n# 1 swxY w Y   t          j        | j        |z   dd||gz   |	          }|                                 |j        d
k    r$t#          d|                                 z            | j        rd S t          j        |          d
k    r$t#          d|                                 z            d S )Nzswifttest.swift	swifttestwr/   )r1   z'print("Swift compilation is working.")
ry   rp   )cwdr   z*Swift compiler %s cannot compile programs.z:Executables created by Swift compiler %s are not runnable.)rg   rh   r   coredataget_external_argsr$   languager%   r   get_external_link_argsopenwriter6   Popenr    wait
returncoder   name_stringcall)	r?   r   r   srcsource_nameoutput_nameextra_flagsofilepcs	            rB   sanity_checkzSwiftCompiler.sanity_check   s   gll8S11gll8[99#%{+==d>NPTP]^^^= 	h455777KK;/FFtGWY]YfgggK+sW555 	KK    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dl[8<NPTVacf;ggmuvvv
			=A&'SVZVfVfVhVh'hiii= 	F?;''1,,&'cfjfvfvfxfx'xyyy -,s   C((C,/C,is_debugc                    t           |         S rE   )r   )r?   r   s     rB   get_debug_argszSwiftCompiler.get_debug_args   s    ))rJ   optimization_levelc                    t           |         S rE   )r   )r?   r   s     rB   get_optimization_argsz#SwiftCompiler.get_optimization_args   s    &'9::rJ   )NN)r    r!   r"   r#   r$   r   r%   r&   r'   r(   r)   r*   r+   r,   )rC   r!   )rC   r&   )rQ   r#   rR   r#   rC   r!   )rU   r   rC   r!   )rd   r#   rC   r*   )rC   r#   )rn   r#   rC   r!   )rr   r#   rC   r!   )ru   r#   rC   r!   )r{   r#   rC   r!   )rh   r#   r   r&   rC   r!   )rC   r   rE   )rn   r   r   r   r   r*   rC   r!   )rh   r#   rC   r   )r   r!   r   r#   rC   r!   )r   r#   r   r   rC   r   )r   r&   rC   r!   )r   r#   rC   r!   )__name__
__module____qualname__LINKER_PREFIXr   idr4   rH   rL   rN   rP   rT   rc   rk   rj   rq   rt   rw   rz   r}   r   r   r   r   r   r   r   r   r   r   __classcell__)rA   s   @rB   r   r   "   sG       LMH	B W[7;i i i i i i i&         ' ' ' '& & & &    N N N N      3 3 3 3   $ $ $ $) ) ) )                  	 	 	 	 	, , , ,   z z z z.* * * *; ; ; ; ; ; ; ;rJ   r   )!
__future__r   rY   r6   os.pathrg   typingT r   r   mesonlibr   r   r	   	compilersr   r   TYPE_CHECKINGr   r   dependenciesr   	envconfigr   r   r   linkers.linkersr   r   r   __annotations__r   rF   rJ   rB   <module>r      s   # " " " " " " 				                     L L L L L L L L L L 1 1 1 1 1 1 1 1 ? )444444))))))''''''))))))//////(((((( 		



5 5     W; W; W; W; W;H W; W; W; W; W;rJ   