
    7fR9                         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dS )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.exeFc                     t                                          |||           d| _        d| _        d| _        d | _        g d| _        g d| _        g d| _        g d| _	        g | _
        g d| _        g d| _        d S )	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       `/home/feoh/.local/pipx/shared/lib/python3.11/site-packages/setuptools/_distutils/bcppcompiler.pyr   zBCPPCompiler.__init__@   s    '5111 #"&;;;%A%A%A"999$?$?$?! ...!:!:!:    Nc	                 ~   |                      ||||||          \  }}	}}
}|pg }|                    d           |r|                    | j                   n|                    | j                   |	D ]H}	 ||         \  }}n# t
          $ r Y w xY wt          j                            |          }t          j                            |          }| 	                    t          j        
                    |                     |dk    r|dk    r=	 |                     dd||g           n!# t          $ r}t          |          d }~ww xY w|| j        v rd}n|| j        v rd}nd}d|z   }	 |                     | j        g|z   |
z   ||gz   |z   |gz              )# t          $ r}t          |          d }~ww xY w|	S )	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   sQ    ;?:M:Mgw;
 ;
7% %*D!!! 	6 :;;;; 4555 1	( 1	(C :SS    '""3''C'""3''C KK,,---f}}e||,JJ%c:;;;;) , , ,&s+++, d(((		,,, 		
 	J

(

WI"# !*-. %	%
 e    & ( ( ("3'''( sB   7B
BBD++
E	5EE	--F
F:&F55F:c                 T   |                      ||          \  }}|                     ||          }|                     ||          rL|dg|z   }|r	 	 |                     | j        g|z              d S # t
          $ r}t          |          d }~ww xY wt          j        d|           d S )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 J*//:/VV??7O44 		C'.8H $

DH:011111% $ $ $smm#$ I0/BBBBBs   A2 2
B<BBc                 f   |                      ||          \  }}|                     |||          \  }}}|r"t          j        dt	          |                     | t
          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                            |          \  }}t
          j                            |          \  }}t
          j                            |d                   }t
          j                            || d          }dg}|pg D ]}|                    d| d	|            |                     t(          ||fd
|            t+          t
          j        j        |          }|g}g }|D ]r}t
          j                            t
          j                            |                    \  }}|dk    r|                    |           ]|                    |           s|D ]7}|                    dt
          j                            |                      8|                    d           |                    |           |                    d|g           |                    d           |D ]F}|                     |||	          }||                    |           1|                    |           G|                    d           |                    d|g           |                    d           |                    |           |
r|
|d d<   |r|                    |           |                     t
          j                            |                     	 |                     | j        g|z              d S # t:          $ r}t=          |          d }~ww xY wt          j        d|           d S )Nz7I don't know what to do with 'runtime_library_dirs': %sc0w32c0d32r/   r   z.defEXPORTSz  z=_zwriting r,   z/Lz/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   st   & !% 5 5gz J J*:>:L:L|%9;
 ;
7L"6   	KI())  
 ! gll:GGO??7O44 _	Ci222% 2"4QQQ7GG".qqq1GG% 5"7:GG"1!!!4G %W]]?;;
d!w//557??71:667<<W2B2B2BCC%;)/R 7 7COO$5$5$5$5$56666Z(H)=?T(?T?TUUU 27+W55H #mGI  ) ) g..rw/?/?/E/EFFs&==$$T****NN4((((# = =;BG$4$4S$9$9;;<<<<NN5!!! NN7### NNC1222NN4     	, 	, 00sEJJ?NN3'''' NN7++++ NN1222 NNC?+++NN3NN9%%% ,+ /~...KK88999%

DK=7233333% % % %nn$% I0/BBBBBs   O; ;
PPPc                     |r|dz   }|dz   |dz   ||f}n|dz   |f}|D ]_}|D ]Z}t           j                            ||                     |                    }t           j                            |          r|c c S [`d S )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BIIw,I 	 	C! # #',,sD,A,A$,G,GHH7>>'** #"NNNNN## 4r*   r/   c                    |d}g }|D ]=}t           j                            t           j                            |                    \  }}|| j        ddgz   vrt          d| d| d          |rt           j                            |          }|dk    r7|                    t           j                            |||z                        |dk    r8|                    t           j                            ||dz                        |                    t           j                            ||| j	        z                        ?|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 	VH'**27+;+;H+E+EFFKT34.%@AA&'WS'W'W8'W'W'WXXX .w''--f}}  j$*!E!EFFFF  j$-!H!HIIII  j$AS:S!T!TUUUUr*   c                 0   |                      d ||          \  }}}t          ||          }dg|z   }	||	                    d|z              |r||	d d<   |r|	                    |           |	                    |           | j        s|t          ||          r||r2|                     t          j        	                    |                     	 | 
                    |	           d S # t          $ r#}
t          |
           t          |
          d }
~
ww xY wd S )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$V!FL(>>-')"NN4+-... 	('GBQBK 	+NN>***v
 : 	(,fk0J0J, :BGOOK88999(

7#####% ( ( (c


"3'''( -,s   C& &
D0DD)FFF)NNNFNNN)NFN)
NNNNNFNNNN)F)Fr/   )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   %   sp         M K FM---O #_4NM!!,22)M; ; ; ; ; ;4 H H H HZ RVC C C C0 !@C @C @C @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      s    
			              8 8 8 8 8 8 8 8              " ! ! ! ! ! 4 	  f( f( f( f( f(9 f( f( f( f( f(r*   