hyb
2026-01-30 15bc7727b58bf9ca0c8f21702fa893daac232b8d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
Ë
@ñúh´1ãó¨—dZddlmZddlZddlZddlZddlmZddlm    Z    ddl
m Z m Z m Z mZddlmZdd    lmZdd
lmZd d d œZGd„de«Zdd„Zy)aêdistutils.command.config
 
Implements the Distutils 'config' command, a (mostly) empty command class
that exists mainly to be sub-classed by specific module distributions and
applications.  The idea is that while every "config" command is different,
at least they're all named the same, and users always see "config" in the
list of standard commands.  Also, this is a good place to put common
configure-like tasks: "try to compile this C code", or "figure out where
this header file lives".
é)Ú annotationsN)ÚSequence)Úlogé)Ú    CCompilerÚ CompileErrorÚ    LinkErrorÚ new_compiler)ÚCommand)ÚDistutilsExecError)Úcustomize_compilerz.cz.cxx)Úczc++cóº—eZdZdZgd¢Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z d „Z dd „Zdd„Zdd„Z                    dd„Z                    dd„Z                        dd„Zd d d gf    dd„Zdd„Zy )Úconfigzprepare to build)    )z    compiler=Nzspecify the compiler type)zcc=Nzspecify the compiler executable)z include-dirs=ÚIz.list of directories to search for header files)zdefine=ÚDzC preprocessor macros to define)zundef=ÚUz!C preprocessor macros to undefine)z
libraries=Úlz!external C libraries to link with)z library-dirs=ÚLz.directories to search for external C libraries)ÚnoisyNz1show every action (compile, link, run, ...) taken)z dump-sourceNz=dump generated source files before attempting to compile themcót—d|_d|_d|_d|_d|_d|_d|_g|_y)Né)ÚcompilerÚccÚ include_dirsÚ    librariesÚ library_dirsrÚ dump_sourceÚ
temp_files©Úselfs úWH:\Change_password\venv_build\Lib\site-packages\setuptools/_distutils/command/config.pyÚinitialize_optionszconfig.initialize_options2sA€ØˆŒ ؈ŒØ ˆÔ؈ŒØ ˆÔðˆŒ
؈Ôðˆócó&—|j€ |jjxsg|_nHt|jt«r.|jj    t
j «|_|j€g|_n,t|jt«r|jg|_|j€g|_yt|jt«r/|jj    t
j «|_yy©N)    rÚ distributionÚ
isinstanceÚstrÚsplitÚosÚpathseprrr s r"Úfinalize_optionszconfig.finalize_optionsAsÇ€Ø × Ñ Ð $Ø $× 1Ñ 1× >Ñ >Ò DÀ"ˆDÕ Ü ˜×)Ñ)¬3Ô /Ø $× 1Ñ 1× 7Ñ 7¼¿
¹
Ó CˆDÔ à >‰>Ð !؈DNÜ ˜Ÿ™¬Ô ,Ø"Ÿn™nÐ-ˆDŒNà × Ñ Ð $Ø "ˆDÕ Ü ˜×)Ñ)¬3Ô /Ø $× 1Ñ 1× 7Ñ 7¼¿
¹
Ó CˆDÕ ð0r$có—yr&©r s r"Úrunz
config.runQs€Ø r$cóÚ—t|jt«sÑt|j|jd¬«|_t |j«|j r%|jj|j «|jr%|jj|j«|jr&|jj|j«yyy)z^Check that 'self.compiler' really is a CCompiler object;
        if not, make it one.
        T)rÚdry_runÚforceN) r(rrr
r2r rÚset_include_dirsrÚ set_librariesrÚset_library_dirsr s r"Ú_check_compilerzconfig._check_compilerXs¤€ô˜$Ÿ-™-¬Ô3Ü(ØŸ™°· ± ÀDôˆDŒMô ˜tŸ}™}Ô -Ø× Ò Ø— ‘ ×.Ñ.¨t×/@Ñ/@ÔA؏~Š~Ø— ‘ ×+Ñ+¨D¯N©NÔ;Ø× Ò Ø— ‘ ×.Ñ.¨t×/@Ñ/@ÕAð!ð4r$có—dt|z}t|dd¬«5}|r-|D]}|jd|›d«Œ|jd«|j|«|ddk7r|jd«ddd«|S#1swY|SxYw)    NÚ _configtestÚwúutf-8©Úencodingz
#include <z>
ú
éÿÿÿÿ)ÚLANG_EXTÚopenÚwrite)r!ÚbodyÚheadersÚlangÚfilenameÚfileÚheaders       r"Ú_gen_temp_sourcefilezconfig._gen_temp_sourcefilehs“€Ø ¤8¨D¡>Ñ1ˆÜ (˜C¨'Ô 2ð    !°dÙØ%ò9FØ—J‘J ¨F¨8°3Ð7Õ8ð9à—
‘
˜4Ô Ø J‰JtÔ ØB‰x˜4ÒØ—
‘
˜4Ô ÷    !ðˆ÷    !ðˆús ›AA?Á?B    cóª—|j|||«}d}|jj||g«|jj    |||¬«||fS)Nz _configtest.i©r)rIrÚextendrÚ
preprocess)r!rCrDrrEÚsrcÚouts       r"Ú _preprocesszconfig._preprocesstsT€Ø×'Ñ'¨¨g°tÓ<ˆØˆØ ‰×Ñ  S˜zÔ*Ø  ‰ × Ñ   c¸ РÔEؐSˆzÐr$có—|j|||«}|jrt|d|›d«|jj    |g«\}|j
j ||g«|jj|g|¬«||fS)Nz compiling 'z':rK)rIrÚ    dump_filerÚobject_filenamesrrLÚcompile)r!rCrDrrErNÚobjs       r"Ú_compilezconfig._compile{sƒ€Ø×'Ñ'¨¨g°tÓ<ˆØ × Ò Ü c˜[¨¨¨RÐ0Ô 1Ø—‘×/Ñ/°°Ó6‰ˆØ ‰×Ñ  S˜zÔ*Ø  ‰ ×јs˜e°,ÐÔ?ؐSˆzÐr$cóŽ—|j||||«\}}tjjtjj    |««d}    |j
j |g|    |||¬«|j
j|    |j
jz}    |jj|    «|||    fS)Nr)rrÚ target_lang)
rVr+ÚpathÚsplitextÚbasenamerÚlink_executableÚ exe_extensionrÚappend)
r!rCrDrrrrErNrUÚprogs
          r"Ú_linkz config._link„s¯€Ø—]‘] 4¨°,ÀÓE‰
