aboutsummaryrefslogtreecommitdiffstats
path: root/doc/manual
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2018-07-05 10:52:21 -0400
committerJack Lloyd <[email protected]>2018-07-05 10:53:04 -0400
commitb42403583adae5f0e374a9166c2ebb0d02544922 (patch)
treefff7628a5de43d1fe4ce80adb085868fd6dc9df7 /doc/manual
parent26b2bdc110cb088eb2e29166f3ef11d47620e0e3 (diff)
Document how to disable OS features [ci skip]
Closes #1576
Diffstat (limited to 'doc/manual')
-rw-r--r--doc/manual/building.rst27
1 files changed, 27 insertions, 0 deletions
diff --git a/doc/manual/building.rst b/doc/manual/building.rst
index c8f27c979..c09ee77ee 100644
--- a/doc/manual/building.rst
+++ b/doc/manual/building.rst
@@ -352,6 +352,33 @@ support this there is a flag to ``configure.py`` called
inserted into ``build/build.h`` which is (indirectly) included
into every Botan header and source file.
+Enabling or Disabling Use of Certain OS Features
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Botan uses compile-time flags to enable or disable use of certain operating
+specific functions. You can also override these at build time if desired.
+
+The default feature flags are given in the files in ``src/build-data/os`` in the
+``target_features`` block. For example Linux defines flags like ``proc_fs``,
+``getauxval``, and ``sockets``. The ``configure.py`` option
+``--list-os-features`` will display all the feature flags for all operating
+system targets.
+
+To disable a default-enabled flag, use ``--without-os-feature=feat1,feat2,...``
+
+To enable a flag that isn't otherwise enabled, use ``--with-os-feature=feat``.
+For example, modern Linux systems support the ``getentropy`` call, but it is not
+enabled by default because many older systems lack it. However if you know you
+will only deploy to recently updated systems you can use
+``--with-os-feature=getentropy`` to enable it.
+
+A special case if dynamic loading, which applications for certain environments
+will want to disable. There is no specific feature flag for this, but
+``--disable-modules=dyn_load`` will prevent it from being used.
+
+.. note:: Disabling ``dyn_load`` module will also disable the PKCS #11
+ wrapper, which relies on dynamic loading.
+
Configuration Parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^