
    -PhA(                        d dl mZ d dlmZ ddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ d d	lZd d	lZd d	lZd d
lmZ d dlmZ ej        rddlmZ ddlmZ ddlmZ ddlmZ  G d de          Z G d d          Z d	S )    )annotations)Path   )CMakeTraceParser   )CMakeSkipCompilerTest)language_mapcmake_get_generator_args)mlogN)Enum)dedent)CMakeExecutor)Environment)Compiler)MachineChoicec                      e Zd ZdZdZdS )CMakeExecScope
subproject
dependencyN)__name__
__module____qualname__
SUBPROJECT
DEPENDENCY     Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/cmake/toolchain.pyr   r      s        JJJJr   r   c                  x    e Zd Zd!d"dZd#dZd$dZed%d            Zd&dZd&dZ	d'dZ
ed(d            Zd)d ZdS )*CMakeToolchainNcmakebin'CMakeExecutor'env'Environment'for_machiner   
exec_scoper   	build_dirr   preload_fileT.Optional[Path]returnNonec                   || _         || _        || _        || _        || _        || _        | j                                        | _        |dz  | _        |dz  | _        | j         j	        | j                 | _
        | j         j        | j                 | _        | j         j        j        | j                 | _        | j         j        | j                 | _        | j         j        j        | j                 | _        |                                 | _        | j                            | j                                                   | j                                        }|t,          j        k    | _        |t,          j        k    r| j        t4          j        k    rd| _        | j                                        sd| _        | j                                        sJ d S )NzCMakeMesonToolchainFile.cmakezCMakeCache.txtTF)r"   r    r$   r%   r'   r&   resolvetoolchain_filecmcache_filemachinesminfo
propertiescoredata	compilers	cmakevarscmake_cache
cmakestateget_defaults	variablesupdateget_variablesget_cmake_skip_compiler_testr   ALWAYS
skip_checkDEP_ONLYr   r   get_cmake_defaultsis_absolute)selfr    r"   r$   r%   r&   r'   skip_statuss           r   __init__zCMakeToolchain.__init__   s    &$("//11'*II%(88X&t'78
(-d.>?*4T5EF+D,<=(+78HI**,,dn::<<=== oBBDD%)>)EE/888T_P^Pi=i=i"DO1133 	$#DO"..0000000r   c                   | j         j                                        s | j         j                            d           | j                             |                                 d           | j                            |                                 d           t          j	        | j         
                                           | j         S )NT)parentsutf-8encoding)r-   parentexistsmkdir
write_textgenerater.   generate_cacher   cmd_ci_includeas_posix)rA   s    r   writezCMakeToolchain.write:   s    ")0022 	;&,,T,:::&&t}}&III$$T%8%8%:%:W$MMMD/88::;;;""r   T.List[str]c                    d| j                                         z   g}| j         |d| j                                        z   gz  }|S )N-DCMAKE_TOOLCHAIN_FILE=z-DMESON_PRELOAD_FILE=)r-   rP   r'   )rA   argss     r   get_cmake_argszCMakeToolchain.get_cmake_argsB   sN    )D,?,H,H,J,JJK(,t/@/I/I/K/KKLLDr   varsT.Dict[str, T.List[str]]strc                t    d}|                                  D ] \  }}|d|z   z  }|D ]}|d| dz  }|dz  }!|S )N zset(z ""z)
)items)rW   reskeyvalueis        r   _print_varszCMakeToolchain._print_varsH   sc    **,, 	 	JC6C<C ! !yAyyy 5LCC
r   c                ,   t          d          }| j                                        D ]\  }}d |D             | j        |<   | j        rQ|                                  |dz  }| j        D ]+\  }}|d| dz  }||                     |          z  }|dz  },|dz  }|dz  }||                     | j                  z  }|dz  }| j                                        }|7|t          d	                    |
                                                    z  }|S )Na              ######################################
            ###  AUTOMATICALLY GENERATED FILE  ###
            ######################################

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

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

        c                :    g | ]}|                     d d          S )\/)replace.0xs     r   
