
    eQ                       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 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mZ ddlmZ ej*                  rddlmZ ddlmZ  ej4                  dd       G d de             Zej:                   G d d             Zej:                   G d d             Z G d de      Z e ed<   ddddddddd d!d"d#d$Z! G d% d&      Z" G d' d(      Z#i d) e"d)d*gd+gg g ,      d- e"d-d.gd/gd0gg ,      d1 e"d1d2gd3gg g ,      d4 e"d4d5gg g g ,      d6 e"d6d7gd8gd9gg ,      d: e"d:d;gg g g ,      d< e"d<d=gg g g ,      d> e"d>g g g g ,      d? e"d?d@gg g g ,      dA e"dAd@gg g g ,      dB e"dBdCgdDgg g ,      dE e"dEg g g g ,      dF e"dFdGgg g g ,      dH e"dHg g g g ,      dI e"dIdJgg dKgg ,      dL e"dLdMgg dKgg ,      dN e"dNg g g g ,      i dO e"dOg g g g ,      dP e"dPg g g g ,      dQ e"dQg g g g ,      dR e"dRg g g g ,      dS e"dSg g g g ,      dT e"dTg g g g ,      dU e"dUdVgg g g ,      dW e"dWdXgg g g ,      dY e"dYg g g g ,      dZ e"dZd[gg g g ,      d\ e"d\g g g g ,      d] e"d]g g g g ,      d^ e"d^g g g g ,      d_ e"d_g g g g ,      d` e"d`g g g g ,      da e"dag g g g ,      db e"dbg g g g ,       e"dcg g g g ,       e"dddegdfgg g ,       e"dgdXgg g g ,       e"dhdidjgdkdlgg g ,       e"dmdngdogg g ,       e"dpdqgg g g ,       e"drdXgg g g ,       e"dsg g g g ,       e"dtg g g g ,      du	Z$y)v    )annotationsN)Path   )mlog)mesonlib   )DependencyExceptionSystemDependency)packages)PkgConfigDependency)threads_factory)
Properties)EnvironmentF)eqorderc                      e Zd ZU ded<   y)UnknownFileExceptionr   pathN)__name__
__module____qualname____annotations__     ?/usr/lib/python3/dist-packages/mesonbuild/dependencies/boost.pyr   r   Y   s    
Jr   r   c                  $    e Zd ZddZddZddZy)BoostIncludeDirc                    || _         || _        t        | j                  dz        }t        | j                  dz  dz        }t        | j                  dz        }| d| d| | _        | d| | _        y )Ni d   i  ._)r   version_intintversionversion_lib)selfr   r"   majorminorpatchs         r   __init__zBoostIncludeDir.__init___   s    	&D$$v-.T%%+t34D$$s*+%%1#WAeW-r   c                <    d| j                    d| j                   dS )Nz<BoostIncludeDir: z -- >)r$   r   r&   s    r   __repr__zBoostIncludeDir.__repr__h   s    #DLL>dii[BBr   c                    t        |t              r1| j                  | j                  f|j                  |j                  fk  S t        S N)
isinstancer   r"   r   NotImplementedr&   others     r   __lt__zBoostIncludeDir.__lt__k   s;    e_-$$dii0E4E4Euzz3RRRr   N)r   r   r"   r#   returnstrr4   objectr7   bool)r   r   r   r*   r.   r5   r   r   r   r   r   ]   s    .Cr   r   c                     e Zd ZddgZ ej
                  d      Z ej
                  d      Z ej
                  d      ZddZ	ddZ
