\d.:~dZddlZddlmZmZmZmZmZddlm Z m Z ddl m Z ddl mZddlmZGdd e ZdS) zdistutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. N)DistutilsExecError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_options) write_file)newer)logceZdZdZdZiZdgZgdZeezZdZ dZ dZ dxZ Z d Z dd Z dd Z ddZ ddZddZ ddZ ddZd S) BCPPCompilerzConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. bcppz.c)z.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exerctj||||d|_d|_d|_d|_gd|_gd|_gd|_gd|_ g|_ gd|_ gd|_ dS) Nz bcc32.exez ilink32.exeztlib.exe)/tWMz/O2/q/g0)rz/Odrr)z/Tpd/Gnr/x)rrr)rrrz/r) r__init__cclinkerlibpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugldflags_static ldflags_exeldflags_exe_debug)selfverbosedry_runforces '..\python\lib\distutils\bcppcompiler.pyrzBCPPCompiler.__init__5s D'7E::: # "&;;;%A%A%A"999$?$?$?! ...!9!9!9Nc ~|||||||\}} }} } |pg} | d|r| |jn| |j| D]H} | | \}}n#t $rYwxYwt j|}t j| } | t j | |dkr|dkr= | dd| |gn!#t$r}t|d}~wwxYw||jvrd}n||jvrd}nd}d| z} | |jg| z| z||gz|z|gz)#t$r}t|d}~wwxYw| S) Nz-c.res.rcbrcc32z-foz-P-o)_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)r"sources output_dirmacros include_dirsdebug extra_preargsextra_postargsdependsobjectspp_optsbuild compile_optsobjsrcextmsg input_opt output_opts r&compilezBCPPCompiler.compileQsF ##J g$+^== 8%%* T"""  7   !; < < < <   !5 6 6 6, (, (C  :SS    '""3''C'""3''C KK,, - - -f}}e||,JJ5#s ;<<<<),,,&s+++,d((( ,,,  J  ( TWI 4w>& 34*+.1U34444& ( ( ("3''' (sB7 B BBD++ E 5EE --F F:&F55F:cT|||\}}|||}|||rL|dg|z}|r ||jg|zdS#t $r}t |d}~wwxYwtjd|dS)N)r;z/uskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr7rrrr r>) r"rBoutput_libnamer;r> target_langoutput_filenamelib_argsrIs r&create_static_libzBCPPCompiler.create_static_libs!% 5 5w K K*  ! !>j ! I I  ??G_ 5 5 C'.8H  $ TXJ122222% $ $ $smm# $ I0/ B B B B BsA22 B<B  Bc|||\}}||||\}}}|r"tjdt || t j||}|||r|tj kr$d}| r|j dd}n3|j dd}n#d}| r|j dd}n|jdd}|d}nt j|\}}t j|\}}t j|d}t j|d|z}dg}|pgD]}|d|d ||t(||fd |zt+t jj|}|g}g}|D]r}t jt j|\}}|d kr||]||s|D]7}|d t j|z8|d |||d|g|d|D]F}|||| }|||1||G|d|d|d|g|d||| r| |dd<| r|| |t j| ||jg|zdS#t:$r}t=|d}~wwxYwtjd|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sc0w32c0d32r,rz%s.defEXPORTSz z=_z writing %sr)z/L%sz/L.,z,,import32cw32mtrN) rO _fix_lib_argsr warnstrr2r3joinrQr EXECUTABLEr!r rrsplitsplitextr6r/executer mapr4normcaser0find_library_filer5r7rrrr>) r" target_descrBrTr; libraries library_dirsruntime_library_dirsexport_symbolsr>r?r@ build_temprS startup_objld_argsdef_fileheadtailmodnamerHtemp_dircontentssymobjects2 resourcesfilebaselrlibfilerIs r&linkzBCPPCompiler.links$!% 5 5w K K*    <9M N N 8L"6  0 HN-.. 0 0 0  ! gllJHHO ??G_ 5 5e Ci222% 2"4QQQ7GG".qqq1GG% 5"7:GG"1!!!4G%W]]O<< d!w//66 7??71:667<<8g3EFF%;*0b==COOO###ss$;<<<< Z(H)=)H466627+W55H#mGI  ) ) g..rw/?/?/E/EFF s&==$$T****NN4((((" = =v(8(8(;(;;<<<< NN5 ! ! ! NN7 # # # NNC0 1 1 1 NN4  , ,00sEJJ?NN3''''NN7++++ NNJ ' ' ' NNH % % % NNC> * * * NN3    NN9 % % % ,+  /~... KK/:: ; ; ; % T[MG344444% % % %nn$ % I0/ B B B B Bs0P P.P))P.c|r|dz}|dz|dz||f}n|dz|f}|D]_}|D]Z}tj|||}tj|r|ccS[`dS)N_d_bcpp)r2r3rarPexists) r"dirsrr>dlib try_namesdirnamer}s r&rhzBCPPCompiler.find_library_file4s  -$JDwcBIIw,I  C! # #',,sD,A,A$,G,GHH7>>'**#"NNNNN# # 4r'r,c|d}g}|D]=}tjtj|\}}||jddgzvrt d|d|d|rtj|}|dkr7|tj|||z|dkr8|tj||dz|tj|||j z?|S)Nr,r*r)zunknown file type 'z ' (from 'z')) r2r3rdrgsrc_extensionsrbasenamer/ra obj_extension)r"source_filenames strip_dirr; obj_namessrc_namer{rHs r&object_filenameszBCPPCompiler.object_filenamesNsX  Bz ( H HH'**BG,<, > "FL(>>-')  " NN4+- . . .  ('GBQBK  + NN> * * *v : (,fk0J0J, : BGOOK88999 ( 7#####% ( ( (c "3''' ( -,sC&& D0DD)rrr)NNNrNNN)NrN) NNNNNrNNNN)r)rr,)NNNNN)__name__ __module__ __qualname____doc__ compiler_type executablesr8r9rrstatic_lib_extensionshared_lib_extensionstatic_lib_formatshared_lib_format exe_extensionrrLrVr~rhrrr'r&rrsaMKFM---O#_4NM!!,22)M:::::HIAE<<<<H'+!"'+ CCCC:#'! !BCBCBCBCR8%&%':!%!%"&#' ((((((r'r)rr2distutils.errorsrrrrrdistutils.ccompilerrr distutils.file_utilr distutils.dep_utilr distutilsr rrr'r&rs 99999999999999''''''''******$$$$$$n(n(n(n(n(9n(n(n(n(n(r'