OpenSSL

Cryptography and SSL/TLS Toolkit

Platform Policy

Platforms are classified as “primary”, “secondary”, “community” and “unadopted”. Support for a new platform should only be added if it is being adopted as a primary, secondary or community platform.

Primary

Definition: A platform that is regularly tested through project CI on a project owned and managed system.

New Pull Requests (PRs) should not be merged unless the primary platforms are showing as “green” in CI. If the CI breaks for a branch (such as for a stable version or master) then it should be fixed as a priority.

Secondary

Definition: A platform that is regularly tested through project CI on a system that is not owned or managed by the project. At least one project committer must have access to the system and be able and willing to support it.

New Pull Requests (PRs) should avoid introducing new breaks to CI in secondary platforms where possible but may still be merged where a resolution is not easily achievable without access to the platform. If the CI for a branch (such as for a stable version or master) on a secondary platform breaks, then a resolution should be sought as soon as is practically possible and before a release is made from the branch.

Community

Definition: Platforms that one or more members of the OpenSSL community have volunteered to support. May or may not be in project CI. Members of the community providing support do not have to be committers.

Where a community platform is in project CI then new Pull Requests (PRs) should avoid introducing new breaks to CI on such platforms where possible but may still be merged where a resolution is not easily achievable without access to the platform. If the CI for a branch (such as for a stable version or master) on a community platform breaks, then an attempt should be made to contact the community maintainer to request a fix. In the event that a community platform is broken in CI for a protracted period then it may be dropped from CI.
If defects are raised that are specific to a community platform then the community maintainer may be contacted to help find a resolution. If a community maintainer is unresponsive, or unable to provide fixes then the platform may be moved to “unadopted”.

Unadopted

Definition: Platforms that no one has volunteered to support.

Support may still be provided for such platforms where possible without access to the platform itself. Platform specific issues may be left unresolved where it is not feasible to find a suitable fix. Support for such platforms may be removed entirely from the OpenSSL code base in future releases.


The current primary platforms are:

Target   O/S   Architecture   Toolchain
linux-x86_64 Ubuntu Server 20.04.3 x86_64 gcc 9.3.0
linux-generic64 Ubuntu Server 20.04.3 x86_64 gcc 9.3.0
linux-x86 Debian 11.2 x86 gcc 11.2.0
linux-generic32 Debian 11.2 x86 gcc 11.2.0
BSD-x86_64 FreeBSD 13.0 x86_64 Clang 11
VC-WIN64A Windows 10 x86_64 Visual Studio 2019 Community Edition
mingw64 Windows 10 x86_64 MinGW (64 bit) and MSYS2
darwin64-x86_64 Mac OS Big Sur (11) x86_64 clang 12.?
darwin64-arm64 Mac OS Big Sur (11) AArch64 (M1) clang 12.?

The current secondary platforms are:

Target   O/S   Architecture   Toolchain   Nominated Committer(s)
vms-ia64 OpenVMS 8.4 ia64 VSI C 7.4 @levitte
vms-ia64-p32 OpenVMS 8.4 ia64 VSI C 7.4 1 @levitte
vms-ia64-p64 OpenVMS 8.4 ia64 VSI C 7.4 2 @levitte
vms-x86_64 OpenVMS 8.4 x86_64 VSI C X7.4 3 @levitte

The current community platforms are:

