��
r�$Lc�����������@���s���d��Z��d�Z�d�d�k�Z�d�d�k�Z�d�d�k�Z�d�d�k�Z�d�d�k�Z�d�d�k�Z�d�d�k	�Z�d�d�k
�Z�d�d�k�Z�d�d�k�Z�g��Z
�e�i�i�i����Z�e�i�i�i����Z�e�i�i�i����Z�e�i�i�i����Z�e�i�i�i����Z�e�i�i�h��d�d��Z�d�d�d�d	�d
�d�d�d
�d�d�d�d�d�d�d�d�d�d�d�g�Z�d�g�Z�d�d�g�Z�d�d�d�g�Z�x�e�D]�Z�e�i�e�e���qfWx�e�D]�Z�e�i�e�e���q�Wx.�e�D]&�Z�e�i�e�e���e�i�e�e���q�Wd�e �f�d �������YZ!�d!����Z"�d"����Z#�d#����Z$�d$����Z%�d%����Z&�d&����Z'�d'����Z(�d(����Z)�d)����Z*�d*����Z+�d+����Z,�d,�e �f�d-�������YZ-�d.�e �f�d/�������YZ.�d0����Z/�d1����Z0�d2����Z1�d3����Z2�d�S(4���s���SCons.Tool

SCons tool selection.

This looks for modules that define a callable object that can modify
a construction environment as appropriate for a given tool (or tool
chain).

Note that because this subsystem just *selects* a callable that can
modify a construction environment, it's possible for people to define
their own "tool specification" in an arbitrary callable function.  No
one needs to use or tie in to this subsystem in order to roll their own
tool definition.
s@���src/engine/SCons/Tool/__init__.py 5023 2010/06/14 22:05:46 sconsi����Nt���namet���SourceFileScanners���.cs���.Cs���.cxxs���.cpps���.c++s���.ccs���.hs���.Hs���.hxxs���.hpps���.hhs���.Fs���.fpps���.FPPs���.ms���.mms���.Ss���.spps���.SPPs���.ds���.idls���.IDLs���.texs���.ltxs���.latext���Toolc�����������B���s/���e��Z�g��d����Z�d����Z�d����Z�d����Z�RS(���c���������K���sg���|�|��_��|�t�|��_�|�|��_�|��i����}�|�i�|��_�|�i�|��_�t�|�d���o�|�i�|��_�n�d��S(���Nt���options(	���R����t���DefaultToolpatht���toolpatht���init_kwt���_tool_modulet���generatet���existst���hasattrR���(���t���selfR����R���t���kwt���module(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���__init__X���s����	
	c���
������C���s��t��i�}�|��i�t��i�t��_�zy[�t�i�|��i�|��i���\�}�}�}�z�t�i�|��i�|�|�|���SWd��|�o�|�i����n�XWn��t�j
�o��}�t	�|���d�|��i�j�o�t
�i�i�|�����n�y�d�d��k
�}�Wn�t�j
�o�q7XxQ�|��i�D]A�}�y#�|�i�|���}�|�i�|��i���SWq��t�j
�o	�}�q��Xq��Wn�XWd��|�t��_�Xd�|��i�}	�y�t��i�|	�SWn�t�j
�o�yXt��i�d�i�}
�yi�t�i�|��i�|
���\�}�}�}�t�i�|	�|�|�|���}�t�t
�i�|��i�|���|�o�|�i����n�|�SWn��t�j
�o��}�t	�|���d�|��i�j�o�t
�i�i�|�����n�yV�d�d��k
�}�|�i�t��i�d�i�d���}�|�i�|	���}�t�t
�i�|��i�|���|�SWq�t�j
�o.�}�d�|��i�|�f�}�t
�i�i�|�����q�Xn�XWqt�j
�o.�}�d�|��i�|�f�}�t
�i�i�|�����qXn�Xd��S(���Ns���No module named %si����s���SCons.Tool.s
���SCons.Tooli����s���No tool named '%s': %s(���t���syst���pathR���t���impt���find_moduleR����t���load_modulet���closet���ImportErrort���strt���SConst���Errorst���EnvironmentErrort	���zipimportt���zipimportert���modulest���KeyErrort���__path__t���setattrR���(
���R���t
���oldpythonpatht���fileR���t���desct���eR���t���aPatht���importert	���full_namet���smpathR
���t���m(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyR���d���sh����	!
�

 c���������O���s����|��i��d��j	�o@�|�d��j	�o&�|�}�|��i��i����}�|�i�|���qP�|��i��}�n�|�i�d�|��i�g���t�|��d���on�d�d��k�}�d�|�j�o-�d�d�k�l	�}�|�i
