§
    gògO,  ã                   ó
  — 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mZmZm	Z	m
Z
  ej        ¦   «         Z	 g Z	 g Z	 ej                             ddej        z  ¦  «        Z	  G d„ dej        ¦  «        Z G d„ d	e	j	        ¦  «        ZdS )
z“
Support for waf command-line options

Provides default and command-line options, as well the command
that reads the ``options`` wscript function.
é    N)ÚLogsÚUtilsÚContextÚErrorsÚWAFLOCKz.lock-waf_%s_buildc                   ó.   — e Zd ZdZdd„Zd„ Zd	d„Zd„ ZdS )
Ú
opt_parserz 
	Command-line options parser.
	Fc           
      óØ   — t           j                             | dddt          j        ›dt          j        ›d�¬¦  «         t          j        ¦   «         | j        _	        || _
        || _        d S )NÚresolveFzwaf z (ú))Úconflict_handlerÚadd_help_optionÚversion)ÚoptparseÚOptionParserÚ__init__r   Ú
WAFVERSIONÚWAFREVISIONr   Úget_term_colsÚ	formatterÚwidthÚctxÚallow_unknown)Úselfr   r   s      ú1/git_repos/PolyLV2/poly_mclk_in/waflib/Options.pyr   zopt_parser.__init__-   sq   € Ý
Ô× Ò  ¸	ÐSXÐSXÝ#Ô.Ð.Ð.µÔ0CÐ0CÐ0CÐDð !ñ Fô Fð FåÔ+Ñ-Ô-€$„.ÔØ€$„(Ø$€$ÔÐÐó    c                 ó2  — |r”	 t           j                             | |||¦  «         nl# t           j        t           j        f$ rN}| j        r|                     |j        ¦  «         n"|                      t          |¦  «        ¦  «         Y d}~nd}~ww xY w|°’dS dS )zY
		Custom _process_args to allow unknown options according to the allow_unknown status
		N)
r   r   Ú_process_argsÚBadOptionErrorÚAmbiguousOptionErrorr   ÚappendÚopt_strÚerrorÚstr)r   ÚlargsÚrargsÚvaluesÚes        r   r   zopt_parser._process_args4   s¸   € ð 	ð ðÝÔ×'Ò'¨¨U°5¸Ñ@Ô@Ð@Ð@øÝÔ"¥HÔ$AÐ
Bð ð ð ØÔð Ø
‡\‚\�!”)ÑÔÐÐà	‡Z‚Z•�A‘”ÑÔÐøøøøøøøøøð	øøøð 	ð ð ð ð ð s   „"' §BÁABÂBNc                 ó,   — |                       |¦  «        S ©N)Ú
print_help)r   Úfiles     r   Úprint_usagezopt_parser.print_usageA   s   € Ø	�Š˜Ñ	Ô	Ðr   c                 óš  ‡— i }t           j        D ]B}|j        r%|j        dk    s|j                             d¦  «        rŒ/|j        pd}|||j        <   ŒCt           j        r|t           j        j                             ¦   «         D ]X\  }}|dv rŒ
t          |¦  «        t          t           j	        ¦  «        u r&|j        r|                     d¦  «        s
|j        ||<   ŒYdŠ|D ]}t          ‰t          |¦  «        ¦  «        ŠŒ ˆfd„|                     ¦   «         D ¦   «         }|                     ¦   «          d                     |¦  «        }d|z  S )	zE
		Builds the message to print on ``waf --help``

		:rtype: string
		ÚoptionsÚ_Ú )r/   ÚinitÚshutdownr   c                 óL   •— g | ] \  }}d |                      ‰¦  «        ›d|›�‘Œ!S )z  z: )Úljust)Ú.0ÚkÚvÚjusts      €r   ú
