JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbra XC?h.:@spdZddlZddlmZmZmZmZmZddlm Z m Z ddl m Z ddl mZddlmZGdd d 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)logc @seZdZdZdZiZdgZgdZeeZdZ dZ dZ dZ Z d Zdd d ZdddZdddZdddZdddZd ddZd!ddZd S)" BCPPCompilerzConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. Zbcppz.c)z.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCsnt||||d|_d|_d|_d|_gd|_gd|_gd|_gd|_ g|_ gd|_ gd|_ dS) Nz bcc32.exez ilink32.exeztlib.exe)/tWMz/O2/q/g0)r z/Odrr)z/Tpd/Gnr/x)rrr)rrrz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverboseZdry_runforcer;/opt/alt/python39/lib64/python3.9/distutils/bcppcompiler.pyr5s     zBCPPCompiler.__init__Nc  Cs|||||||\}} }} } |p$g} | d|rB| |jn | |j| D]>} z| | \}}Wnty~YqRYn0tj|}tj| } | tj | |dkrqR|dkrz| dd| |gWqRt y}zt |WYd}~qRd}~00qR||jvrd}n||jvr*d}nd}d| }z,| |jg| | ||g||gWqRt y}zt |WYd}~qRd}~00qR| S) Nz-c.res.rcZbrcc32z-foz-P-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrr compileQsT              zBCPPCompiler.compilec Cs|||\}}|j||d}|||r|dg|}|r:z||jg|Wqty|}zt|WYd}~qd}~00n td|dS)N)r0z/uskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr-rrrr r3) rr6Zoutput_libnamer0r3 target_langoutput_filenameZlib_argsr;rrr create_static_libs    zBCPPCompiler.create_static_libc Cs|||\}}||||\}}}|r8tdt||durNtj||}|||r|t j krd}| r~|j dd}q|j dd}n&d}| r|j dd}n|jdd}|durd}ntj|\}}tj|\}}tj|d}tj|d|}dg}|pgD]}|d||fq|t||fd |ttjj|}|g}g}|D]>}tjtj|\}}|d kr||n ||q`|D]}|d tj|q|d |||d |g|d|D]4}|||| }|dur||n ||q|d|d|d |g|d ||| rp| |dd<| r|| |tj|z||jg|Wn.ty}zt|WYd}~n d}~00n td|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32r#rz%s.defZEXPORTSz %s=_%sz writing %sr!z/L%sz/L.,z,,Zimport32Zcw32mtr=) r>Z _fix_lib_argsr warnstrr(r)joinr@rZ EXECUTABLErrrrsplitsplitextr,r%Zexecuter mapr*normcaser&find_library_filer+r-rrrr3) rZ target_descr6rBr0Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr3r4r5Z build_temprAZ startup_objZld_argsZdef_fileheadtailmodnamer:Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler;rrr links                 zBCPPCompiler.linkc Csr|r"|d}|d|d||f}n |d|f}|D]:}|D]0}tj|||}tj|r:|Sq:q2dS)NZ_dZ_bcpp)r(r)rGr?exists) rdirsrr3ZdlibZ try_namesdirnamerTrrr rL4s   zBCPPCompiler.find_library_filer#cCs|dur d}g}|D]}tjtj|\}}||jddgvrRtd||f|rbtj|}|dkr|tj|||q|dkr|tj||dq|tj|||j q|S)Nr#r"r!z"unknown file type '%s' (from '%s')) r(r)rIrKsrc_extensionsrbasenamer%rG obj_extension)rZsource_filenamesZ strip_dirr0Z obj_namesZsrc_namerRr:rrr object_filenamesNs$   zBCPPCompiler.object_filenamesc Cs|d||\}}}t||}dg|} |dur>| d||rN|| dd<|r\| || ||js~|dus~t||r|r|tj |z| | Wn4t y} zt | t | WYd} ~ n d} ~ 00dS)Nz cpp32.exer$r)Z_fix_compile_argsrr%r&rr r+r(r)r,r-rprintr) rsourceZ output_filer1r2r4r5_r7Zpp_argsr;rrr preprocessis&      zBCPPCompiler.preprocess)rrr)NNNrNNN)NrN) NNNNNrNNNN)r)rr#)NNNNN)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesr.r/rZr\Zstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr<rCrUrLr]rarrrr r sX  D    r )rer(Zdistutils.errorsrrrrrZdistutils.ccompilerrrZdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr r rrrr s