B
    bK                 @   sl   d Z ddlZddlZddlZddlZddlZddlZddl	m
Z
 dd Zdd Zdd	 Zd
d Zdd ZdS )zSCons.Tool.javah

Tool-specific initialization for javah.

There normally shouldn't be any need to import this module directly.
It will usually be imported through the generic SCons.Tool.Tool()
selection method.

    N)get_java_install_dirsc          	   C   s  | dd}| d}|sfy|d }W n tk
r>   d}Y n(X y|jj}W n tk
rd   d}Y nX || }t|dkrd}nt|tj	 }g }x|D ]}y|jj
}	W n tk
r2   t|}	|r|	dt| |kr|	t|d }	|r |	t| d |kr |	dt|  }	tjj|	}	Y nX | }|	|j_
|| qW |d  }t|jdst||j_| d jtjjjkr| }
n~t| d tjjjstjjj| d _| d   g }
xF|D ]>}|jj
ddd	 }| d |}| d |j_|
| qW |
|fS )
zjCreate and return lists of Java stub header files that will
    be created from a set of class files.
    JAVACLASSSUFFIXz.classZJAVACLASSDIRr   .Njava_classdir_z.h)get
IndexError
attributesr   AttributeErrorZDirZrdirstrossepZjava_classnamelenSConsToolZjavac	classnameZrfileappendhasattr	__class__ZNodeZFSZFile
isinstanceZ_morphreplacejava_lookupdir)targetsourceenvZclass_suffixZclassdirsZc_Zslistsrcr   Ztlistfnamet r   /lib/python3.7/site-packages/SCons/Tool/javah.pyemit_java_headers,   sX    




r!   c          
   C   s^   y| d }W n t ttfk
r*   | }Y nX ydt|jj S  t k
rX   dt| S X d S )Nr   z-d z-o )r
   r   	TypeErrorr   r	   r   )r   r   r   for_signaturer   r   r   r    JavaHOutFlagGeneratorf   s    
r$   c             C   s.   d}d| kr&| d r&t j|| d }d| S )Nz"${SOURCE.attributes.java_classdir}ZJAVACLASSPATHz-classpath %s)r   UtilZ
AppendPath)r   r   r   r#   pathr   r   r    getJavaHClassPathp   s    r'   c             C   s   t j| }t|_| d dkrTtd}t jj| d|d}|rTtj	|}| 
d| | jdt jdddd	 t| d
< t| d< d| d< dS )zDAdd Builders and construction variables for javah to an Environment.ZPLATFORMZwin32javah)Zdefault_pathsPATH z.classz.java)ZJAVAHZ
JAVAHFLAGSr   Z
JAVASUFFIXZ_JAVAHOUTFLAGZ_JAVAHCLASSPATHzW$JAVAH $JAVAHFLAGS $_JAVAHOUTFLAG $_JAVAHCLASSPATH ${SOURCES.attributes.java_classname}ZJAVAHCOMN)r   r   ZCreateJavaHBuilderr!   Zemitterr   Zfind_program_pathr   r&   dirnameZAppendENVPathZ
SetDefaultr%   ZCLVarr$   r'   )r   Z
java_javahpathsr(   Zjavah_bin_dirr   r   r    generatev   s     
r-   c             C   s
   |  dS )Nr(   )ZDetect)r   r   r   r    exists   s    r.   )__doc__os.pathr   ZSCons.Actionr   ZSCons.BuilderZSCons.Node.FSZSCons.Tool.javacZ
SCons.UtilZSCons.Tool.JavaCommonr   r!   r$   r'   r-   r.   r   r   r   r    <module>   s   :
