;ò
�ü?c           @   s®  d  Z  d Z d k Z d k Z d k Z d k l Z l Z l Z l	 Z	 l
 Z
 d k l Z l Z l Z d k l Z d Z y= d k Z d Z e Z e i Z e i Z e i Z e i Z Wn| e j
 op yF d k Z d k Z d Z e Z e i Z e i Z e i Z e i Z Wq4e j
 o e i d ƒ q4Xn Xe o" e i  e i! e i" e i# f Z$ n d	 „  Z% d
 „  Z& d „  Z' d f  d „  ƒ  YZ( d „  Z) d e f d „  ƒ  YZ* d S(   s‚   distutils.msvccompiler

Contains MSVCCompiler, an implementation of the abstract CCompiler class
for the Microsoft Visual Studio.
sA   $Id: msvccompiler.py,v 1.57.6.1 2003/11/28 19:35:48 theller Exp $N(   s   DistutilsExecErrors   DistutilsPlatformErrors   CompileErrors   LibErrors	   LinkError(   s	   CCompilers   gen_preprocess_optionss   gen_lib_options(   s   logi    i   sŽ   Warning: Can't read registry to find the necessary compiler setting
Make sure that Python modules _winreg, win32api or win32con are installed.c         C   s‘   y t  |  | ƒ } Wn t j
 o t Sn Xg  } d } xM n oE y t | | ƒ } Wn t j
 o Pn X| i
 | ƒ | d } qC W| Sd S(   s   Return list of registry keys.i    i   N(   s   RegOpenKeyExs   bases   keys   handles   RegErrors   Nones   Ls   is
   RegEnumKeys   ks   append(   s   bases   keys   handles   is   ks   L(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys	   read_keys<   s      	 c         C   s¯   y t  |  | ƒ } Wn t j
 o t Sn Xh  } d } xk n oc y t | | ƒ \ } } } Wn t j
 o Pn X| i ƒ  } t | ƒ | t | ƒ <| d } qC W| Sd S(   sX   Return dict of registry keys and values.

    All names are converted to lowercase.
    i    i   N(   s   RegOpenKeyExs   bases   keys   handles   RegErrors   Nones   ds   is   RegEnumValues   names   values   types   lowers   convert_mbcs(   s   bases   keys   handles   ds   is   values   types   name(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   read_valuesN   s"     	 c         C   sQ   t  |  d t ƒ } | t j	 o* y | d ƒ }  WqI t j
 o qI Xn |  Sd  S(   Ns   encodes   mbcs(   s   getattrs   ss   Nones   encs   UnicodeError(   s   ss   enc(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   convert_mbcsc   s    	s   MacroExpanderc           B   s,   t  Z d „  Z d „  Z d „  Z d „  Z RS(   Nc         C   s   h  |  _ |  i | ƒ d  S(   N(   s   selfs   macross   load_macross   version(   s   selfs   version(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   __init__n   s    	c         C   sE   x> t  D]6 } t | | ƒ } | o | | |  i d | <Pq q Wd  S(   Ns   $(%s)(	   s   HKEYSs   bases   read_valuess   paths   ds   keys   selfs   macross   macro(   s   selfs   macros   paths   keys   ds   base(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys	   set_macror   s     c   	      C   s  d | } |  i d | d d ƒ |  i d | d d ƒ d } |  i d | d	 ƒ | d
 j o |  i d | d ƒ n |  i d | d ƒ d } xs t D]k } y t | | ƒ } Wn t
 j
 o
 q• n Xt | d ƒ } t | d | | f ƒ } | d |  i d <q• Wd  S(   Ns%   Software\Microsoft\VisualStudio\%0.1fs   VCInstallDirs	   \Setup\VCs
   productdirs   VSInstallDirs	   \Setup\VSs    Software\Microsoft\.NETFrameworks   FrameworkDirs   installrootf7.0s   FrameworkSDKDirs   sdkinstallrootv1.1s   sdkinstallroots.   Software\Microsoft\NET Framework Setup\Producti    s   %s\%ss   versions   $(FrameworkVersion)(   s   versions   vsbases   selfs	   set_macros   nets   ps   HKEYSs   bases   RegOpenKeyExs   hs   RegErrors
   RegEnumKeys   keys   read_valuess   ds   macros(	   s   selfs   versions   keys   hs   vsbases   ds   ps   bases   net(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   load_macrosy   s$    
 c         C   s=   x2 |  i i ƒ  D]! \ } } t i | | | ƒ } q W| Sd  S(   N(   s   selfs   macross   itemss   ks   vs   strings   replaces   s(   s   selfs   ss   ks   v(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   subŽ   s     (   s   __name__s
   __module__s   __init__s	   set_macros   load_macross   sub(    (    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   MacroExpanderl   s   			c          C   sÂ   d } t i t i | ƒ } | d j o d Sn | t | ƒ } t i | i d d ƒ \ } } t
 | d  ƒ d }  t
 | d d !ƒ d	 } |  d j o
 d
 } n |  d j o |  | Sn t Sd S(   sÃ   Return the version of MSVC that was used to build Python.

    For Python 2.3 and up, the version number is included in
    sys.version.  For earlier versions, assume the compiler is MSVC 6.
    s   MSC v.iÿÿÿÿi   s    i   iþÿÿÿi   i   f10.0i    N(   s   prefixs   strings   finds   syss   versions   is   lens   splits   ss   rests   ints   majorVersions   minorVersions   None(   s   majorVersions   is   ss   prefixs   rests   minorVersion(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   get_build_version“   s     
s   MSVCCompilerc           B   s;  t  Z d  Z d Z h  Z d g Z d d d g Z d g Z d g Z e e e e Z	 d Z
 d	 Z d
 Z d Z d Z Z d Z d d d d „ Z d d d „ Z e e e d e e e d „ Z e d e d „ Z e e e e e d e e e e d „
 Z d „  Z d „  Z d „  Z d d „ Z d „  Z d d „ Z d „  Z RS(   sw   Concrete class that implements an interface to Microsoft Visual C++,
       as defined by the CCompiler abstract class.s   msvcs   .cs   .ccs   .cpps   .cxxs   .rcs   .mcs   .ress   .objs   .libs   .dlls   %s%ss   .exei    c         C   sð  t  i |  | | | ƒ t ƒ  |  _ |  i d j o d |  _ t	 |  i ƒ |  _
 n
 d |  _ |  i d ƒ |  _ t |  i ƒ d j o t d |  i ‚ n |  i d ƒ |  _ |  i d ƒ |  _ |  i d	 ƒ |  _ |  i d
 ƒ |  _ |  i d ƒ |  _ |  i d ƒ |  i d ƒ y8 x1 t i t i d d ƒ D] } |  i i | ƒ q'WWn t j
 o n Xt i |  i d ƒ t i d <t |  _ d d d d d d g |  _  d d d d d d d g |  _! d d d g |  _" d d d d d g |  _# d g |  _$ d  S(   Ni   s   Software\Microsoft\VisualStudios   Software\Microsoft\Devstudios   pathi    s‘   Python was built with version %s of Visual Studio, and extensions need to be built with the same version of the compiler, but it isn't installed.s   cl.exes   link.exes   lib.exes   rc.exes   mc.exes   libs   includes   ;s   /nologos   /Oxs   /MDs   /W3s   /GXs   /DNDEBUGs   /Ods   /MDds   /Z7s   /D_DEBUGs   /DLLs   /INCREMENTAL:NOs   /INCREMENTAL:nos	   /pdb:Nones   /DEBUG(%   s	   CCompilers   __init__s   selfs   verboses   dry_runs   forces   get_build_versions   _MSVCCompiler__versions   _MSVCCompiler__roots   MacroExpanders   _MSVCCompiler__macross   get_msvc_pathss   _MSVCCompiler__pathss   lens   DistutilsPlatformErrors   find_exes   ccs   linkers   libs   rcs   mcs   set_path_env_vars   strings   splits   oss   environs   ps   appends   KeyErrors   joins   Nones   preprocess_optionss   compile_optionss   compile_options_debugs   ldflags_shareds   ldflags_shared_debugs   ldflags_static(   s   selfs   verboses   dry_runs   forces   p(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   __init__É   s:    		 	s    c         C   s   | t j o
 d } n g  } xø | D]ð } t i i | ƒ \ } } | |  i j o t d | ƒ ‚ n | o t i i | ƒ } n | |  i j o' | i t i i | | |  i ƒ ƒ q$ | |  i j o' | i t i i | | |  i ƒ ƒ q$ | i t i i | | |  i ƒ ƒ q$ W| Sd  S(   Ns    s   Don't know how to compile %s(   s
   output_dirs   Nones	   obj_namess   source_filenamess   src_names   oss   paths   splitexts   bases   exts   selfs   src_extensionss   CompileErrors	   strip_dirs   basenames   _rc_extensionss   appends   joins   res_extensions   _mc_extensionss   obj_extension(   s   selfs   source_filenamess	   strip_dirs
   output_dirs	   obj_namess   exts   bases   src_name(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   object_filenamesø   s&     
 c	         C   sÁ  |  i | | | | | | ƒ \ } } } }	 } | p g  } | i d ƒ | o | i |  i ƒ n | i |  i ƒ xD| i ƒ  D]6\ } \ } } | o t i i | ƒ } n | |  i j o d | } n’| |  i j o d | } nt| |  i j oa | } d | } y) |  i |  i g |	 | g | g ƒ Wq t  j
 o } t" | ‚ q Xq n| |  i# j oÜ t i i$ | ƒ } t i i$ | ƒ } y� |  i |  i' g d | d | g | g ƒ t i i( t i i) | ƒ ƒ \ } } t i i, | | d ƒ }
 |  i |  i g d | g |
 g ƒ Wq t  j
 o } t" | ‚ q Xq n t" d | | f ƒ ‚ d	 | } y- |  i |  i. g | |	 | | g | ƒ Wq t  j
 o } t" | ‚ q Xq W| Sd  S(
   Ns   /cs   /Tcs   /Tps   /fos   -hs   -rs   .rcs"   Don't know how to compile %s to %ss   /Fo(/   s   selfs   _setup_compiles
   output_dirs   macross   include_dirss   sourcess   dependss   extra_postargss   objectss   pp_optss   builds   extra_preargss   compile_optss   appends   debugs   extends   compile_options_debugs   compile_optionss   itemss   objs   srcs   exts   oss   paths   abspaths   _c_extensionss	   input_opts   _cpp_extensionss   _rc_extensionss
   output_opts   spawns   rcs   DistutilsExecErrors   msgs   CompileErrors   _mc_extensionss   dirnames   h_dirs   rc_dirs   mcs   splitexts   basenames   bases   _s   joins   rc_files   cc(   s   selfs   sourcess
   output_dirs   macross   include_dirss   debugs   extra_preargss   extra_postargss   dependss   pp_optss   rc_files   compile_optss   h_dirs   builds   msgs   objectss   bases   _s   srcs   objs   exts	   input_opts   rc_dirs
   output_opt(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   compile  sR     
)*$)
-c   	      C   s°   |  i | | ƒ \ } } |  i | d | ƒ} |  i | | ƒ o\ | d | g } | o n y |  i
 |  i g | ƒ Wq¬ t j
 o } t | ‚ q¬ Xn t i	 d | ƒ d  S(   Ns
   output_dirs   /OUT:s   skipping %s (up-to-date)(   s   selfs   _fix_object_argss   objectss
   output_dirs   library_filenames   output_libnames   output_filenames
   _need_links   lib_argss   debugs   spawns   libs   DistutilsExecErrors   msgs   LibErrors   log(	   s   selfs   objectss   output_libnames
   output_dirs   debugs   target_langs   output_filenames   msgs   lib_args(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   create_static_libk  s    c         C   sV  |  i | | ƒ \ } } |  i | | | ƒ \ } } } | o |  i d t	 | ƒ ƒ n t
 |  | | | ƒ } | t j	 o t i i | | ƒ } n |  i | | ƒ oœ| t i j o) |	 o |  i d } qü |  i d } n |	 o |  i } n
 |  i } g  } x& | p g  D] } | i d | ƒ qW| | | | d | g } | t j	 og t i i t i i | ƒ ƒ \ } } t i i t i i" | d ƒ |  i# | ƒ ƒ } | i d | ƒ n |
 o |
 | d *n | o | i' | ƒ n |  i( t i i" | ƒ ƒ y |  i) |  i* g | ƒ WqRt+ j
 o } t- | ‚ qRXn t. i d | ƒ d  S(   Ns5   I don't know what to do with 'runtime_library_dirs': i   s   /EXPORT:s   /OUT:i    s   /IMPLIB:s   skipping %s (up-to-date)(/   s   selfs   _fix_object_argss   objectss
   output_dirs   _fix_lib_argss	   librariess   library_dirss   runtime_library_dirss   warns   strs   gen_lib_optionss   lib_optss   Nones   oss   paths   joins   output_filenames
   _need_links   target_descs	   CCompilers
   EXECUTABLEs   debugs   ldflags_shared_debugs   ldflagss   ldflags_shareds   export_optss   export_symbolss   syms   appends   ld_argss   splitexts   basenames   dll_names   dll_exts   dirnames   library_filenames   implib_files   extra_preargss   extra_postargss   extends   mkpaths   spawns   linkers   DistutilsExecErrors   msgs	   LinkErrors   log(   s   selfs   target_descs   objectss   output_filenames
   output_dirs	   librariess   library_dirss   runtime_library_dirss   export_symbolss   debugs   extra_preargss   extra_postargss
   build_temps   target_langs   lib_optss   dll_names   ld_argss   implib_files   ldflagss   msgs   export_optss   syms   dll_ext(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   link„  sJ    		 $c         C   s   d | Sd  S(   Ns	   /LIBPATH:(   s   dir(   s   selfs   dir(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   library_dir_option×  s    c         C   s   t  d ‚ d  S(   Ns<   don't know how to set runtime library search path for MSVC++(   s   DistutilsPlatformError(   s   selfs   dir(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   runtime_library_dir_optionÚ  s    c         C   s   |  i | ƒ Sd  S(   N(   s   selfs   library_filenames   lib(   s   selfs   lib(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   library_optionÞ  s    c         C   s‡   | o | d | g } n
 | g } x\ | D]P } xG | D]? } t i i | |  i
 | ƒ ƒ } t i i | ƒ o | Sq8 q8 Wq+ Wt Sd  S(   Ns   _d(   s   debugs   libs	   try_namess   dirss   dirs   names   oss   paths   joins   selfs   library_filenames   libfiles   existss   None(   s   selfs   dirss   libs   debugs	   try_namess   names   libfiles   dir(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   find_library_fileâ  s    	  c         C   s¸   xM |  i D]B } t i i t i i | ƒ | ƒ } t i i	 | ƒ o | Sq
 q
 Wx] t
 i t i d d ƒ D]B } t i i t i i | ƒ | ƒ } t i i	 | ƒ o | Sqj qj W| Sd S(   sŒ  Return path to an MSVC executable program.

        Tries to find the program in several places: first, one of the
        MSVC program search paths from the registry; next, the directories
        in the PATH environment variable.  If any of those work, return an
        absolute path that is known to exist.  If none of them work, just
        return the original program name, 'exe'.
        s   Paths   ;N(   s   selfs   _MSVCCompiler__pathss   ps   oss   paths   joins   abspaths   exes   fns   isfiles   strings   splits   environ(   s   selfs   exes   ps   fn(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   find_exeö  s     
 ! !s   x86c         C   s&  t  o g  Sn | d } |  i d j o d |  i |  i f } n d |  i | f } xp t D]h } t	 | | ƒ } | oL |  i d j o$ t i |  i i | | ƒ d ƒ SqÆ t i | | d ƒ Sq^ q^ W|  i d j oD xA t D]5 } t	 | d |  i ƒ t j	 o |  i d ƒ n Pqá Wn g  Sd	 S(
   sÐ   Get a list of devstudio directories (include, lib or path).

        Return a list of strings.  The list will be empty if unable to
        access the registry or appropriate registry keys not found.
        s    dirsi   s6   %s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriess?   %s\6.0\Build System\Components\Platforms\Win32 (%s)\Directoriess   ;i   s   %s\6.0s´   It seems you have Visual Studio 6 installed, but the expected registry settings are not present.
You must at least run the Visual Studio GUI once so that these entries are created.N(   s   _can_read_regs   paths   selfs   _MSVCCompiler__versions   _MSVCCompiler__roots   keys   platforms   HKEYSs   bases   read_valuess   ds   strings   splits   _MSVCCompiler__macross   subs   Nones   warn(   s   selfs   paths   platforms   ds   bases   key(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   get_msvc_paths  s*     
 $ 	c         C   sW   | d j o |  i d ƒ } n |  i | ƒ } | o t i | d ƒ t i | <n d S(   s¡   Set environment variable 'name' to an MSVC path type value.

        This is equivalent to a SET command prior to execution of spawned
        commands.
        s   libs   librarys   ;N(   s   names   selfs   get_msvc_pathss   ps   strings   joins   oss   environ(   s   selfs   names   p(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   set_path_env_var2  s     (   s   __name__s
   __module__s   __doc__s   compiler_types   executabless   _c_extensionss   _cpp_extensionss   _rc_extensionss   _mc_extensionss   src_extensionss   res_extensions   obj_extensions   static_lib_extensions   shared_lib_extensions   static_lib_formats   shared_lib_formats   exe_extensions   __init__s   object_filenamess   Nones   compiles   create_static_libs   links   library_dir_options   runtime_library_dir_options   library_options   find_library_files   find_exes   get_msvc_pathss   set_path_env_var(    (    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   MSVCCompiler«   s4    			
/T'S				%(+   s   __doc__s   __revision__s   syss   oss   strings   distutils.errorss   DistutilsExecErrors   DistutilsPlatformErrors   CompileErrors   LibErrors	   LinkErrors   distutils.ccompilers	   CCompilers   gen_preprocess_optionss   gen_lib_optionss	   distutilss   logs   _can_read_regs   _winregs   hkey_mods	   OpenKeyExs   RegOpenKeyExs   EnumKeys
   RegEnumKeys	   EnumValues   RegEnumValues   errors   RegErrors   ImportErrors   win32apis   win32cons   infos
   HKEY_USERSs   HKEY_CURRENT_USERs   HKEY_LOCAL_MACHINEs   HKEY_CLASSES_ROOTs   HKEYSs	   read_keyss   read_valuess   convert_mbcss   MacroExpanders   get_build_versions   MSVCCompiler(   s   DistutilsPlatformErrors   MacroExpanders	   LinkErrors   RegErrors   _winregs   _can_read_regs   get_build_versions   __revision__s   logs   gen_preprocess_optionss
   RegEnumKeys   MSVCCompilers   CompileErrors	   CCompilers   DistutilsExecErrors   strings   gen_lib_optionss   syss   HKEYSs	   read_keyss   LibErrors   RegEnumValues   read_valuess   convert_mbcss   hkey_mods   RegOpenKeyExs   win32cons   oss   win32api(    (    s3   /mit/python/lib/python2.3/distutils/msvccompiler.pys   ?   sF   %									
"				'	