<listcomp>z(opt_parser.get_usage.<locals>.<listcomp>_   s4   ø€ ÐHÐHÐH©V¨a°°�q—w’w˜t‘}”}�}�} a aÐ	(ÐHÐHÐHr   ú
zFwaf [commands] [options]

Main commands (example: ./waf build -j4)
%s
)r   ÚclassesÚcmdÚ
startswithÚ__doc__Úg_moduleÚ__dict__ÚitemsÚtypeÚcreate_contextÚmaxÚlenÚsortÚjoin)	r   Úcmds_strÚclsÚsr7   r8   ÚlstÚretr9   s	           @r   Ú	get_usagezopt_parser.get_usageD   sf  ø€ ð €(ÝŒ_ð ð €cØ
Œ'ð �S”W 	Ò)Ð)¨S¬W×-?Ò-?ÀÑ-FÔ-FÐ)Øà
„{Ð�b€1Ø€8ˆCŒGÑÐåÔð ÝÔ!Ô*×0Ò0Ñ2Ô2ð ð �vˆˆ1ØÐ+Ð+Ð+ØåˆA�w„w•$•wÔ-Ñ.Ô.Ð.Ð.Ø	Œ	ð ˜!Ÿ,š, sÑ+Ô+ð Ø”I€hˆq�køà	
€$Øð ð €aÝ
ˆd•C˜‘F”FÑ
Ô
€4€4àHÐHÐHÐH°x·~²~Ñ7GÔ7GÐHÑHÔH€#Ø‡(‚(�*„*€*Ø�	Š	�#‰Œ€#ð
ð 
ñ	

ð 
r   )Fr*   )Ú__name__Ú
__module__Ú__qualname__r?   r   r   r-   rN   © r   r   r	   r	   )   sd   € € € € € ðð ð%ð %ð %ð %ðð ð ðð ð ð ð#
ð #
ð #
ð #
ð #
r   r	   c                   óp   ‡ — e Zd ZdZdZdZˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
dd	„Zdd„Zd„ Zd„ Zdd„Zˆ fd„Zˆ xZS )ÚOptionsContextz¯
	Collects custom options from wscript files and parses the command line.
	Sets the global :py:const:`waflib.Options.commands` and :py:const:`waflib.Options.options` values.
	r/   c           	      ó>  •—  t          t          | ¦  «        j        dki |¤Ž t          | ¦  «        | _        	 i | _        |                      ¦   «         }| j        }t          j	         
                    dd¦  «        rdpd}t          j	         
                    dd¦  «        dk    rd}n&t          j	         
                    dd¦  «        dk    rd	} |d
