-ν
μΆ<c       s  d  Z  d Z d k Z d k Z d k Z d k Td k l Z l Z l	 Z	 l
 Z
 l Z d k l Z l Z l Z d Z y= d k Z d Z e Z e i Z e i Z e i Z e i Z Wno e j
 oc yF d k Z d k Z d Z e Z e i Z e i Z e i Z e i Z Wn e j
 o n Xn Xe o( e i Z e i Z e i  Z  e i! Z! n d   Z" d	 d
 d  Z# d   Z$ 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.s=   $Id: msvccompiler.py,v 1.43.6.2 2002/02/22 13:55:28 mwh Exp $N(   s   *(   s   DistutilsExecErrors   DistutilsPlatformErrors   CompileErrors   LibErrors	   LinkError(   s	   CCompilers   gen_preprocess_optionss   gen_lib_optionsi    i   c     sφ   t  o g  Sn d } g  } x» t t t t f D]§ } y t | |  } d } xo d og yB t | |  }  |  d d j o
 |  | j o | i |   n Wn t j
 o Pn X| d } qP WWn t j
 o n Xq/ W| i   | i   | Sd S(   s*  Get list of devstudio versions from the Windows registry.  Return a
       list of strings containing version numbers; the list will be
       empty if we were unable to access the registry (eg. couldn't import
       a registry-access module) or the appropriate registry keys weren't
       found.s   Software\Microsoft\Devstudioi    i   s	   123456789N(   s   _can_read_regs   Ks   Ls   HKEY_CLASSES_ROOTs   HKEY_LOCAL_MACHINEs   HKEY_CURRENT_USERs
   HKEY_USERSs   bases   RegOpenKeyExs   ks   is
   RegEnumKeys   ps   appends   RegErrors   sorts   reverse(   s   ps   is   ks   Ls   bases   K(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   get_devstudio_versions8 s0       	

s   6.0s   x86c    s  t  o g  Sn g  } |  d j o
 d }  n t i |  d  }  d d | | f } x>t t	 t
 t f D]*} yt | |  } d } xς d oκ yΟ t | |  \ }	 } }
 t i |	  |  j o t i | d  } xy | D]q } t | d	  o- y | i d
  } Wn t j
 o n Xn | d j p
 | | j o qΩ n | i |  qΩ WPn | d } Wn t j
 o Pn Xq WWn t j
 o n Xqg W| Sd S(   sΐ   Get a list of devstudio directories (include, lib or path).  Return
       a list of strings; will be empty list if unable to access the
       registry or appropriate registry keys not found.s   libs   Librarys    Dirss    Software\Microsoft\Devstudio\%s\s8   Build System\Components\Platforms\Win32 (%s)\Directoriesi    i   s   ;s   encodes   mbcss    N(   s   _can_read_regs   Ls   paths   strings   uppers   versions   platforms   Ks   HKEY_CLASSES_ROOTs   HKEY_LOCAL_MACHINEs   HKEY_CURRENT_USERs
   HKEY_USERSs   bases   RegOpenKeyExs   ks   is   RegEnumValues   ps   vs   ts   splits   Vs   hasattrs   encodes   UnicodeErrors   appends   RegError(   s   paths   versions   platforms   Ks   Ls   bases   Vs   is   ks   ps   ts   v(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   get_msvc_paths\ sH     
   	 	c    sΎ   xS t  d |  D]B } t i i t i i |  |   } t i i	 |  o | Sn q Wx] t
 i t i d d  D]B } t i i t i i |  |   } t i i	 |  o | Sn qp W|  Sd S(   s  Try to find an MSVC executable program 'exe' (from version
       'version_number' of MSVC) 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   Paths   ;N(   s   get_msvc_pathss   version_numbers   ps   oss   paths   joins   abspaths   exes   fns   isfiles   strings   splits   environ(   s   exes   version_numbers   ps   fn(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   find_exe s      ! !c    s7   t  |  |  } | o t i | d  t i |  <n d S(   s·   Set environment variable 'name' to an MSVC path type value obtained
       from 'get_msvc_paths()'.  This is equivalent to a SET command prior
       to execution of spawned commands.s   ;N(   s   get_msvc_pathss   names   version_numbers   ps   strings   joins   oss   environ(   s   names   version_numbers   p(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   set_path_env_var  s     s   MSVCCompilerc    
  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 d  Z e d e e d  Z e e e e e d e e e d 	 Z d   Z d   Z d   Z d 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    sΑ  t  i |  | | |  t   } | oυ | d } t	 d |  |  _
 t	 d |  |  _ t	 d |  |  _ t	 d |  |  _ t	 d |  |  _ t d |  t d |  t d	 |  } y5 x. t i t i d	 d
  D] } | i |  qΠ WWn t j
 o n Xt i | d
  t i d	 <n. d |  _
 d |  _ d |  _ d |  _ d |  _ t |  _ 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   cl.exes   link.exes   lib.exes   rc.exes   mc.exes   libs   includes   paths   ;s   /nologos   /Oxs   /MDs   /W3s   /GXs   /Ods   /MDds   /Z7s   /D_DEBUGs   /DLLs   /INCREMENTAL:NOs   /INCREMENTAL:nos	   /pdb:Nones   /DEBUG(!   s	   CCompilers   __init__s   selfs   verboses   dry_runs   forces   get_devstudio_versionss   versionss   versions   find_exes   ccs   linkers   libs   rcs   mcs   set_path_env_vars   get_msvc_pathss   paths   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   versionss   ps   versions   path(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   __init__Ι s<    	
 						s    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   n[ | |  i j o' | i t i i | | |  i   n$ | 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(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   object_filenamesψ s&     
 c    s2  |  i | | |  \ } } } |  i | |  \ }	 } | t
 j o
 g  } n t | |  } | p g  } | i d  | o | i |  i  n | i |  i  xt t |   D]r} | | } |	 | } t i i |  d } | | o |  i d | | f  n|  i t i i |   | |  i  j o d | } n| |  i" j o d | } np| |  i# j o] | } d | } y% |  i% |  i& g | g | g  Wn t' j
 o } t) |  n 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 i1 | | d	  }
 |  i% |  i& g d | g |
 g  Wn t' j
 o } t) |  n Xq΄ n t) d
 | | f   d | } y- |  i% |  i3 g | | | | g |  Wn t' j
 o } t) |  n Xq΄ W|	 Sd  S(   Ns   /ci   s   skipping %s (%s up-to-date)s   /Tcs   /Tps   /fos   -hs   -rs   .rcs"   Don't know how to compile %s to %ss   /Fo(4   s   selfs   _fix_compile_argss
   output_dirs   macross   include_dirss   _prep_compiles   sourcess   objectss   skip_sourcess   extra_postargss   Nones   gen_preprocess_optionss   pp_optss   extra_preargss   compile_optss   appends   debugs   extends   compile_options_debugs   compile_optionss   ranges   lens   is   srcs   objs   oss   paths   splitexts   exts   announces   mkpaths   dirnames   _c_extensionss	   input_opts   _cpp_extensionss   _rc_extensionss
   output_opts   spawns   rcs   DistutilsExecErrors   msgs   CompileErrors   _mc_extensionss   h_dirs   rc_dirs   mcs   basenames   bases   _s   joins   rc_files   cc(   s   selfs   sourcess
   output_dirs   macross   include_dirss   debugs   extra_preargss   extra_postargss   pp_optss   objectss   rc_files   msgs   bases   _s   srcs   skip_sourcess   objs   is   exts	   input_opts   compile_optss   h_dirs   rc_dirs
   output_opt(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   compiles^    	
 
%*$)
-c 
   sή   |  i | |  \ } } |  i | d | } |  i | |  o | d | g } | o n | o | | d *n | o | i |  n y |  i |  i g |  Wn t j
 o }	 t |	  n Xn |  i d |  d  S(   Ns
   output_dirs   /OUT:i    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   extra_preargss   extra_postargss   extends   spawns   libs   DistutilsExecErrors   msgs   LibErrors   announce(
   s   selfs   objectss   output_libnames
   output_dirs   debugs   extra_preargss   extra_postargss   output_filenames   lib_argss   msg(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   create_static_libvs    c    sW  |  i | |  \ } } |  i | | |  \ } } } | o |  i d t	 |   n t
 |  | | |  } | t j	 o t i i | |  } n |  i | |  o| t i j o) |	 o |  i d } n |  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 |  Wn t+ j
 o } t- |  n Xn |  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   announce(   s   selfs   target_descs   objectss   output_filenames
   output_dirs	   librariess   library_dirss   runtime_library_dirss   export_symbolss   debugs   extra_preargss   extra_postargss
   build_temps   lib_optss   dll_names   export_optss   ld_argss   syms   msgs   ldflagss   dll_exts   implib_file(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   linksJ    		 $c    s   d | Sd  S(   Ns	   /LIBPATH:(   s   dir(   s   selfs   dir(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   library_dir_optionζs    c    s   t  d  d  S(   Ns<   don't know how to set runtime library search path for MSVC++(   s   DistutilsPlatformError(   s   selfs   dir(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   runtime_library_dir_optionιs    c    s   |  i |  Sd  S(   N(   s   selfs   library_filenames   lib(   s   selfs   lib(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   library_optionνs    c    s   | o | d | g } n
 | g } x\ | D]P } xG | D]? } t i i | |  i
 |   } t i i |  o | Sn 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(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   find_library_fileρ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_file(    (    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   MSVCCompilerͺ s.    			
/_$R			('   s   __doc__s   __revision__s   syss   oss   strings   typess   distutils.errorss   DistutilsExecErrors   DistutilsPlatformErrors   CompileErrors   LibErrors	   LinkErrors   distutils.ccompilers	   CCompilers   gen_preprocess_optionss   gen_lib_optionss   _can_read_regs   _winregs   hkey_mods	   OpenKeyExs   RegOpenKeyExs   EnumKeys
   RegEnumKeys	   EnumValues   RegEnumValues   errors   RegErrors   ImportErrors   win32apis   win32cons   HKEY_CLASSES_ROOTs   HKEY_LOCAL_MACHINEs   HKEY_CURRENT_USERs
   HKEY_USERSs   get_devstudio_versionss   get_msvc_pathss   find_exes   set_path_env_vars   MSVCCompiler(   s	   CCompilers   DistutilsPlatformErrors   DistutilsExecErrors   strings   get_msvc_pathss
   RegEnumKeys   gen_lib_optionss	   LinkErrors   RegErrors   CompileErrors   syss   HKEY_LOCAL_MACHINEs   _winregs   _can_read_regs   set_path_env_vars
   HKEY_USERSs   LibErrors   get_devstudio_versionss   HKEY_CURRENT_USERs   __revision__s   RegEnumValues   gen_preprocess_optionss   hkey_mods   MSVCCompilers   RegOpenKeyExs   HKEY_CLASSES_ROOTs   find_exes   win32cons   oss   win32api(    (    s,   /usr/lib/python2.2/distutils/msvccompiler.pys   ? sH   %									
				$.		