<listcomp>z+CMakeToolchain.generate.<locals>.<listcomp>d   s&    "G"G"GA199T3#7#7"G"G"Gr   z!# CMake compiler state variables
z# -- Variables for language 
z# Variables from meson
zr
                # Load the CMake toolchain file specified by the user
                include("{}")

            )r   r8   r]   r=   update_cmake_compiler_stater6   rb   r1   get_cmake_toolchain_fileformatrP   )rA   r^   r_   r`   langrW   	user_files          r   rM   zCMakeToolchain.generateR   s`        ...00 	H 	HJC"G"G"G"G"GDN3 ? 	,,...77C"o  
d>d>>>>t''---t4KC 	))t///t O<<>>	 6  y))++,,	. . .C 
r   c           	         | j         sdS d}| j        j                                        D ]0\  }}|| d|j         dd                    |j                   dz  }1|S )Nr[   :=;rl   )r=   r6   r5   r]   typejoinr`   )rA   r^   namevs       r   rN   zCMakeToolchain.generate_cache   st     	2288:: 	< 	<GD!d;;QV;;chhqw&7&7;;;;CC
r   c                
   i }| j                                         s|S dddddd}| j                            | j                  r>|                    | j        j        | j        j                  g|d<   | j        j        g|d	<   | j        j	        rd
ndg|d<   | j         
                                }|r|g|d<   dd}| j                                        D ]+\  }}t          j        |d           }|sd                    |          }|                                }	|	sJt!          |	          dk    r>|                     ||	d                   s" ||	d                   g||dz   <   |	dd          }	 ||	d                   |	d<   |	||dz   <   |                                dk    r|                                |d<   |                    d          r0|                                                    d          r	dg|| d<   -|S )NAndroidLinuxWindowsFreeBSDDarwin)androidlinuxwindowsfreebsddarwin)when_building_forCMAKE_SYSTEM_NAMECMAKE_SYSTEM_PROCESSOR84CMAKE_SIZEOF_VOID_PCMAKE_SYSROOTexerY   r)   c                |    t          |                                           r| S t          j        |           }|| S |S N)r   r@   shutilwhich)r   ps     r   make_absz-CMakeToolchain.get_defaults.<locals>.make_abs   s?    Cyy$$&& 
S!!Ay
Hr   z	CMAKE_{}_r   r   r   COMPILER_LAUNCHERCOMPILERzclang-clCMAKE_LINKERobjcclangz-D__STDC__=1FLAGS)r   rY   r)   rY   )r1   r?   r"   is_cross_buildr$   getr0   system
cpu_family	is_64_bitget_sys_rootr3   r]   r	   ro   get_exelistlenis_cmdline_optionget_idget_linker_exelist
startswith)
rA   defaults
SYSTEM_MAPsys_rootr   rp   comp_objlanguageprefixexe_lists
             r   r7   zCMakeToolchain.get_defaults   sZ   -/ 1133 	O !  (
 (

 8""T5E"FF 	I-7^^DJ<MtzO`-a-a,bH()26*2G1HH-.26*2F+O33C*P&'?//11 	3)1
