-í
ŸH ?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 2001/12/06 20:51:35 fdrake 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(    (    s3   /mit/python/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 ])}	 o yp t |	 | ƒ } q d } r xß r d oÔ s y° t t | | ƒ \ } }
 } u t i | ƒ |  j ok v t i |
 d ƒ } w xH | Dw ]= }
 x |
 d	 j p
 |
 | j o
 x qn y | i |
 ƒ qWz 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    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   appends   RegError(   s   paths   versions   platforms   is   Ks   Vs   Ls   ps   ts   bases   vs   k(    (    s3   /mit/python/lib/python2.2/distutils/msvccompiler.pys   get_msvc_paths\ s>   	 		 

 	 
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(    (    s3   /mit/python/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(    (    s3   /mit/python/lib/python2.2/distutils/msvccompiler.pys   set_path_env_var› s   
s   MSVCCompilerc    
  s\  ¥ 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 q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(    (    s3   /mit/python/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(    (    s3   /mit/python/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*]Ø} +| | } |	 | } ,t i i | ƒ d } .| | o /|  i d | | f ƒ nw1|  i t i i | ƒ ƒ 3| |  i  j o 4d | } nÐ5| |  i" j o 6d | } n¬7| |  i# j or 9| } :d | } ;y( <|  i% |  i& g | g | g ƒ Wn$ >t' j
 o } ?t) | ‚ n X@qØ n'A| |  i* j oú Ot i i | ƒ } Pt i i | ƒ } Qyœ S|  i% |  i- g d | d | g | g ƒ Ut i i t i i. | ƒ ƒ \ } } Vt i i1 | | d	 ƒ }
 X|  i% |  i& g d | g |
 g ƒ Wn$ [t' j
 o } \t) | ‚ n X]qØ n `t) d
 | | f ƒ ‚ dd | } ey0 f|  i% |  i3 g | | | | g | ƒ Wn$ it' j
 o } jt) | ‚ n XqØ Wl|	 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(    (    s3   /mit/python/lib/python2.2/distutils/msvccompiler.pys   compiles^   	!
 		(
-',
0c 
   s  qy|  i | | ƒ \ } } z|  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(    (    s3   /mit/python/lib/python2.2/distutils/msvccompiler.pys   create_static_libq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(    (    s3   /mit/python/lib/python2.2/distutils/msvccompiler.pys   link�sJ   !
		

	 	 '

c    s   áâd | Sd  S(   Ns	   /LIBPATH:(   s   dir(   s   selfs   dir(    (    s3   /mit/python/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(    (    s3   /mit/python/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(    (    s3   /mit/python/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(    (    s3   /mit/python/lib/python2.2/distutils/msvccompiler.pys   find_library_fileìs   

 	
 	!(   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(    (    (    s3   /mit/python/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(    (    s3   /mit/python/lib/python2.2/distutils/msvccompiler.pys   ? sH   	
(					
$)
