mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-04 17:49:45 +02:00
136 lines
5.3 KiB
Python
136 lines
5.3 KiB
Python
#! /usr/bin/env python
|
|
# encoding: utf-8
|
|
# WARNING! Do not edit! http://waf.googlecode.com/git/docs/wafbook/single.html#_obtaining_the_waf_file
|
|
|
|
import os,tempfile,optparse,sys,re
|
|
from waflib import Logs,Utils,Context
|
|
cmds='distclean configure build install clean uninstall check dist distcheck'.split()
|
|
options={}
|
|
commands=[]
|
|
lockfile=os.environ.get('WAFLOCK','.lock-waf_%s_build'%sys.platform)
|
|
try:cache_global=os.path.abspath(os.environ['WAFCACHE'])
|
|
except KeyError:cache_global=''
|
|
platform=Utils.unversioned_sys_platform()
|
|
class opt_parser(optparse.OptionParser):
|
|
def __init__(self,ctx):
|
|
optparse.OptionParser.__init__(self,conflict_handler="resolve",version='waf %s (%s)'%(Context.WAFVERSION,Context.WAFREVISION))
|
|
self.formatter.width=Logs.get_term_cols()
|
|
p=self.add_option
|
|
self.ctx=ctx
|
|
jobs=ctx.jobs()
|
|
p('-j','--jobs',dest='jobs',default=jobs,type='int',help='amount of parallel jobs (%r)'%jobs)
|
|
p('-k','--keep',dest='keep',default=0,action='count',help='keep running happily even if errors are found')
|
|
p('-v','--verbose',dest='verbose',default=0,action='count',help='verbosity level -v -vv or -vvv [default: 0]')
|
|
p('--nocache',dest='nocache',default=False,action='store_true',help='ignore the WAFCACHE (if set)')
|
|
p('--zones',dest='zones',default='',action='store',help='debugging zones (task_gen, deps, tasks, etc)')
|
|
gr=optparse.OptionGroup(self,'configure options')
|
|
self.add_option_group(gr)
|
|
gr.add_option('-o','--out',action='store',default='',help='build dir for the project',dest='out')
|
|
gr.add_option('-t','--top',action='store',default='',help='src dir for the project',dest='top')
|
|
default_prefix=os.environ.get('PREFIX')
|
|
if not default_prefix:
|
|
if platform=='win32':
|
|
d=tempfile.gettempdir()
|
|
default_prefix=d[0].upper()+d[1:]
|
|
else:
|
|
default_prefix='/usr/local/'
|
|
gr.add_option('--prefix',dest='prefix',default=default_prefix,help='installation prefix [default: %r]'%default_prefix)
|
|
gr.add_option('--download',dest='download',default=False,action='store_true',help='try to download the tools if missing')
|
|
gr=optparse.OptionGroup(self,'build and install options')
|
|
self.add_option_group(gr)
|
|
gr.add_option('-p','--progress',dest='progress_bar',default=0,action='count',help='-p: progress bar; -pp: ide output')
|
|
gr.add_option('--targets',dest='targets',default='',action='store',help='task generators, e.g. "target1,target2"')
|
|
gr=optparse.OptionGroup(self,'step options')
|
|
self.add_option_group(gr)
|
|
gr.add_option('--files',dest='files',default='',action='store',help='files to process, by regexp, e.g. "*/main.c,*/test/main.o"')
|
|
default_destdir=os.environ.get('DESTDIR','')
|
|
gr=optparse.OptionGroup(self,'install/uninstall options')
|
|
self.add_option_group(gr)
|
|
gr.add_option('--destdir',help='installation root [default: %r]'%default_destdir,default=default_destdir,dest='destdir')
|
|
gr.add_option('-f','--force',dest='force',default=False,action='store_true',help='force file installation')
|
|
gr.add_option('--distcheck-args',help='arguments to pass to distcheck',default=None,action='store')
|
|
def get_usage(self):
|
|
cmds_str={}
|
|
for cls in Context.classes:
|
|
if not cls.cmd or cls.cmd=='options':
|
|
continue
|
|
s=cls.__doc__ or''
|
|
cmds_str[cls.cmd]=s
|
|
if Context.g_module:
|
|
for(k,v)in Context.g_module.__dict__.items():
|
|
if k in['options','init','shutdown']:
|
|
continue
|
|
if type(v)is type(Context.create_context):
|
|
if v.__doc__ and not k.startswith('_'):
|
|
cmds_str[k]=v.__doc__
|
|
just=0
|
|
for k in cmds_str:
|
|
just=max(just,len(k))
|
|
lst=[' %s: %s'%(k.ljust(just),v)for(k,v)in cmds_str.items()]
|
|
lst.sort()
|
|
ret='\n'.join(lst)
|
|
return'''waf [commands] [options]
|
|
|
|
Main commands (example: ./waf build -j4)
|
|
%s
|
|
'''%ret
|
|
class OptionsContext(Context.Context):
|
|
cmd='options'
|
|
fun='options'
|
|
def __init__(self,**kw):
|
|
super(OptionsContext,self).__init__(**kw)
|
|
self.parser=opt_parser(self)
|
|
self.option_groups={}
|
|
def jobs(self):
|
|
count=int(os.environ.get('JOBS',0))
|
|
if count<1:
|
|
if'NUMBER_OF_PROCESSORS'in os.environ:
|
|
count=int(os.environ.get('NUMBER_OF_PROCESSORS',1))
|
|
else:
|
|
if hasattr(os,'sysconf_names'):
|
|
if'SC_NPROCESSORS_ONLN'in os.sysconf_names:
|
|
count=int(os.sysconf('SC_NPROCESSORS_ONLN'))
|
|
elif'SC_NPROCESSORS_CONF'in os.sysconf_names:
|
|
count=int(os.sysconf('SC_NPROCESSORS_CONF'))
|
|
if not count and os.name not in('nt','java'):
|
|
try:
|
|
tmp=self.cmd_and_log(['sysctl','-n','hw.ncpu'],quiet=0)
|
|
except Exception:
|
|
pass
|
|
else:
|
|
if re.match('^[0-9]+$',tmp):
|
|
count=int(tmp)
|
|
if count<1:
|
|
count=1
|
|
elif count>1024:
|
|
count=1024
|
|
return count
|
|
def add_option(self,*k,**kw):
|
|
return self.parser.add_option(*k,**kw)
|
|
def add_option_group(self,*k,**kw):
|
|
try:
|
|
gr=self.option_groups[k[0]]
|
|
except KeyError:
|
|
gr=self.parser.add_option_group(*k,**kw)
|
|
self.option_groups[k[0]]=gr
|
|
return gr
|
|
def get_option_group(self,opt_str):
|
|
try:
|
|
return self.option_groups[opt_str]
|
|
except KeyError:
|
|
for group in self.parser.option_groups:
|
|
if group.title==opt_str:
|
|
return group
|
|
return None
|
|
def parse_args(self,_args=None):
|
|
global options,commands
|
|
(options,leftover_args)=self.parser.parse_args(args=_args)
|
|
commands=leftover_args
|
|
if options.destdir:
|
|
options.destdir=os.path.abspath(os.path.expanduser(options.destdir))
|
|
if options.verbose>=1:
|
|
self.load('errcheck')
|
|
def execute(self):
|
|
super(OptionsContext,self).execute()
|
|
self.parse_args()
|