ˆˆc܏w‰w×Ѥ§¡× 0Ñ 0°Ó 5Ó6°qÑ9ˆØ  ‰ ×%Ñ%Ø ˆEØ ØØ%Øð     &ô    
ð =‰=× &Ñ &Ð 2ؘ$Ÿ-™-×5Ñ5Ñ5ˆDØ ‰×јtÔ$àS˜$ÐÐr$cóЗ|s|j}g|_tjddj|««|D]}    t    j
|«Œy#t $rYŒ'wxYw)Nz removing: %sú )rrÚinfoÚjoinr+ÚremoveÚOSError)r!Ú    filenamesrFs   r"Ú_cleanz config._clean•s`€ÙØŸ™ˆIØ ˆDŒOÜ ‰ §¡¨)Ó!4Ô5Ø!ò    ˆHð Ü—    ‘    ˜(Õ#ñ    øôò Ùð úsÁAÁ    A%Á$A%Ncó–—|j«d}    |j||||«|j«|S#t$rd}YŒwxYw)aQConstruct a source file from 'body' (a string containing lines
        of C/C++ code) and 'headers' (a list of header files to include)
        and run it through the preprocessor.  Return true if the
        preprocessor succeeded, false if there were any errors.
        ('body' probably isn't of much use, but what the heck.)
        TF)r7rPrrh©r!rCrDrrEÚoks      r"Útry_cppzconfig.try_cppªsT€ð     ×ÑÔØ ˆð    Ø × Ñ ˜T 7¨L¸$Ô ?ð      ‰ Œ ؈    øô    ò    ØŠBð    ús”:º AÁAcó,‡—|j«|j||||«\}}t‰t«rt    j
‰«Št |d¬«5}tˆfd„|D««}    ddd«|j«    S#1swYŒxYw)a´Construct a source file (just like 'try_cpp()'), run it through
        the preprocessor, and return true if any line of the output matches
        'pattern'.  'pattern' should either be a compiled regex object or a
        string containing a regex.  If both 'body' and 'headers' are None,
        preprocesses an empty file -- which can be useful to determine the
        symbols the preprocessor and compiler set by default.
        r;r<c3ó@•K—|]}‰j|«–—Œy­wr&)Úsearch)Ú.0ÚlineÚpatterns  €r"ú    <genexpr>z$config.search_cpp.<locals>.<genexpr>Êsøèø€Ò>°˜Ÿ™ t×,Ñ>ùsƒN)    r7rPr(r)ÚrerTrAÚanyrh)
r!rrrCrDrrErNrOrGÚmatchs
 `        r"Ú
search_cppzconfig.search_cpp»s„ø€ð     ×ÑÔØ×#Ñ# D¨'°<ÀÓF‰ˆˆSä gœsÔ #Ü—j‘j Ó)ˆGä # Ô (ð    ?¨DÜÓ>¸Ô>Ó>ˆE÷    ?ð      ‰ Œ ؈ ÷        ?ð    ?ús ÁB
BcóЗ|j«    |j||||«d}tj|xrdxsd«|j «|S#t$rd}YŒ<wxYw)zwTry to compile a source file built from 'body' and 'headers'.
        Return true on success, false otherwise.
        TFúsuccess!úfailure.)r7rVrrrcrhrjs      r"Ú try_compilezconfig.try_compileÏsh€ð     ×ÑÔð    Ø M‰M˜$ ¨°tÔ <؈Bô     ‰Ò"˜
Ò0 jÔ1Ø  ‰ Œ ؈    øô ò    ØŠBð    ús’AÁ A%Á$A%cóà—|j«    |j||||||«d}t    j
|xrdxsd«|j «|S#ttf$rd}YŒBwxYw)zžTry to compile and link a source file, built from 'body' and
        'headers', to executable form.  Return true on success, false
        otherwise.
        TFryrz)r7r`rr    rrcrh)r!rCrDrrrrErks        r"Útry_linkzconfig.try_linkÞsq€ð     ×ÑÔð    Ø J‰Jt˜W l°I¸|ÈTÔ R؈Bô     ‰Ò"˜
