
Y/              
   @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d d l m Z m Z e j   Z e j	 d d d d g  d d	 d
 d e j	 d d d e j	 d d d d d d
 d Gd d   d e j
  Z Gd d   d  Z d d   Z e d k re  j e e  j d d    n  d S)    N   )coredatamesonlibz-Dactionappenddefaultdestsetshelpz!Set an option to the given value.	directorynargs*z--clearcache
store_trueFz,Clear cached state (e.g. found dependencies)c               @   s   e  Z d  Z d S)ConfExceptionN)__name__
__module____qualname__ r   r   L/mnt/raid6/a/bak/reczko/tools/protein/utils/meson-0.42.1/mesonbuild/mconf.pyr      s   r   c               @   sX   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d S)Confc             C   s  | |  _  t j j | d  |  _ t j j | d  |  _ t j j |  j  se t j j |  j  rx t d |   n  t |  j d   } t	 j
 |  |  _ Wd  QXt |  j d   } t	 j
 |  |  _ Wd  QX|  j j t j k r	t d t j |  j j f   n  d  S)Nzmeson-private/coredata.datzmeson-private/build.datz9Directory %s does not seem to be a Meson build directory.rbzVersion mismatch (%s vs %s))	build_dirospathjoincoredata_fileZ
build_fileisfiler   openpickleloadr   buildversion)selfr   fr   r   r   __init__    s    	,zConf.__init__c             C   s   i  |  j  _ d  S)N)r   deps)r"   r   r   r   clear_cache.   s    zConf.clear_cachec          
   C   s2   t  |  j d   } t j |  j |  Wd  QXd  S)Nwb)r   r   r   dumpr   )r"   r#   r   r   r   save1   s    z	Conf.savec          
   C   s  | s
 d  Si d d 6d d 6d d 6d d 6} t  | d  } } t  | d  } } t  | d  } } d	 }	 xa| D]Y}
 |
 d } |
 d } t |
 d t  r |
 d n t |
 d  j   } d
 } t |
 d t  r&|
 d rfd d   |
 d D |
 d <d d j t t |
 d   } qfn@ |
 d rft |
 d t  rM|
 d n t |
 d  j   } n  t | t  |   } t | t  |   } t | t  |   } t |	 t  |   }	 | |
 d <| |
 d <qu Wd | | } d | | } |	 rt  | d  } t |	 |  }	 d |	 | } t d | d | | d | | d | | d f  t d d | | d | | d | | d | f  nR t d | d | | d | | d f  t d d | | d | | d | f  x | D] } | d } | d } | d } | d } d | t  |  } d | t  |  } |	 rud |	 t  |  } d | | | | | | | f } n d | | | | | f } t |  qWd  S)NZOptionnameZDescriptiondescrzCurrent ValuevaluezPossible Valueschoicesr    c             S   s7   g  |  ]- } t  | t  r! | n t |  j    q Sr   )
isinstancestrlower).0sr   r   r   
<listcomp>J   s   	 z&Conf.print_aligned.<locals>.<listcomp>z[%s]z,  z  %s%s %s%s %s%s %s-z  %s%s %s%s %s)	lenr/   r0   r1   listr   mapmaxprint)r"   arrZtitlesZlen_nameZlongest_nameZ	len_descrZlongest_descrZ	len_valueZlongest_valueZlongest_choicesxr*   r+   r,   r-   ZnamepadZvaluepadZlen_choicesZ	choicepadiZ
choicespadr#   r   r   r   print_aligned9   s\    "

3
&
6
36))



"zConf.print_alignedc             C   s  x| D] } d | k r, t  d |   n  | j d d  \ } } t j |  ri |  j j | |  q | |  j j k r |  j j | } | j |  q | |  j j k r |  j j | } | j |  q | |  j j k r |  j j | } | j |  q | |  j j	 k r1|  j j	 | } | j |  q | j
 d  r| d  d  } | |  j j k rut  d |   n  | j   } | |  j j | <q | j
 d  r| d  d  } | |  j j k rt  d	 |   n  | j   } | |  j j | <q t  d
 |   q Wd  S)N=zValue "%s" not of type "a=b".r   
