6 Sets various standard variables such as INCLUDEDIR. SBINDIR and others. To use this module just call::
14 Add options for the standard GNU directories, this tool will add the options
15 found in autotools, and will update the environment with the following
16 installation variables:
18 ============== ========================================= =======================
19 Variable Description Default Value
20 ============== ========================================= =======================
21 PREFIX installation prefix /usr/local
22 EXEC_PREFIX installation prefix for binaries PREFIX
23 BINDIR user commands EXEC_PREFIX/bin
24 SBINDIR system binaries EXEC_PREFIX/sbin
25 LIBEXECDIR program-specific binaries EXEC_PREFIX/libexec
26 SYSCONFDIR host-specific configuration PREFIX/etc
27 SHAREDSTATEDIR architecture-independent variable data PREFIX/com
28 LOCALSTATEDIR variable data PREFIX/var
29 LIBDIR object code libraries EXEC_PREFIX/lib
30 INCLUDEDIR header files PREFIX/include
31 OLDINCLUDEDIR header files for non-GCC compilers /usr/include
32 DATAROOTDIR architecture-independent data root PREFIX/share
33 DATADIR architecture-independent data DATAROOTDIR
34 INFODIR GNU "info" documentation DATAROOTDIR/info
35 LOCALEDIR locale-dependent data DATAROOTDIR/locale
36 MANDIR manual pages DATAROOTDIR/man
37 DOCDIR documentation root DATAROOTDIR/doc/APPNAME
38 HTMLDIR HTML documentation DOCDIR
39 DVIDIR DVI documentation DOCDIR
40 PDFDIR PDF documentation DOCDIR
41 PSDIR PostScript documentation DOCDIR
42 ============== ========================================= =======================
46 from waflib import Utils, Options, Context
49 bindir, user commands, ${EXEC_PREFIX}/bin
50 sbindir, system binaries, ${EXEC_PREFIX}/sbin
51 libexecdir, program-specific binaries, ${EXEC_PREFIX}/libexec
52 sysconfdir, host-specific configuration, ${PREFIX}/etc
53 sharedstatedir, architecture-independent variable data, ${PREFIX}/com
54 localstatedir, variable data, ${PREFIX}/var
55 libdir, object code libraries, ${EXEC_PREFIX}/lib%s
56 includedir, header files, ${PREFIX}/include
57 oldincludedir, header files for non-GCC compilers, /usr/include
58 datarootdir, architecture-independent data root, ${PREFIX}/share
59 datadir, architecture-independent data, ${DATAROOTDIR}
60 infodir, GNU "info" documentation, ${DATAROOTDIR}/info
61 localedir, locale-dependent data, ${DATAROOTDIR}/locale
62 mandir, manual pages, ${DATAROOTDIR}/man
63 docdir, documentation root, ${DATAROOTDIR}/doc/${PACKAGE}
64 htmldir, HTML documentation, ${DOCDIR}
65 dvidir, DVI documentation, ${DOCDIR}
66 pdfdir, PDF documentation, ${DOCDIR}
67 psdir, PostScript documentation, ${DOCDIR}
70 _options = [x.split(', ') for x in gnuopts.splitlines() if x]
74 Reads the command-line options to set lots of variables in *conf.env*. The variables
75 BINDIR and LIBDIR will be overwritten.
77 def get_param(varname, default):
78 return getattr(Options.options, varname, '') or default
81 env.LIBDIR = env.BINDIR = []
82 env.EXEC_PREFIX = get_param('EXEC_PREFIX', env.PREFIX)
83 env.PACKAGE = getattr(Context.g_module, 'APPNAME', None) or env.PACKAGE
87 while not complete and iter < len(_options) + 1:
90 for name, help, default in _options:
94 env[name] = Utils.subst_vars(get_param(name, default).replace('/', os.sep), env)
99 lst = [x for x, _, _ in _options if not env[x.upper()]]
100 raise conf.errors.WafError('Variable substitution failure %r' % lst)
104 Adds lots of command-line options, for example::
106 --exec-prefix: EXEC_PREFIX
108 inst_dir = opt.add_option_group('Installation prefix',
109 'By default, "waf install" will put the files in\
110 "/usr/local/bin", "/usr/local/lib" etc. An installation prefix other\
111 than "/usr/local" can be given using "--prefix", for example "--prefix=$HOME"')
113 for k in ('--prefix', '--destdir'):
114 option = opt.parser.get_option(k)
116 opt.parser.remove_option(k)
117 inst_dir.add_option(option)
119 inst_dir.add_option('--exec-prefix',
120 help = 'installation prefix for binaries [PREFIX]',
122 dest = 'EXEC_PREFIX')
124 dirs_options = opt.add_option_group('Installation directories')
126 for name, help, default in _options:
127 option_name = '--' + name
128 str_default = default
129 str_help = '%s [%s]' % (help, re.sub(r'\$\{([^}]+)\}', r'\1', str_default))
130 dirs_options.add_option(option_name, help=str_help, default='', dest=name.upper())