
    -Ph>L                    
   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 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 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Z d?dZ!d@dZ"dAd"Z# G d# d$e          Z$ G d% d&          Z% G d' d(e%eej&        )          Z' G d* d+e%eej&        )          Z( G d, d-          Z) G d. d/e(          Z* G d0 d1e(          Z+ G d2 d3e)e(          Z, G d4 d5e'          Z- G d6 d7e'          Z. G d8 d9e)e'          Z/ ed:e	j0        e	j1        ge-e*;          xed:<   Z2 ed<e	j0        e	j1        ge.e+;          xed<<   Z3 ed=e	j0        e	j1        ge/e,;          xed=<   Z4dS )B    )annotationsN   )DependencyExceptionDependencyMethods)ConfigToolDependency)packages)ExtraFrameworkDependency)PkgConfigDependency)DependencyFactory   )mlog)mesonlib)Compiler)MachineInfo)Environment)MissingCompilermod_inc_dirstrmodulemod_versionreturnT.List[str]c                "    t          |                    d          d                   dk     rg S t          j                             |          }t          j                                       r}t          j                            |          s^ fdt          j                   D             }t          |d          D ],}t          |                    d                    dk    r|} n-|t          j                            |d|z             gS )	N.r      c                    g | ]A}t           j                            t           j                            |                    ?|BS  )ospathisdirjoin).0filenamer   s     Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/dependencies/qt.py
