§
    ‹ã÷cD  ã                  ó$  — d dl mZ 	 d dlmZ d dlm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lmZ d dlmZ d dlmZ d d	lmZ d dlZej        rd dlZ	 d d
lmZ h d£Zh d£ez  Zh d£ZdZdZ G d„ de¦  «        ZdZ d!d„Z!d"d#d„Z"d$d„Z#d%d „Z$dS )&é    )Úannotations©ÚPath)ÚEnumN)Úglob)Úmesonlib)ÚFORBIDDEN_TARGET_NAMES)Údetect_ninja)Úsameple_generator)Úcreate_meson_build>   ú.Fú.fú.F90ú.f90ú.for>   ú.cú.dú.mú.ccú.csú.cuú.mmú.rsú.cppú.javaú.vala>   ÚcÚdÚcsÚcppÚcudaÚjavaÚobjcÚrustÚvalaÚobjcppÚfortranÚ
executablez0.1c                  ó   — e Zd ZdZdZdS )ÚDEFAULT_TYPESr(   ÚlibraryN)Ú__name__Ú
__module__Ú__qualname__ÚEXEÚLIB© ó    ú2/usr/lib/python3/dist-packages/mesonbuild/minit.pyr*   r*   .   s   € € € € € Ø
€CØ
€C€C€Cr2   r*   zpSample project created. To build it run the
following commands:

meson setup builddir
meson compile -C builddir
Úoptionsú'argparse.Namespace'ÚreturnÚNonec                ó*  — t          | ¦  «        }| j        t          d         j        k    r|                     ¦   «          n?| j        t          d         j        k    r|                     ¦   «          nt          d¦  «        ‚t          t          ¦  «         dS )z“
    Based on what arguments are passed we check for a match in language
    then check for project type and create new Meson samples project.
    r/   r0   zUnreachable codeN)	r   Útyper*   ÚvalueÚcreate_executableÚcreate_libraryÚRuntimeErrorÚprintÚINFO_MESSAGE)r4   Ú
sample_gens     r3   Úcreate_samplerA   :   sˆ   € õ
 # 7Ñ+Ô+€JØ„|•} UÔ+Ô1Ò1Ð1Ø×$Ò$Ñ&Ô&Ð&Ð&Ø	Œ� uÔ-Ô3Ò	3Ð	3Ø×!Ò!Ñ#Ô#Ð#Ð#åÐ-Ñ.Ô.Ð.Ý	�,ÑÔÐÐÐr2   FÚsampleÚboolc                ó\  — | j         svt          ¦   «                              ¦   «         j        | _         t	          j        d| j         ¦  «        s|rt          d| j         › d�¦  «        ‚t          d| j         › d�¦  «         | j        s$| j         | _        t          d| j        › d�¦  «         | j        t          v rt          j        d| j        ›d�¦  «        ‚|rd	S | j        s™g }d
„ t          ¦   «                              ¦   «         D ¦   «         D ]%}|j        t          v r|                     |¦  «         Œ&|st          d¦  «        ‚|| _        t          dd                     d„ |D ¦   «         ¦  «        z   ¦  «         d„ | j        D ¦   «         | _        | j        �s| j        D ]ß}|j        dk    r	d| _         nÊ|j        dv r	d| _         n¸|j        dk    r	d| _         n¤|j        dk    r	d| _         n�|j        dk    r	d| _         n||j        t&          v r	d| _         ne|j        dk    r	d| _         nQ|j        dk    r	d| _         n=|j        dk    r	d | _         n)|j        d!k    r	d"| _         n|j        d#k    r	d$| _         nŒà| j        st          d%¦  «        ‚t          d&| j        z   ¦  «         d	S d	S )'z`
    Here we autodetect options for args not passed in so don't have to
    think about it.
    z[a-zA-Z_][a-zA-Z0-9]*zName of current directory "zM" is not usable as a sample project name.