dd|ddd¬¦  «          |ddd|dd|z  ¬¦  «          |dddddd¬¦  «          |ddd ddd!¬¦  «          |d"d#ddd$¬¦  «          |d%d&dd't          j        ¬¦  «          |d(d)dd't          j        ¬¦  «          |d*d+d,dd'd-¬¦  «         |                      d.¦  «        }|| j        d/<   |                     d0d1ddd2d3¬4¦  «         |                     d5d6ddd7d8¬4¦  «         |                     d9d'dt          j        d:¬4¦  «         |                     d;d'dt          j        d<¬4¦  «         |                     d=d'dt          j        d>¬4¦  «         t          t          j        d?t          j	         
                    d@¦  «        ¦  «        }|sRt#          j        ¦   «         dAk    r9t'          j        ¦   «         }|d                              ¦   «         |dBd …         z   }ndC}|                     dDdE|dF|z  ¬G¦  «         |                     dHdIdI¬J¦  «         |                     dKdLdL¬J¦  «         |                      dM¦  «        }|| j        dN<   |                     dOdPdQdddR¬¦  «         |                     dSdTdddU¬¦  «         |                      dV¦  «        }|| j        dW<   |                     dXdYdddZ¬¦  «         t          j	         
                    d[d¦  «        }|                      d\¦  «        }|| j        d]<   |                     d^d_|z  |d`¬a¦  «         |                     dbdcddded'df¬¦  «         |                     dgdhdid d¬j¦  «         d S )lNÚNOCOLORr1   ÚnoÚautoÚCLICOLORÚ0ÚCLICOLOR_FORCEÚ1Úyesz-cz--colorÚcolorsÚstorez3whether to use colors (yes/no/auto) [default: auto])r]   rW   rX   )ÚdestÚdefaultÚactionÚhelpÚchoicesz-jz--jobsÚjobsÚintzamount of parallel jobs (%r))r`   ra   rC   rc   z-kz--keepÚkeepr   Úcountz+continue despite errors (-kk to try harder))r`   ra   rb   rc   z-vz	--verboseÚverbosez+verbosity level -v -vv or -vvv [default: 0]z--zonesÚzonesz,debugging zones (task_gen, deps, tasks, etc)z	--profileÚprofileÚ
store_truez--pdbÚpdbz-hz--helpÚwhelpzshow this help message and exitzConfiguration optionszconfigure optionsz-oz--outzbuild dir for the projectÚout)rb   ra   rc   r`   z-tz--topzsrc dir for the projectÚtopz--no-lock-in-runÚno_lock_in_runz--no-lock-in-outÚno_lock_in_outz--no-lock-in-topÚno_lock_in_topÚdefault_prefixÚPREFIXÚwin32é   z/usr/local/z--prefixÚprefixz!installation prefix [default: %r])r`   ra   rc   z--bindirÚbindir)r`   rc   z--libdirÚlibdirzBuild and installation optionszbuild and install optionsz-pz
--progressÚprogress_barz!-p: progress bar; -pp: ide outputz	--targetsÚtargetsz'task generators, e.g. "target1,target2"zStep optionszstep optionsz--filesÚfilesz:files to process, by regexp, e.g. "*/main.c,*/test/main.o"ÚDESTDIRz'Installation and uninstallation optionszinstall/uninstall optionsz	--destdirzinstallation root [default: %r]Údestdir)rc   ra   r`   z-fz--forceÚforceFzforce file installationz--distcheck-argsÚARGSzarguments to pass to distcheck)Úmetavarrc   ra   rb   rR   )ÚsuperrT   r   r	   ÚparserÚoption_groupsre   Ú
add_optionÚosÚenvironÚgetr   ÚSUPPRESS_HELPÚadd_option_groupÚgetattrr   r@   r   Úunversioned_sys_platformÚtempfileÚ
gettempdirÚupper)
r   Úkwre   ÚpÚcolorÚgrrt   ÚdÚdefault_destdirÚ	__class__s
            €r   r   zOptionsContext.__init__r   s“  ø€ Ø&…%�˜ÑÔÔ&Ð,Ð,¨Ð,Ð,Ð,å˜4Ñ Ô €$„+Ø9à€$Ôà	�Š‰Œ€$Ø
„o€!Ý
Œ*�.Š.˜ BÑ
'Ô
'Ð
0¨DÐ
:°F€%Ý„Z‡^‚^�J Ñ#Ô# sÒ*Ð*Ø€5€5Ý	„z‡~‚~Ð&¨Ñ+Ô+¨sÒ2Ð2Ø€5Ø€!€Dˆ)˜X°¸gð  MBð  Lað  bñ  bô  bð  bØ€!€Dˆ(˜V°¸EÐHfÐimÑHmÐnÑnÔnÐnØ€!€Dˆ(˜V°¸gÐLyÐzÑzÔzÐzØ€!€Dˆ+˜Y°¸gÐLyÐzÑzÔzÐzØ€!€I˜W°¸gÐLzÐ{Ñ{Ô{Ð{Ø€!€K˜Y°¸lÕQYÔQgÐhÑhÔhÐhØ€!€G˜U°¸lÕQYÔQgÐhÑhÔhÐhØ€!€Dˆ(˜W°¸lÐQrÐsÑsÔsÐsà×ÒÐ4Ñ5Ô5€"Ø,.€$ÔÐ(Ñ)à‡-‚-��g g°rÐ@[Ðbg€-ÑhÔhÐhØ‡-‚-��g g°rÐ@YÐ`e€-ÑfÔfÐfà‡-‚-Ð"¨<ÀÍ(ÔJ`Ðgw€-ÑxÔxÐxØ‡-‚-Ð"¨<ÀÍ(ÔJ`Ðgw€-ÑxÔxÐxØ‡-‚-Ð"¨<ÀÍ(ÔJ`Ðgw€-ÑxÔxÐxå�7Ô+Ð-=½r¼z¿~º~ÈhÑ?WÔ?WÑXÔX€.Ø	ð #ÝÔ$Ñ&Ô&¨'Ò1Ð1ÝÔÑÔ€AØ�q”T—Z’Z‘\”\ A a b b¤EÑ)€N€Nð #€NØ‡-‚-�
 °>ÐHkÐn|ÑH|€-Ñ}Ô}Ð}Ø‡-‚-�
 °€-Ñ9Ô9Ð9Ø‡-‚-�
 °€-Ñ9Ô9Ð9à×ÒÐ=Ñ>Ô>€"Ø46€$ÔÐ0Ñ1Ø‡-‚-��l¨ÀÈ7ÐZ}€-Ñ~Ô~Ð~Ø‡-‚-�¨¸BÀwÐU~€-ÑÔÐà×Ò˜^Ñ,Ô,€"Ø')€$Ô�^Ñ$Ø‡-‚-�	¨¸"ÀWð  TP€-ñ  Qô  Qð  Qå”J—N’N 9¨bÑ1Ô1€/à×ÒÐFÑGÔG€"Ø46€$ÔÐ0Ñ1Ø‡-‚-�Ð"CÀoÑ"UÐ_nÐu~€-ÑÔÐØ‡-‚-��i g°uÀ\ÐXq€-ÑrÔrÐrØ‡-‚-Ð"¨FÐ9YÐcgÐpw€-ÑxÔxÐxÐxÐxr   c                 ó¸  — t          t          j                             dd¦  «        ¦  «        }|dk     �rdt          j        v r.t          t          j                             dd¦  «        ¦  «        }nØt	          t          d¦  «        r_dt          j        v r"t          t          j        d¦  «        ¦  «        }n/dt          j        v r!t          t          j        d¦  «        ¦  «        }|sbt          j        dvrT	 |                      g d	¢d¬