Target   O/S   Architecture   Toolchain   Nominated Community Member(s)
vms-alpha OpenVMS 8.4 alpha VSI C 7.4 @levitte
vms-alpha-p32 OpenVMS 8.4 alpha VSI C 7.4 4 @levitte
vms-alpha-p64 OpenVMS 8.4 alpha VSI C 7.4 5 @levitte
nonstop-nsx NonStop OSS L21.06 x86_64 ilp32 c99 @rsbeckerca
nonstop-nsx_put NonStop OSS L21.06 x86_64 ilp32 PUT c99 @rsbeckerca
nonstop-nsx_64 NonStop OSS L21.06 x86_64 lp64 c99 @rsbeckerca
nonstop-nsx_64_put NonStop OSS L21.06 x86_64 lp64 PUT c99 @rsbeckerca
nonstop-nsx_spt NonStop OSS L21.06 x86_64 ilp32 SPT c99 @rsbeckerca
nonstop-nsx_spt_floss NonStop OSS L21.06 x86_64 ilp32 SPT FLOSS c99 @rsbeckerca
nonstop-nsv NonStop OSS L21.06 x86_64 ilp32 c99 @rsbeckerca
nonstop-nse NonStop OSS J06.22 ia64 ilp32 c99 @rsbeckerca
nonstop-nse_put NonStop OSS J06.22 ia64 ilp32 PUT c99 @rsbeckerca
nonstop-nse_64 NonStop OSS J06.22 ia64 lp64 c99 @rsbeckerca
nonstop-nse_64_put NonStop OSS J06.22 ia64 lp64 PUT c99 @rsbeckerca
nonstop-nse_spt NonStop OSS J06.22 ia64 ipl32 SPT c99 @rsbeckerca
nonstop-nse_spt_floss NonStop OSS J06.22 ia64 ipl32 SPT FLOSS c99 @rsbeckerca
linux64-loongarch64 Linux loongarch64 gcc @shipujin
BSD-armv4 FreeBSD armv4 LLVM @pkubaj
BSD-ppc FreeBSD ppc LLVM @pkubaj
BSD-ppc64 FreeBSD ppc64 LLVM @pkubaj
BSD-ppc64le FreeBSD ppc64le LLVM @pkubaj
BSD-riscv64 FreeBSD riscv64 LLVM @pkubaj
solaris64-x86_64-gcc Solaris x86_64 gcc @orcl-jlana @cernoseka
solaris64-x86_64-cc Solaris x86_64 Sun C @orcl-jlana @cernoseka
solaris64-sparcv9-gcc Solaris Sparc V9 64 bit gcc @orcl-jlana @cernoseka
solaris64-sparcv9-cc Solaris Sparc V9 64 bit Sun C @orcl-jlana @cernoseka
linux64-s390x Linux s390x gcc @juergenchrist @ifranzki
linux-aarch64 Linux aarch64 gcc @zorrorffm @daniel-hu-arm @xkqian @tom-cosgrove-arm

The current unadopted platforms are:

Target   O/S   Architecture   Toolchain
vos-gcc VOS ?? gcc
solaris-x86-gcc Solaris x86 gcc
solaris-sparcv7-gcc Solaris Sparc V7 gcc
solaris-sparcv8-gcc Solaris Sparc V8 gcc
solaris-sparcv9-gcc Solaris Sparc V9 32 bit gcc
solaris-sparcv7-cc Solaris Sparc V7 Sun C
solaris-sparcv8-cc Solaris Sparc V8 Sun C
solaris-sparcv9-cc Solaris Sparc V9 32 bit Sun C
irix-mips3-gcc Irix 6.x mips64 n32 gcc
irix-mips3-cc Irix 6.x mips64 n32 ??
irix64-mips4-gcc Irix 6.x mips64 n64 gcc
irix64-mips4-cc Irix 6.x mips64 n64 ??
hpux-parisc-gcc HP-UX parisc gcc
hpux-parisc1_1-gcc HP-UX parisc 1.1 32 bit gcc
hpux64-parisc2-gcc HP-UX parisc 2.0 64 bit gcc
hpux-parisc-cc HP-UX parisc ??
hpux-parisc1_1-cc HP-UX parisc 1.0 32 bit ??
hpux64-parisc2-cc HP-UX parisc 2.0 64 bit ??
hpux-ia64-cc HP-UX IA64 32 bit ??
hpux64-ia64-cc HP-UX IA64 64 bit ??
hpux-ia64-gcc HP-UX IA64 32 bit gcc
hpux64-ia64-gcc HP-UX IA64 64 bit gcc
MPE/iX-gcc MPE/iX parisc? gcc
tru64-alpha-gcc Tru64 alpha gcc
tru64-alpha-cc Tru64 alpha ??
linux-ppc Linux ppc32 gcc
linux-ppc64 Linux ppc64 big endian gcc
linux-ppc64le Linux ppc64 little endian gcc
linux-armv4 Linux armv4 gcc
linux-arm64ilp32 Linux aarch64-ilp32 gcc
linux-mips32 Linux mips32 o32 gcc
linux-mips64 Linux mips64 n32 gcc
linux64-mips64 Linux mips64 64 bit gcc
linux64-riscv64 Linux riscv64 gcc
linux-x86-clang Linux x86 clang
linux-x86_64-clang Linux x86_64 clang
linux-x32 Linux x86_64 x32 gcc
linux-ia64 Linux ia64 gcc
linux32-s390x Linux s390x 31 bit gcc
linux-sparcv8 Linux sparc v8 gcc
linux-sparcv9 Linux sparc v9 32 bit gcc
linux64-sparcv9 Linux sparc v9 64 bit gcc
linux-alpha-gcc Linux alpha gcc
linux-c64xplus Linux c64xplus gcc
linux-c64xplus Linux c64xplus gcc
BSD-x86 FreeBSD / OpenBSD / NetBSD / ? x86 a.out ??
BSD-x86-elf FreeBSD / OpenBSD / NetBSD / ? x86 elf ??
BSD-sparcv8 ? Sparc v8 ??
BSD-sparcv9 ? Sparc v9 32 bit ??
BSD-ia64 ? IA64 ??
BSD-x86_64 OpenBSD / NetBSD / ? x86_64 ??
bsdi-elf-gcc BSDi ?? ??
unixware-2.0 unixware 2.0 ?? ??
unixware-2.1 unixware 2.1 ?? ??
unixware-7 unixware 7 x86 ??
unixware-7-gcc unixware 7 x86 gcc
sco5-cc Open Server 5? x86 ??
sco5-gcc Open Server 5? x86 gcc
aix-gcc AIX ppc32 gcc
aix64-gcc AIX ppc64 gcc
aix64-gcc-as AIX ppc64 gcc with as?
aix-cc AIX ppc32 ??
aix64-cc AIX ppc64 ??
BS2000-OSD BS2000/OSD ?? ??
VC-WIN64I Windows XP / Windows Server 2008? ia64 Visual C
VC-WIN32 Windows 10 x86 Visual C
VC-CE Windows CE x86 / armv4? Visual C
VC-WIN64A-masm Windows 10 x86 Visual C with masm
mingw Windows 10? x86 gcc
UEFI-x86 UEFI x86 ??
UEFI-x86_64 UEFI x86_64 ??
UWIN UWIN x86
Cygwin-x86 Windows 10 x86 gcc
Cygwin-x86_64 Windows 10 x86_64 gcc
darwin-ppc MacOS? ppc32
darwin64-ppc MacOS? ppc64
darwin-i386 MacOS? x86
darwin-i386 MacOS? x86
hurd-x86 Hurd x86 gcc
vxworks-ppc60x vxworks ppc32
vxworks-ppcgen vxworks ppc32
vxworks-ppc405 vxworks ppc32 405
vxworks-ppc750 vxworks ppc32 750
vxworks-ppc860 vxworks ppc32 860
vxworks-simlinux vxworks x86?
vxworks-mips vxworks mips32 o32
uClinux-dist uClinux ? gcc
uClinux-dist64 uClinux ? gcc
android-arm android armv4
android-arm64 android aarch64
android-mips android mips32 o32
android-mips64 android mips64
android-x86 android x86
android-x86_64 android x86_64
ios-xcrun iOS armv7
ios64-xcrun iOS aarch64
iossimulator-xcrun iOS ?
iphoneos-cross iphoneos? ?
ios-cross iOS armv7
ios64-cross iOS aarch64
BC-32 Windows 10? x86 Borland C, C++ Builder?
DJGPP DOS? x86? djgpp
haiku-x86 Haiku x86 gcc?
haiku-x86_64 Haiku x86_64 gcc?
nonstop-nsx_g NonStop Guardian x86_64 ilp32
nonstop-nsx_g_tandem NonStop Guardian x86_64 ilp32
nonstop-nse_g NonStop Guardian ia64 ipl32
nonstop-nse_g_tandem NonStop Guardian ia64 ipl32
OS390-Unix zOS s390
VC-WIN32-ONECORE Windows OneCore x86 Visual C
VC-WIN64A-ONECORE Windows OneCore x86_64 Visual C
VC-WIN32-ARM Windows OneCore arm Visual C
VC-WIN64-ARM Windows OneCore aarch64 Visual C
VC-WIN32-UWP Windows UWP x86 Visual C
VC-WIN64A-UWP Windows UWP x86_64 Visual C
VC-ARM-UWP Windows UWP arm Visual C
VC-ARM64-UWP Windows UWP aarch64 Visual C

  1. [VMS] 32 bit pointer build↩︎

  2. [VMS] 64 bit pointer build↩︎

  3. [VMS] cross compile on ia64, currently build only↩︎

  4. [VMS] 32 bit pointer build↩︎

  5. [VMS] 64 bit pointer build↩︎