YfW: @ s d Z d d l Z d d l m Z m Z m Z m Z m Z m Z d d l m Z m Z m Z d d l m Z d d l m Z d d l m Z Gd d d e Z d S) zdistutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. N)DistutilsExecErrorDistutilsPlatformErrorCompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @ s e Z d Z d Z d Z i Z d g Z d d d g Z e e Z d Z d Z d Z d Z Z d Z d d d d d Z d d d d d d d d d Z d d d d d Z d d d d d d d d d d d d Z d d d Z d d d d Z d d d d d d d Z d S)BCPPCompilerzConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. Zbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exer c C s t j | | | | d | _ d | _ d | _ d | _ d d d d g | _ d d d d g | _ d d d d g | _ d d d d g | _ g | _ d d d g | _ d d d d g | _ d S) Nz bcc32.exezilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r __init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_staticldflags_exeldflags_exe_debug)selfverboseZdry_runforce r ;/opt/alt/python35/lib64/python3.5/distutils/bcppcompiler.pyr 5 s zBCPPCompiler.__init__Nc C s | j | | | | | | \ } } } } } | p6 g } | j d | r_ | j | j n | j | j x| D]} y | | \ } } Wn t k r wv Yn Xt j j | } t j j | } | j t j j | | d k r qv | d k rTy | j d d | | g Wqv t k rP} z t | WYd d } ~ Xqv Xqv | | j k rld } n | | j k rd } n d } d | } y4 | j | j g | | | | g | | g Wqv t k r} z t | WYd d } ~ Xqv Xqv W| S) Nz-cz.resz.rcZbrcc32z-fo z-Pz-o)Z_setup_compileappendextendr r KeyErrorospathnormpathmkpathdirnamespawnr r _c_extensions_cpp_extensionsr )r Zsources output_dirmacrosinclude_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZcompile_optsobjsrcextmsgZ input_optZ output_optr r r compileQ sF .#zBCPPCompiler.compilec C s | j | | \ } } | j | d | } | j | | r | d g | } | rU y | j | j g | Wq t k r } z t | WYd d } ~ Xq Xn t j d | d S)Nr* z/uzskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr' r r r r r- ) r r0 Zoutput_libnamer* r- target_langoutput_filenameZlib_argsr5 r r r create_static_lib s "zBCPPCompiler.create_static_libc C s | j | | \ } } | j | | | \ } } } | rR t j d t | | d k rs t j j | | } | j | | r| t j k r d } | r | j d d } q| j d d } n5 d } | r | j d d } n | j d d } | d k rd } n t j j | \ } } t j j | \ } } t j j | d } t j j | d | } d g } x+ | pg D] } | j d | | f qW| j t | | f d | t t j j | } | g } g } x[ | D]S } t j j t j j | \ } } | d k r:| j | q| j | qWx+ | D]# } | j d t j j | qRW| j d | j | | j d | g | j d xL | D]D } | j | | | } | d k r| j | q| j | qW| j d | j d | j d | g | j d | j | | r_| | d d <| rr| j | | j t j j | y | j | j g | Wqt k r} z t | WYd d } ~ XqXn t j d | d S)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32r r z%s.defZEXPORTSz %s=_%sz writing %sz.resz/L%sz/L.,z,,Zimport32Zcw32mtzskipping %s (up-to-date)) r7 Z _fix_lib_argsr warnstrr" r# joinr9 r Z EXECUTABLEr r r r splitsplitextr&