
    -PhK                    F   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZddl	m
Z
mZmZmZ ddl	mZmZmZmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZmZmZmZ ddlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ej(        rgd dl)m*Z* ddl	m+Z+ ddl,m-Z- ddl.m/Z/ ddlm0Z0m1Z1 ddlm2Z2m3Z3m4Z4  G d de*          Z5 G d de*          Z6 G d de1j7                  Z8 G d de*          Z9 e&de:ef          Z;g dZ<dZ=dZ>dZ? G d d e          Z@ G d! d"e          ZA G d# d$e
          ZBd)d(ZCdS )*    )annotationsN   )ExtensionModuleModuleReturnValueModuleObject
ModuleInfo   )buildmesonlibmlogdependencies)	OptionKey)TargetOptionscmake_defines_to_args)SubprojectHolder)REQUIRED_KWINSTALL_DIR_KWNoneTypein_set_validator)	
FeatureNew	noPosargsnoKwargsInvalidArgumentsInterpreterExceptiontyped_pos_argstyped_kwargs	KwargInfoContainerTypeInfo)	TypedDict)ModuleState)SingleTargetOptions)Environment)Interpreterkwargs)TYPE_kwargsTYPE_varInterpreterObjectc                  B    e Zd ZU ded<   ded<   ded<   ded<   ded<   d	S )
WriteBasicPackageVersionFileboolarch_independentstrcompatibilityT.Optional[str]install_dirnameversionN__name__
__module____qualname____annotations__     X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/modules/cmake.pyr)   r)   )   sF         $$$$			r8   r)   c                  8    e Zd ZU ded<   ded<   ded<   ded<   d	S )
ConfigurePackageConfigFilez&T.Union[build.ConfigurationData, dict]configurationzT.Union[str, mesonlib.File]inputr.   r/   r,   r0   Nr2   r7   r8   r9   r;   r;   1   s=         ====****$$$$					r8   r;   c                  $    e Zd ZU ded<   ded<   dS )
Subprojectz"T.Optional[CMakeSubprojectOptions]optionsT.List[str]cmake_optionsNr2   r7   r8   r9   r?   r?   8   s*         3333""""""r8   r?   c                      e Zd ZU ded<   dS )TargetKWr.   targetNr2   r7   r8   r9   rD   rD   =   s         r8   rD   rE   )AnyNewerVersionSameMajorVersionSameMinorVersionExactVersiona@  
####### Expanded from \@PACKAGE_INIT\@ by configure_package_config_file() #######
####### Any changes to this file will be overwritten by the next CMake run ####
####### The input file was @inputFileName@ ########

get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/@PACKAGE_RELATIVE_PATH@" ABSOLUTE)
as  
# Use original install prefix when loaded through a "/usr move"
# cross-prefix symbolic link such as /lib -> /usr/lib.
get_filename_component(_realCurr "${CMAKE_CURRENT_LIST_DIR}" REALPATH)
get_filename_component(_realOrig "@absInstallDir@" REALPATH)
if(_realCurr STREQUAL _realOrig)
  set(PACKAGE_PREFIX_DIR "@installPrefix@")
endif()
unset(_realOrig)
unset(_realCurr)
a'  
macro(set_and_check _var _file)
  set(${_var} "${_file}")
  if(NOT EXISTS "${_file}")
    message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
  endif()
endmacro()
####################################################################################
c                      e Zd Zd+ fdZd,dZe ed	eeg
          d-d                        Z ede           e	d e
dedd eh d                              d.d                        Ze ede          d/d                        Ze ede          d0d!                        Ze ed"e          d1d#                        Zeed2d&                        Zee ed'd(          d3d*                                    Z xZS )4CMakeSubprojectsubpr   c           
     8   t          |t                    sJ |j        J t                                                       || _        |j        | _        | j                            | j        | j	        | j
        | j        | j        | j        | j        d           d S )N)get_variable
dependencyinclude_directoriesrE   target_typetarget_listfound)
isinstancer   cm_interpretersuper__init__rL   methodsupdaterN   rO   rP   rE   rQ   rR   found_method)selfrL   	__class__s     r9   rW   zCMakeSubproject.__init__d   s    $ 011111"...	"1T->+/?484L'+{,0,<,0,<&*&7  	  	  	  	  	 r8   tgtr,   returnT.Dict[str, str]c                    | j                             |          t          d| ddz   dz             t          fddD                       sJ S )NzThe CMake target z does not exist
zP  Use the following command in your meson.build to list all available targets:

zS    message('CMake targets:\n - ' + '\n - '.join(<cmake_subproject>.target_list()))c              3      K   | ]}|v V  	d S Nr7   ).0xress     r9   	<genexpr>z0CMakeSubproject._args_to_info.<locals>.<genexpr>{   s'      JJ18JJJJJJr8   )incsrcdepr]   func)rU   target_infor   all)r[   r]   re   s     @r9   _args_to_infozCMakeSubproject._args_to_infos   s    !--c22;&'Q3'Q'Q'Q'{(| (C(C D D D
 JJJJ%IJJJJJJJJ
r8   zcmake.subproject.get_variable)optargsstater    argsT.Tuple[str, T.Optional[str]]r$   r%   $T.Union[TYPE_var, InterpreterObject]c                8    | j                             ||          S rb   )rL   rN   r[   ro   rp   r$   s       r9   rN   zCMakeSubproject.get_variable~   s     y%%dF333r8   zcmake.subproject.dependencyinclude_typepreservez0.56.0>   
non-systemsystemrv   )defaultsince	validatorT.Tuple[str]dependencies.Dependencyc                   |                      |d                   }|d         dk    rt          |d          d          |d         t          |d          d          |                     ||d         gi           }t          |t          j                  sJ |d         dk    r_|d         |j        k    rNt          j        d		                    |j        |d                              |
                    |d                   S |S )
Nr   rj   
executablezU is an executable and does not support the dependency() method. Use target() instead.ri   z@ does not support the dependency() method. Use target() instead.ru   rv   z6Current include type is {}. Converting to requested {})rm   r   rN   rT   r   
Dependencyru   r   debugformatgenerate_system_dependency)r[   ro   rp   r$   infoorigs         r9   rO   zCMakeSubproject.dependency   s1    !!$q'**<<''"d1g  $E  $E  $E  F  F  F;"d1g#o#o#oppp  er::$ 788888.!Z//F>4JdN_4_4_JOVVW[Whjpq  kA  B  B  C  C  C226.3IJJJr8   z$cmake.subproject.include_directoriesT.List[build.IncludeDirs]c                
   |                      |d                   }|                     ||d         g|          }t          |t                    s
J d            t          |d         t          j                  s
J d            |S )Nr   rg   for mypy)rm   rN   rT   listr
   IncludeDirs)r[   ro   rp   r$   r   rg   s         r9   rP   z#CMakeSubproject.include_directories   s     !!$q'**U}f==#t$$00j000#a&%"344@@j@@@
r8   zcmake.subproject.targetbuild.Targetc                    |                      |d                   }|                     ||d         g|          }t          |t          j                  s
J d            |S )Nr   r]   r   )rm   rN   rT   r
   Target)r[   ro   rp   r$   r   r]   s         r9   rE   zCMakeSubproject.target   s]     !!$q'**U}f==#u|,,88j888
r8   zcmake.subproject.target_typec                H    |                      |d                   }|d         S )Nr   rj   )rm   )r[   ro   rp   r$   r   s        r9   rQ   zCMakeSubproject.target_type   s%     !!$q'**F|r8   r&   rA   c                4    | j                                         S rb   )rU   rR   rt   s       r9   rR   zCMakeSubproject.target_list   s     "..000r8   zCMakeSubproject.found()z0.53.2r*   c                    | j         d uS rb   )rL   rt   s       r9   rZ   zCMakeSubproject.found_method   s     y$$r8   )rL   r   )r]   r,   r^   r_   )ro   r    rp   rq   r$   r%   r^   rr   )ro   r    rp   r|   r$   r_   r^   r}   )ro   r    rp   r|   r$   r%   r^   r   )ro   r    rp   r|   r$   r%   r^   r   )ro   r    rp   r|   r$   r%   r^   r,   )ro   r    rp   r&   r$   r%   r^   rA   )ro   r    rp   r&   r$   r%   r^   r*   )r3   r4   r5   rW   rm   r   r   r,   rN   r   r   r   rO   rP   rE   rQ   r   rR   r   rZ   __classcell__r\   s   @r9   rK   rK   c   s%                  	 	 	 	 ^3S3%HHH4 4 4 IH X4 ^1377\%	&&'K'K'KLL	
 	
 	
	 	  	 	 87 ^:C@@   A@ X ^-s33   43 X ^2C88   98 X 1 1 1 X Y1 Z)844% % % 54 X Y% % % % %r8   rK   c                      e Zd Zd  fdZd!dZ ede	          ed"d                        Z ede	e	           e
de          d#d                        Z ede           e
de          d$d                        Z ede	e	d           e
de          d%d                        Z ede	d           e
de          d&d                        Zeed'd                        Z xZS )(CMakeSubprojectOptionsr^   Nonec           	         t                                                       g | _        t                      | _        | j                            | j        | j        | j	        | j
        | j        | j        d           d S )N)add_cmake_definesset_override_optionset_installappend_compile_argsappend_link_argsclear)rV   rW   rB   r   target_optionsrX   rY   r   r   r   r   r   r   )r[   r\   s    r9   rW   zCMakeSubprojectOptions.__init__   s~    *,+oo%)%;'+'?#/'+'?$($9 		
 		
 		
 		
 		
r8   r$   rD   r!   c                P    |d         | j         |d                  S | j         j        S )NrE   )r   global_options)r[   r$   s     r9   	_get_optsz CMakeSubprojectOptions._get_opts   s,    ('&vh'788"11r8   z$subproject_options.add_cmake_defines)varargsro   r    rp   &T.Tuple[T.List[T.Dict[str, TYPE_var]]]r%   c                L    | xj         t          |d                   z  c_         d S Nr   )rB   r   rt   s       r9   r   z(CMakeSubprojectOptions.add_cmake_defines   s+     	3DG<<<r8   z&subproject_options.set_override_optionT.Tuple[str, str]c                p    |                      |                              |d         |d                    d S Nr   r   )r   set_optrt   s       r9   r   z*CMakeSubprojectOptions.set_override_option   s4     	v&&tAwQ88888r8   zsubproject_options.set_installT.Tuple[bool]c                b    |                      |                              |d                    d S r   )r   r   rt   s       r9   r   z"CMakeSubprojectOptions.set_install   s.     	v**4733333r8   z&subproject_options.append_compile_argsr   )r   min_varargsT.Tuple[str, T.List[str]]c                p    |                      |                              |d         |d                    d S r   )r   append_argsrt   s       r9   r   z*CMakeSubprojectOptions.append_compile_args   s4     	v**47DG<<<<<r8   z#subproject_options.append_link_argsT.Tuple[T.List[str]]c                b    |                      |                              |d                    d S r   )r   r   rt   s       r9   r   z'CMakeSubprojectOptions.append_link_args   s.     	v//Q88888r8   r&   c                ^    | j                                          t                      | _        d S rb   )rB   r   r   r   rt   s       r9   r   zCMakeSubprojectOptions.clear   s+     	  """+oor8   )r^   r   )r$   rD   r^   r!   )ro   r    rp   r   r$   r%   r^   r   )ro   r    rp   r   r$   rD   r^   r   )ro   r    rp   r   r$   rD   r^   r   )ro   r    rp   r   r$   rD   r^   r   )ro   r    rp   r   r$   rD   r^   r   )ro   r    rp   r&   r$   r%   r^   r   )r3   r4   r5   rW   r   r   dictr   r   r,   r   
_TARGET_KWr   r*   r   r   r   r   r   r   r   s   @r9   r   r      s       
 
 
 
 
 
 2 2 2 2
 ^:DIII= = = X JI= ^<c3GG\:JGG9 9 9 HG HG9 ^4d;;\2J??4 4 4 @? <;4 ^<c3\]^^^\:JGG= = = HG _^= ^93TUVVV\7DD9 9 9 ED WV9 . . . X Y. . . . .r8   r   c                      e Zd ZdZdZ edd          ZdF fd	ZdGdZdHdZ	e
 ed ededd           eded e ee                               eded           eded          e          dId"                        ZdJd*Ze
 ed+ ed,ej        efd           ed-eej         eeej                  fdd. d/ 0           eded          e          dKd3                        Z ed4d5           ed6e           ed6e ed7e e!fd89           ed: eee          g dd8d;<                    dLdA                                    Z" edBd8          e#e
