-
<c       s    d  Z    d Z  d k Z d k Z d k Z  d k T d k l Z l Z l	 Z	 l
 Z
 l Z  d k l Z l Z l Z  d Z  yR  d k Z  d Z  e Z  e i Z  e i Z  e i Z  e i Z Wn ! e j
 o " y^ # 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 X0 e o4 1 e i Z 2 e i Z 3 e i  Z  4 e i! Z! n 8 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     sA  8 = ? t  o @ g  Sn B d } C g  } D x t t t t f DD ] } H y I t | |  } J d } K x K d o| L yK M t | |  }  N |  d d j o
 |  | j o O | i |   n Wn P t j
 o Q Pn XR | d } qt WWn S t j
 o
 T n XqD WU | i   V | i   W | 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  \ _ a t  o b g  Sn d g  } e |  d j o f d }  n g t i |  d  }  h d d | | f } k xt t	 t
 t f Dk ]u} o yPp t | |  } q d } r x+r d o s y t t | |  \ }	 } }
 u t i |	  |  j o v t i | d  } w x | Dw ] } x t | d	  o9 y y z | i d
  } Wn { t j
 o
 | n Xn } | d j p
 | | j o
 } qn ~ | i |  qW Pn  | d } Wn  t j
 o  Pn Xq WWn  t j
 o
  n Xq 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      x_ t  d |  D ]K }  t i i t i i |  |   }  t i i	 |  o  | Sn q W xi t
 i t i d d  D ]K }  t i i t i i |  |   }  t i i	 |  o  | Sn q 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    sF      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    
  sb   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 v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	 |  }  y>  x4 t i t i d	 d
  D ] }  | i |  q WWn  t j
 o
  n X t 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   nj | |  i j o- | i t i i | | |  i   n* | i t i i | | |  i   q3 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    s   |  i | | |  \ } } } "|  i | |  \ }	 } $| t
 j o %g  } n 't | |  } (| p g  } )| i d  *| o +| i |  i  n -| i |  i  /xt t |   D/]} 0| | } |	 | } 1t i i |  d } 3| | o 4|  i d | | f  nw6|  i t i i |   8| |  i  j o 9d | } n:| |  i" j o ;d | } n<| |  i# j or >| } ?d | } @y( A|  i% |  i& g | g | g  Wn$ Ct' j
 o } Dt) |  n XEq n'F| |  i* j o Tt i i |  } Ut i i |  } Vy X|  i% |  i- g d | d | g | g  Zt i i t i i. |   \ } } [t i i1 | | d	  }
 ]|  i% |  i& g d | g |
 g  Wn$ `t' j
 o } at) |  n Xbq n et) d
 | | f   id | } jy0 k|  i% |  i3 g | | | | g |  Wn$ nt' j
 o } ot) |  n Xq Wq|	 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^   	!
 		(
-',
0c 
   s  v~|  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    s  |  i | |  \ } } |  i | | |  \ } } } | o |  i d t	 |   n t
 |  | | |  } | t j	 o t i i | |  } n |  i | |  o| t i j o2 |	 o |  i d } n |  i d } n' |	 o |  i } n |  i } g  } x, | p g  D] } | i d |  qLW| | | | d | g } | t j	 os 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 } xq | D]_ } xS | D]H } t i i | |  i
 |   } t i i |  o | Sn qM Wq: Wt 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   	
(					
$.