¦  «        }t          j
        d|¦  «        rt          |¦  «        }n# t          j        $ r Y nw xY w|dk     rd}n|dk    rd}|S )a
  
		Finds the optimal amount of cpu cores to use for parallel jobs.
		At runtime the options can be obtained from :py:const:`waflib.Options.options` ::

			from waflib.Options import options
			njobs = options.jobs

		:return: the amount of cpu cores
		:rtype: int
		ÚJOBSr   rw   ÚNUMBER_OF_PROCESSORSÚsysconf_namesÚSC_NPROCESSORS_ONLNÚSC_NPROCESSORS_CONF)ÚntÚjava)Úsysctlz-nzhw.ncpu)Úquietz^[0-9]+$i   )rf   r‡   rˆ   r‰   Úhasattrr›   ÚsysconfÚnameÚcmd_and_logÚreÚmatchr   ÚWafError)r   rh   Útmps      r   re   zOptionsContext.jobs±   s\  € õ �bŒj�nŠn˜V QÑ'Ô'Ñ
(Ô
(€%Ø
ˆQ‚Y�YØ¥¤
Ð*Ð*å•”
—’Ð5°qÑ9Ô9Ñ:Ô:€E€Eõ �r�?Ñ#Ô#ð 5Ø¥Ô!1Ð1Ð1Ý•"”*Ð2Ñ3Ô3Ñ4Ô4€e€eØ
¥2Ô#3Ð
3Ð
3Ý•"”*Ð2Ñ3Ô3Ñ4Ô4€eØð •R”W NÐ2Ð2ðØ×ÒÐ8Ð8Ð8ÀÐÑBÔB€cõ 
Œ�*˜cÑ	"Ô	"ð Ý�3‰xŒx€uøøõ	 ŒOð ð ð Ø
€dðøøøð
 ˆQ‚Y€YØ€5€5Øˆt‚|€|Ø€5Ø	€,s   Ã6D4 Ä4EÅEc                 ó&   —  | j         j        |i |¤ŽS )zÍ
		Wraps ``optparse.add_option``::

			def options(ctx):
				ctx.add_option('-u', '--use', dest='use', default=False,
					action='store_true', help='a boolean option')

		:rtype: optparse option object
		)r„   r†   )r   r7   r‘   s      r   r†   zOptionsContext.add_optionÖ   s   € ð 
 ˆŒÔ	 Ð	) bÐ	)Ð	)Ð)r   c                 ó”   — 	 | j         |d                  }n"# t          $ r  | j        j        |i |¤Ž}Y nw xY w|| j         |d         <   |S )zè
		Wraps ``optparse.add_option_group``::

			def options(ctx):
				gr = ctx.add_option_group('some options')
				gr.add_option('-u', '--use', dest='use', default=False, action='store_true')

		:rtype: optparse option group object
		r   )r…   ÚKeyErrorr„   r‹   )r   r7   r‘   r”   s       r   r‹   zOptionsContext.add_option_groupâ   sh   € ð/ØÔ˜1˜Qœ4Ô €2€2øÝ	ð /ð /ð /Ø$ˆŒÔ$ aÐ.¨2Ð.Ð.€2€2€2ð/øøøà€$Ô�Q�q”TÑØ	€)s   ‚ –5´5c                 ó€   — 	 | j         |         S # t          $ r$ | j        j         D ]}|j        |k    r|c cY S ŒY dS w xY w)a  
		Wraps ``optparse.get_option_group``::

			def options(ctx):
				gr = ctx.get_option_group('configure options')
				gr.add_option('-o', '--out', action='store', default='',
					help='build dir for the project', dest='out')

		:rtype: optparse option group object
		N)r…   r¬   r„   Útitle)r   r"   Úgroups      r   Úget_option_groupzOptionsContext.get_option_groupó   sj   € ðØ