<listcomp>z,_qt_get_private_includes.<locals>.<listcomp>.   sR     G G GX7==k8!D!DEEG G G G    T)reverse   Qt)
intsplitr   r   r!   r    existslistdirsortedlen)r   r   r   private_dirdirsdirnames   `     r$   _qt_get_private_includesr3      s    ;S!!!$%%))	',,{K88K	w}}[!! "'..*E*E G G G GK)@)@ G G G dD111 	 	G7==%%&&!++% , k4&=AABBr&   qvarsT.Dict[str, str]c                *    d| v r| d         S | d         S )NQT_HOST_BINSQT_INSTALL_BINSr   r4   s    r$   get_qmake_host_binsr:   8   s&     ^$$"##r&   T.Optional[str]c                D    d| v r| d         S |                      d          S )NQT_HOST_LIBEXECSQT_INSTALL_LIBEXECS)getr9   s    r$   get_qmake_host_libexecsr@   @   s,    U""'((99*+++r&   versioninfo'MachineInfo'is_debugboolc                   d}|                                 r!|r|dz  }|                     d          r|dz  }|                                r|r|dz  }t          j        | d          ru|                                ra|j        dk    r|dz  }nP|j        dk    r|d	z  }n?|j        d
k    r|dz  }n.|j        dk    r|dz  }nt          j        d|j         d           |S )z7Get the module suffix based on platform and debug type. d4_debugz	>= 5.14.0x86_x86x86_64_x86_64armz_armeabi-v7aaarch64z
_arm64-v8azAndroid target arch "z4"" for Qt5 is unknown, module detection may not work)	
is_windows
startswith	is_darwinr   version_compare
is_android
cpu_familyr   warning)rA   rB   rD   suffixs       r$   _get_modules_lib_suffixrY   F   s)   F  	cMFc"" 	cMF~~  	hF55 >?? 	>%''& H,,)#E)).(I--,& =T_ = = = > > >Mr&   c                  ,     e Zd Zdd fdZdddZ xZS )QtExtraFrameworkDependencyNnamer   env'Environment'kwargsT.Dict[str, T.Any]r4   r5   languager;   c                    t                                          ||||           |dd          | _        |d         | _        d S )Nra   r   QT_INSTALL_HEADERS)super__init__mod_nameqt_extra_include_directory)selfr\   r]   r_   r4   ra   	__class__s         r$   rf   z#QtExtraFrameworkDependency.__init__b   sG    sFX>>>QRR*/0D*E'''r&   F0with_private_headersrE   
qt_versionr   r   c                    |                                  rgt          j                            | j        d          }d|z   g}|r#|d t          || j        |          D             z  }| j        r|d| j        z   gz  }|S g S )NHeaders-Ic                    g | ]}d |z   S )rp   r   )r"   r2   s     r$   r%   z?QtExtraFrameworkDependency.get_compile_args.<locals>.<listcomp>l   s    xxxGxxxr&   )foundr   r   r!   framework_pathr3   rg   rh   )ri   rl   rm   r   argss        r$   get_compile_argsz+QtExtraFrameworkDependency.get_compile_argsg   s    ::<< 	',,t':IFFK;&'D# yxx7OP[]a]jlv7w7wxxxx. A ??@@K	r&   N)
r\   r   r]   r^   r_   r`   r4   r5   ra   r;   )Frk   )rl   rE   rm   r   r   r   )__name__
__module____qualname__rf   ru   __classcell__rj   s   @r$   r[   r[   a   sb        F F F F F F F
	 	 	 	 	 	 	 	 	r&   r[   c                  r    e Zd ZU dZded<   ded<   ded<   dZd	ed
<   ded<   ddZddZddZddZ	d dZ
dS )!_QtBasez>Mixin class for shared components between PkgConfig and Qmake.r   	link_argsz&T.Union['MissingCompiler', 'Compiler']clib_compilerr^   r]   Nr;   
libexecdirr   rA   r\   r_   r`   c                B   || _         |                                | _        |d         | _        | j        dk    rd| _        n| j        | _        t          j        d|                    dd                    | _        t          j
        t          j        |d                    | _        | j        st          d| j        z   d	z             t          j        d|                    d
d                    | _        t          | j        t                     st          d          d S )NrI   r)   rE   private_headersFmoduleszNo z  modules specified.mainz!"main" argument must be a boolean)r\   
capitalizeqtnameqtver	qtpkgnameTcastr?   r   r   stringlistifyextract_as_listrequested_modulesr   qtmain
isinstancerE   )ri   r\   r_   s      r$   rf   z_QtBase.__init__}   s   	oo''"X
:!DNN![DN vffjj9JE.R.RSS!)!78PQWYb8c8c!d!d% 	T%edk&9<R&RSSSfVVZZ%>%>??$+t,, 	K%&IJJJ	K 	Kr&   rD   rE   libdirT.Union[str, T.List[str]]r   c                    t          j        |          }|                     |          }| j                            || j        |          }|r"| j                            |d                    dS dS )Nr   TF)r   listifyget_qt_winmain_base_namer   find_libraryr]   r~   append)ri   rD   r   	base_name
qt_winmains        r$   _link_with_qt_winmainz_QtBase._link_with_qt_winmain   sm    !&))11(;;	'44Y&QQ
 	N!!*Q-0004ur&   c                    |rdndS )Nqtmaindr   r   ri   rD   s     r$   r   z _QtBase.get_qt_winmain_base_name   s    $2yy(2r&   compiler
'Compiler'c                *    |                                 S rv   )get_pic_args)ri   r   s     r$   get_exe_argsz_QtBase.get_exe_args   s     $$&&&r&   c                V    dd                     t          | j                             S )Nz	modules: z, )r!   r.   r   ri   s    r$   log_detailsz_QtBase.log_details   s'    F499VD,B%C%CDDFFFr&   )r\   r   r_   r`   )rD   rE   r   r   r   rE   rD   rE   r   r   )r   r   r   r   r   r   )rw   rx   ry   __doc____annotations__r   rf   r   r   r   r   r   r&   r$   r}   r}   s   s         HH9999"&J&&&&LLLK K K K&   3 3 3 3' ' ' 'G G G G G Gr&   r}   c                      e Zd ZdZddZeej        dd                        Zeej        dd                        Z	ej        dd            Z
ddZdS )QtPkgConfigDependencyz1Specialization of the PkgConfigDependency for Qt.r\   r   r]   r^   r_   r`   c                |   t                               | ||           t          j        | | j        dz   ||           d| j        vrg | _        g | _        | j        D ]}t          | j        |z   | j        || j                  	                                s
d| _
         d S | j        r                    d          }t          j                            |d|z             }t          j                            |          s|}t#          ||j                  }|D ]}j                            d|z               |                     fdg           | j        j        | j                                                 r| j        r| j        dz   t3          | j        | j        j        | j                 d	          z   }	d}
|                                 D ]?}|d
|	 k    s0|                    |	 d          s|                    |	 d          rd	}
 n@|                     d          }|                     |
|          s	d| _
        d S |                     |           | _        | j        s=|                     d          }|r%t          j                            |d          | _        |                     |           | _         d S )NCorerc   F
includedir	pkgconfigr)   rp   c                      S rv   r   )mods   r$   <lambda>z0QtPkgConfigDependency.__init__.<locals>.<lambda>   s    c r&   Tz-lz.libz.ar   exec_prefixbin)!r}   rf   r
   r   r   compile_argsr~   r]   ra   rr   is_foundr   get_variabler   r   r!   r    r3   rA   r   _add_sub_dependencymachinesfor_machinerQ   r   rY   get_link_argsendswithr   get_pkgconfig_host_binsbindirget_pkgconfig_host_libexecsr   )ri   r\   r]   r_   m
qt_inc_dirmod_private_dirmod_private_inc	directorydebug_lib_namerD   argr   prefixr   s                 @r$   rf   zQtPkgConfigDependency.__init__   s   tV,,, 	$T4>F+BCPPP/// "DDN' 	4 	4A%dnq&8$(FUYUbcccC99;;  %# > ---EE
"$',,z4!8"D"Dw}}_55 1 '1O":?As{"["[!0 > >I$++D9,<====$$kkkk]33338T-.99;; 	 	!^f47Nt|]a]e]noso  ^A  CG  8H  8H  HNH))++  /~////3<<>@W@W@W3X3X/\_\h\hlzi~i~i~\\/#HE 0 &&&::F--h??  %22488{ 	:&&&??F : gll6599::4@@r&   corer
   r   r;   c                    d S rv   r   r   s    r$   r   z-QtPkgConfigDependency.get_pkgconfig_host_bins   	     	r&   c                    d S rv   r   r   s    r$   r   z1QtPkgConfigDependency.get_pkgconfig_host_libexecs   r   r&   r   r   r   c                    d S rv   r   ri   r   r   s      r$   get_private_includesz*QtPkgConfigDependency.get_private_includes       r&   c                    dS )Nz
pkg-configr   r   s    r$   log_infozQtPkgConfigDependency.log_info   s    |r&   Nr\   r   r]   r^   r_   r`   r   r
   r   r;   r   r   r   r   r   r   r   )rw   rx   ry   r   rf   staticmethodabcabstractmethodr   r   r   r   r   r&   r$   r   r      s        ;;4A 4A 4A 4Al     \     \ 	        r&   r   )	metaclassc                  l    e Zd ZU dZded<   dZdd
