Lines Matching refs:Support

2 Support Library
8 This document provides some details on LLVM's Support Library, located in the
9 source at ``lib/Support`` and ``include/llvm/Support``. The library's purpose
13 facilities are needed and the Support Library is the wrapper around those
18 platforms since (theoretically) only ``lib/Support`` needs to be ported. This
21 interfaces provided in ``include/llvm/Support``.
23 Note that the Support Library is not intended to be a complete operating system
28 The Support Library was originally referred to as the System Library, written
37 portability rules associated with the Support Library. Adherence to these rules
38 should help the Support Library achieve its goal of shielding LLVM from the
45 Except in ``lib/Support``, no LLVM source code should directly ``#include`` a
47 while ``lib/Support`` was being developed. Specifically this means that header
50 ``lib/Support``.
53 found in ``include/llvm/Support`` should be used. If an appropriate interface is
54 not available, it should be added to ``include/llvm/Support`` and implemented in
55 ``lib/Support`` for all supported platforms.
60 The Support Library must shield LLVM from **all** system headers. To obtain
62 ``#include "llvm/Support/Thing.h"`` and nothing else. This means that
65 the ``lib/Support`` interface.
71 exposed through the ``lib/Support`` interface. These headers and the things they
73 them directly or obtain their inclusion through ``lib/Support`` interfaces.
79 template library may be exposed through the ``lib/Support`` interface. These
82 ``lib/Support`` interfaces.
87 The entry points specified in the interface of ``lib/Support`` must be aimed at
96 correct thing for ``lib/Support`` to provide is a function, say
101 calls and the Support library's interface. Any such interface function will be
107 There must be no functionality specified in the interface of ``lib/Support``
110 need much. This design goal aims to keep the ``lib/Support`` interface small and
125 The Support Library interfaces can be called quite frequently by LLVM. In order
133 Any functions defined by system libraries (i.e. not defined by ``lib/Support``)
134 must not be exposed through the ``lib/Support`` interface, even if the header
139 data it provides. ``lib/Support`` must not declare ``stat`` nor allow it to be
143 provided by the Support Library must be implemented on all platforms (even
149 Any data defined by system libraries (i.e. not defined by ``lib/Support``) must
150 not be exposed through the ``lib/Support`` interface, even if the header file
165 ``lib/Support`` must always attempt to minimize soft errors. This is a design
175 open the file will produce an error. However, ``lib/Support`` should not simply
181 This design principle needs to be maintained in ``lib/Support`` because it
198 None of the ``lib/Support`` interface functions may be declared with C++
201 functions. This is a performance consideration: ``lib/Support`` functions are
209 Implementations of the Support Library interface are separated by their general
212 distinguish which implementation to compile, the code in ``lib/Support`` uses
214 ``lib/Support``, after implementing the generic (operating system independent)
217 ``lib/Support/Path.cpp``, we'd expect to see in that file:
228 The implementation in ``lib/Support/Unix/Path.inc`` should handle all Unix
229 variants. The implementation in ``lib/Support/Windows/Path.inc`` should handle
237 The implementation of a ``lib/Support`` interface can vary drastically between
242 ``lib/Support`` should provide an interface to the basic concept of