dMdE                                    Z$ xZ%S )NCmakeModuleFNcmakez0.50.0interpreterr#   r^   r   c                    t                                          |           | j                            | j        | j        | j        | j        d           d S )N) write_basic_package_version_fileconfigure_package_config_file
subprojectsubproject_options)rV   rW   rX   rY   r   r   r   r   )r[   r   r\   s     r9   rW   zCmakeModule.__init__   s`    %%%040U-1-O/"&"9	
 
 	 	 	 	 	r8   envr"   intc                    |j         j        j        }|                    dd           }|s|                    dd           }|st	          j        d          |                    dd|          d         S )Nccppz7Requires a C or C++ compiler to compute sizeof(void *).zvoid * r   )coredata	compilershostgetr   MesonExceptionsizeof)r[   r   r   compilers       r9   detect_voidp_sizezCmakeModule.detect_voidp_size  ss    L*/	==d++ 	2 }}UD11H 	e)*cdddxS11!44r8   ro   r    r*   c                R   | j         rdS |                    dd          }|                                sdS t          j        |                                g dz             dd         \  }}}|j        dk    r$t          j        d|j         d	| d
|            dS t          j
        d|                                          }|st          j        d           dS t          j        |                    d                    }t          j        j        |j         | _        d| _         dS )NTr   F)silent)z--system-informationz-GNinjar      z/error retrieving cmake information: returnCode=z stdout=z stderr=z
CMAKE_ROOT \"([^"]+)"
zunable to determine cmake rootr   )cmake_detectedfind_programrS   r   
Popen_safeget_command
returncoder   logresearchstrippathlibPurePathgroupospathjoinparts
cmake_root)r[   ro   cmakebinpstdoutstderrmatch	cmakePaths           r9   detect_cmakezCmakeModule.detect_cmake  s,    	4%%ge%<<~~ 	5$/0D0D0F0FIpIpIp0pqqrsturuv66<1Huq|uu]cuumsuuvvv5	6GG 	H56665$U[[^^44	',	8"tr8   z&cmake.write_basic_package_version_filer+   0.62.0)ry   rz   r-   rF   )ry   r{   r0   T)requiredr1   rp   r&   r$   'WriteBasicPackageVersionFile'r   c                H   |d         }|d         }|d         }|d         }|                      |          st          j        d          |d         x}}	||j        j        j                            t          d                    }
t          |
t                    s
J d            t          j                            |
d	|          }t          j                            d
d	|          }	t          j                            | j        dd| d          }t          j                            |          st          j        d| d          t          j                            |j        j        | d          }|t          |                     |j                            |d}t          j        ||t%          j        |          d           t%          j        t          j        d|j                                        |          g||	d |j                  }t1          ||g          S )Nr+   r-   r0   r1   zUnable to find cmaker/   libdirr   r   z{libdir}ModuleszBasicConfigVersion-z	.cmake.inz,your cmake installation doesn't support the z compatibilityzConfigVersion.cmake)CVF_VERSIONCMAKE_SIZEOF_VOID_PCVF_ARCH_INDEPENDENTmesonT)r   r   r   environmentr   optstoreget_value_forr   rT   r,   r   r   r   r   existsscratch_dirr   do_conf_filer
   ConfigurationDataDataFileget_scratch_dirr   r   )r[   ro   rp   r$   r+   r-   r0   r1   pkgrootpkgroot_namer   template_fileversion_fileconfre   s                  r9   r   z,CmakeModule.write_basic_package_version_file%  s    ""45/f~#  '' 	B)*@AAA!'!66,?&/8FFyQYGZGZ[[Ffc**66J666gll67D99G7<<
GTBBLT_iAoWdAoAoAoppw~~m,, 	y)*wZg*w*w*wxxxw||E$5$AdC_C_C_`` ##&t'='=e>O'P'P#Q#Q$46
 6

 	m\5;RSW;X;XZabbbj(-e.?.O.O.Q.QS_``acjlxz~  AF  AQ  R  R se,,,r8   infiler,   outfilePACKAGE_RELATIVE_PATHextraconfdatabuild.ConfigurationDatac                2   t                               d|          }|                    dt          j                            |                    }||z  }|t
          z  }	 t          |d          5 }|                                }d d d            n# 1 swxY w Y   n,# t          $ r}	t          j
        d| d|	          d }	~	ww xY wg }
t          j        d          }|D ]G}|                    d|          }t          j        ||d|          \  }}|
                    |           H|d	z   }t          |d
d          5 }|                    |
           d d d            n# 1 swxY w Y   t          j        ||           t          j        ||           d S )Nz@PACKAGE_RELATIVE_PATH@z@inputFileName@zutf-8)encodingzCould not read input file z: zcmake@z@PACKAGE_INIT@~w)PACKAGE_INIT_BASEreplacer   r   basenamePACKAGE_INIT_SET_AND_CHECKopen	readlines	Exceptionr   r   get_variable_regexdo_replacementappend
writelinesshutilcopymodereplace_if_different)r[   r   r  r  r  r  package_initfindataeresultregexline_missingoutfile_tmpfouts                   r9   create_package_filezCmakeModule.create_package_fileN  s,   (001JLabb#++,=rw?O?OPV?W?WXX22	Xfw/// '3}}' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 	X 	X 	X)*Vv*V*VQR*V*VWWW	X +H55 	  	 D<< 0,??D%4UD(HUUND(MM$m+sW555 	$OOF###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	,,,%g{;;;;;sN   B 0BB BB BB 
C'CC E""E&)E&z#cmake.configure_package_config_filer<   r=   c                Z    t          | t                    rt          |           dk    rdnd S )Nr   zrequires exactly one file)rT   r   lenrd   s    r9   <lambda>zCmakeModule.<lambda>o  s3    ZPQSWEXEX&r]`ab]c]cgh]h]h&A&Anr r8   c                @    t          | t                    r| d         n| S r   )rT   r   r%  s    r9   r&  zCmakeModule.<lambda>p  s    jD.A.A&Haddq r8   )r   r{   	convertor'ConfigurePackageConfigFile'
build.Datac                L   |d         }t          |t                    r0t          j                            |j        j        |j        |          }|                    |j        j        |j        j	                  }|d         }t          j                            t          j                            |j        | d                    \  }}t          j                            |j        j	        ||          }	|d         }
|
q|j        j        j                            t#          d                    }t          |t                    s
J d            t          j                            |d|          }
|d         }t          |t$                    r6t'          j        d	d
|j        |j                   t/          j        |          }|j        j        j                            t#          d                    }t          |t                    s
J d            |
}t          j                            |          s t          j                            ||
          }t5          j        t          j                            ||                                                    }d}t=          j        d|          r1t@          !                    d|          }|!                    d|          }| "                    ||	|||           d|_#        t          j        $                    |%                                          }| j&        j'        (                    |           t/          j)        t          j        d||          g|