Ô
˜WÔ
%Ð%øÝ	ð ð ð Ø”Ô)ð ð €uØ„{�gÒÐØ€\€\€\€\€\ð à
ˆ$ˆ$ð	øøøs   ‚ �'=¸=¼=Nc                 ó  — |st           j        }t          j                             |¦  «        }t          j                             ||¦  «        }t          j                             |¦  «        }t          j                             |¦  «        }|S r*   )r   Ú
launch_dirr‡   ÚpathÚ
expanduserrH   ÚnormpathÚabspath)r   r³   Úcwdr’   s       r   Úsanitize_pathzOptionsContext.sanitize_path  si   € Ø	ð Ý	Ô	€3Ý„g×Ò˜ÑÔ€!Ý„g‡l‚l�3˜ÑÔ€!Ý„g×Ò�qÑÔ€!Ý„g‡o‚o�aÑÔ€!Ø	
€(r   Fc                 ó–  — || j         _        | j                              |¬¦  «        \  }}g }g }|D ]7}d|v r|                     |¦  «         Œ|dk    r|                     |¦  «         Œ8d                     ¦   «         D ]H}	t          ||	d¦  «        r5|                      t          ||	¦  «        |¦  «        }
t          ||	|
¦  «         ŒI|||fS )z
		Just parse the arguments
		)Úargsú=r/   z$top out destdir prefix bindir libdirN)r„   r   Ú
parse_argsr!   ÚsplitrŒ   r¸   Úsetattr)r   Ú_argsr·   r   r/   Úleftover_argsÚenvvarsÚcommandsÚargr¤   r³   s              r   Úparse_cmd_argszOptionsContext.parse_cmd_args  sî   € ð ,€$„+ÔØ!œ[×3Ò3¸Ð3Ñ?Ô?Ñ€7ˆMØ€'Ø€(Øð ð €cØ	ˆS€j€jØ‡N‚N�3ÑÔÐÐØˆyÒÐØ‡O‚O�CÑÔÐøà4×:Ò:Ñ<Ô<ð !ð !€dåˆg�t˜TÑ"Ô"ð !Ø×Ò�g g¨tÑ4Ô4°cÑ:Ô:€DÝˆG�T˜4Ñ Ô Ð øØ	�(˜GÐ	#Ð#r   c                 ó¢  — t           j                             ¦   «          t          d d …= t          d d …= t           j                             |j        ¦  «         t                               |¦  «         t                               |¦  «         t          D ]<}|                     dd¦  «        \  }}|t          j	        | 
                    ¦   «         <   Œ=d S )Nr»   rw   )r/   rA   ÚclearrÂ   rÁ   ÚupdateÚextendr½   r‡   rˆ   Ústrip)r   Úarg_optionsÚarg_commandsÚarg_envvarsÚvarr¤   Úvalues          r   Úinit_module_varszOptionsContext.init_module_vars$  s²   € Ý	Ô×ÒÑÔÐÝˆqˆqˆq€kÝˆaˆaˆa€jå	Ô×Ò˜+Ô.Ñ/Ô/Ð/Ý