ZddZddZe	j
        dd            ZddZddZdS ) QmakeQtDependencyz%Find Qt using Qmake as a config-tool.r   rA   z-vr\   r]   r^   r_   r`   c                   t                               | ||           d| j         | _        d| j         d| j         dg| _        |                                }t          j        |	                    dg                     }|
                    d| j         dt          | j                  dz    g           ||d<   t          j        | |||           |                                 sd S |                     dgd          }i }|D ];}|                                }|d	k    r|                    d
d          \  }}	|	||<   <|	                    dd	          | j        j        j                                        rht+          fddD                       sMt-          j        d           |                     || j        |           | j        rd S t-          j        d           |d         }
| j                            d|
z              |d         }t;          |          | _        t?          |          | _         | j        j!        j"        #                    d          dk    }d| j        j!        j"        v r(| j        j!        j"        #                    d          dv rd}tI          | j%        | j        j        | j&                 |          }| j        D ]U}tN          j(        )                    |
d|z             }| j                            d|z              |dk    rd}n|dk    rd}n|*                                }| j                            d| d           | j+        r8| ,                    ||          }|D ]}| j                            d|z               | j-        .                    | j/        |z   |z   | j        t          j        |                    }|r	|d         }n,t-          j0        d || j/        |z   |z   d!|           d"| _         n| j1                            |           W| j        j        | j&                 2                                r&| j3        r!| 4                    ||          sd"| _        d S d S d S d S )#Nqmakezqmake-rA   z>= z< r   -queryrt   rG   :QMAKE_XSPECc              3      K   | ]}|v V  	d S rv   r   )r"   sxspecs     r$   	<genexpr>z-QmakeQtDependency.__init__.<locals>.<genexpr>  s'      9^9^!u*9^9^9^9^9^9^r&   )iostvosz)Building for macOS, looking for frameworkzKBuilding for macOS, couldn't find framework, falling back to library searchrd   rp   QT_INSTALL_LIBS	buildtypedebugb_vscrt>   mddmtdTr)   	QuickTestQMLTESTTestTESTLIBz-DQT__LIBr   zCould not find:inF)5r}   rf   r   	tool_namer\   toolscopyr   r   r?   extendr*   r   rr   get_config_valuestripr+   r]   r   hostrS   anyr   r   _framework_detectr   r   r   r   r:   r   r@   r   coredataoptstoreget_value_forrY   rA   r   r   r   r!   upperr   r   r   r   r   logr~   rQ   r   r   )ri   r\   r]   r_   _versstdor4   linekvincdirr   rD   modules_lib_suffixr   mincdirdefine_basepriv_incr   libfileslibfiler   s                        @r$   rf   zQmakeQtDependency.__init__   s   tV,,,---*dj**,@TY,@,@'J
  Ir!:!:;;(DJ((*Ds4:/B*D*DEFFF!y%dD#v>>>zz|| 	F $$hZ88"$ 	 	D::<<Drzz::c1%%DAqE!HH		-,,8!++-- 	jc9^9^9^9^o9^9^9^6^6^ 	jJBCCC""5$*@&III } j
hiii+,  ///())%001%88 8$-;;KHHGS)222x )77	BBnTT4T\48CTUYUeCfhpqq, 	+ 	+Fgll64&=99G$$TG^444$$'6!!'$llnn$$%>[%>%>%>???# ?44WfEE!) ? ?I%,,TI-=>>>>)66'*<<dh ((* *H  "1+*F&03EEv' ' ' !&N!!'****8T-.99;; 	& 	&--h?? & %	& 	& 	& 	&& &r&   r   c                    t          j        d| j         d|          }|r(|                    d                              d          S |S )N(z	(\.\d+)+)r   r   )researchr   grouprstrip)ri   rA   r   s      r$   _sanitize_versionz#QmakeQtDependency._sanitize_versionR  sL    I04:000':: 	*771::$$S)))r&   variable_namer   c                    d| gS )Nr   r   )ri   r  s     r$   get_variable_argsz#QmakeQtDependency.get_variable_argsX  s    ],--r&   r   r   c                    d S rv   r   r   s      r$   r   z&QmakeQtDependency.get_private_includes[  r   r&   r4   r5   r   Nonec                j   |d         }|                                 }|                    dd            |g|d<   |D ]}d|z   }t          j        d|z              t	          || j        ||| j                  }|                                ro| j        	                    d|z              | xj        |
                    | j        | j                  z  c_        | xj        |                                z  c_        d	| _         d S d
| _        t!          |          | _        t%          |          | _        d S )Nr   methodpathsr)   zLooking for qt framework rc   z-F)rl   rm   FT)r   popr   r   r[   r]   ra   rr   r   r   ru   r   rA   r~   r   r   r:   r   r@   r   )	ri   r4   r   r_   r   	fw_kwargsr   fnamefwdeps	            r$   r   z#QmakeQtDependency._framework_detect_  sA   () KKMM	h%%%$X	' 	= 	=A1HEJ2U:;;;.udh	5[_[hiiiE{{}} !((777!!U%;%;QUQeGK| &< &U &U U!!%"5"5"7"77 % DM-e44DK5e<<DOOOr&   c                    dS )Nr   r   r   s    r$   r   zQmakeQtDependency.log_infoy  s    wr&   Nr   )rA   r   r   r   )r  r   r   r   r   )r4   r5   r   r   r_   r`   r   r  r   )rw   rx   ry   r   r   version_argrf   r  r  r   r   r   r   r   r   r&   r$   r   r      s         //LLLKT& T& T& T&l   . . . . 	   = = = =4     r&   r   c                      e Zd ZddZdS )Qt6WinMainMixinrD   rE   r   r   c                    |rdndS )NQt6EntryPointdQt6EntryPointr   r   s     r$   r   z(Qt6WinMainMixin.get_qt_winmain_base_name  s    #+@@r&   Nr   )rw   rx   ry   r   r   r&   r$   r$  r$  }  s.        A A A A A Ar&   r$  c                      e Zd ZddZdS )	Qt4ConfigToolDependencyr   r   r   r   r   c                    g S rv   r   r   s      r$   r   z,Qt4ConfigToolDependency.get_private_includes      	r&   Nr   rw   rx   ry   r   r   r&   r$   r)  r)    s(             r&   r)  c                      e Zd ZddZdS )	Qt5ConfigToolDependencyr   r   r   r   r   c                .    t          ||| j                  S rv   r3   rA   r   s      r$   r   z,Qt5ConfigToolDependency.get_private_includes      'VT\JJJr&   Nr   r,  r   r&   r$   r.  r.    .        K K K K K Kr&   r.  c                      e Zd ZddZdS )	Qt6ConfigToolDependencyr   r   r   r   r   c                .    t          ||| j                  S rv   r0  r   s      r$   r   z,Qt6ConfigToolDependency.get_private_includes  r1  r&   Nr   r,  r   r&   r$   r4  r4    r2  r&   r4  c                  F    e Zd Zedd            Zdd
Zedd            ZdS )Qt4PkgConfigDependencyr   r
   r   r;   c                    g d}|D ]O}	 t           j                            |                     | d                    c S # t          j        $ r Y Lw xY wd S )N)mocuicrcclupdatelrelease	_locationr   )r   r   r2   r   r   MesonException)r   applicationsapplications      r$   r   z.Qt4PkgConfigDependency.get_pkgconfig_host_bins  s     DCC' 	 	Kwt'8'8kC\C\C\'8']']^^^^^*   ts   5AAAr   r   r   r   c                    g S rv   r   r   s      r$   r   z+Qt4PkgConfigDependency.get_private_includes  r+  r&   c                    d S rv   r   r   s    r$   r   z2Qt4PkgConfigDependency.get_pkgconfig_host_libexecs      tr&   Nr   r   r   r
   r   r   )rw   rx   ry   r   r   r   r   r   r&   r$   r7  r7    sf           \       \  r&   r7  c                  F    e Zd Zedd            Zedd            Zdd