|
d |j                  }| j&        j        j*        +                    |           |S )Nr=   r0   zConfig.cmaker/   r   r   r   r<   z9cmake.configure_package_config_file dict as configurationr   )locationprefixr   z^(/usr)?/lib(64)?/.+z@absInstallDir@z@installPrefix@T),rT   r,   r   r   from_source_filer   
source_dirsubdirabsolute_path	build_dirr   r   splitr   r   r   r   r   r   r   
single_user   current_noder
   r   isabsr   r   relpathas_posixr   r   PACKAGE_INIT_EXTr  r"  usednormpathrelative_namer   build_def_filesaddr   r  r  )r[   ro   rp   r$   	inputfile	ifile_absr0   
ofile_pathofile_fname	ofile_absr/   r   r   r-  abs_install_dirr  r  conffilere   s                      r9   r   z)CmakeModule.configure_package_config_filei  s#    7O	i%% 	n 66u7H7SUZUaclmmI++E,=,H%J[Jeff	f~$&GMM"',,u|PTMbMbMb2c2c$d$d![GLL!2!<j+VV	]+&/8FFyQYGZGZ[[Ffc**66J666',,vw==Ko&dD!! 	1!"]_giniy  EJ  EW  X  X  X  X*400D"+4BB9XCVCVWW&#&&22
222%w}}_-- 	@ gll6;??O !( 01Y1Y Z Z c c e e8*O<< 	=$,,->PPEMM"3V<<E  I7LeUYZZZ	7##I$;$;$=$=>>(,,X666j(-j+FFGVacginiyzz#**3///
r8   r   z0.51.0zcmake.subprojectr@   z0.55.0)rz   rB   zUse options instead)ry   listify
deprecateddeprecated_messager|   kwargs_r?   *T.Union[SubprojectHolder, CMakeSubproject]c                   |d         r|d         t          d          |d         }|d         |d         |d         g g d}| j                            ||d          }|                                s|S t	          |          S )	NrB   r@   z6"options" cannot be used together with "cmake_options"r   r   )r   r@   rB   default_optionsr1   r   )force_method)r   r   do_subprojectrS   rK   )r[   ro   rp   rI  dirnamekwrL   s          r9   r   zCmakeModule.subproject  s      ?# 	a	(:(F&'_```q'
+y)$_5!#
 #
 --gr-PPzz|| 	Kt$$$r8   r   r%   r   c                    t                      S rb   )r   rt   s       r9   r   zCmakeModule.subproject_options  s     &'''r8   )r   r#   r^   r   )r   r"   r^   r   )ro   r    r^   r*   )ro   r    rp   r&   r$   r   r^   r   )r   r,   r  r,   r  r,   r  r,   r  r  r^   r   )ro   r    rp   r&   r$   r)  r^   r*  )ro   r    rp   r|   rI  r?   r^   rJ  )ro   r    rp   r&   r$   r%   r^   r   )&r3   r4   r5   r   r   r   INFOrW   r   r   r   r   r   r*   r,   r   setCOMPATIBILITIESr   r   r"  r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r9   r   r      s       NJ:gx((D     	5 	5 	5 	5   . \0	$dEJJJ	/30AM]M]^a^abq^r^rMsMsttt	&#---	)S4000 - - -  Y-@< < < <6 \-	/E$;T#BTRRR	''8'8x}'M'MNY]rrHH	J 	J 	J 		&#---	 	- - -	 	 Y-^ Zh''^&,,\	)4h?xPPP	dC((4	
 	
 	
	 % % %  -, ('%  Z$h//( ( ( Y X 0/( ( ( ( (r8   r   interpr#   r^   c                     t          |           S rb   )r   )rU  s    r9   
initializerW    s    vr8   )rU  r#   r^   r   )D
__future__r   r   r   os.pathr   r  typingTr   r   r   r   r   r
   r   r   r   r@   r   r   r   r   r   r   interpreter.type_checkingr   r   r   r   interpreterbaser   r   r   r   r   r   r   r   r   TYPE_CHECKINGtyping_extensionsr   r    cmake.commonr!   r   r"   r#   r$   r%   r&   r'   r)   r;   ExtractRequiredr?   rD   r,   r   rT  r
  r9  r  rK   r   r   rW  r7   r8   r9   <module>rb     s   # " " " " " 				                  J J J J J J J J J J J J 2 2 2 2 2 2 2 2 2 2 2 2       8 8 8 8 8 8 8 8 * * * * * * _ _ _ _ _ _ _ _ _ _ _ _                      ?  ++++++222222))))))11111111JJJJJJJJJJ    y       Y   # # # # #V+ # # #
         9      
 Yx#x11
]]] 
  X% X% X% X% X%l X% X% X%v3. 3. 3. 3. 3.\ 3. 3. 3.lR( R( R( R( R(/ R( R( R(h     r8   