Specify a project name with --name.zUsing "z." (name of current directory) as project name.z0" (project name) as name of executable to build.zExecutable name zI is reserved for Meson internal use. Refusing to init an invalid project.Nc              3  óB   K  — | ]}|                      ¦   «         ¯|V — Œd S ©N)Úis_file©Ú.0Úfs     r3   ú	<genexpr>z%autodetect_options.<locals>.<genexpr>^   s/   è è € Ð=Ð=˜°·²±´Ð=�!Ð=Ð=Ð=Ð=Ð=Ð=r2   zdNo recognizable source files found.
Run meson init in an empty directory to create a sample project.zDetected source files: ú c              3  ó4   K  — | ]}t          |¦  «        V — Œd S rF   )Ústr)rI   Úss     r3   rK   z%autodetect_options.<locals>.<genexpr>e   s(   è è € Ð2LÐ2L¸aµ3°q±6´6Ð2LÐ2LÐ2LÐ2LÐ2LÐ2Lr2   c                ó,   — g | ]}t          |¦  «        ‘ŒS r1   r   rH   s     r3   ú
<listcomp>z&autodetect_options.<locals>.<listcomp>f   s   € Ð:Ð:Ð: A�˜Q™œÐ:Ð:Ð:r2   r   r   >   r   r   r    r   r   r   r!   r   r   r'   r   r$   r   r#   r   r&   r   r"   r   r%   z5Can't autodetect language, please specify it with -l.zDetected language: )Únamer   ÚresolveÚstemÚreÚmatchÚ
SystemExitr>   r(   r	   r   ÚMesonExceptionÚsrcfilesÚiterdirÚsuffixÚLANG_SUFFIXESÚappendÚjoinÚlanguageÚFORTRAN_SUFFIXES)r4   rB   rY   rJ   s       r3   Úautodetect_optionsra   H   sn  € ð
 Œ<ð VÝ‘v”v—~’~Ñ'Ô'Ô,ˆŒÝŒxÐ/°´Ñ>Ô>ð 	DÀ6ð 	DÝð C¸7¼<ð Cð Cð Cñ Dô Dð DåÐT˜œÐTÐTÐTÑUÔUÐUØÔð ^Ø$œ\ˆÔÝÐ\˜Ô*Ð\Ð\Ð\Ñ]Ô]Ð]ØÔÕ3Ð3Ð3ÝÔ%ð 'M¸Ô9Kð 'Mð 'Mð 'Mñ Nô Nð 	Nàð àˆØÔð 	NØˆØ=Ð=�T™VœVŸ^š^Ñ-Ô-Ð=Ñ=Ô=ð 	#ð 	#ˆAØŒx�=Ð(Ð(Ø—’ Ñ"Ô"Ð"øØð 	aÝð `ñ aô að aà#ˆÔÝÐ'¨#¯(ª(Ð2LÐ2LÀ8Ð2LÑ2LÔ2LÑ*LÔ*LÑLÑMÔMÐMØ:Ð:¨Ô)9Ð:Ñ:Ô:€GÔØÔñ %8ØÔ!ð !	ð !	ˆAØŒx˜4ÒÐØ#&�Ô Ø�ØŒx˜?Ð*Ð*Ø#(�Ô Ø�ØŒx˜5Ò Ð Ø#'�Ô Ø�ØŒx˜5Ò Ð Ø#)�Ô Ø�ØŒx˜4ÒÐØ#&�Ô Ø�ØŒxÕ+Ð+Ð+Ø#,�Ô Ø�ØŒx˜5Ò Ð Ø#)�Ô Ø�ØŒx˜4ÒÐØ#)�Ô Ø�ØŒx˜5Ò Ð Ø#+�Ô Ø�ØŒx˜7Ò"Ð"Ø#)�Ô Ø�ØŒx˜7Ò"Ð"Ø#)�Ô Ø�ð #ð Ôð 	VÝÐTÑUÔUÐUÝÐ# gÔ&6Ñ6Ñ7Ô7Ð7Ð7Ð7ðK%8ð %8r2   Úparserú'argparse.ArgumentParser'c                ó�  — |                       dddd¬¦  «         |                       ddt          j        d¬	¦  «         |                       d
dd¬¦  «         |                       ddd¬¦  «         |                       ddd¬¦  «         |                       ddt          t          ¦  «        d¬¦  «         |                       dddd¬¦  «         |                       ddd¬ ¦  «         |                       d!d"dd#¬¦  «         |                       d$t
          d%d&t
          › d'�¬(¦  «         |                       d)t          d*t          › �¬ ¦  «         d+S ),z\
    Here we add args for that the user can passed when making a new
    Meson project.
    rY   Ú
sourcefileÚ*z@source files. default: all recognized files in current directory)ÚmetavarÚnargsÚhelpú-CÚwdz#directory to cd into before running)ÚdestÚactionri   z-nz--namez0project name. default: name of current directory)ri   z-ez--executablez&executable name. default: project namez-dz--depszdependencies, comma-separatedz-lz
--languagez=project language. default: autodetected based on source files)Úchoicesri   z-bz--buildÚ
store_truezbuild after generation)rm   ri   z
--builddirÚbuildzdirectory for build)Údefaultri   z-fz--forcez2force overwrite of existing files and directories.z--type)r(   r+   zproject type. default: z based project)rq   rn   ri   z	--versionzproject version. default: N)Úadd_argumentr   ÚRealPathActionÚsortedÚLANG_SUPPORTEDÚDEFAULT_PROJECTÚDEFAULT_VERSION)rb   s    r3   Úadd_argumentsrx   Ž   s­  € ð
 ×Ò˜
