#!/usr/bin/env python # encoding: utf-8 # Ali Sabil, 2007 """ To use this module do not forget to call opt.tool_options('gnu_dirs') AND conf.check_tool('gnu_dirs') Add options for the standard GNU directories, this tool will add the options found in autotools, and will update the environment with the following installation variables: * PREFIX : architecture-independent files [/usr/local] * EXEC_PREFIX : architecture-dependent files [PREFIX] * BINDIR : user executables [EXEC_PREFIX/bin] * SBINDIR : user 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/telepathy-glib] * HTMLDIR : html documentation [DOCDIR] * DVIDIR : dvi documentation [DOCDIR] * PDFDIR : pdf documentation [DOCDIR] * PSDIR : ps documentation [DOCDIR] """ 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] 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 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] = Utils.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())