ddZdd	Zdd
Zedd       ZddZddZddZddZddZddZddZd dZd dZy)!BoostLibraryFileboost_pythonboost_numpyz(boost_[a-zA-Z]+)([0-9]*)z^s?g?y?d?p?n?$z	^[0-9_]+$c                n   || _         | j                   j                  | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        | j                  j                  d      }|d   | _        |dd  | _        | j                  D cg c]  }|j!                         s| c}| _        | j                  D cg c]  }|j!                         r| c}| _        dj%                  | j                        | _        | j                  j                  d      | _        | j(                  d   | _        | j*                  j-                  d      r| j*                  d	d  | _        t/        | j"                        d
k\  r1dj1                  | j"                  d   | j"                  d         | _        | j&                  dv rd| _        n+| j&                  dv rd| _        nt3        | j                         | j                  j-                  d      r| j&                  dk(  rd| _        | j(                  dd  }| j5                         r| j7                  |      }|sy d| _        |D ]  }|dk(  rd| _        t/        |      d	k(  r|dd  dv r|| _        -t8        j:                  j=                  |      r7d|v | _        d|v | _        d|v | _	        d|v | _
        d|v | _        d|v | _        t8        j>                  j=                  |      r|| _        || _         y c c}w c c}w )NF Tr    r   r   -lib   r   z{}_{}>   dll.adll.libsodlldylib>   arC   boost_mt>   3264sgydpn) r   namestatictoolsetarchr%   rL   runtime_staticruntime_debugpython_debugdebugstlportdeprecated_iostreamssplitbasenamesuffixesisdigitvers_rawjoinnvsuffixnametagsmod_name