ZdS )Qt5PkgConfigDependencyr   r
   r   r   c                .    |                      d          S )N	host_binsr   r   r   s    r$   r   z.Qt5PkgConfigDependency.get_pkgconfig_host_bins  s      ; 777r&   c                    d S rv   r   r   s    r$   r   z2Qt5PkgConfigDependency.get_pkgconfig_host_libexecs  rD  r&   r   r   r   c                .    t          ||| j                  S rv   r0  r   s      r$   r   z+Qt5PkgConfigDependency.get_private_includes  r1  r&   NrE  r   )rw   rx   ry   r   r   r   r   r   r&   r$   rG  rG    sl        8 8 8 \8    \K K K K K Kr&   rG  c                  X     e Zd Zd fdZedd            Zedd            ZddZ xZS )Qt6PkgConfigDependencyr\   r   r]   r^   r_   r`   c                    t                                          |||           | j        s&t          j        d| j         d           d| _        d S d S )Nzdetected Qt6 zC pkg-config dependency does not have proper tools support, ignoringF)re   rf   r   r   r   rA   r   )ri   r\   r]   r_   rj   s       r$   rf   zQt6PkgConfigDependency.__init__  sj    sF+++ 	"J =t| = = = > > >!DMMM	" 	"r&   r   r
   r   c                .    |                      d          S )Nr   r   rJ  r   s    r$   r   z.Qt6PkgConfigDependency.get_pkgconfig_host_bins  s      8 444r&   c                .    |                      d          S )Nr   r   rJ  r   s    r$   r   z2Qt6PkgConfigDependency.get_pkgconfig_host_libexecs  s       < 888r&   r   r   r   c                .    t          ||| j                  S rv   r0  r   s      r$   r   z+Qt6PkgConfigDependency.get_private_includes  r1  r&   r   rE  r   )	rw   rx   ry   rf   r   r   r   r   rz   r{   s   @r$   rN  rN    s        " " " " " " 5 5 5 \5 9 9 9 \9K K K K K K K Kr&   rN  qt4)pkgconfig_classconfigtool_classqt5qt6)r   r   r   r   r   r   r   r   )r4   r5   r   r   )r4   r5   r   r;   )rA   r   rB   rC   rD   rE   r   r   )5
__future__r   r   r  r   typingr   baser   r   
configtoolr   detectr   	frameworkr	   r   r
   factoryr   rG   r   r   TYPE_CHECKING	compilersr   	envconfigr   environmentr   dependenciesr   r3   r:   r@   rY   r[   r}   ABCMetar   r   r$  r)  r.  r4  r7  rG  rN  	PKGCONFIGCONFIG_TOOLqt4_factoryqt5_factoryqt6_factoryr   r&   r$   <module>rj     si  
 # " " " " " . 



 				 				     8 8 8 8 8 8 8 8 , , , , , ,       / / / / / / * * * * * * & & & & & &            ? /$$$$$$''''''))))))......C C C C4$ $ $ $, , , ,   6    !9   $3G 3G 3G 3G 3G 3G 3G 3GlI I I I IG%8CK I I I IXE E E E E!5 E E E EPA A A A A A A A    /   K K K K K/ K K KK K K K Ko/@ K K K    2   0K K K K K2 K K KK K K K K_.C K K K, !2 1	 "3"?@*,	! ! ! + !2 1	 "3"?@*,	! ! ! + !2 1	 "3"?@*,	! ! ! +++r&   