‡/‚/�,ÑÔÐÝ	‡.‚.�ÑÔÐåð $ð $€cØ—9’9˜S !Ñ$Ô$�=€Dˆ%Ø#…2„:ˆd�jŠj‰lŒlÑÐð$ð $r   c                 ó²  — |j         t          _         |j         dk    r|                      d¦  «         ddddœ|j                 }t          j        |¦  «         |j        r=|j                             d¦  «        t          _        t          j         sdt          _         nt          j         dk    rdgt          _        t          j         dk    rdgt          _        d S d S )	Nrw   Úerrchecké   r   )r]   rX   rW   ú,ÚrunnerÚ*)ri   r   Úloadr^   Úenable_colorsrj   r½   )r   r/   rÂ   rÁ   r^   s        r   Ú	init_logszOptionsContext.init_logs1  s¼   € Ø”…$„,Ø„_˜ÒÐØ‡9‚9ˆZÑÔÐà ¨!Ð,Ð,¨W¬^Ô<€&ÝÔ�VÑÔÐà„]ð Ø”×#Ò# CÑ(Ô(…4„:Ý
Œ,ð Ø…D„LøÝ„|�aÒÐØ�
…4„:Ý	„\�AÒÐØ�…4„:€:€:ð Ðr   c                 ó’   — |                       ¦   «         \  }}}|                      |||¦  «         |                      |||¦  «         dS )a  
		Parses arguments from a list which is not necessarily the command-line.
		Initializes the module variables options, commands and envvars
		If help is requested, prints it and exit the application

		:param _args: arguments
		:type _args: list of strings
		N)rÄ   rØ   rÏ   )r   r¿   r/   rÂ   rÁ   s        r   r¼   zOptionsContext.parse_argsB  sP   € ð  $×2Ò2Ñ4Ô4Ñ€'ˆ8�WØ‡.‚.�˜( GÑ,Ô,Ð,Ø×Ò˜ ¨7Ñ3Ô3Ð3Ð3Ð3r   c                 óº   •— t          t          | ¦  «                             ¦   «          |                      ¦   «          t	          j        t          j        ¦  «         dS )z3
		See :py:func:`waflib.Context.Context.execute`
		N)rƒ   rT   Úexecuter¼   r   Úalloc_process_poolr/   re   )r   r—   s    €r   rÛ   zOptionsContext.executeO  sJ   ø€ õ �˜ÑÔ×%Ò%Ñ'Ô'Ð'Ø‡/‚/ÑÔÐÝÔ�7œ<Ñ(Ô(Ð(Ð(Ð(r   r*   )NNF)rO   rP   rQ   r?   r=   Úfunr   re   r†   r‹   r°   r¸   rÄ   rÏ   rØ   r¼   rÛ   Ú__classcell__)r—   s   @r   rT   rT   j   s  ø€ € € € € ðð ð €Ø€ð=yð =yð =yð =yð =yð~#ð #ð #ðJ
*ð 
*ð 
*ðð ð ð"ð ð ð&ð ð ð ð$ð $ð $ð $ð*$ð $ð $ðð ð ð"4ð 4ð 4ð 4ð)ð )ð )ð )ð )ð )ð )ð )ð )r   rT   )r?   r‡   rŽ   r   Úsysr¦   Úwaflibr   r   r   r   ÚValuesr/   rÂ   rÁ   rˆ   r‰   ÚplatformÚlockfiler   r	   rT   rR   r   r   ú<module>rä      s/  ððð ð 'Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à
ˆ(Œ/Ñ
Ô
€ðð €ðð
 €ðð Œ:�>Š>˜)Ð%9¸C¼LÑ%HÑIÔI€ðð>
ð >
ð >
ð >
ð >
�Ô&ñ >
ô >
ð >
ðBk)ð k)ð k)ð k)ð k)�W”_ñ k)ô k)ð k)ð k)ð k)r   