¨LÀð  KMÐñ  Nô  Nð  NØ
×Ò˜ 4µÔ0GØBð ñ Dô Dð Dà
×Ò˜˜hÐ-_ÐÑ`Ô`Ð`Ø
×Ò˜˜nÐ3[ÐÑ\Ô\Ð\Ø
×Ò˜˜hÐ-LÐÑMÔMÐMØ
×Ò˜˜lµF½>Ñ4JÔ4Jð  RQÐñ  Rô  Rð  RØ
×Ò˜˜i°ÐC[ÐÑ\Ô\Ð\Ø
×Ò˜¨gÐ<QÐÑRÔRÐRØ
×Ò˜˜i°ÐCwÐÑxÔxÐxØ
×Ò˜­/ÐC\ð  d]õ  ~Mð  d]ð  d]ð  d]Ðñ  ^ô  ^ð  ^Ø
×Ò˜­_ÐCqÕ`oÐCqÐCqÐÑrÔrÐrÐrÐrr2   Úintc                ó¶  — t          | j        ¦  «                             ¦   «         st          j        d¦  «         t          j        | j        ¦  «         t          d¦  «        s>t          | d¬¦  «         | j	        st          d¦  «         d| _	        t          | ¦  «         nUt          | ¦  «         t          d¦  «                             ¦   «         r| j        st          d¦  «        ‚t          | ¦  «         | j        rÜt          | j        ¦  «                             ¦   «         r/| j        r(t          d	¦  «         t'          j        | j        ¦  «         t          d
¦  «         t+          j        ¦   «         | j        gz   }t/          j        |¦  «        }|j        rt          ‚t5          ¦   «         d| j        gz   }t/          j        |¦  «        }|j        rt          ‚dS )z8
    Here we generate the new Meson sample project.
    zSProject source root directory not found. Run this command in source directory root.rf   T)rB   z.Defaulting to generating a C language project.r   zmeson.buildz5meson.build already exists. Use --force to overwrite.z,Build directory already exists, deleting it.zBuilding...rj   r   )r   rk   ÚexistsÚsysÚexitÚosÚchdirr   ra   r_   r>   rA   rG   ÚforcerW   r   rp   ÚbuilddirÚis_dirÚshutilÚrmtreer   Úget_meson_commandÚ
subprocessÚrunÚ
returncoder
   )r4   ÚcmdÚrets      r3   r‡   r‡       sÀ  € õ �”
ÑÔ×"Ò"Ñ$Ô$ð hÝŒÐfÑgÔgÐgÝ„HˆWŒZÑÔÐå�‰9Œ9ð 
$Ý˜7¨4Ð0Ñ0Ô0Ð0ØÔð 	#ÝÐBÑCÔCÐCØ"ˆGÔÝ�gÑÔÐÐå˜7Ñ#Ô#Ð#Ý�ÑÔ×&Ò&Ñ(Ô(ð 	V°´ð 	VÝÐTÑUÔUÐUÝ˜7Ñ#Ô#Ð#Ø„}ð Ý�Ô Ñ!Ô!×(Ò(Ñ*Ô*ð 	,¨w¬}ð 	,ÝÐ@ÑAÔAÐAÝŒM˜'Ô*Ñ+Ô+Ð+ÝˆmÑÔÐÝÔ(Ñ*Ô*¨gÔ.>Ð-?Ñ?ˆÝŒn˜SÑ!Ô!ˆØŒ>ð 	ÝÐÝ‰nŒn  gÔ&6Ð7Ñ7ˆÝŒn˜SÑ!Ô!ˆØŒ>ð 	ÝÐØˆ1r2   )r4   r5   r6   r7   )F)r4   r5   rB   rC   r6   r7   )rb   rc   r6   r7   )r4   r5   r6   ry   )%Ú
__future__r   Úpathlibr   Úenumr   r†   rƒ   r|   r~   rU   r   Ú
mesonbuildr   Úmesonbuild.coredatar	   Úmesonbuild.environmentr
   Ú"mesonbuild.templates.samplefactoryr   ÚtypingÚTÚTYPE_CHECKINGÚargparseÚ#mesonbuild.templates.mesontemplatesr   r`   r\   ru   rv   rw   r*   r?   rA   ra   rx   r‡   r1   r2   r3   ú<module>r—      sÏ  ðð #Ð "Ð "Ð "Ð "Ð "à 0à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 
€
€
€
Ø 	€	€	€	Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø /Ð /Ð /Ð /Ð /Ð /Ø @Ð @Ð @Ð @Ð @Ð @Ø Ð Ð Ð à„?ð Ø€O€O€Oðð CÐ BÐ BÐ BÐ BÐ Bà7Ð7Ð7Ð Ø_Ð_Ð_ÐbrÑr€ØeÐeÐe€à€Ø€ðð ð ð ð �Dñ ô ð ð€ðð ð ð ðD8ð D8ð D8ð D8ð D8ðLsð sð sð sð$ ð  ð  ð  ð  ð  r2   