H_%	 	 	 	 #n2244 	> 	>ND(#'d33H  ''11F++--H 8}}!!$*@*@8TU;*W*W!:B(8A;:O:O9P"556#ABB<"(8A;//HQK,4HVj()  J..+3+F+F+H+H(v&& >8??+<+<+G+G+P+P >.<-=F)))*r   compiler
'Compiler'argboolc                    |                                  dk    r|                    d          S t          j                            |                                           dk    r|dv rdS |                    d          S )Nmsvcrf   zig>   c++arccrclibranlibdlltoolobjcopyT-)get_argument_syntaxr   ospathbasenameget_exe)r   r   s     r   r   z CMakeToolchain.is_cmdline_option   s    ''))V33>>#&&&w 0 0 2 233u<<  II  BI  BIt>>#&&&r   c                   | j         j                            | j                                                  rd S t          j        d           t          | j                                                  }d |D             }t          dd	                    |           d          }t          | j        j                  dz  }|                    dd           |d	z  }|                    |d
           |dz  }|                    t                              | j                  d
           t%          | j                                        || j                  }| j                            d|                                           g }||                                z  }|t1          | j                  z  }|d|                                 dgz  }| j                            ||d          \  }	}
}|	dk    rt          j        d           t          j        d|	            |
                    d          D ]+}t          j        d|                                            ,|                    d          D ]+}t          j        d|                                            ,d S |                    |           i |j        | j         _         d |j!        "                                D             }|D ]j}tG          j$        ||%                                          }d| d}|&                    |i           }dg|d| d<   | j         '                    ||           kd S )NzBCMake Toolchain: Calling CMake once to generate the compiler statec                H    g | ]}|t           v t          j        |           S r   )r	   r   rh   s     r   rk   z>CMakeToolchain.update_cmake_compiler_state.<locals>.<listcomp>   s-    PPPAa<>O>OL$Q''>O>O>Or   zO
            cmake_minimum_required(VERSION 3.10)
            project(CompInfo  z
)
        __CMake_compiler_info__T)rE   exist_okzCMakeLists.txtrF   rG   z!CMakeMesonTempToolchainFile.cmakeF)print_cmoutalways_capture_stderrrT   .)r&   disable_cacher   z:CMake Toolchain: Failed to determine CMake compilers statez -- return code: rl   z -- stdout: z -- stderr: c                $    i | ]\  }}|j         |S r   )rx   )ri   kry   s      r   
<dictcomp>z>CMakeToolchain.update_cmake_compiler_state.<locals>.<dictcomp>   s     KKKfq!KKKr   CMakezCompiler.cmake1CMAKE__COMPILER_FORCED)(r6   	languages
issupersetr3   keysr   debuglistr   rw   r   r"   scratch_dirrK   rL   r   rb   r8   r   r    versionset_exec_moderequires_stderr
trace_argsr
   rP   callwarningsplitrstripparsecacher5   vars_by_filer]   r	   r   upper
setdefaultr9   )rA   r   lang_idscmake_contentr&   
cmake_filetemp_toolchain_filetrace
cmake_argsr   
raw_stdout	raw_traceliner   rp   
lang_cmake	file_namerW   s                     r   rm   z*CMakeToolchain.update_cmake_compiler_state   s|   ?$//0C0C0E0EFF 	F 	
WXXX,,..//	PPPPP  !hhx00       
 -..1JJ	t444!11
mg>>> (*MM&&~'A'A$.'Q'Q\c&ddd !!6!6!8!8)TXNN##UMbMbMdMd#eee
e&&(((
.tx888
Q1D1M1M1O1OQQSVWW
$(M$6$6zYfj$6$k$k!J	77LUVVVJ/2//000"((.. ; ;
9$++--99::::!-- ; ;
9$++--99::::F 	I&5o#KK0B0H0H0J0JKKK 	/ 	/D%)$

==J:
:::I**9b99D;>%D6*6667O""4....	/ 	/r   r   )r    r!   r"   r#   r$   r   r%   r   r&   r   r'   r(   r)   r*   )r)   r   )r)   rR   )rW   rX   r)   rY   )r)   rY   )r)   rX   )r   r   r   rY   r)   r   )r)   r*   )r   r   r   rC   rQ   rV   staticmethodrb   rM   rN   r7   r   rm   r   r   r   r   r      s        1 1 1 1 1:# # # #       \, , , ,\   ? ? ? ?B ' ' ' \'4/ 4/ 4/ 4/ 4/ 4/r   r   )!
__future__r   pathlibr   traceparserr   	envconfigr   commonr	   r
   r[   r   os.pathr   r   typingTenumr   textwrapr   TYPE_CHECKINGexecutorr   environmentr   r3   r   mesonlibr   r   r   r   r   r   <module>r      ss   # " " " " "       ) ) ) ) ) ) - - - - - - : : : : : : : :                        ? )''''''))))))$$$$$$((((((    T   k/ k/ k/ k/ k/ k/ k/ k/ k/ k/r   