startswithlenformatr   is_python_libfix_python_namer=   reg_abi_tagmatchreg_ver_tag)r&   r   
name_partsxtagsis         r   r*   zBoostLibraryFile.__init__z   s   	IINN	 	#"!
$)! YY__S)
"1"12$(MMAqQYY[A$(MMEqE/++C0a(==##E* MM!"-DM t}}"&~~dmmA.>a@PQD ==FFDK]]l*DK&tyy11 ==##H-$--52HDK }}QR ''-D  	!ADyQ112,!6	!--33A6&)Qh#%(AX"$'1H! AX
"ax,/1H)!--33A6#$  	!G BEs   -L-L-L23L2c                X    d| j                    d| j                  dd| j                   dS )Nz<LIB:  z<32r,   )abitagrg   r   r-   s    r   r.   zBoostLibraryFile.__repr__   s,    }AdmmC%8$))AFFr   c                V   t        |t              r| j                  | j                  | j                  | j
                  | j                   | j                   | j                   | j                  | j                  | j                  | j                  | j                  f|j                  |j                  |j                  |j
                  |j                   |j                   |j                   |j                  |j                  |j                  |j                  |j                  fk  S t        S r0   )r1   r=   rg   rV   r%   rX   rL   rY   r\   rZ   r[   r]   r^   rU   r2   r3   s     r   r5   zBoostLibraryFile.__lt__   s    e-.t{{D,<,<diiGG!4!44JJ 2 2D4E4Ed77		 e.?.?HH%"6"66KK!4!4e6H6Hu99

  r   c                `    t        |t              r| j                  |j                  k(  S t        S r0   )r1   r=   rU   r2   r3   s     r   __eq__zBoostLibraryFile.__eq__   s&    e-.99

**r   c                ,    t        | j                        S r0   )hashrU   r-   s    r   __hash__zBoostLibraryFile.__hash__   s    DIIr   c                   d}|| j                   rdndz  }|| j                  rdndz  }|dz  }|| j                  rdndz  }|| j                  rdndz  }|| j                  rdndz  }|| j
                  rd	ndz  }|| j                  rd
ndz  }|| j                  rdndz  }|d| j                  xs dz   z  }|d| j                  xs dz   z  }|d| j                  xs dz   z  }|S )NrA   SrB   Mru   rO   rP   rQ   rR   rS   rT   z????x_xx)rV   rL   rY   rZ   r[   r\   r]   r^   rX   rW   r%   )r&   rv   s     r   rv   zBoostLibraryFile.abitag   s    ##-#c)#,,##5++#4**#3#,#3.22#;#+e,,#,--#))3V44r   c                ,     t         fddD              S )Nc              3  T   K   | ]  }j                   j                  |       ! y wr0   rU   rh   .0rq   r&   s     r   	<genexpr>z,BoostLibraryFile.is_boost.<locals>.<genexpr>   s      Lq499''*L   %(	libboost_rK   )anyr-   s   `r   is_boostzBoostLibraryFile.is_boost   s    L4KLLLr   c                H     t         fdt        j                  D              S )Nc              3  T   K   | ]  }j                   j                  |       ! y wr0   )rg   rh   r   s     r   r   z1BoostLibraryFile.is_python_lib.<locals>.<genexpr>   s      [14==++A.[r   )r   r=   boost_python_libsr-   s   `r   rk   zBoostLibraryFile.is_python_lib   s    [8H8Z8Z[[[r   c                   g }t         j                  j                  | j                        }|j	                  d      }|j	                  d      dfd}|D ]  }|j                  d      r ||dd          |j                         r	 ||       9t        |      dk\  r3|d   j                  r$|d   j                         r|d   dk(  r	 ||       z||gz  } |z   | _        |S )	Nr   r   c                    | j                  dd      } | j                  dd      } | j                         sy t        |       t              kD  r| y y )Nr!   rA   r    )replacerb   ri   )new_verscur_verss    r   update_versz5BoostLibraryFile.fix_python_name.<locals>.update_vers  sP    ''R0H''R0H##%8}s8},# -r   pyrD   r   r    )r   r8   r7   None)r=   reg_python_mod_splitrn   rg   grouprh   rb   ri   )r&   rr   
other_tagsm_curcur_namer   rs   r   s          @r   rl   z BoostLibraryFile.fix_python_name   s     #%
 !55;;DMMJ;;q>;;q>	$  	"A||D!AabE"AQ11!A$,,.QqTS[Aqc!
	" !8+r   c                   | j                   |k(  ry| j                         syt        j                  j	                  | j                         }t        j                  j	                  |      }|r|sy|j                  d      |j                  d      k7  ry|j                  d      }|j                  d      }|sd}|j                  |      S )NTFr   r   2)rg   rk   r=   r   rn   r   rh   )r&   rg   r   m_argr   arg_verss         r   mod_name_matchesz!BoostLibraryFile.mod_name_matches  s    ==H$!!# 55;;DMMJ 55;;HEE;;q>U[[^+;;q>;;q> H""8,,r   c                >    | j                   r|sy| j                   |k(  S NT)r%   )r&   r%   s     r   version_matchesz BoostLibraryFile.version_matches1  s!    {;..r   c                >    | j                   r|sy| j                   |k(  S r   )rX   )r&   rX   s     r   arch_matcheszBoostLibraryFile.arch_matches7  s    yyyyD  r   c                t   |sy|dv r| j                    xr | j                   S |dv r| j                    xr | j                  S |dv r*| j                   xs | j                   xr | j                   S |dv r)| j                   xs | j                   xr | j                  S t        j                  d| dd       y)	NT>   -MD/MD>   -MDd/MDd>   -MT/MT>   -MTd/MTdzBoost: unknown vscrt tag zR. This may cause the compilation to fail. Please consider reporting this as a bug.)once)rY   rZ   rV   r   warning)r&   vscrts     r   vscrt_matcheszBoostLibraryFile.vscrt_matches=  s    N"***E43E3E/EE&&***At/A/AAn$'':t{{?VDDVDV@VV&&'':t{{?R@R@RR0  8J  K  RV  	Wr   c                   g }| j                   t        v rjt        | j                      }| j                  r||j                  z  }n||j                  z  }| j                  r||j
                  z  }|S ||j                  z  }|S r0   )rg   boost_librariesrV   sharedrL   multisingle)r&   argslibdefs      r   get_compiler_argsz"BoostLibraryFile.get_compiler_argsM  su    ==O+$T]]3F{{%%ww$  %r   c                8    | j                   j                         gS r0   )r   as_posixr-   s    r   get_link_argszBoostLibraryFile.get_link_args[  s    		""$%%r   N)r   r   r6   r9   )r7   r#   )r7   r;   )rr   T.List[str]r7   r   )rg   r8   r7   r;   )r%   r8   r7   r;   )rX   r8   r7   r;   )r   r8   r7   r;   r7   r   )r   r   r   r   recompiler   rm   ro   r*   r.   r5   ry   r|   propertyrv   r   rk   rl   r   r   r   r   r   r   r   r   r   r=   r=   p   s     (7%2::&BC"**./K"**\*KH!TG"
   M\ D-0/! &r   r=   c                       e Zd Zd fdZddZddZddZddZddZddZ	ddZ
dd	Zdd
ZddZddZddZddZ xZS )BoostDependencyc                    t            d||d       |j                  j                  t	        j
                  d            }t        |t              sJ |j                  d       _	        |j                  dd      dk(   _        d  _        d|v  _        t	        j                  |d	       _         j                  D ]9  }t        |t              st!        d
      |j                  d      s0t!        d       g  _        g  _        d j                  v r. j'                  t)        | j*                  i             sd _        y |j.                   j*                     j0                   _        t4        j                   j2                  d        _         j6                  j8                   j*                     }t;         fddD              r j=                  |       y  j?                          y )Nboostcpp)language	buildtyper\   	threadingr   rV   modulesz&Boost module argument is not a string.rK   z6Boost modules must be passed without the boost_ prefixthreadFc              3  h   K   | ])  }|j                   j                  j                     v  + y wr0   )env
propertiesfor_machiner   s     r   r   z+BoostDependency.__init__.<locals>.<genexpr>  s1      GaqDHH''(8(899 Gs   /2)boost_includedirboost_librarydir
boost_root) superr*   coredata
get_optionr   	OptionKeyr1   r8   rh   r\   getmultithreadingr   explicit_staticextract_as_listr   r	   modules_foundmodules_missing_add_sub_dependencyr   r   is_foundmachines
cpu_familyrX   boost_arch_mapr   r   r   detect_boost_machine_filedetect_roots)r&   environmentkwargsr   rs   props	__class__s   `     r   r*   zBoostDependency.__init___  s   +vF((33H4F4F{4ST	)S)))))'2
$jjg>'I,0'61 %-$<$<VY$O 	dAa%)*RSS||H%)*bcc		d +-,. t||#++OKIYIY[],^_ %  (()9)9:EE	"&&tyy$7	 ##D$4$45 GEG G**51 	r   c                X   t        t        j                  |            }|D ]  }t        j                  d|j                                 | j                  |      }t        |d      }|sJ| j                  ||      }| j                  ||      | _
        | j                  s|| _         y  y )NzChecking potential boost root T)reverse)listr   
