doc: add supported platforms description
Closes: https://github.com/libuv/libuv/issues/983 PR-URL: https://github.com/libuv/libuv/pull/991 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
6fa3524ea7
commit
be0e24c1e8
14
README.md
14
README.md
@ -224,18 +224,7 @@ Run:
|
|||||||
|
|
||||||
## Supported Platforms
|
## Supported Platforms
|
||||||
|
|
||||||
Microsoft Windows operating systems since Windows XP SP2. It can be built
|
Check the [SUPPORTED_PLATFORMS file](SUPPORTED_PLATFORMS.md).
|
||||||
with either Visual Studio or MinGW. Consider using
|
|
||||||
[Visual Studio Express 2010][] or later if you do not have a full Visual
|
|
||||||
Studio license.
|
|
||||||
|
|
||||||
Linux using the GCC toolchain.
|
|
||||||
|
|
||||||
OS X using the GCC or XCode toolchain.
|
|
||||||
|
|
||||||
Solaris 121 and later using GCC toolchain.
|
|
||||||
|
|
||||||
AIX 6 and later using GCC toolchain (see notes).
|
|
||||||
|
|
||||||
### AIX Notes
|
### AIX Notes
|
||||||
|
|
||||||
@ -254,7 +243,6 @@ See the [guidelines for contributing][].
|
|||||||
[node.js]: http://nodejs.org/
|
[node.js]: http://nodejs.org/
|
||||||
[GYP]: http://code.google.com/p/gyp/
|
[GYP]: http://code.google.com/p/gyp/
|
||||||
[Python]: https://www.python.org/downloads/
|
[Python]: https://www.python.org/downloads/
|
||||||
[Visual Studio Express 2010]: http://www.microsoft.com/visualstudio/eng/products/visual-studio-2010-express
|
|
||||||
[guidelines for contributing]: https://github.com/libuv/libuv/blob/master/CONTRIBUTING.md
|
[guidelines for contributing]: https://github.com/libuv/libuv/blob/master/CONTRIBUTING.md
|
||||||
[libuv_banner]: https://raw.githubusercontent.com/libuv/libuv/master/img/banner.png
|
[libuv_banner]: https://raw.githubusercontent.com/libuv/libuv/master/img/banner.png
|
||||||
[x32]: https://en.wikipedia.org/wiki/X32_ABI
|
[x32]: https://en.wikipedia.org/wiki/X32_ABI
|
||||||
|
|||||||
70
SUPPORTED_PLATFORMS.md
Normal file
70
SUPPORTED_PLATFORMS.md
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
# Supported platforms
|
||||||
|
|
||||||
|
| System | Support type | Supported versions | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| GNU/Linux | Tier 1 | Linux >= 2.6.18 with glibc >= 2.5 | |
|
||||||
|
| macOS | Tier 1 | macOS >= 10.7 | |
|
||||||
|
| Windows | Tier 1 | Windows >= XP SP1 | MSVC 2008 and later are supported |
|
||||||
|
| FreeBSD | Tier 1 | >= 9 (see note) | |
|
||||||
|
| AIX | Tier 2 | >= 6 | Maintainers: @libuv/aix |
|
||||||
|
| z/OS | Tier 2 | >= V2R2 | Maintainers: @libuv/zos |
|
||||||
|
| Linux with musl | Tier 2 | musl >= 1.0 | |
|
||||||
|
| SunOS | Tier 2 | Solaris 121 and later | Maintainers: @libuv/sunos |
|
||||||
|
| MinGW | Tier 3 | MinGW32 and MinGW-w64 | |
|
||||||
|
| Other | Tier 3 | N/A | |
|
||||||
|
|
||||||
|
#### Note on FreeBSD 9
|
||||||
|
|
||||||
|
While FreeBSD is supported as Tier 1, FreeBSD 9 will get Tier 2 support until
|
||||||
|
it reaches end of life, in December 2016.
|
||||||
|
|
||||||
|
## Support types
|
||||||
|
|
||||||
|
* **Tier 1**: Officially supported and tested with CI. Any contributed patch
|
||||||
|
MUST NOT break such systems. These are supported by @libuv/collaborators.
|
||||||
|
|
||||||
|
* **Tier 2**: Officially supported, but not necessarily tested with CI. These
|
||||||
|
systems are maintained to the best of @libuv/collaborators ability,
|
||||||
|
without being a top priority.
|
||||||
|
|
||||||
|
* **Tier 3**: Community maintained. These systems may inadvertently break and the
|
||||||
|
community and interested parties are expected to help with the maintenance.
|
||||||
|
|
||||||
|
## Adding support for a new platform
|
||||||
|
|
||||||
|
**IMPORTANT**: Before attempting to add support for a new platform please open
|
||||||
|
an issue about it for discussion.
|
||||||
|
|
||||||
|
### Unix
|
||||||
|
|
||||||
|
I/O handling is abstracted by an internal `uv__io_t` handle. The new platform
|
||||||
|
will need to implement some of the functions, the prototypes are in
|
||||||
|
``src/unix/internal.h``.
|
||||||
|
|
||||||
|
If the new platform requires extra fields for any handle structure, create a
|
||||||
|
new include file in ``include/`` with the name ``uv-theplatform.h`` and add
|
||||||
|
the appropriate defines there.
|
||||||
|
|
||||||
|
All functionality related to the new platform must be implemented in its own
|
||||||
|
file inside ``src/unix/`` unless it's already done in a common file, in which
|
||||||
|
case adding an `ifdef` is fine.
|
||||||
|
|
||||||
|
Two build systems are supported: autotools and GYP. Ideally both need to be
|
||||||
|
supported, but if GYP does not support the new platform it can be left out.
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
|
||||||
|
Windows is treated as a single platform, so adding support for a new platform
|
||||||
|
would mean adding support for a new version.
|
||||||
|
|
||||||
|
Compilation and runtime must succeed for the minimum supported version. If a
|
||||||
|
new API is to be used, it must be done optionally, only in supported versions.
|
||||||
|
|
||||||
|
### Common
|
||||||
|
|
||||||
|
Some common notes when adding support for new platforms:
|
||||||
|
|
||||||
|
* Generally libuv tries to avoid compile time checks. Do not add any to the
|
||||||
|
autotools based build system or use version checking macros.
|
||||||
|
Dynamically load functions and symbols if they are not supported by the
|
||||||
|
minimum supported version.
|
||||||
Loading…
Reference in New Issue
Block a user