
    wffF9                         d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	 ddl
mZmZmZmZmZ ddlmZ  ej$                  d	e        G d
 de      Zy)zdistutils.bcppcompiler

Contains BorlandCCompiler, an implementation of the abstract CCompiler class
for the Borland C++ compiler.
    N   )log)newer)	CCompilergen_preprocess_options)CompileErrorDistutilsExecErrorLibError	LinkErrorUnknownFileError)
write_filezbcppcompiler is deprecated and slated to be removed in the future. Please discontinue use or file an issue with pypa/distutils describing your use case.c                        e Zd ZdZdZi ZdgZg dZeez   ZdZ	dZ
dZdxZZd	Zd fd
	Z	 	 	 	 	 	 	 ddZ	 ddZ	 	 	 	 	 	 	 	 	 	 ddZddZddZ	 	 	 	 	 ddZ xZS )BCPPCompilerzConcrete 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.exec                     t         |   |||       d| _        d| _        d| _        d | _        g d| _        g d| _        g d| _        g d| _	        g | _
        g d| _        g d| _        y )	Nz	bcc32.exezilink32.exeztlib.exe)/tWMz/O2/q/g0)r   z/Odr   r   )z/Tpd/Gnr   /x)r   r   r   )r   r   r   z/r)super__init__cclinkerlibpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugldflags_staticldflags_exeldflags_exe_debug)selfverbosedry_runforce	__class__s       [C:\xampp-8.1.2\htdocs\client\python\Lib\site-packages\setuptools/_distutils/bcppcompiler.pyr   zBCPPCompiler.__init__@   sk    '51 #"&;%A"9$?! .!:    c	                 Z   | j                  ||||||      \  }}	}}
}|xs g }|j                  d       |r|j                  | j                         n|j                  | j                         |	D ]  }	 ||   \  }}t        j                  j                  |      }t        j                  j                  |      }| j                  t        j                  j                  |             |dk(  r~|dk(  r	 | j                  dd||g       || j                  v rd}n|| j                  v rd}nd}d|z   }	 | j                  | j                   g|z   |
z   ||gz   |z   |gz           |	S # t
        $ r Y w xY w# t        $ r}t        |      d }~ww xY w# t        $ r}t        |      d }~ww xY w)	Nz-c.res.rcbrcc32z-fo z-P-o)_setup_compileappendextendr   r   KeyErrorospathnormpathmkpathdirnamespawnr	   r   _c_extensions_cpp_extensionsr   )r$   sources
output_dirmacrosinclude_dirsdebugextra_preargsextra_postargsdependsobjectspp_optsbuildcompile_optsobjsrcextmsg	input_opt
output_opts                      r)   compilezBCPPCompiler.compileW   s    ;?:M:Mgw;
7% %*D! : :; 4 45 1	(C :S ''""3'C''""3'C KK,-f}e|,JJ%c:;  d(((	,,, 	
 	J

(

WWI"# !*-. %	%
 eQ1	(f a    * ,&s++,: & ("3''(sB   3E%3E53.F%	E21E25	F>F		F	F*F%%F*c                 2   | j                  ||      \  }}| j                  ||      }| j                  ||      r+|dg|z   }|r	 	 | j                  | j                  g|z          y t        j                  d|       y # t
        $ r}t        |      d }~ww xY w)N)r>   z/uskipping %s (up-to-date))	_fix_object_argslibrary_filename
_need_linkr:   r   r	   r
   r   rA   )	r$   rE   output_libnamer>   rA   target_langoutput_filenamelib_argsrL   s	            r)   create_static_libzBCPPCompiler.create_static_lib   s     !% 5 5gz J*//:/V??7O4'.8H$

DHH:01 II0/B & $sm#$s   A= =	BBBc                    | j                  ||      \  }}| j                  |||      \  }}}|rt        j                  dt	        |             | t
        j                  j                  ||      }| j                  ||      r,|t        j                  k(  r$d}|	r| j                  d d  }n3| j                  d d  }n#d}|	r| j                  d d  }n| j                  d d  }|d}nt
        j                  j                  |      \  }}t
        j                  j!                  |      \  }}t
        j                  j#                  |d         }t
        j                  j                  |d|z        }dg}|xs g D ]  }|j%                  d| d	|         | j'                  t(        ||fd
|z         t+        t
        j                  j,                  |      }|g}g }|D ]i  }t
        j                  j!                  t
        j                  j/                  |            \  }}|dk(  r|j%                  |       Y|j%                  |       k |D ]3  }|j%                  dt
        j                  j-                  |      z         5 |j%                  d       |j1                  |       |j1                  d|g       |j%                  d       |D ]:  }| j3                  |||	      }||j%                  |       *|j%                  |       < |j1                  d       |j1                  d|g       |j%                  d       |j1                  |       |
