;ò
�ü?c           @   s¸   d  Z  d Z d k Z d k Z d k Z d k l Z l Z d k l	 Z	 d k
 l Z d k l Z l Z l Z d k l Z d e	 f d	 „  ƒ  YZ d
 Z d Z d Z d „  Z d „  Z d S(   sŽ   distutils.emxccompiler

Provides the EMXCCompiler class, a subclass of UnixCCompiler that
handles the EMX port of the GNU C compiler to OS/2.
sF   $Id: emxccompiler.py,v 1.10.14.1 2003/12/02 12:35:18 aimacintyre Exp $N(   s   gen_preprocess_optionss   gen_lib_options(   s   UnixCCompiler(   s
   write_file(   s   DistutilsExecErrors   CompileErrors   UnknownFileError(   s   logs   EMXCCompilerc           B   s•   t  Z d Z d Z d Z d Z d Z d Z d Z d Z	 d d d d	 „ Z
 d
 „  Z e e e e e d e e e e d „
 Z d d d „ Z d d „ Z RS(   Ns   emxs   .objs   .libs   .dlls   %s%ss   .ress   .exei    c      	   C   sÑ   t  i |  | | | ƒ t ƒ  \ } } |  i	 d | | f ƒ | t
 j	 o |  i d d | d ƒ n t ƒ  \ |  _ |  _ |  i	 |  i d |  i |  i f ƒ |  i d d d d d	 d
 d d ƒ d g |  _ d  S(   Ns%   Python's GCC status: %s (details: %s)s<   Python's pyconfig.h doesn't seem to support your compiler.  s   Reason: %s.s<   Compiling may fail because of undefined preprocessor macros.s   : gcc %s, ld %s
s   compilers5   gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Walls   compiler_sos
   linker_exes   gcc -Zomf -Zmt -Zcrtdlls	   linker_sos   gcc -Zomf -Zmt -Zcrtdll -Zdlls   gcc(   s   UnixCCompilers   __init__s   selfs   verboses   dry_runs   forces   check_config_hs   statuss   detailss   debug_prints   CONFIG_H_OKs   warns   get_versionss   gcc_versions
   ld_versions   compiler_types   set_executabless   dll_libraries(   s   selfs   verboses   dry_runs   forces   statuss   details(    (    s3   /mit/python/lib/python2.3/distutils/emxccompiler.pys   __init__*   s    $
c         C   sš   | d j o? y |  i d d | g ƒ Wq– t j
 o } t | ‚ q– XnK y) |  i |  i | | d | g | ƒ Wn t j
 o } t | ‚ n Xd  S(   Ns   .rcs   rcs   -rs   -o(   s   exts   selfs   spawns   srcs   DistutilsExecErrors   msgs   CompileErrors   compiler_sos   cc_argss   objs   extra_postargs(   s   selfs   objs   srcs   exts   cc_argss   extra_postargss   pp_optss   msg(    (    s3   /mit/python/lib/python2.3/distutils/emxccompiler.pys   _compileM   s    )c         C   s’  t  i  |
 p g  ƒ }
 t  i  | p g  ƒ } t  i  | p g  ƒ } | i |  i ƒ | t j	 o | |  i
 j oÒ t i i | d ƒ } t i i t i i | ƒ ƒ \ } } t i i | | d ƒ } d t i i t i i | ƒ ƒ d d d g } x | D] } | i d | ƒ qø W|  i t | | f d | ƒ | i | ƒ n |	 o |
 i d ƒ n t i |  | | | | | | | t |	 |
 | | | ƒ d  S(	   Ni    s   .defs$   LIBRARY %s INITINSTANCE TERMINSTANCEs   DATA MULTIPLE NONSHAREDs   EXPORTSs     "%s"s
   writing %ss   -s($   s   copys   extra_preargss	   librariess   objectss   extends   selfs   dll_librariess   export_symbolss   Nones   target_descs
   EXECUTABLEs   oss   paths   dirnames   temp_dirs   splitexts   basenames   output_filenames   dll_names   dll_extensions   joins   def_files   contentss   syms   appends   executes
   write_files   debugs   UnixCCompilers   links
   output_dirs   library_dirss   runtime_library_dirss   extra_postargss
   build_temps   target_lang(   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   dll_names   dll_extensions   contentss   temp_dirs   syms   def_file(    (    s3   /mit/python/lib/python2.3/distutils/emxccompiler.pys   link[   s>    
$/ 	s    c         C   sü   | t j o
 d } n g  } xÔ | D]Ì } t i i t i i | ƒ ƒ \ } } | |  i d g j o t d | | f ‚ n | o t i i | ƒ } n | d j o' | i t i i | | |  i ƒ ƒ q$ | i t i i | | |  i ƒ ƒ q$ W| Sd  S(   Ns    s   .rcs"   unknown file type '%s' (from '%s')(   s
   output_dirs   Nones	   obj_namess   source_filenamess   src_names   oss   paths   splitexts   normcases   bases   exts   selfs   src_extensionss   UnknownFileErrors	   strip_dirs   basenames   appends   joins   res_extensions   obj_extension(   s   selfs   source_filenamess	   strip_dirs
   output_dirs	   obj_namess   exts   bases   src_name(    (    s3   /mit/python/lib/python2.3/distutils/emxccompiler.pys   object_filenames¶   s      
 $c   
      C   sÇ   d | } d | } y t i d i d ƒ } Wn t j
 o g  } n Xxr | | D]f } t i
 i | | ƒ } t i
 i | | ƒ }	 t i
 i | ƒ o | SqU t i
 i |	 ƒ o |	 SqU qU Wt Sd  S(   Ns   %s.libs	   lib%s.libs   LIBRARY_PATHs   ;(   s   libs   shortlibs   longlibs   oss   environs   splits   emx_dirss   KeyErrors   dirss   dirs   paths   joins	   shortlibps   longlibps   existss   None(
   s   selfs   dirss   libs   debugs   emx_dirss	   shortlibps   longlibs   shortlibs   dirs   longlibp(    (    s3   /mit/python/lib/python2.3/distutils/emxccompiler.pys   find_library_fileÒ   s    

 (   s   __name__s
   __module__s   compiler_types   obj_extensions   static_lib_extensions   shared_lib_extensions   static_lib_formats   shared_lib_formats   res_extensions   exe_extensions   __init__s   _compiles   Nones   links   object_filenamess   find_library_file(    (    (    s3   /mit/python/lib/python2.3/distutils/emxccompiler.pys   EMXCCompiler   s   #	'[s   oks   not oks	   uncertainc          C   sÞ   d k  l } d k }  |  i t i d ƒ d j o t d f Sn | i ƒ  } y& t	 | ƒ } | i ƒ  } | i ƒ  Wn, t j
 o  } t d | | i f f Sn; X|  i | d ƒ d j o t d | f Sn t d	 | f Sd S(
   s¡  Check if the current Python installation (specifically, pyconfig.h)
    appears amenable to building extensions with GCC.  Returns a tuple
    (status, details), where 'status' is one of the following constants:
      CONFIG_H_OK
        all is well, go ahead and compile
      CONFIG_H_NOTOK
        doesn't look good
      CONFIG_H_UNCERTAIN
        not sure -- unable to read pyconfig.h
    'details' is a human-readable string explaining the situation.

    Note there are two ways to conclude "OK": either 'sys.version' contains
    the string "GCC" (implying that this Python was built with GCC), or the
    installed "pyconfig.h" contains the string "__GNUC__".
    (   s	   sysconfigNs   GCCi    s   sys.version mentions 'GCC's   couldn't read '%s': %ss   __GNUC__s   '%s' mentions '__GNUC__'s    '%s' does not mention '__GNUC__'(   s	   distutilss	   sysconfigs   strings   finds   syss   versions   CONFIG_H_OKs   get_config_h_filenames   fns   opens   fs   reads   ss   closes   IOErrors   excs   CONFIG_H_UNCERTAINs   strerrors   CONFIG_H_NOTOK(   s   strings   fs	   sysconfigs   ss   fns   exc(    (    s3   /mit/python/lib/python2.3/distutils/emxccompiler.pys   check_config_hò   s     	c    	      C   s¸   d k  l } d k l }  d k } |  d ƒ } | oh t i | d d ƒ } | i	 ƒ  } | i ƒ  | i d | ƒ } | o | | i d ƒ ƒ } q¤ t } n t } t } | | f Sd S(	   sa    Try to find out the versions of gcc and ld.
        If not possible it returns None for it.
    (   s   StrictVersion(   s   find_executableNs   gccs    -dumpversions   rs   (\d+\.\d+\.\d+)i   (   s   distutils.versions   StrictVersions   distutils.spawns   find_executables   res   gcc_exes   oss   popens   outs   reads
   out_strings   closes   searchs   results   groups   gcc_versions   Nones
   ld_version(	   s   find_executables
   ld_versions   StrictVersions   res   gcc_exes   results   gcc_versions
   out_strings   out(    (    s3   /mit/python/lib/python2.3/distutils/emxccompiler.pys   get_versions$  s      	

(   s   __doc__s   __revision__s   oss   syss   copys   distutils.ccompilers   gen_preprocess_optionss   gen_lib_optionss   distutils.unixccompilers   UnixCCompilers   distutils.file_utils
   write_files   distutils.errorss   DistutilsExecErrors   CompileErrors   UnknownFileErrors	   distutilss   logs   EMXCCompilers   CONFIG_H_OKs   CONFIG_H_NOTOKs   CONFIG_H_UNCERTAINs   check_config_hs   get_versions(   s   __revision__s   DistutilsExecErrors   logs   gen_preprocess_optionss   get_versionss   gen_lib_optionss   CONFIG_H_NOTOKs   check_config_hs   UnixCCompilers   syss   CONFIG_H_UNCERTAINs   EMXCCompilers   CompileErrors
   write_files   copys   oss   UnknownFileErrors   CONFIG_H_OK(    (    s3   /mit/python/lib/python2.3/distutils/emxccompiler.pys   ?   s   Ï	2