�`^c@s{dZdZddlZddlmZddlmZddlmZddl m
Z
d�Zd efd
��YZdS(s�distutils.command.build_clib
Implements the Distutils 'build_clib' command, to build a C/C++ library
that is included in the module distribution and needed by an extension
module.s$Id$i�N(tCommand(tDistutilsSetupError(tcustomize_compiler(tlogcCsddlm}|�dS(Ni�(tshow_compilers(tdistutils.ccompilerR(R((s2/sys/lib/python2.7/distutils/command/build_clib.pyRst
build_clibcBs�eZdZdddddgZdd
gZdddefgZd�Zd�Z d�Z
d�Zd�Zd�Z
d�ZRS(s/build C/C++ libraries used by Python extensionssbuild-clib=tbs%directory to build C/C++ libraries tosbuild-temp=tts,directory to put temporary build by-productstdebugtgs"compile with debugging informationtforcetfs2forcibly build everything (ignore file timestamps)s compiler=tcsspecify the compiler types
help-compilerslist available compilerscCsUd|_d|_d|_d|_d|_d|_d|_d|_d|_ dS(Ni(
tNoneRt
build_tempt librariestinclude_dirstdefinetundefR Rtcompiler(tself((s2/sys/lib/python2.7/distutils/command/build_clib.pytinitialize_options6s cCs�|jdddd d
d�|jj|_|jrG|j|j�n|jdkrn|jjpeg|_nt|jt�r�|jjt j
�|_ndS(NtbuildRRRR R(s
build_temps
build_clib(s
build_temps
build_temp(scompilerscompiler(sdebugsdebug(sforcesforce(tset_undefined_optionstdistributionRtcheck_library_listRRt
isinstancetstrtsplittostpathsep(R((s2/sys/lib/python2.7/distutils/command/build_clib.pytfinalize_optionsFs cCs�|js
dSddlm}|d|jd|jd|j�|_t|j�|jdk rv|jj |j�n|j
dk r�x-|j
D]\}}|jj||�q�Wn|jdk r�$|jD]}|jj
|�q�Wn|j|j�dS(Ni�(tnew_compilerRtdry_runR(RRR!RR"RRRRtset_include_dirsRtdefine_macroRtundefine_macrotbuild_libraries(RR!tnametvaluetmacro((s2/sys/lib/python2.7/distutils/command/build_clib.pytrun_s
cCs�t|t�std�nx�|D]�}t|t�rVt|�dkrVtd�n|\}}t|t�s�tdd�nd|ks�tjdkr�tj|kr�tdd|d �nt|t�s"td
d�q"q"WdS(
s`Ensure that the list of libraries is valid.
`library` is presumably provided as a command option 'libraries'.
This method checks that it is a list of 2-tuples, where the tuples
are (library_name, build_info_dict).
Raise DistutilsSetupError if the structure is invalid anywhere;
just returns otherwise.
s+'libraries' option must be a list of tuplesis*each element of 'libraries' must a 2-tuples+first element of each tuple in 'libraries' s#must be a string (the library name)t/sbad library name '%s': s$may not contain directory separatorsis,second element of each tuple in 'libraries' s!must be a dictionary (build info)N( RtlistRttupletlenRRtseptdict(RRtlibR't
build_info((s2/sys/lib/python2.7/distutils/command/build_clib.pyRws*
"
*cCs>|js
dSg}x$|jD]\}}|j|�qW|S(N(RRtappend(Rt lib_namestlib_nameR2((s2/sys/lib/python2.7/distutils/command/build_clib.pytget_library_names�s cCs�|j|j�g}xe|jD]Z\}}|jd�}|dks]t|ttf�rmtd|�n|j|�q W|S(Ntsourcessfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames( RRtgetRRR,R-Rtextend(Rt filenamesR5R2R7((s2/sys/lib/python2.7/distutils/command/build_clib.pytget_source_files�s"
cCs�x�D]�}}|jd�}|dksDt|ttf�r\tddd|�nt|�}tjd|�|jd�}|jd�}|jj |d|j
d|d|d |j�}|jj||d|j
d |j�qWdS(
NR7s&in 'libraries' option (library '%s'), s&'sources' must be present and must be sa list of source filenamessbuilding '%s' librarytmacrosRt
output_dirR (R8RRR,R-RRtinfoRtcompileRR tcreate_static_libR(RRR5R2R7R<Rtobjects((s2/sys/lib/python2.7/distutils/command/build_clib.pyR&�s$" (sbuild-clib=Rs%directory to build C/C++ libraries to(sbuild-temp=Rs,directory to put temporary build by-products(sdebugR
s"compile with debugging information(sforceRs2forcibly build everything (ignore file timestamps)(s compiler=R
sspecify the compiler typeN(t__name__t
__module__tdescriptiontuser_optionstboolean_optionsRRthelp_optionsRR R*RR6R;R&(((s2/sys/lib/python2.7/distutils/command/build_clib.pyRs* $ (
t__doc__t__revision__Rtdistutils.coreRtdistutils.errorsRtdistutils.sysconfigRt distutilsRRR(((s2/sys/lib/python2.7/distutils/command/build_clib.pyt<module>s
|