
    ZQd6                        d 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 ddl	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&  e$            Z' ej(        de)d	           dd
Z ee!d          Z* eee'          Z eee'          Z+ddZ,dZ-	 esej.        Z-n# e/$ r Y nw xY wd Z0d Z1ddZ2ddZ3dS )a  Provide access to Python's configuration information.  The specific
configuration variables available depend heavily on the platform and
configuration.  The values may be retrieved using
get_config_var(name), and the list of variables is available via
get_config_vars().keys().  Additional convenience functions are also
available.

Written by:   Fred L. Drake, Jr.
Email:        <fdrake@acm.org>
    N)partial   )DistutilsPlatformError)_PREFIX_BASE_PREFIX_EXEC_PREFIX_BASE_EXEC_PREFIX_PROJECT_BASE_PYTHON_BUILD_init_posixparse_config_h_init_non_posix_variable_rx_findvar1_rx_findvar2_rxexpand_makefile_varsis_python_buildget_config_h_filenameget_config_varget_config_varsget_makefile_filenameget_python_versionzCThe distutils.sysconfig module is deprecated, use sysconfig instead   )
stacklevelc                 $    t          | |          S )N)vars)sysconfig_parse_config_h)fpgs     */usr/lib/python3.11/distutils/sysconfig.pyr   r   >   s    #BQ////    T)
check_homec                 4   ddl m}  || dddd          }|i }i }i }	 |                                }|nt          j        t
          |          }|r|                    dd          \  }}	|	                                }	|	                    d	d
          }
d|
v r|	||<   n?	 t          |	          }	|	||<   n)# t          $ r |	                    d	d          ||<   Y nw xY wd}|rt          |          D ]}||         }t          j        t          |          pt          j        t          |          }|rk|                    d          }d}||v rt          ||                   }nz||v rd}ns|t           j        v rt           j        |         }nR||v rG|                    d          r|dd         |v rd
}n*d|z   |v rd}n t          |d|z                      }nd
x||<   }|r||                                d         }|d|                                         |z   |z   }d|v r|||<   8t          |          }|||<   n'# t          $ r |                                ||<   Y nw xY w||= |                    d          r|dd         |v r|dd         }||vr|||<   ||= ||                                 |                                D ]1\  }}	t/          |	t                    r|	                                ||<   2|                    |           |S )zParse a Makefile-style file.
    A dictionary containing name/value pairs is returned.  If an
    optional dictionary is passed in as the second argument, it is
    used instead of a new dictionary.
    r   )TextFiler   surrogateescape)strip_commentsskip_blanks
join_lineserrorsNTr   z$$ $)CFLAGSLDFLAGSCPPFLAGSFPY_   )distutils.text_filer$   readlinerematchr   groupstripreplaceint
ValueErrorlistsearchr   r   strosenviron
startswithendstartcloseitems
isinstanceupdate)fnr   r$   r   donenotdonelinemnvtmpvrenamed_variablesnamevaluefounditemafterks                     r    parse_makefilerU   I   s    -,,,,,	"QA!L]	^	^	^ByDG {{}}<H\4(( 	 771a==DAq		A99T2&&Dd{{

 AA
  DGG	 " 3 3 3iic22DGGG3! 4 :  0"MM /	" /	"DDME	,..P")L%2P2PA ,"GGAJJ99tAw<<DD'\\!EE"*__:a=DD+++u-- 4$qrr(>O2O2O!g-- %  #4	?33%''DGd 3!!%%''((OE!*17799*-4u<Ee||(-%(ZZU */DJJ  * 7 7 7).DJJJ7 $DM??511 3 $QRR,= = =#'8D#4//-2T
 DMMa  0"d HHJJJ 

    1a 	 ggiiDG HHTNNNHs$   !B6 6#CC,I!I%$I%r*   c                 R   | j         dk    rt          j        dk    rBt                              d          s(ddl}|                    t                     dt          d<   t          ddd	d
ddddddd          \  }}}}}}}}	}
}}dt          j	        v rat          j	        d         }t          j        dk    r=dt          j	        vr/|
                    |          r||t          |          d         z   }|}dt          j	        v rt          j	        d         }t          j        ||gd          rB|                    dd          }|                    dd          }|                    dd          }dt          j	        v rt          j	        d         }dt          j	        v rt          j	        d         }n|dz   }dt          j	        v r|dz   t          j	        d         z   }n
|r|dz   |z   }d	t          j	        v r1|dz   t          j	        d	         z   }|dz   t          j	        d	         z   }n|r|dz   |z   }|dz   |z   }dt          j	        v rI|dz   t          j	        d         z   }|dz   t          j	        d         z   }|dz   t          j	        d         z   }n|
r|dz   |
z   }|dz   |
z   }|dz   |
z   }dt          j	        v rt          j	        d         }dt          j	        v r|dz   t          j	        d         z   }n|dz   |	z   }|dz   |z   }|                     |||dz   |z   ||||           || _        dS dS )zDo any platform-specific customization of a CCompiler instance.

    Mainly needed on Unix, so we can plug in the information that
    varies across Unices and is stored in Python's Makefile.
    unixdarwinCUSTOMIZED_OSX_COMPILERr   NTrueCCCXXr,   CCSHAREDLDSHAREDSHLIB_SUFFIXARARFLAGSCONFIGURE_CPPFLAGSCONFIGURE_CFLAGSCONFIGURE_LDFLAGSz	*-4.[0-8]z-fstack-protector-strongz-fstack-protectorCPPz -Er-    r.   )preprocessorcompilercompiler_socompiler_cxx	linker_so
