• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2017 Rene Rivera
2# Distributed under the Boost Software License, Version 1.0.
3# (See accompanying file LICENSE_1_0.txt or copy at
4# http://www.boost.org/LICENSE_1_0.txt)
5
6# The following features are incidental since they have no effect on built
7# products. Not making them incidental will result in problems in corner cases,
8# e.g.:
9#
10#    unit-test a : a.cpp : <use>b ;
11#    lib b : a.cpp b ;
12#
13# Here, if <use> is not incidental, we would decide we have two targets for
14# a.obj with different properties and complain about it.
15#
16# Note that making a feature incidental does not mean it is ignored. It may be
17# ignored when creating a virtual target, but the rest of build process will use
18# them.
19
20import feature ;
21
22#| tag::doc[]
23
24[[bbv2.builtin.features.dependency]]`dependency`::
25Introduces a dependency on the target named by the value of this feature (so it
26will be brought up-to-date whenever the target being declared is). The
27dependency is not used in any other way.
28
29|# # end::doc[]
30
31feature.feature dependency
32    :
33    : free dependency incidental ;
34
35#| tag::impl-doc[]
36
37[[bbv2.builtin.features.implicit-dependency]]`implicit-dependency`::
38Indicates that the target named by the value of this feature may produce files
39that are included by the sources of the target being declared. See the section
40<<Generated headers>> for more information.
41
42|# # end::impl-doc[]
43
44feature.feature implicit-dependency
45    :
46    : free dependency incidental ;
47
48#| tag::use-doc[]
49
50[[bbv2.builtin.features.use]]`use`::
51Introduces a dependency on the target named by the value of this feature (so it
52will be brought up-to-date whenever the target being declared is), and adds its
53usage requirements to the build properties of the target being declared. The
54dependency is not used in any other way. The primary use case is when you want
55the usage requirements (such as `#include` paths) of some library to be
56applied, but do not want to link to it.
57
58|# # end::use-doc[]
59
60feature.feature use
61    :
62    : free dependency incidental ;
63