OrderedSetr   r\   r   detect_inc_dirssorteddetect_lib_dirs	run_checkr   r   )r&   roots
use_systemjinc_dirslib_dirss         r   check_and_set_rootsz#BoostDependency.check_and_set_roots  s    X((/0 	AJJ7

~FG++A.Hh5H ++Az:H NN8X>DM}}"#	r   c                   |j                  d      }|t        |t              sJ |j                  d      }|t        |t              sJ |r|rt        |      }t        |      }|j	                         r|j	                         st        d      t        j                  d       t        j                  d|        t        j                  d|        | j                  ||      S |s|rt        d      |j                  d	      }|sJ t        j                  |      }|D cg c]  }t        |       }	}|	rt        d
 |	D              rt        d      | j                  |	d       yc c}w )zDetect boost with values in the machine file or environment.

        The machine file values are defaulted to the environment values.
        r   Nr   zVPaths given for boost_includedir and boost_librarydir in machine file must be absolutezTrying to find boost with:z  - boost_includedir = z  - boost_librarydir = zdBoth boost_includedir *and* boost_librarydir have to be set in your machine file (one is not enough)r   c              3  >   K   | ]  }|j                            y wr0   )is_absolute)r   rq   s     r   r   z<BoostDependency.detect_boost_machine_file.<locals>.<genexpr>  s     <Q]]_,<s   z6boost_root path given in machine file must be absoluteFr   )r   r1   r8   r   r   r	   r   r\   detect_split_rootr   stringlistifyr   r   )
r&   r   incdirlibdirinc_dirlib_dirrootdir	raw_pathsrq   pathss
             r   r   z)BoostDependency.detect_boost_machine_file  s_    -.~FC!888-.~FC!888f6lG6lG&&(0C0C0E)  +C  D  DJJ34JJ0	:;JJ0	:;))'7;;v%  'M  N  N))L)w**73	"+,Qa,,S<e<<%&^__  5 9	 -s   $E+c                   t        j                  dj                  |D cg c]  }|j                          c}             t        j                  dj                  |D cg c]  }|j                  j                          c}             g }|D ]/  }| j                  |      }|st        j                  d|         n t        t        |            }| j                  D cg c]  }d|z   	 }}|D ]N  }t        j                  d|j                   d|j                          | j                  ||j                        }t        j                  d       |D ]  }	t        j                  d|	         g }
