a
    	$a                      @   s   d dl Z d dlmZmZ d dlmZmZmZ d dlm	Z	m
Z
mZmZ edededdd	d
 Zedededddd Zedededdd Zedededdd Zededdd Zededdd ZdS )    N)UtilsErrors)featurebeforeafter)LIB_PATHMODE_755install_rpathbuild_rpathZinstall_bin
apply_core
apply_linkapply_obj_varsc                 C   s   | j }t| }t|}| j js*|| j_dS t| ddp8d}||}tj	
| j}||krh|  jd7  _|| j_| jszdS |jtj	||| j	| jtd dS )z@install a binary, taking account of the different rpath variantsNsamba_inst_pathz	${BINDIR}.instchmod)bldr	   r
   
is_installenvRPATHgetattrEXPAND_VARIABLESospathbasenametargetsamba_install
install_asjoinfind_or_declarer   )selfr   install_ldflagsbuild_ldflagsinstall_pathZorig_target r$   n/home/jack/SDK/ZBT-AX3000-OpenWrt-21.02/build_dir/hostpkg/samba-4.14.12/./buildtools/wafsamba/samba_install.pyinstall_binary   s$    
r&   Zinstall_libc              	   C   s  t | ddrdS | j}|jd }zt| }t|}| jjrHt | dds`|| j_W ||jd< dS t | dd}|du rt | ddrd	}nd
}||}| j	}||krd| _
| | j}d|_| j	d7  _	| jd |_|| j_n| }||j_d}t | ddrN| j}	d}
t | ddr| j}
t | dddkr@|j|j	ddd}n||j	}n| jr| jdd }|j|| jd}	|j||d}
||j	}| jr|jjs||}nFt | ddr||}	| j}
||j	}n||}	d}
||j	}|jjr:|
r|jd|jj|
  n|jd|jj|	  d|j_|jtj||	| j|td |
r|
|	kr|tj||
tj|	 |r|tj||tj|	 W ||jd< n||jd< 0 dS )Ainstall a library, taking account of the different rpath variantsdone_install_libraryFNdefaultr   Tr   private_libraryz${PRIVATELIBDIR}z	${LIBDIR}r   samba_realnamesoname 
samba_typePYTHON)nolibprefixpython.r   version	LINKFLAGSr   )r   r   all_envsr	   r
   r   r   r   r   r   r(   clonepostednamer+   r,   make_libnamevnumsplitr*   	SONAME_STappend_valuer   r   r   r   r   r   
symlink_asr   )r    r   Zdefault_envr!   r"   r#   Ztarget_nametZdev_linkZinstall_nameZinstall_linkZ	inst_nameZ	vnum_baser$   r$   r%   install_library5   s    
Q






 rA   cshlibapply_implib
apply_vnumc                 C   s8   | j jr4t| ddr4| j d| j j| j  d| j _dS )r'   r,   r-   r5   N)r   r=   r   r>   r,   r    r$   r$   r%   apply_soname   s    rF   c                 C   s2   | j jr.t| ddr.| j dd| j  d| _dS )z-add version-script arguments to library buildversion_scriptr-   r5   z-Wl,--version-script=%sN)r   HAVE_LD_VERSION_SCRIPTr   r>   rG   rE   r$   r$   r%   apply_vscript   s
    
rI   symlink_libc                 C   s2  | j drdS tj| jj| jj}| j	j
d | j}d}t| dd}|durhd|dd  }t| dd}|dkrtj| jj| j |d}t| d	d
rdt|f }ndt|f }tj||}tj|rtj|rt||krdS t| tj|}tj|s"t| t|| dS )zsymlink a shared libr   Nr   r-   r;   r2   	link_namer3   r*   Fz%s/private/%sz%s/%s)r   endswithr   r   dirnamer   srcnodeabspathr   	link_taskoutputsr   r<   r   r:   r   r   lexistsislinkreadlinkunlinkisdirmakedirssymlink)r    ZblddirZlibpathZsoextr;   link_targetr   Zlink_containerr$   r$   r%   rJ      s.    

symlink_binc                 C   s   | j drdS | jjr$| jjd s4td| j | jjd | j}t	j
| jjj| jjd j}t	j
|rt	j
|rt	||krdS t	| t	|| dS )z)symlink a binary into the build directoryr   Nr   z&no outputs found for %s in symlink_bin)r   rL   rP   rQ   r   WafErrorr9   rO   r   r   r   r   r   BUILD_DIRECTORYrR   rS   rT   rU   rX   )r    Zbinpathbldpathr$   r$   r%   rZ      s    
)r   waflibr   r   waflib.TaskGenr   r   r   samba_utilsr   r   r	   r
   r&   rA   rF   rI   rJ   rZ   r$   r$   r$   r%   <module>   s2   'c%