r|
|d d |r|j1                  |       | j5                  t
        j                  j#                  |             	 | j7                  | j8                  g|z          y t        j>                  d|       y # t:        $ r}t=        |      d }~ww xY w)Nz7I don't know what to do with 'runtime_library_dirs': %sc0w32c0d32r/   r   z%s.defEXPORTSz  z=_z
writing %sr,   z/L%sz/L.,z,,)import32cw32mtrQ   ) rR   _fix_lib_argsr   warningstrr5   r6   joinrT   r   
EXECUTABLEr#   r"   r    r   splitsplitextr9   r2   executer   mapr7   normcaser3   find_library_filer8   r:   r   r	   r   rA   ) r$   target_descrE   rW   r>   	librarieslibrary_dirsruntime_library_dirsexport_symbolsrA   rB   rC   
build_temprV   startup_objld_argsdef_fileheadtailmodnamerK   temp_dircontentssymobjects2	resourcesfilebaseellr   libfilerL   s                                    r)   linkzBCPPCompiler.link   s{   & !% 5 5gz J*:>:L:L|%9;
7L"6  KKI()
 ! ggll:GO??7O4i222%"44Q7G"..q1G%"77:G"11!4G %WW]]?;
d!ww//577??71:677<<(W2DE%;)/R 7COObRu$567Z(H)=|h?VW 277++W5H #mGI  ) gg..rww/?/?/EFs&=$$T*NN4() $ ?v(8(8(==>?NN5! NN7# NNC12NN4   	, 00sEJ?NN3' NN7+	, NN12 NNC?+NN3NN9%+~.KK89%

DKK=723
 II0/B	 & %n$%s   O 	OOOc                     |r|dz   }|dz   |dz   ||f}n|dz   |f}|D ]]  }|D ]V  }t         j                  j                  || j                  |            }t         j                  j	                  |      sR|c c S  _ y )N_d_bcpp)r5   r6   rd   rS   exists)	r$   dirsr   rA   dlib	try_namesdirnamer   s	            r)   rk   zBCPPCompiler.find_library_file<  s     :DwcBIw,I 	C! #'',,sD,A,A$,GH77>>'*"N#	 r*   c                    |d}g }|D ]4  }t         j                  j                  t         j                  j                  |            \  }}|| j                  ddgz   vrt        d| d| d      |rt         j                  j                  |      }|dk(  r3|j                  t         j                  j                  |||z                |dk(  r3|j                  t         j                  j                  ||dz                |j                  t         j                  j                  ||| j                  z                7 |S )Nr/   r-   r,   zunknown file type 'z	' (from 'z'))
r5   r6   rg   rj   src_extensionsr   basenamer2   rd   obj_extension)r$   source_filenames	strip_dirr>   	obj_namessrc_namer~   rK   s           r)   object_filenameszBCPPCompiler.object_filenamesV  s   J	( 	VH''**277+;+;H+EFKT34..%@A&)<SE8*TV'WXXww''-f}  j$*!EF  j$-!HI  j$ASAS:S!TU	V r*   c                    | j                  d ||      \  }}}t        ||      }dg|z   }	||	j                  d|z          |r||	d d |r|	j                  |       |	j                  |       | j                  s|t        ||      rC|r.| j                  t        j                  j                  |             	 | j                  |	       y y # t        $ r}
t        |
       t        |
      d }
~
ww xY w)Nz	cpp32.exer0   r   )_fix_compile_argsr   r2   r3   r'   r   r8   r5   r6   r9   r:   r	   printr   )r$   sourceoutput_filer?   r@   rB   rC   _rF   pp_argsrL   s              r)   
preprocesszBCPPCompiler.preprocessm  s     %)$:$:4$V!FL(>-')"NN4+-.'GBQKNN>*v
 ::,fk0JBGGOOK89(

7#	 1K
 & (c
"3''(s   6C	 		C-C((C-)r   r   r   )NNNr   NNN)Nr   N)
NNNNNr   NNNN)r   )r   r/   )NNNNN)__name__
__module____qualname____doc__compiler_typeexecutablesr;   r<   r   r   static_lib_extensionshared_lib_extensionstatic_lib_formatshared_lib_formatexe_extensionr   rO   rY   r   rk   r   r   __classcell__)r(   s   @r)   r   r   %   s     M K FM-O #_4NM!!,22)M;4 HZ NRC0 !@CL44 (r*   r   )r   r5   warnings_logr   	_modifiedr   	ccompilerr   r   errorsr   r	   r
   r   r   	file_utilr   warnDeprecationWarningr    r*   r)   <module>r      sP    
    8  " 4 	f(9 f(r*   