
Y1#                 @   s   d  d l  Z  d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d	 l m Z Gd
 d   d e  Z d d   Z	 d S)    N   )build)mesonlib)mlog   )ModuleReturnValue)ExtensionModule)permittedKwargsc               @   sp   e  Z d  Z d d   Z d d   Z d d   Z e d d d	 d
 d d d d d d d d h  d d    Z d S)PkgConfigModulec             C   s~   | j  s | j S| j d k rB | j j d  rB | j d d   S| j rR | j St j | j | j d | j |   | j S)N lib   name_prefix)name_prefix_setnameprefix
startswithimport_filenamer   warningformat)selflmsgpcfile r   X/mnt/raid6/a/bak/reczko/tools/protein/utils/meson-0.42.1/mesonbuild/modules/pkgconfig.py
_get_lname   s    	!	%zPkgConfigModule._get_lnamec                s!  | j  j   } | j  j } t j j |    } t | d  } | j d | j d   | j d t j j d | j d    | j d t j j d | j d    x+ | D]# \ } } | j d	 | | f  q W| j d
  | j d |  t	 |  d k r | j d |  n  t	 |  d k rF| j d |  n  | j d |  t	 |	  d k r| j d j
 d j |	    n  t	 |
  d k r| j d j
 d j |
    n  t	 |  d k r| j d j
 d j |    n     f d d   } t	 |  d k rB| j d j
 d j | |     n  t	 |  d k r|| j d j
 d j | |     n  | j d  xS | D]K } | j d  | d k r| j d  q| j t j j d |   qWx( | D]  } | j d  | j |  qW| j d
  Wd  QXd  S)Nwz
prefix=%s
r   z
libdir=%s
z	${prefix}libdirzincludedir=%s

includedirz%s=%s

z	Name: %s
r   zDescription: %s
zURL: %s
zVersion: %s
zRequires: {}
 zRequires.private: {}
zConflicts: {}
c             3   s   d } x |  D] } t  | t  r* | Vq | j   d } | rL d | Vn d V j | |    } | j r t j | j | j d |     n  d | Vq Wd  S)NzxLibrary target {0!r} has {1!r} set. Compilers may not find it from its '-l{2}' linker flag in the {3!r} pkg-config file.r   z-L${prefix}/%s z-L${libdir}name_suffixz-l%s)	
isinstancestrget_custom_install_dirr   name_suffix_setr   r   r   r   )libsr   r   install_dirlname)r   r   r   r   generate_libs_flagsJ   s    	%zDPkgConfigModule.generate_pkgconfig_file.<locals>.generate_libs_flagsz	Libs: {}
zLibs.private: {}
zCflags:.z-I${includedir})environmentget_coredatascratch_dirospathjoinopenwriteget_builtin_optionlenr   )r   state	librariessubdirsr   descriptionurlversionr   pub_reqs	priv_reqs	conflicts	priv_libsextra_cflags	variablescoredataoutdirfnameofilekvr*   hfr   )r   r   r   generate_pkgconfig_file-   sL    ))""(( z'PkgConfigModule.generate_pkgconfig_filec             C   s   t  | t  s | g } n  g  } xf | D]^ } t | d  rI | j } n  t  | t j t j t f  sy t j	 d   n  | j
 |  q( W| S)Nheld_objectz3Library argument not a library object nor a string.)r#   listhasattrrK   r   SharedLibraryStaticLibraryr$   r   MesonExceptionappend)r   r'   Zprocessed_libsr   r   r   r   process_libsn   s    zPkgConfigModule.process_libsr7   r;   r   r9   filebaser8   requiresrequires_privatelibraries_privater(   r@   rA   c             C   s  t  |  d k r$ t j d   n  |  j | j d g    } |  j | j d g    } t j | j d d g   } | j d d   } t | t  s t j d   n  | j d	 d   } t | t  s t j d
   n  | j d |  }	 t |	 t  st j d   n  | j d d   }
 t |
 t  sDt j d   n  | j d d  } t | t  swt j d   n  t j | j d g    } t j | j d g    } t j | j d g    } t j | j d g    } d d   } | t j | j d g     } |	 d } | j d d   } | d  k r_t j	 j
 | j j j d  d  } n  t | t  st j d   n  |  j | | | | |
 | | | | | | | | |  t j t j d | j j   |  |  } t | | g  S)Nr   z,Pkgconfig_gen takes no positional arguments.r7   rV   r8   r+   r;   zVersion must be specified.r   zName not specified.rS   zFilebase must be a string.r9   zDescription is not a string.r:   r   zURL is not a string.rT   rU   r>   r@   c             S   s!  d d d g } g  } x|  D] } | j  d d  } t |  d k  ra t j d j |    n  | d j   | d j   } } | s | r t j d j |    n  t d	 d
   | D  r t j d j |    n  | | k rt j d j |    n  | j | | f  q W| S)Nr   r   r   =r   r   z?Invalid variable "{}". Variables must be in 'name=value' formatr   c             s   s   |  ] } | j    Vq d  S)N)isspace).0cr   r   r   	<genexpr>   s    zHPkgConfigModule.generate.<locals>.parse_variable_list.<locals>.<genexpr>z%Invalid whitespace in assignment "{}"zVariable "{}" is reserved)splitr5   r   rP   r   stripanyrQ   )Z
stringlistZreservedrA   varr   r   valuer   r   r   parse_variable_list   s    !z5PkgConfigModule.generate.<locals>.parse_variable_listrA   z.pcr(   r   	pkgconfigzInstall_dir must be a string.T)r5   r   rP   rR   getstringlistifyr#   r$   r/   r0   r1   r,   rB   r4   rJ   r   DataFileget_scratch_dirr   )r   r6   argskwargsr'   r?   r8   r;   r   rS   r9   r:   r<   r=   r>   r@   ra   rA   r   Zpkgrootresr   r   r   generatez   sJ    !
'*zPkgConfigModule.generateN)__name__
__module____qualname__r   rJ   rR   r	   rk   r   r   r   r   r
      s   Ar
   c               C   s   t    S)N)r
   r   r   r   r   
initialize   s    ro   )
r/   r   r   r   r   r   r   r	   r
   ro   r   r   r   r   <module>   s   