linker_exearchiver)compiler_typesysplatform_config_varsget_osx_supportcustomize_compilerr   r=   r>   r?   lenfnmatchfilterr7   set_executablesshared_lib_extension)rh   rs   cccxxcflagsccsharedldsharedshlib_suffixarar_flagsconfigure_cppflagsconfigure_cflagsconfigure_ldflagsnewcccpprm   cc_cmds                    r    rt   rt      s    ''<8##  ##$=>> A####//===:@67 D%&
ND)02DFY[ [	BS&(HlB	-/@
 2:Jt$E((""*44 ++B// 5 !8CGGHH#55BBJ*U#C>2s)[11 	U/778RTghh''(BDWXXH^^$>@STTF##z*-HBJ*U#CCu*C
""#~
9(==HH 	:#~(99Hrz!!c\BJx$88F#~
8(<<HH 	9c\$44F#~(88H##)bj44Cc\BJz$::F#~
:(>>HH 	;)00Cc\$66F#~(::H2:D!B
""Cx"*Y"77HHCx(*HcF"  x/ 	! 	 	 	 )5%%%[ ('r!   c                  `    t           j        t           j        k    pt          t           d          S )Nreal_prefix)ro   base_prefixprefixhasattr r!   r    is_virtual_environmentr     s     ?cj(GGC,G,GGr!   c                    || rt           pt          }t          j        dk    rt          rU| rt
          S t          j                            t          d          d          }t          j        	                    |          S dt                      z   t          z   }t          s| rddl}|                    d          S t          j                            |d|          S t          j        d	k    rzt          rSt          j                            |d          t          j        j        z   t          j                            |d
          z   S t          j                            |d          S t          dt          j        z            )a  Return the directory containing installed Python header files.

    If 'plat_specific' is false (the default), this is the path to the
    non-platform-specific header files, i.e. Python.h and so on;
    otherwise, this is the path to platform-specific header files
    (namely pyconfig.h).

    If 'prefix' is supplied, use it instead of sys.base_prefix or
    sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
    NposixsrcdirIncludepythonr   platincludeincludentPCzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIXBASE_PREFIXr=   rO   python_buildproject_basepathjoinr   normpathr   build_flags	sysconfigget_pathpathsepr   )plat_specificr   incdir
python_dirr   s        r    get_python_incr     sS    ~3#3B{	w' 
	0  0##nX&>&>	JJw''/// 2 4 44{B
 	5 	5%%m444w||FIz:::	D 	0 GLL33bgoEGLL../ 0w||FI...$!#)* * 	*r!   c                    | p t           j                            |          dv }|#|r| rt          pt          }n| rt
          pt          }t           j        dk    r| s|rt          j	        }nd}t           j        
                    ||dt                      z             }|r|S |r0t                      s"t           j        
                    |ddd          S t           j        
                    |d          S t           j        d	k    rC|r t           j        
                    |d
          S t           j        
                    |d
d          S t          dt           j        z            )aS  Return the directory containing the Python library (standard or
    site additions).

    If 'plat_specific' is true, return the directory containing
    platform-specific modules, i.e. any module from a non-pure-Python
    module distribution; otherwise, return the platform-shared library
    directory.  If 'standard_lib' is true, return the directory
    containing standard Python library modules; otherwise, return the
    directory for site-specific modules.

    If 'prefix' is supplied, use it instead of sys.base_prefix or
    sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
    )z/usrz
/usr/localNr   libr   python3zdist-packageszsite-packagesr   Libz?I don't know where Python installs its library on platform '%s')r=   r   r   r   r   EXEC_PREFIXPREFIXrO   ro   
platlibdirr   r   r   r   )r   standard_libr   is_default_prefixlibdir	libpythons         r    get_python_libr   G  sd    #
Xbg&6&6v&>&>BX&X~ 	="7'7F;FF"2{<fF	w' 	L 	 ^FF FGLL!),>,@,@!@B B	 	< 	<'='?'? 	<7<<y/JJJ7<<	?;;;	D 	@7<<...7<<???$!#)* * 	*r!   )N)r   N)r   r   N)4__doc___impr=   r3   ro   warningsrv   	functoolsr   r)   r   r   r   r   r   r   r   r   r	   r   r
   r   r   r   r   sysconfig_init_posixr   r   r   r   r   r   r   r   r   r   r   r   r   rq   warnDeprecationWarning_python_build_init_ntrU   r   abiflagsAttributeErrorrt   r   r   r   r   r!   r    <module>r      sl  	 	  				 				 



         * * * * * *                                         :    I   0 0 0 0 D999g*L997?L11
f f f f^ 	 #l 	 	 	 	D	S5 S5 S5lH H H(* (* (* (*V-* -* -* -* -* -*s   	B( (B0/B0