��
r�$Lc�����������@ ��s���d��Z��d�d�k�l�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
�e�i�d�j�Z�e�o5�e�i
�d�d�j�p!�d�e�i
�j�o�e�i
�d�d�j�Z�e�i�d	�j�Z�e�i�d
�j�Z�e�o�d�d�k�Z�n/�e�o�d�d�k�Z�n�e�o�d�d�k�Z�n�d�d�k�Z�d�d�k�Z�d�e�i�i�f�d�������YZ�d
�e�f�d�������YZ�d�e�f�d�������YZ�d�e�f�d�������YZ�d����Z�d����Z�d����Z�d����Z�d����Z �d�d�d���Z"�d����Z#�d����Z$�d�d�d�d�d���Z%�d����Z&�d�S(���s��SCons.Tool.icl

Tool-specific initialization for the Intel C/C++ compiler.
Supports Linux and Windows compilers, v7 and up.

There normally shouldn't be any need to import this module directly.
It will usually be imported through the generic SCons.Tool.Tool()
selection method.

i����(���t���divisions>���src/engine/SCons/Tool/intelc.py 5023 2010/06/14 22:05:46 sconsNt���win32t���PROCESSOR_ARCHITECTUREt���AMD64t���PROCESSOR_ARCHITEW6432t���linux2t���darwint���IntelCErrorc�����������B ��s���e��Z�RS(����(���t���__name__t
���__module__(����(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyR���8���s���t���MissingRegistryErrorc�����������B ��s���e��Z�RS(����(���R���R	���(����(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyR
���:���s���t���MissingDirErrorc�����������B ��s���e��Z�RS(����(���R���R	���(����(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyR���<���s���t���NoRegistryModuleErrorc�����������B ��s���e��Z�RS(����(���R���R	���(����(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyR���>���s���c���������C ��s1���h��}�x�|��D]�}�d�|�|�<q
�Wt��|�i������S(���s����Return a sequence containing only one copy of each unique element from input sequence s.
    Does not preserve order.
    Input sequence must be hashable (i.e. must be usable as a dictionary key).i���(���t���listt���keys(���t���st���ut���x(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyt���uniquifyA���s
�����c���������C ��s����t��i�d�|����}�|�o<�|�i����\�}�}�}�t�|���d�t�|���t�|���d�St�|����}�t�o�|�S|�d�j��o	�|�d�S|�Sd�S(���s#��Normalize a Linux compiler version number.
    Intel changed from "80" to "9.0" in 2005, so we assume if the number
    is greater than 60 it's an old-style number and otherwise new-style.
    Always returns an old-style float like 80 or 90 for compatibility with Windows.
    Shades of Y2K!s���([0-9]+)\.([0-9]+)\.([0-9]+)g������$@g�����@�@i<���N(���t���ret���matcht���groupst���floatt
���is_windows(���t���vstrt���mt���vmajt���vmint���buildt���f(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyt���linux_ver_normalizeJ���s����'
�	c���������C ��s����|��p�d�S|��i����}��t�o-�h�d�d�6d�d�6d�d�6d�d�6d�d�6}�n�t�o-�h�d�d�6d�d�6d�d�6d�d�6d�d�6}�n�t�o&�h�d�d�6d�d�6d�d�6d�d�6}�n�y�|�|��}��Wn;�t�j
�o/�t�i�i�d�|��t	�|�i
������f�����n�X|��S(	���sW���Check for valid ABI (application binary interface) name,
    and map into canonical onet���ia32t���x86t���ia64t���em64tt���amd64t���x86_64s3���Intel compiler: Invalid ABI %s, valid values are %sN(���t���Nonet���lowerR���t���is_linuxt���is_mact���KeyErrort���SConst���Errorst	���UserErrorR
���R���(���t���abit
���valid_abis(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyt	���check_abi]���s4����


!c���������C ��s���t��t�|���t�|������S(���sO���Compare strings as floats,
    but Intel changed Linux naming convention at 9.0(���t���cmpR���(���t���at���b(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyt���vercmp|���s����c���������C ��sk���t��o�|��|�j�o�|��Sd�SnG�d�}�x9�|�D]1�}�t�i�t�|���t�|������|�j��o�|�Sq.�Wd�Sd�S(���s`���See if we can match v (string) in vlist (list of strings)
    Linux has to match in a fuzzy way.g����MbP?N(���R���R%���t���matht���fabsR���(���t���vt���vlistt���fuzzt���vi(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyt���get_version_from_list����s����
��&	c������	���C ��s����t��o�d�|�d�|�i����}�n�d�|�d�|�i����}�y�t�i�i�t�i�i�|���}�Wn2�t�i�i�j
�o �t�d�|�|�|�f�����n�Xy!�t�i�i�|�|����d�}�|�SWn/�t�i�i�j
�o�t�d�|�|��f�����n�Xd�S(���sN���
    Return a value from the Intel compiler registry tree. (Windows only)
    s)���Software\Wow6432Node\Intel\Compilers\C++\s���\s���Software\Intel\Compilers\C++\sI���%s was not found in the registry, for Intel compiler version %s, abi='%s'i����s$���%s\%s was not found in the registry.N(	���t���is_win64t���upperR*���t���Utilt���RegOpenKeyExt���HKEY_LOCAL_MACHINEt���RegErrorR
���t���RegQueryValueEx(���t	���valuenamet���versionR-���t���Kt���kR6���(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyt���get_intel_registry_value����s����c����������C ��s���g��}��t��olt�o
�d�}�n�d�}�y�t�i�i�t�i�i�|���}�Wn�t�j
�o�g��SXd�}�g��}��y��x��|�d�j��o��t�i�i�|�|���}�t�}�xZ�d�D]R�}�y�t	�d	�|�|���}�Wn�t
�j
�o
�q��n�Xt�i�i
�|���o
�t�}�q��q��W|�o�|��i�|���nG�y�t	�d	�|�d���}�Wn�t
�j
�o�}	�d
�|�GHn�Xd�t�|���GH|�d�}�ql�WWqvt�j
�o�qvXn��t�o��xJ�t�i�d
���D]9�}�t�i�d�|���}
�|
�o�|��i�|
�i�d�����q�q�Wx��t�i�d���D]9�}�t�i�d�|���}
�|
�o�|��i�|
�i�d�����q�q�WnY�t�oQ�xN�t�i�d���D]9�}�t�i�d�|���}
�|
�o�|��i�|
�i�d�����q5q5Wn�t�t�|������S(���sn���Returns a sorted list of strings, like "70" or "80" or "9.0"
    with most recent compiler version first.
    s(���Software\WoW6432Node\Intel\Compilers\C++s���Software\Intel\Compilers\C++i����id���t���IA32t���IA32et���IA64t���EM64Tt
���ProductDirs����scons: *** Ignoring the registry key for the Intel compiler version %s.
scons: *** It seems that the compiler was uninstalled and that the registry
scons: *** was not cleaned up properly.
s���scons: *** Ignoring i���s���/opt/intel_cc_*s���cc_(.*)$s���/opt/intel/cc*/*s
���([0-9.]+)$(���RG���RH���RI���RJ���(���R���R;���R*���R=���R>���R?���t���WindowsErrort
���RegEnumKeyt���FalseRF���R
���t���ost���patht���existst���Truet���appendt���strt���EnvironmentErrorR'���t���globR���t���searcht���groupR(���t���sortedR���(���t���versionst���keynameRE���t���it���subkeyt���okt���try_abit���dt���valuet���eR���(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyt���get_all_compiler_versions����sl����

�
��	��"�"c���������C ��sC��t��o��t�i�i�p�t�d�����n�t�d�|��|���}�t�i�i�t�i�i	�|�d�d�����o=�t�i�i�t�i�i	�|�d�|�d�����o�t
�d�|�����q?n��t�p�t�o��d
�}�|�d�j�o
�d�}�n�d�}�xF�|�D]>�}�t�i�i�t�i�i	�|�|��d
�d�����o�|�|��}�Pq��q��W|�p�t
�d�|��|�|�f�����q?n�|�S(���s����
    Return the main path to the top-level dir of the Intel compiler,
    using the given version.
    The compiler will be in <top>/bin/icl.exe (icc on linux),
    the include dir is <top>/include, etc.
    s$���No Windows registry module was foundRK���t���Bins���icl.exes���Can't find Intel compiler in %ss���/opt/intel/cc/%ss���/opt/intel_cc_%sR$���s���/opt/intel/cce/%st���bint���iccs5���Can't find version %s Intel compiler in %s (abi='%s')(���s���/opt/intel/cc/%ss���/opt/intel_cc_%s(���s���/opt/intel/cce/%sN(���R���R*���R=���t���can_read_regR���RF���RO���RP���RQ���t���joinR���R(���R'���R%���(���RC���R-���t���topt���dirsR`���(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyt���get_intel_compiler_top����s(����
&)

�)
	!i����c���������C ��sh��t��p�t�p�t�p�d�St�o�t�i�i�i�|����n=�t�o�t�i�i�i�|����n�t��o�t�i�i�i�|����n�t����}�|�p�|�o�|�d�}�q��nH�t	�|�|���}�|�p+�t�i
�i�d�|�d�d�i�|�������n�|�}�t
�|���}�|�d�j�oZ�t��p�t�o1�t�i����d�}�|�d�j�o
�d�}�qSd�}�qWt�o
�d	�}�qWd�}�n�|�oG�|�o?�y�t�|�|���}�Wq�t�i�i�t�f�j
�o
�d�}�q�Xn�|�p��d
�t�i�i�f�d�������Y}�t��p�t�o�|��i�d���p�t�oN�|��i�d
���o=�t�i�i�|���t�i�i�|�d�t�|���t�|���f���qyt�i�i�|���t�i�i�|�d�t�|���t�|���f���n�|�o|�o]�d�t�|���t�|���|�|�f�GHt�o�t�i�d�|���n�t��o�t�i�d�|���q�n�|�|��d�<t�o`�h�d�d�6d�d�6d�d�6d�d�6}	�x;�|	�i����D])�}
�|��i �|
�t�i!�i�|�|	�|
�����q$Wn�t��o`�h�d�d�6d�d�6d�d�6d�d�6}	�x;�|	�i����D])�}
�|��i �|
�t�i!�i�|�|	�|
�����q�Wn�t�o��d8�d9�d:�f�}	�|�d�j�o
�d �}�n�x��|	�D]��}
�y3�t"�|
�d!�|�|���}�|�i#�d"�|�t�i$���}�Wn:�t�j
�o.�|��i �|
�d�t�i!�i�|�|
�d#�����q�X|��i �|
�d�|�i%�t�i&�����q�Wq�n�t�o"�d
�|��d$�<d
�|��d%�<d&�|��d'�<n)�d�|��d$�<d(�|��d%�<d)�|��d*�<d+�|��d,�<|�o�t�|���|��d-�<n�t�o_t�i'�i(�d.�d ���}�d/�}
�y8�t�i�i)�t�i�i*�|
���}�t�i�i+�|�d0���d�}�Wn%�t,�t�i�i�f�j
�o
�d �}�n�Xd1�}�d�}�xO�|�|�g�D]A�}�|�o4�|�i-�d2���d3�j�p�t�i!�i.�|���o�|�}�Pq�q�W|�pm�|�}�t�i!�i.�|���pP�d4�t�i�i�f�d5�������Y}�t�i�i�|���t�i�i�|�d6�|�|�|�f���qRn�|�|��d7�d.�<n�d�S(;���s���Add Builders and construction variables for Intel C/C++ compiler
    to an Environment.
    args:
      version: (string) compiler version to use, like "80"
      abi:     (string) 'win32' or whatever Itanium version wants
      topdir:  (string) compiler top dir, like
                         "c:\Program Files\Intel\Compiler70"
                        If topdir is used, version and abi are ignored.
      verbose: (int)    if >0, prints compiler version used.
    Ni����s#���Invalid Intel compiler version %s: s���installed versions are %ss���, i���R$���R���R"���t���ICLTopDirWarningc�����������B ��s���e��Z�RS(����(���R���R	���(����(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyRl���R��s���Rf���t���icls8���Failed to find Intel compiler for version='%s', abi='%s's<���Can't find Intel compiler top dir for version='%s', abi='%s's8���Intel C compiler: using version %s (%g), abi %s, in '%s's���%s/bin/icc --versiont���INTEL_C_COMPILER_TOPt���includet���INCLUDEt���libt���LIBRe���t���PATHt���LD_LIBRARY_PATHt
���IncludeDirt���Includet���LibDirt���Libt���BinDirRd���t����i���s���$(ICInstallDir)i���t���CCt���CXXt���xilinkt���LINKt���icpct���xiart���ARt���xildt���LDt���INTEL_C_COMPILER_VERSIONt���INTEL_LICENSE_FILEs���SOFTWARE\Intel\Licensest���w_cpps,���C:\Program Files\Common Files\Intel\Licensest���@i����t���ICLLicenseDirWarningc�����������B ��s���e��Z�RS(����(���R���R	���(����(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyR�������s���s����Intel license dir was not found.  Tried using the INTEL_LICENSE_FILE environment variable (%s), the registry (%s) and the default path (%s).  Using the default path as a last resort.t���ENV(���Rp���Ru���s���Include(���Rr���Rw���s���Lib(���s���PATHRy���s���Bin(/���R(���R'���R���R*���t���Toolt���msvct���generatet���gccRc���R:���R+���R,���Rh���R/���R%���RO���t���unameR;���Rk���R=���R@���R���t���Warningst���Warningt���Detectt���enableWarningClasst���warnRT���t���reprR���t���systemR���t���PrependENVPathRP���RF���t���replacet���sept���splitt���pathsept���environt���getR>���R?���RA���t���AttributeErrort���findRQ���(���t���envRC���R-���t���topdirt���verboseR7���R6���t���uname_mRl���t���pathst���pRP���t	���envlicdirRD���RE���t	���reglicdirt
���defaultlicdirt���licdirt���ldR����(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyR������s�����	









�+


�+	

�,,






�0	c���������C ��s����t��p�t�p�t�p�d�Sy
�t����}�Wn%�t�i�i�t�f�j
�o
�d��}�n�X|�d��j	�o�t	�|���d�j�}�|�pC�t�o�|��i
�d���St�o�|��i
�d���St��o�|��i
�d���Sn�|�S(���Ni����Rm���Rf���(���R(���R'���R���Rc���R*���R=���R@���R���R%���t���lenR����(���R����RZ���t���detected(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyRQ������s����
('���t���__doc__t
���__future__R����t���__revision__R4���t���syst���os.pathRO���RV���t���stringR���t���platformR���R����R;���R'���R(���t���SCons.Tool.msvcR*���t���SCons.Tool.gcct
���SCons.Utilt���SCons.WarningsR+���t
���InternalErrorR���R
���R���R���R���R���R/���R3���R:���R%���RF���Rc���Rk���R����RQ���(����(����(����s4���install/lib/scons-2.0.0.final.0/SCons/Tool/intelc.pyt���<module>
���s>���H							M	