‡Æ
8Oö9c       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.42 2000/09/27 02:08:14 gward 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 r§ } y‹ t | |  ƒ } d } xo d og yB t | | ƒ } | d d j o
 | | j o | i | ƒ n Wn t j
 o Pn X| d } qR WWn t j
 o n Xq1 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   Ks   Ls   bases   ks   is   ps3   /mit/python/lib/python2.0/distutils/msvccompiler.pys   get_devstudio_versions8 s0       	

c    sd  t  o g  Sn g  } |  d j o
 d }  n t i |  d ƒ }  d d | | f } xt t	 t
 t f d rï } yÓ t | | ƒ } d } x· d o¯ y” t | | ƒ \ } }	 }
 t i | ƒ |  j oX t i |	 d ƒ } x> | d r4 }	 |	 d	 j p
 |	 | j o qÝ n | i |	 ƒ qÝ WPn | d } Wn t j
 o Pn XqŠ WWn t j
 o n Xqi 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   Ls   Ks   bases   ks   is   ps   vs   ts   Vs3   /mit/python/lib/python2.0/distutils/msvccompiler.pys   get_msvc_paths\ s>     
  	  	s   6.0s   x86c    sÂ   xU t  d | ƒ d rB } t i i t i i | ƒ |  ƒ } t i i	 | ƒ o | Sn q Wx_ t
 i t i d d ƒ d rB } t i i t i i | ƒ |  ƒ } t i i	 | ƒ o | Sn qt 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   pathi    s   Paths   ;N(   s   get_msvc_pathss   version_numbers   ps   oss   paths   joins   abspaths   exes   fns   isfiles   strings   splits   environ(   s   exes   version_numbers   ps   fns3   /mit/python/lib/python2.0/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   ps3   /mit/python/lib/python2.0/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 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   .exec    sÃ  t  i |  | | | ƒ t ƒ  } | o÷ | d } t	 d | ƒ |  _
 t	 d | ƒ |  _ t	 d | ƒ |  _ t	 d | ƒ |  _ t	 d | ƒ |  _ t d | ƒ t d | ƒ t d	 | ƒ } y7 x0 t i t i d	 d
 ƒ d r } | 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   versions   paths   ps3   /mit/python/lib/python2.0/distutils/msvccompiler.pys   __init__Ä s<    	
 						i    c    s"  | t j o
 d } n g  } xú | d rð } 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    i    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   src_names   bases   exts3   /mit/python/lib/python2.0/distutils/msvccompiler.pys   object_filenamesó s&     
	 s    c    s4  |  i | | | ƒ \ } } } |  i | | ƒ \ } }	 | t
 j o
 g  } n t | | ƒ }
 | p g  } | i d ƒ | o | i |  i ƒ n | i |  i ƒ xˆt t | ƒ ƒ d rr} | | } | | } 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    i   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   objectss   skip_sourcess   pp_optss   compile_optss   is   srcs   objs   exts	   input_opts
   output_opts   msgs   h_dirs   rc_dirs   bases   _s   rc_files3   /mit/python/lib/python2.0/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   msgs3   /mit/python/lib/python2.0/distutils/msvccompiler.pys   create_static_libqs    c    sY  |  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 r } | 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   i    s   /EXPORT:s   /OUT: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   ldflagss   export_optss   syms   ld_argss   dll_names   dll_exts   implib_files   msgs3   /mit/python/lib/python2.0/distutils/msvccompiler.pys   linksJ    		 $c    s   d | Sd  S(   Ns	   /LIBPATH:(   s   dir(   s   selfs   dirs3   /mit/python/lib/python2.0/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   dirs3   /mit/python/lib/python2.0/distutils/msvccompiler.pys   runtime_library_dir_optionäs    c    s   |  i | ƒ Sd  S(   N(   s   selfs   library_filenames   lib(   s   selfs   libs3   /mit/python/lib/python2.0/distutils/msvccompiler.pys   library_optionès    c    s‹   | o | d | g } n
 | g } x` | d rR } xI | d r? } t i i | |  i
 | ƒ ƒ } t i i | ƒ o | Sn q< Wq- Wt Sd  S(   Ns   _di    (   s   debugs   libs	   try_namess   dirss   dirs   names   oss   paths   joins   selfs   library_filenames   libfiles   existss   None(   s   selfs   dirss   libs   debugs	   try_namess   dirs   names   libfiles3   /mit/python/lib/python2.0/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.0/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(    s3   /mit/python/lib/python2.0/distutils/msvccompiler.pys   ? sH   %									
				$)		
