1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
#! /usr/bin/env python
# encoding: utf-8
import re
import Utils,Options
_options=[x.split(', ')for x in'''
bindir, user executables, $(EXEC_PREFIX)/bin
sbindir, system admin executables, $(EXEC_PREFIX)/sbin
libexecdir, program executables, $(EXEC_PREFIX)/libexec
sysconfdir, read-only single-machine data, $(PREFIX)/etc
sharedstatedir, modifiable architecture-independent data, $(PREFIX)/com
localstatedir, modifiable single-machine data, $(PREFIX)/var
libdir, object code libraries, $(EXEC_PREFIX)/lib
includedir, C header files, $(PREFIX)/include
oldincludedir, C header files for non-gcc, /usr/include
datarootdir, read-only arch.-independent data root, $(PREFIX)/share
datadir, read-only architecture-independent data, $(DATAROOTDIR)
infodir, info documentation, $(DATAROOTDIR)/info
localedir, locale-dependent data, $(DATAROOTDIR)/locale
mandir, man documentation, $(DATAROOTDIR)/man
docdir, documentation root, $(DATAROOTDIR)/doc/$(PACKAGE)
htmldir, html documentation, $(DOCDIR)
dvidir, dvi documentation, $(DOCDIR)
pdfdir, pdf documentation, $(DOCDIR)
psdir, ps documentation, $(DOCDIR)
'''.split('\n')if x]
re_var=re.compile(r'\$\(([a-zA-Z0-9_]+)\)')
def subst_vars(foo,vars):
def repl(m):
s=m.group(1)
return s and''+vars[s]or''
return re_var.sub(repl,foo)
def detect(conf):
def get_param(varname,default):
return getattr(Options.options,varname,'')or default
env=conf.env
env['EXEC_PREFIX']=get_param('EXEC_PREFIX',env['PREFIX'])
env['PACKAGE']=Utils.g_module.APPNAME or env['PACKAGE']
complete=False
iter=0
while not complete and iter<len(_options)+1:
iter+=1
complete=True
for name,help,default in _options:
name=name.upper()
if not env[name]:
try:
env[name]=subst_vars(get_param(name,default),env)
except TypeError:
complete=False
if not complete:
lst=[name for name,_,_ in _options if not env[name.upper()]]
raise Utils.WafError('Variable substitution failure %r'%lst)
def set_options(opt):
inst_dir=opt.add_option_group('Installation directories','By default, "waf install" will put the files in\
"/usr/local/bin", "/usr/local/lib" etc. An installation prefix other\
than "/usr/local" can be given using "--prefix", for example "--prefix=$HOME"')
for k in('--prefix','--destdir'):
option=opt.parser.get_option(k)
if option:
opt.parser.remove_option(k)
inst_dir.add_option(option)
inst_dir.add_option('--exec-prefix',help='installation prefix [Default: $(PREFIX)]',default='',dest='EXEC_PREFIX')
dirs_options=opt.add_option_group('Pre-defined installation directories','')
for name,help,default in _options:
option_name='--'+name
str_default=default
str_help='%s [Default: %s]'%(help,str_default)
dirs_options.add_option(option_name,help=str_help,default='',dest=name.upper())
|