g }|D ]/  }d	}|D ]  }|j                  |      s||gz  }d
} n |r*|
|gz  }
1 t        j                  d       g }g }|D ]n  }	|	j                         }|	j                         }t        j                  dj                  |	j                  t!        |      t!        |                   ||z  }||z  }p t#        t%        j&                  |            }t#        t%        j&                  |            }|D cg c]  }|j                   c}| _        | j(                  D cg c]  }|dd  	 c}| _        t        t        | j(                              | _        |
| _        | j*                  D cg c]  }|dd  	 c}| _        t        t        | j*                              | _        |
s|j                  | _	        d|j                  j                         z   g| _        | xj,                  |z  c_        | xj,                  | j/                         z  c_        t#        t%        j&                  | j,                              | _        || _        t        j                  d| j,                          t        j                  d| j0                           y
t        j                  d       |
D ]  }t        j                  d|         Q y	c c}w c c}w c c}w c c}w c c}w c c}w )Nz  - potential library dirs: {}z  - potential include dirs: {}z  - found boost library dir: rK   z  - found boost z include dir: z  - filtered library list:z    - FTz
  - found:z    - {:<24} link={} comp={}   z-Iz  - final compile args: z  - final link args:    z  - NOT found:)r   r\   rj   r   r   detect_librariesr   setr   r$   filter_librariesr%   r   r   r   rg   r8   r   r   r   r   r   compile_args_extra_compile_args	link_args)r&   r   r   rq   libsrs   r   incf_libsr   	not_foundselected_modulesmodfoundl	comp_argsr  c_argsl_argss                      r   r   zBoostDependency.run_check  s   

3::RZ;[QAJJL;[\]

3::W_;`RSAFFOO<M;`ab *, 	A((+D

:1#>? 	 c$i )-6A8a<66 9	+CJJ)#++nSXXJOP**4AFJJ34 )

VA3<() &(I9; ' A))#.(QC/( $	
 #&I' JJ|$%'I%'I% $,,.*

9@@SQW[Z]^dZefgV#	V#	$ X00;<IX00;<I6F!G!**!GD151C1C!DA!AB%!DD!'D,>,>(?!@D#,D 373G3G#HaAabE#HD #)#d.B.B*C#DD  "{{%)CHH,=,=,?%?$@!!!Y.!!!T%=%=%??!$()<)<T=N=N)O$P!!*

5d6G6G5HIJ

5dnn5EFG JJ'(  +

VC5>*+q9	+v W <\;` 7H "H!D $Is#   Q!Q#Q:Q#Q/Qc                   g }|dz  }||dz  gz  }||dz  gz  }|j                         rJ|j                         D ]7  }|j                         r|j                  j                  d      s/||dz  gz  }9 |D cg c]  }|j                         s| }}|D cg c]  }|dz  	 }}|D cg c]  }|j	                         s| }}|D cg c]  }| j                  |       c}S c c}w c c}w c c}w c c}w )Nincluder   zboost-version.hpp)is_diriterdirrU   rh   exists _include_dir_from_version_header)r&   root
candidatesinc_rootrs   rq   s         r   r   zBoostDependency.detect_inc_dirs  s    #%
)#tg~&&
x')**
??%%' ,xxz):):8)Dq7{m+
, ",:Aqxxza:
:1;<Aa-'<
<!+:Aqxxza:
:BLMQ55a8MM ;<:Ms$   8C%C%C**C/ C/
C4c                j   |r| j                   j                  | j                        }|D cg c]  }t        |       }}|D cg c]#  }|j	                         s|j                         % }}|D cg c]  }t        j                  ||      s| }}t        t        j                  |            }|r|S g }g }|j                         D ]5  }|j                         s|j                  j                  d      s0||gz  }7 |D ]J  }|j                         D ]5  }	|	j                         s|	j                  j                  d      s0||	gz  }7 L | j                  s||z   S ddg}
dg}||z   }|D cg c]  t!        fd|
|z   D              r }}g }d| j                  v r&|D cg c]  t!        fd|
D              s }}n3d| j                  v r%|D cg c]  t!        fd|D              s }}t#        |      t#        |      z   S c c}w c c}w c c}w c c}w c c}w c c}w )	NrC   z
-linux-gnurM   i386rN   c              3  :   K   | ]  }|j                   v   y wr0   rU   r   rQ   rq   s     r   r   z2BoostDependency.detect_lib_dirs.<locals>.<genexpr>C  s     1c!!qvv+1c   c              3  :   K   | ]  }|j                   v   y wr0   r%  r&  s     r   r   z2BoostDependency.detect_lib_dirs.<locals>.<genexpr>G       7ZQVV7Zr'  c              3  :   K   | ]  }|j                   v   y wr0   r%  r&  s     r   r   z2BoostDependency.detect_lib_dirs.<locals>.<genexpr>I  r)  r'  )clib_compilerget_library_dirsr   r   r  resolver   path_is_in_rootr   r   r  r  rU   rh   endswithrX   r   r   )r&   r  r   system_dirs_trq   system_dirsdirssubdirsrs   r   arch_list_32arch_list_64raw_listno_archmatching_archs       `          r   r   zBoostDependency.detect_lib_dirs  s     ..??IM,9:q47:K:0;J1qxxz199;JKJ&1WX5M5MaQU5V1WKWx22;?@K""   " 	Axxzaff//6	
  	#AYY[ #88:!&&//,"?sNG#	# yy'>!f~v'>&dc1c|VbGb1c.c1dd&(499(0[1C7Z\7Z4ZQ[M[TYY(0[1C7Z\7Z4ZQ[M[m$vg66O ;JW: e \[sA   HHH3H!H!4H&H&,H+H+ H0:H0c                X   d}	 | j                   j                  j                  t        j                  d         j
                  }| j                   j                  j                  t        j                  d         j
                  }| j                  j                  ||      d   }|D cg c]*  }|j                  | j                  k(  s| j                  r)|, }}|D cg c]  }|j                  | j                  k(  s|  }}|D cg c]  }|j                  |      s| }}|D cg c]   }|j!                  | j"                        s|" }}|D cg c]  }|j%                  |      s| }}|D cg c]  }|j&                  dk7  s| }}| j(                  s|D cg c]  }|j(                  r| }}|sg S |d   j*                  }|D cg c]  }|j*                  |k(  s| }}|S # t        t        t        f$ r Y ]w xY wc c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )NrA   b_vscrtr   r   rH   )r   r   optionsr   r   valuer+  get_crt_compile_argsKeyError
