a
    =dbO                     @   s   d Z ddlZddlmZmZmZmZ ddlmZ ddl	m
Z
 ddlmZmZmZ ddlmZ ejjdk Ze
 Z
d	d
d
ddddZedZdd Zdd Zd#ddZdd Zdd Zdd Zdd Zdd Zdd  Zd!d" ZdS )$zR
This module determine and expose various information about the java
environment.
    N)joinexistsdirnamerealpath)getenv)machine)Popencheck_outputPIPE)split   i386Zamd64ZarmZsparcv9)Zi686Zx86_64ZAMD64Zarmv7lZsun4uZsun4v	JAVA_HOMEc                 C   sj   | dkrdnd}|D ]P}t ||t |d|fD ]4}t|r.| dkrVtsVd|     S |    S q.q|S )z%Find javac in all possible locations.win32	javac.exejavacbinz"%s")r   r   PY2)platformZpossible_homesnamehomer    r   5/home/tom/ab/renpy-build/tmp/py3/pyjnius/jnius/env.py
find_javac!   s    r   c                 C   s   | dkr@t  }d|v r"t|dgS tr*t}d|d|gS nNt| }| dkr^t|dd}n"| dkrtt|dd	}nt|dd
}t|d|gS d S )Ndarwin1.6zCSystem/Library/Frameworks/JavaVM.framework/Versions/Current/Headersz{0}/includez{0}/include/darwinr   Zincludesunos5Zsolarislinux)get_osx_frameworkr   r   formatget_jdk_home)r   	frameworkjdk_homeZincl_dirr   r   r   get_include_dirs-   s*    r#   c                 C   sV   | dkr>t | }t}t|tr(|d}t|dt|ddgS | dkrRd|gS g S )Nr   utf-8libr   Zserverandroidzlibs/{})get_jre_homer   
isinstancebytesdecoder   r   )r   Zarchjre_homer"   r   r   r   get_library_dirsO   s    


r,   c                 C   sn   d }t r ttt dr tt d}| dkrN|sNtttdd dd}| dkrjt	|t
rj|d}|S )Njrer   z
which javar$   zbin/java )r   r   r   r   r	   r   r*   stripreplacer(   r)   )r   r+   r   r   r   r'   `   s"    


r'   c                 C   s   t d}|s| dkrbt d}t| |s0td|dd  dkrL|d d }tt|ddr|}n"ttd	d
gd 	dd}|rt|std|S )NZJDK_HOMEr   r   zUnable to find JAVA_HOMEr   r   whichr   r$   z	bin/javacr.   zUnable to determine JDK_HOME)
r   print	Exceptionr   r   r   r	   r*   r/   r0   )r   r"   ZTMP_JDK_HOMEr   r   r   r    s   s.    r    c                  C   s,   t dtdd d } ts$| d} |  S )Nz/usr/libexec/java_homeT)stdoutshellr   r$   )r   r
   Zcommunicater   r*   r/   )r!   r   r   r   r      s    
r   c                 C   s:   | dkr&t rt S t }|s"td|S t| t| fS d S )Nr   z!You must install Java for Mac OSX)r   r   r5   r    r'   )r   Z	FRAMEWORKr   r   r   get_possible_homes   s    r8   c                   C   s8   z
t t W S  ty2   tdt  td Y dS 0 d S )Nz:WARNING: Not able to assign machine() = %s to a cpu value!z$         Using cpu = 'i386' instead!r   )MACHINE2CPUr   KeyErrorr4   r   r   r   r   get_cpu   s    
r;   c                 C   s"   | dkrddgS | dkrdgS d S )Nr&   Zsdllogr   Zjvmr   )r   r   r   r   get_libraries   s    r=   c                 C   s   t  }| dkr^t }d|v r dS d}tr,t}t||}t|sLd}t||}t|sXdS |S nX| dkrpd|S | d	vrtd
 d|}tt| 	d}t||}t|sd}|S d S )Nr   r   z../Libraries/libjvm.dylibzjre/lib/jli/libjli.dylibzlib/jli/libjli.dylibzlib/libjli.dylibr   zjre/lib/{}/server/libjvm.so)r   Zlinux2z(warning: unknown platform assuming linuxr-   zlib/server/libjvm.so)
r;   r   r   r   r   r   r4   r   r'   r/   )r   Zcpur!   Zlib_locationZfull_lib_locationr+   r   r   r   get_jnius_lib_location   s2    




r>   )N) __doc__sysZos.pathr   r   r   r   osr   r   r   
subprocessr   r	   r
   Zshlexr   version_infomajorr   r9   r   r   r#   r,   r'   r    r   r8   r;   r=   r>   r   r   r   r   <module>   s4   	"
	