_link_args
   z Unknown language %s in linkargs._args   z#Unknown language %s in compile argszUnknown option %s.i)r   splitr   is_builtin_optionset_builtin_optionbackend_options	set_valueuser_optionscompiler_optionsbase_optionsendswithexternal_link_argsexternal_args)r"   optionsokvZtgtlangnewvaluer   r   r   set_optionsv   s>    zConf.set_optionsc             C   sY  t  d  t  d |  j j j  t  d |  j j j  t  d  t  d  g  } xg d d d d	 d
 d g D]M } | j i | d 6t j |  d 6|  j j |  d 6t j	 |  d 6 qi W|  j
 |  t  d  t |  j j j    } | s t  d  nc g  } xM | D]E } |  j j | } | j i | d 6| j d 6| j d 6d d 6 q	W|  j
 |  t  d  t  d  t |  j j j    } | st  d  nc g  } xM | D]E } |  j j | } | j i | d 6| j d 6| j d 6d d 6 qW|  j
 |  t  d  t  d  x; |  j j j   D]' \ }	 }
 t  d |	 d t |
   q(Wt  d  t  d  x; |  j j j   D]' \ }	 }
 t  d |	 d t |
   qzWt  d  t  d  t |  j j j    } | st  d  nc g  } xM | D]E } |  j j | } | j i | d 6| j d 6| j d 6d d 6 qW|  j
 |  t  d  t  d  g  } x| d d d d d d  d! d" d# d$ d% d& d' g D]M } | j i | d 6t j |  d 6|  j j |  d 6t j	 |  d 6 qW|  j
 |  t  d  t  d(  |  j j st  d)  n |  j j } t | j    } | j   g  } xx | D]p } | | } | j d  k sx| j rd } n t | j  } | j i | d 6| j d 6| j d 6| d 6 qOW|  j
 |  t  d  t  d*  g  } x[ d+ d, g D]M } | j i | d 6t j |  d 6|  j j |  d 6t j	 |  d 6 qW|  j
 |  d  S)-NzCore properties:z  Source dirz  Build dir r.   zCore options:	buildtypewarning_levelwerrorstripunitydefault_libraryr*   r+   r,   r-   z  No backend options
zBase options:z  No base options
zCompiler arguments:z  rC   zLinker args:rA   zCompiler options:z  No compiler options
zDirectories:prefixlibdir
libexecdirbindirsbindir
includedirdatadirmandirinfodir	localedir
sysconfdirlocalstatedirsharedstatedirzProject options:z(  This project does not have any optionszTesting options:stdsplit	errorlogs)r;   r    environment
source_dirr   r   r   get_builtin_option_descriptionget_builtin_optionget_builtin_option_choicesr?   sortedrI   keysdescriptionr,   rM   rP   itemsr0   rO   rL   rK   r8   sortr-   )r"   ZcarrkeyZbekeysZbearrrS   rR   ZokeysZcoarrrU   argsZparrrQ   rs   Zoptarroptr-   Ztarrr   r   r   
print_conf   s    



3

3





3





	



zConf.print_confN)	r   r   r   r$   r&   r)   r?   rW   rz   r   r   r   r   r      s   =%r   c             C   sQ  t  j |   }  |  s' t j   g }  n  t j |   } t | j  d k rk t d |  d  t d  d S| j s t j   } n | j d } y} t	 |  } d } t | j
  d k r | j | j
  d } n& | j r | j   d } n
 | j   | r| j   n  Wn= t k
 rL} z t d  t |  d SWYd  d  } ~ Xn Xd S)Nr   z%s <build directory>r   zFIf you omit the build directory, the current directory is substituted.FTz)Meson configurator encountered an error:
)r   expand_argumentsr   getcwdparser
parse_argsr7   r   r;   r   r	   rW   
clearcacher&   rz   r)   r   )rx   rQ   builddircr)   er   r   r   run  s8    
			
	


r   __main__)sysr   r   argparser.   r   r   ArgumentParserr}   add_argumentMesonExceptionr   r   r   r   exitargvr   r   r   r   <module>   s    