IndexErrorAttributeErrorrV   r   rL   r   r   r   rX   r   re   r\   rv   )r&   r  lib_versr   crt_valr   rq   rv   s           r   r	  z BoostDependency.filter_librariesM  s   	hh''//0B0B90MNTTG))11(2D2D[2QRXXI&&;;GYOPQRE  Wa188t{{#:$BVBVWW?a1444+>+>#>???a1#4#4X#>??=a1>>$))#<==:a1??5#9::7a1::#677 zz#3!177A3D3 Ia6a188v#5669 *n5 		 X??=:7
 4 7sr   BG) '*HHH	;H	HH& HHH(H2HHH"/H"H'!H')H Hc                    t               }|j                         D ]m  j                         st        fddD              s)j                  j                  d      rE	 |j                  t        j                                      o |D cg c]  }|j                         s| c}S # t        $ rB}t        j                  dj                  |j                  j                               Y d }~d }~ww xY wc c}w )Nc              3  T   K   | ]  }j                   j                  |       ! y wr0   r   )r   rq   rs   s     r   r   z3BoostDependency.detect_libraries.<locals>.<genexpr>w  s      Mqvv((+Mr   r   z.pdbz3Boost: ignoring unknown file {} under lib directory)r  r  is_filer   rU   r/  addr=   r-  r   r   r   rj   r   r   )r&   r   r  erq   rs   s        @r   r  z BoostDependency.detect_librariesr  s    (+! 	hA99;M5LMM vvv&h)!))+67	h  0a1::<00 ( hRYYZ[Z`Z`ZeZefggh 1s$   "(B-C;&C;-	C868C33C8c                    d }|dz  |dz  dz  fD ]%  }|j                         s| j                  |      } n |sd| _        y | j                  |g|g      | _        y )Nr  r   F)rE  r  r   r   )r&   r   r  boost_inc_dirr   s        r   r   z!BoostDependency.detect_split_root  sk    M)7W+<}+LM 	Ayy{ $ E Ea H	 !DM	Br   c                "   g }	 t        d| j                  ddi      }|j                         r#|j                  d      }|r|t	        |      gz  }| j                  j                         D cg c]  }t	        |       }}|D cg c]  }|j                         s|j                  ! }}|D cg c]  }|j                          }}||z  }| j                  j                  | j                     j                         rt	        d      }|j                         r||gz  }t	        d      }t	        d      }g }	|j                         r|	g |j                         z  }	|j                         r|	g |j                         z  }	||	D cg c]?  }|j                   j#                         j%                  d      s-|j                         s>|A c}z  }ng }