Ò0 jÔ1Ø  ‰ Œ ؈    øô œiÐ(ò    ØŠBð    ús’AÁA-Á,A-có—|j«    |j||||||«\}}}    |j|    g«d}
t j|
xrdxsd«|j«|
S#ttt
f$rd}
YŒGwxYw)zœTry to compile, link to an executable, and run a program
        built from 'body' and 'headers'.  Return true on success, false
        otherwise.
        TFryrz)    r7r`Úspawnrr    r rrcrh) r!rCrDrrrrErNrUÚexerks            r"Útry_runzconfig.try_runös€ð     ×ÑÔð    Ø ŸJ™Jؐg˜|¨Y¸ Àdó‰MˆCcð J‰J˜uÔ ØˆBô     ‰Ò"˜
Ò0 jÔ1Ø  ‰ Œ ؈    øô œiÔ);Ð<ò    ØŠBð    ús’.A/Á/BÂBcóD—|j«g}|r|jd|›d«|jd«|r|jd|›d«n|jd|›d«|jd«dj|«dz}|j|||||«S)    aÛDetermine if function 'func' is available by constructing a
        source file that refers to 'func', and compiles and links it.
        If everything succeeds, returns true; otherwise returns false.
 
        The constructed source file starts out by including the header
        files listed in 'headers'.  If 'decl' is true, it then declares
        'func' (as "int func()"); you probably shouldn't supply 'headers'
        and set 'decl' true in the same call, or you might get errors about
        a conflicting declarations for 'func'.  Finally, the constructed
        'main()' function either references 'func' or (if 'call' is true)
        calls it.  'libraries' and 'library_dirs' are used when
        linking.
        zint z ();z int main () {z  z();ú;ú}r>)r7r^rdr})    r!ÚfuncrDrrrÚdeclÚcallrCs             r"Ú
check_funczconfig.check_funcs™€ð.     ×ÑÔØˆÙ Ø K‰K˜$˜t˜f DÐ)Ô *Ø  ‰ OÔ$Ù Ø K‰K˜"˜T˜F #˜Õ 'à K‰K˜"˜T˜F !˜ Ô %Ø  ‰ CÔØy‰y˜‹ Ñ%ˆà}‰}˜T 7¨L¸)À\ÓRÐRr$c    óf—|j«|jd|||gt|«z|«S)aáDetermine if 'library' is available to be linked against,
        without actually checking that any particular symbols are provided
        by it.  'headers' will be used in constructing the source file to
        be compiled, but the only effect of this is to check if all the
        header files listed are available.  Any libraries listed in
        'other_libraries' will be included in the link, in case 'library'
        has symbols that depend on other libraries.
        zint main (void) { })r7r}Úlist)r!ÚlibraryrrDrÚother_librariess      r"Ú    check_libzconfig.check_lib:s<€ð      ×ÑÔØ}‰}Ø !Ø Ø Ø ˆIœ˜_Ó-Ñ -Ø ó 
ð    
r$có,—|jd|g|¬«S)z¤Determine if the system header file named by 'header_file'
        exists and can be found by the preprocessor; return true if so,
        false otherwise.
        z /* No body */)rCrDr)rl)r!rHrrrEs     r"Ú check_headerzconfig.check_headerSs#€ð
|‰|Ø ¨6¨(Àðó
ð    
r$)NNNr)NNr)NNNNr)NNNNFF)rŒz Sequence[str])Ú__name__Ú
__module__Ú __qualname__Ú descriptionÚ user_optionsr#r-r0r7rIrPrVr`rhrlrwr{r}rrˆrrr/r$r"rrs¶„Ø$€Kò€Lò& òDò  òBò 
òòò ò"    ó*ó"ó( ð$ØØØØ óð6ØØØØ óðDØØØØ Ø ó#SðPØØØ)+ð 
ð 'ó 
ô2
r$rcóЗ|€tjd|«ntj|«tjtj|«j    d¬««y)zjDumps a file content into log.info.
 
    If head is not None, will be dumped before the file content.
    Nz%sr;r<)rrcÚpathlibÚPathÚ    read_text)rFÚheads  r"rRrR]sE€ð
 €|Ü ‰xÕ ä ‰ŒÜ‡HHŒW\‰\˜(Ó #× -Ñ -°wÐ -Ó ?Õ@r$r&)Ú__doc__Ú
__future__rr+r–rtÚcollections.abcrÚdistutils._logrÚ    ccompilerrrr    r
Úcorer Úerrorsr Ú    sysconfigr r@rrRr/r$r"ú<module>r¢sLðñ    õ#ã    ÛÛ    Ý$ÝçHÓHÝÝ'Ý*à˜fÑ %€ô~
ˆWô~
ôB
    Ar$