�i
�d�|���|�d�<n�|�d�}�|��i�|���|�i�|���n�|��i
�|�|�|���d��S(���Nt���TOOLSR���i����(���t	���ARGUMENTSt���args(���R���t���Nonet���copyt���updatet���AppendR����R
���t���SCons.Variablest���SCons.ScriptR*���t	���VariablesR���t���UpdateR���(���R���t���envR+���R���t���call_kwR���R*���t���opts(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���__call__����s ����




c���������C���s���|��i��S(���N(���R����(���R���(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���__str__����s����(���t���__name__t
���__module__R���R���R7���R8���(����(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyR���W���s���	;	c���������C���s����y�|��d�d�}�Wnl�t��j
�o`�d�d�k�}�|�i�i�d�|�i�i�d�d�d�d	�d
�d�d�d
�d�d�d�t���}�|�|��d�d�<n�X|�S(���s����This is a utility function that creates the Program
    Builder in an Environment if it is not there already.

    If it is already there, we return the existing one.
    t���BUILDERSt���Programi����Nt���actiont���emitters���$PROGEMITTERt���prefixs���$PROGPREFIXt���suffixs���$PROGSUFFIXt
���src_suffixs
���$OBJSUFFIXt���src_buildert���Objectt���target_scanner(���R���t���SCons.Defaultst���Buildert���Defaultst
���LinkActiont���ProgramScanner(���R4���t���programR���(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���createProgBuilder����s����	c������
���C���s����y�|��d�d�}�Wn��t��j
�o��t�i�i�d�d���g�}�|��i�d���o&�t�i�i�d�d���}�|�i�|���n�t�i�i�d�|�d	�d
�d�d�d
�d�d�d�d�d���}�|�|��d�d�<|�|��d�d�<n�X|�S(���s����This is a utility function that creates the StaticLibrary
    Builder in an Environment if it is not there already.

    If it is already there, we return the existing one.
    R;���t
���StaticLibrarys���$ARCOMs	���$ARCOMSTRt���ranlibs
���$RANLIBCOMs
���$RANLIBCOMSTRR=���R>���s���$LIBEMITTERR?���s
���$LIBPREFIXR@���s
���$LIBSUFFIXRA���s
���$OBJSUFFIXRB���t���StaticObjectt���Library(���R���R���t���Actiont���Detectt���appendRF���(���R4���t
���static_libt���action_listt
���ranlib_action(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���createStaticLibBuilder����s ����	c���������C���s����y�|��d�d�}�Wn~�t��j
�or�d�d�k�}�|�i�i�|�i�i�g�}�|�i�i�d�|�d�d�d�d	�d
�d�d�t�d
�d�d�d���}�|�|��d�d�<n�X|�S(���s����This is a utility function that creates the SharedLibrary
    Builder in an Environment if it is not there already.

    If it is already there, we return the existing one.
    R;���t
���SharedLibraryi����NR=���R>���s
���$SHLIBEMITTERR?���s���$SHLIBPREFIXR@���s���$SHLIBSUFFIXRD���RA���s���$SHOBJSUFFIXRB���t���SharedObject(���R���RE���RG���t���SharedCheckt���ShLinkActionRF���RI���(���R4���t
���shared_libR���RT���(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���createSharedLibBuilder����s����		c���������C���s����y�|��d�d�}�Wn~�t��j
�or�d�d�k�}�|�i�i�|�i�i�g�}�|�i�i�d�|�d�d�d�d	�d
�d�d�t�d
�d�d�d���}�|�|��d�d�<n�X|�S(���s����This is a utility function that creates the LoadableModule
    Builder in an Environment if it is not there already.

    If it is already there, we return the existing one.
    R;���t���LoadableModulei����NR=���R>���s���$LDMODULEEMITTERR?���s���$LDMODULEPREFIXR@���s���$LDMODULESUFFIXRD���RA���s���$SHOBJSUFFIXRB���RX���(���R���RE���RG���RY���t���LdModuleLinkActionRF���RI���(���R4���t	���ld_moduleR���RT���(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���createLoadableModuleBuilder��s����		c���������C���s��y�|��d�d�}�Wnn�t��j
�ob�t�i�i�d�h��d�h��d�d�d�d�d	�d
�d�g�d�t�d
�d���}�|�|��d�d�<|�|��d�d�<n�Xy�|��d�d�}�Wn`�t��j
�oT�t�i�i�d�h��d�h��d�d�d�d�d	�d
�d�g�d�t�d
�d���}�|�|��d�d�<n�X|�|�f�S(���s`��This is a utility function that creates the StaticObject
    and SharedObject Builders in an Environment if they
    are not there already.

    If they are there already, we return the existing ones.

    This is a separate function because soooo many Tools
    use this functionality.

    The return is a 2-tuple of (StaticObject, SharedObject)
    R;���RN���R=���R>���R?���s
���$OBJPREFIXR@���s
���$OBJSUFFIXRB���t���CFilet���CXXFilet���source_scannert
���single_sourcei���RC���RX���s���$SHOBJPREFIXs���$SHOBJSUFFIX(���R���R���RF���R���(���R4���t
���static_objt
���shared_obj(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���createObjBuilders��s0����		c���������C���s����y�|��d�d�}�WnY�t��j
�oM�t�i�i�d�h��d�h��d�h�d�d
�6��}�|�|��d�d�<|��i�d�d���n�Xy�|��d�d	�}�WnY�t��j
�oM�t�i�i�d�h��d�h��d�h�d
�d
�6��}�|�|��d�d	�<|��i�d�d���n�X|�|�f�S(���sD��This is a utility function that creates the CFile/CXXFile
    Builders in an Environment if they
    are not there already.

    If they are there already, we return the existing ones.

    This is a separate function because soooo many Tools
    use this functionality.

    The return is a 2-tuple of (CFile, CXXFile)
    R;���Ra���R=���R>���R@���s���$CFILESUFFIXt���CFILESUFFIXs���.cRb���s���$CXXFILESUFFIXt
���CXXFILESUFFIXs���.ccN(���R���R���RF���R,���t
���SetDefault(���R4���t���c_filet���cxx_file(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���createCFileBuildersE��s"����
c���������C���s����y�|��d�d�}�Wnx�t��j
�ol�t�i�i�i����}�t�i�i�d�d���}�t�i�i�d�|�d�d�d�d	�d
�d�d�|�i���}�|�|��d�d�<n�X|�S(
���NR;���t���Jars���$JARCOMs
���$JARCOMSTRR=���R@���s
���$JARSUFFIXRA���s���$JAVACLASSSUFIXRB���t
���JavaClassFilet���source_factory(���R���R���t���Nodet���FSt���get_default_fsRP���RF���t���Entry(���R4���t���java_jart���fst���jar_com(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���CreateJarBuilderj��s����c���������C���s����y�|��d�d�}�Wn{�t��j
�oo�t�i�i�i����}�t�i�i�d�d���}�t�i�i�d�|�d�d�d�|�i�d	�|�i�d
�d���}�|�|��d�d�<n�X|�S(���NR;���t���JavaHs	���$JAVAHCOMs���$JAVAHCOMSTRR=���RA���s���$JAVACLASSSUFFIXt���target_factoryRp���RB���Ro���(	���R���R���Rq���Rr���Rs���RP���RF���Rt���t���File(���R4���t
���java_javahRv���t���java_javah_com(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���CreateJavaHBuilderx��s����			c������
���C���s����y�|��d�d�}�Wn��t��j
�ox�t�i�i�i����}�t�i�i�d�d���}�t�i�i�d�|�d�h��d�d�d	�d
�g�d�|�i�d�|�i���}�|�|��d�d�<n�X|�S(
���NR;���Ro���s	���$JAVACCOMs���$JAVACCOMSTRR=���R>���RA���s���$JAVASUFFIXRB���t���JavaFileRz���Rp���(	���R���R���Rq���Rr���Rs���RP���RF���Rt���R{���(���R4���t���java_class_fileRv���t	���javac_com(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���CreateJavaClassFileBuilder���s����		c������	���C���s����y�|��d�d�}�Wnu�t��j
�oi�t�i�i�i����}�t�i�i�d�d���}�t�i�i�d�|�d�h��d�|�i�d�|�i���}�|�|��d�d�<n�X|�S(	���NR;���t���JavaClassDirs	���$JAVACCOMs���$JAVACCOMSTRR=���R>���Rz���Rp���(���R���R���Rq���Rr���Rs���RP���RF���t���Dir(���R4���t���java_class_dirRv���R����(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���CreateJavaClassDirBuilder���s����	c������	���C���sl���y�|��d�d�}�WnS�t��j
�oG�t�i�i�d�h��d�h��d�h�d�d��6��}�|�|��d�d�<d�|��d�<n�X|�S(	���NR;���R���R=���R>���R@���s���$JAVASUFFIXs���.javat
���JAVASUFFIX(���R���R���RF���R,���(���R4���t	���java_file(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���CreateJavaFileBuilder���s����t���ToolInitializerMethodc�����������B���s)���e��Z�d��Z�d����Z�d����Z�d����Z�RS(���s���
    This is added to a construction environment in place of a
    method(s) normally called for a Builder (env.Object, env.StaticObject,
    etc.).  When called, it has its associated ToolInitializer
    object search the specified list of tools and apply the first
    one that exists to the construction environment.  It then calls
    whatever builder was (presumably) added to the construction
    environment in place of this particular instance.
    c���������C���s���|�|��_��|�|��_�d�S(���s����
        Note:  we store the tool name as __name__ so it can be used by
        the class that attaches this to a construction environment.
        N(���R9���t���initializer(���R���R����R����(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyR������s����	c���������C���sZ���t��|�|��i���}�|��i�i�|���t��|�|��i���}�|�|��j�o�d�S|��i�i�|���|�S(���s����
	Returns the appropriate real Builder for this method name
	after having the associated ToolInitializer object apply
	the appropriate Tool module.
        N(���t���getattrR9���R����t���apply_toolsR,���t���remove_methods(���R���R4���t���builder(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���get_builder���s����
c���������O���s4���|��i��|���}�|�d�j�o�g��g��f�S|�|�|����S(���s	���
        N(���R����R,���(���R���R4���R+���R���R����(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyR7������s����
(���R9���R:���t���__doc__R���R����R7���(����(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyR�������s���			t���ToolInitializerc�����������B���s)���e��Z�d��Z�d����Z�d����Z�d����Z�RS(���s���
    A class for delayed initialization of Tools modules.

    Instances of this class associate a list of Tool modules with
    a list of Builder method names that will be added by those Tool
    modules.  As part of instantiating this object for a particular
    construction environment, we also add the appropriate
    ToolInitializerMethod objects for the various Builder methods
    that we want to use to delay Tool searches until necessary.
    c���������C���s����t��i�i�|���p
�|�g�}�n�t��i�i�|���p
�|�g�}�n�|�|��_�|�|��_�|�|��_�h��|��_�x7�|�D]/�}�t�|�|����}�|�|��i�|�<|�i�|���qk�Wd��S(���N(	���R���t���Utilt���is_ListR4���t���toolst���namest���methodsR����t	���AddMethod(���R���R4���R����R����R����t���method(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyR������s����

				�
c���������C���s+���x$�|��i��i����D]�}�|�i�|���q�Wd�S(���s����
        Removes the methods that were added by the tool initialization
        so we no longer copy and re-bind them when the construction
        environment gets cloned.
        N(���R����t���valuest���RemoveMethod(���R���R4���R����(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyR�������s�����c���������C���sL���xE�|��i��D]:�}�t�i�i�|���}�|�i�|���o�|�i�|���d�Sq
�Wd�S(���s���
	Searches the list of associated Tool modules for one that
	exists, and applies that to the construction environment.
        N(���R����R���R���R	���(���R���R4���t���tt���tool(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyR�������s����
�
(���R9���R:���R����R���R����R����(����(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyR�������s���
			c���������C���sI���t��|��d�g�d�d�g���d����}�d����}�|��i�|���|��i�|���d��S(���Nt���installt���_InternalInstallt���_InternalInstallAsc���������_���s���|��i��|�|����S(���N(���R����(���R���R+���R���(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���Install��s����c���������_���s���|��i��|�|����S(���N(���R����(���R���R+���R���(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt	���InstallAs��s����(���R����R����(���R4���R����R����(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���Initializers��s
����		
c���������C���s6���x/�|��D]'�}�t��|���}�|�i�|���o�|�Sq�Wd��S(���N(���R���R	���R,���(���R����R4���R����R����(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���FindTool��s�����	c���������C���s���|�d���}�t��t�|�|������S(���Nc���������S���s���t��|����i�|���S(���N(���R���R	���(���R����R4���(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt
���ToolExists"��s����(���t���listt���filter(���R����R4���R����(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���FindAllTools!��s����c���������C���s"��g��}�t��|����d�j�o��d�d�d�d�d�g�}�d�d�d	�d
�d�d�d
�d�g�}�d�d
�d�d�d�d�g�}�d�d�d�d�g�}�d�d�d�d�d�d�d�g�}�d�d�d�g�}�d�d �g�}�n�t��|����d!�j�oF�d�d�g�}�d�d	�g�}�d�d�g�}�d�g�}�d�d�g�}�d�g�}�n�t��|����d"�j�oX�d#�d�g�}�d$�d	�d
�g�}�d%�d�d�g�}�d&�d�g�}�d�d�d'�d�d�g�}�d(�g�}�nt��|����d)�j�od�d*�d�g�}�d+�d	�d
�g�}�d,�d�d�g�}�d&�d�g�}�d-�d.�d/�d�d�d'�d�d�d�g	�}�d0�g�}�n�t��|����d1�j�oX�d2�d�g�}�d3�d	�d
�g�}�d4�d�d�g�}�d&�d�g�}�d�d�d'�d�d�g�}�d�g�}�n:t��|����d5�j�oX�d6�d�g�}�d7�d	�d
�g�}�d8�d�d�g�}�d&�d�g�}�d�d�d9�d�d�g�}�d�g�}�n��t��|����d:�j�oL�d;�d�g�}�d	�d
�g�}�d�d�g�}�d&�g�}�d�d�d�d�g�}�d�g�}�np�d�d�d�g�}�d	�d�d
�d�d
�g�}�d�d�d
�d�d�g�}�d�d�d�g�}�d�d�d<�d�d�d�d'�g�}�d�d�g�}�t�|�|���p�|�d=�}	�|	�o/�|	�d�j�o"�d��}
�d��}�d��}�d��}
�d��}�n��|	�dY�j�o
�d��}
�n�t�|�|���p�|�d=�}
�t�|�|���p�|�d=�}�t�|�|���p�|�d=�}�t�|�|���p�|�d=�}
�t�|�|���p�|�d=�}�t�|�d>�d?�d@�dA�dB�dC�dD�dE�dF�dG�dH�dI�dJ�dK�dL�dM�dN�dO�dP�dQ�dR�dS�dT�dU�dV�dW�dX�g�|���}�|�|	�|
�|
�|�|�g�|�}�g��}�|�D]�}�|�o�|�|�qq~�S(Z���Nt���win32t���mslinkt���gnulinkt���ilinkt���linkloct���ilink32t���msvct���mingwt���gcct���intelct���iclt���icct���cct���bcc32s���g++s���c++t���masmt���nasmt���gast���386asmt���gfortrant���g77t���iflt���cvft���f95t���f90t���fortrant���mslibt���art���tlibt���msvst���midlt���os2t���irixt���sgilinkt���sgiccs���sgic++t���ast���f77t���sgiart���sunost���sunlinkt���sunccs���sunc++t���sunf95t���sunf90t���sunf77t���sunart���hpuxt���hplinkt���hpccs���hpc++t���aixt���aixlinkt���aixccs���aixc++t���aixf77t���darwint	���applelinkt���iforti����t���dmdt
���filesystemt���m4t���wixt���lext���yacct���rpcgent���swigt���jart���javact���javaht���rmict���dvipdft���dvipst���gst���text���latext���pdflatext���pdftext���tart���zipt���rpmt	���BitKeepert���CVSt���Perforcet���RCSt���SCCS(���R����R����R����(���R���R����R,���R����(���t���platformR4���t���other_plat_toolst���linkerst���c_compilerst
���cxx_compilerst
���assemblerst���fortran_compilerst���arst
���c_compilert���cxx_compilert���linkert	���assemblert���fortran_compilerR����t���other_toolsR����t���_[1]t���x(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt	���tool_list&��s�����	




	



			
		(3���R����t���__revision__R���R���t
���SCons.BuilderR���t���SCons.Errorst
���SCons.Node.FSt
���SCons.Scannert���SCons.Scanner.Ct���SCons.Scanner.Dt���SCons.Scanner.LaTeXt���SCons.Scanner.ProgR���t���Scannert���Ct���CScannert���Dt���DScannert���LaTeXt���LaTeXScannert���PDFLaTeXScannert���ProgRI���t���BaseR���t	���CSuffixest	���DSuffixest���IDLSuffixest
���LaTeXSuffixesR@���t���add_scannert���objectR���RK���RV���R\���R`���Rg���Rm���Rx���R~���R����R����R����R����R����R����R����R����R
��(����(����(����s6���install/lib/scons-2.0.0.final.0/SCons/Tool/__init__.pyt���<module>���sl���		���e					)	%				
	03