|
t	        d	      gz  }
|
t	        d
      gz  }
|
t	        d      gz  }
|
t	        d      gz  }
|
D cg c]  }|j                         s| }
}|
D cg c]  }|j                          }
}||
z  }| j'                  |d       y # t
        $ r Y w xY wc c}w c c}w c c}w c c}w c c}w c c}w )Nr   requiredFprefix)	pkgconfigzC:/BoostzC:/Program Files/boostzC:/localz
/opt/localz/usr/local/opt/boostz
/usr/localz/usrTr   )r   r   r  get_variabler   r	   r+  get_default_include_dirsr  parentr-  r   r   
is_windowsr  r  rU   lowerrh   r   )r&   r   boost_pcr   rq   	inc_pathsc_root
prog_fileslocal_boostr   tmps              r   r   zBoostDependency.detect_roots  sm    	*7DHHz5>QRH~~%22X2F
d:.//E
 '+&8&8&Q&Q&STT!WT	T'0?!AHHJQXX?	?*34QQYY[4	4 88T--.99;*%F}}&! 67Jz*K')J  "5
 2 2 455
!!#6 3 3 566
aAqvv||~/H/H/QVWV^V^V`aaaE "C D&''CD/011CD&''CDL>!C "0QXXZ10C0(+,1199;,C,SLE  4 8U # 		 U?4* b 1,sN   AI# ,I3I8I8.I=.J4JJJ'J1J#	I0/I0c                    d}| j                   r!|ddj                  | j                         z   z  }| j                  r(|r|dz  }|ddj                  | j                        z   z  }|S )NrA   zfound: z, z | z	missing: )r   rd   r   )r&   ress     r   log_detailszBoostDependency.log_details  sf    9tyy););<<<Cu;4+?+?!@@@C
r   c                P    | j                   r| j                   j                         S y)NrA   )r   r   r-   s    r   log_infozBoostDependency.log_info  s    ????++--r   c                >   |j                         sJ |j                  d      }t        j                  d|      }|s1t	        j
                  d|        t        |j                  d   d      S t        |j                  d   t        |j                  d                  S )Nzutf-8)encodingz"#define\s+BOOST_VERSION\s+([0-9]+)z+Failed to extract version information from r   r   )
r  	read_textr   searchr   r\   r   parentsr#   r   )r&   hfilerawms       r   r  z0BoostDependency._include_dir_from_version_header  s     ||~~oowo/II;SAJJDUGLM"5==#3Q77u}}Q/QWWQZAAr   c                    dgS )Nz-DBOOST_ALL_NO_LIBr   r-   s    r   r  z#BoostDependency._extra_compile_args  s    $%%r   )r   r   r   zT.Dict[str, T.Any]r7   r   )r   T.List[Path]r   r;   r7   r   )r   z'Properties'r7   r   )r   T.List[BoostIncludeDir]r   rg  r7   r;   )r  r   r7   rh  )r  r   r   r;   r7   rg  )r  T.List[BoostLibraryFile]rA  r8   r7   ri  )r   r   r7   ri  )r   r   r  r   r7   r   )r7   r   r6   )rc  r   r7   r   r   )r   r   r   r*   r   r   r   r   r   r	  r  r   r   r[  r]  r  r  __classcell__)r   s   @r   r   r   ^  sS    'R$$:LL\N -7^#J1&
C59n

B&r   r   r   a64a32i64m32m64p32p64s32s64x32x64)aarch64arcarmia64mipsmips64ppcppc64sparcsparc64x86x86_64c                      e Zd ZddZy)BoostLibraryc                J    || _         || _        || _        || _        || _        y r0   rU   r   rV   r   r   )r&   rU   r   rV   r   r   s         r   r*   zBoostLibrary.__init__  s%    	
r   N)
rU   r8   r   r   rV   r   r   r   r   r   r   r   r   r*   r   r   r   r  r    s    r   r  c                      e Zd ZddZy)BoostModulec                <    || _         || _        || _        || _        y r0   )rU   keydescr  )r&   rU   r  r  r  s        r   r*   zBoostModule.__init__  s    			r   N)rU   r8   r  r8   r  r8   r  r   r  r   r   r   r  r    s    r   r  boost_atomicz-DBOOST_ATOMIC_DYN_LINK=1z-DBOOST_ATOMIC_STATIC_LINK=1r  boost_chronoz-DBOOST_CHRONO_DYN_LINK=1z-DBOOST_CHRONO_STATIC_LINK=1z-DBOOST_CHRONO_THREAD_DISABLEDboost_containerz-DBOOST_CONTAINER_DYN_LINK=1z-DBOOST_CONTAINER_STATIC_LINK=1boost_contextz-DBOOST_CONTEXT_DYN_LINK=1boost_contractz-DBOOST_CONTRACT_DYN_LINKz-DBOOST_CONTRACT_STATIC_LINKz -DBOOST_CONTRACT_DISABLE_THREADSboost_coroutinez-DBOOST_COROUTINES_DYN_LINK=1boost_date_timez-DBOOST_DATE_TIME_DYN_LINK=1boost_exceptionboost_fiberz-DBOOST_FIBERS_DYN_LINK=1boost_fiber_numaboost_filesystemz-DBOOST_FILESYSTEM_DYN_LINK=1z -DBOOST_FILESYSTEM_STATIC_LINK=1boost_graphboost_iostreamsz-DBOOST_IOSTREAMS_DYN_LINK=1boost_locale	boost_logz-DBOOST_LOG_DYN_LINK=1z-DBOOST_LOG_NO_THREADSboost_log_setupz-DBOOST_LOG_SETUP_DYN_LINK=1boost_math_c99boost_math_c99fboost_math_c99lboost_math_tr1boost_math_tr1fboost_math_tr1l	boost_mpiboost_nowidez-DBOOST_NOWIDE_DYN_LINK=1boost_prg_exec_monitorz-DBOOST_TEST_DYN_LINK=1boost_program_optionsboost_randomz-DBOOST_RANDOM_DYN_LINKboost_regexboost_serializationboost_stacktrace_addr2lineboost_stacktrace_backtraceboost_stacktrace_basicboost_stacktrace_noopboost_stacktrace_windbgboost_stacktrace_windbg_cachedboost_systemz-DBOOST_SYSTEM_DYN_LINK=1z-DBOOST_SYSTEM_STATIC_LINK=1boost_test_exec_monitorboost_threadz-DBOOST_THREAD_BUILD_DLL=1z-DBOOST_THREAD_USE_DLL=1z-DBOOST_THREAD_BUILD_LIB=1z-DBOOST_THREAD_USE_LIB=1boost_timerz-DBOOST_TIMER_DYN_LINK=1z-DBOOST_TIMER_STATIC_LINK=1boost_type_erasurez-DBOOST_TYPE_ERASURE_DYN_LINKboost_unit_test_framework
boost_waveboost_wserialization)	r  r  r  r  r  r  r  r  r  )%
__future__r   r   dataclasses	functoolstypingTpathlibr   rA   r   r   baser	   r
   detectr   rM  r   miscr   TYPE_CHECKING	envconfigr   r   r   	dataclass	Exceptionr   total_orderingr   r=   r   r   r  r  r   r   r   r   <module>r     s   # 	       7  * !??&)r %u-9  .   $ k& k& k&ZG&& G&R $ 
 0  nL+,./n L+,./01n |./12n, \,--n: l+,./23;nH |/0InV |./Wnd |enr <+,sn@ +,AnN /023On\ <]nj |./knx LynF ()()GnT |./()Unb lcnp |qn~ |nL lMnZ |[nh |inv wnD L+,EnR l%)*Sn` \$ann L)*on| <}nJ <"KnX !,)#Ynf !,)#gnt l%unB \$CnP |& Qn^ '3-' !+,./  ,&)*  !,.HI,.HI  *+-. '!/0 ".()*"  )#O	nr   