You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+25-10Lines changed: 25 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,23 +1,29 @@
1
1
# Portable C++ Toolchain
2
2
3
-
The Portable C++ Toolchain is a complete C/C++ toolchain based on LLVM 19.
3
+
The Portable C++ Toolchain is a complete C/C++ toolchain based on LLVM.
4
4
5
5
This toolchain has the following goals:
6
-
* Create binaries compatible with a broad variety of Linux distributions and macOS versions
6
+
* Create binaries compatible with a broad variety of Linux distributions
7
7
* Support cross-compilation without necessitating specialty compilers
8
-
* Provide a similar experience on Linuxand macOS
8
+
* Provide a similar experience on Linux, macOS, and Windows
9
9
10
10
## Build system integration
11
11
### Bazel
12
12
13
13
This toolchain provides a Bazel rules integration.
14
-
For more information, see the [Bazel API documentation](bazel).
14
+
Consult the [release notes](https://github.com/CACI-International/cpp-toolchain/releases) for a quick start guide.
15
+
For more information, see the [Bazel API documentation](bazel/docs).
15
16
16
-
## Supported targets and versions
17
+
Note that the Bazel integration currently does not target Windows. Cross-compiling from Windows hosts to Linux targets is supported.
17
18
18
-
### Linux
19
+
### CMake
20
+
21
+
This toolchain provides a CMake integration.
22
+
Consult the [release notes](https://github.com/CACI-International/cpp-toolchain/releases) for a quick start guide.
19
23
20
-
All targets are compiled against kernel 3.10.108, glibc 2.17, and libstdc++ 14.2.
24
+
## Supported targets
25
+
26
+
### Linux
21
27
22
28
The following targets are supported:
23
29
*`aarch64-unknown-linux-gnu`
@@ -26,7 +32,7 @@ The following targets are supported:
26
32
27
33
### macOS
28
34
29
-
To specify compatibility, compile with `-mmacosx-version-min=MAJOR.MINOR`. Supported targets and versions depend on the installed Xcode version.
35
+
To specify compatibility, compile with `-mmacosx-version-min=MAJOR.MINOR` or similar. Supported targets and versions depend on the installed Xcode version.
30
36
31
37
`arm64` and `x86_64` targets are supported. These include (but not limited to):
32
38
*`arm64-apple-macos`
@@ -35,6 +41,12 @@ To specify compatibility, compile with `-mmacosx-version-min=MAJOR.MINOR`. Suppo
35
41
36
42
macOS hosts can also cross-compile to Linux targets.
37
43
44
+
### Windows
45
+
46
+
`arm64` and `x86_64` targets using the MSVC ABI are supported. These include (but not limited to):
47
+
*`x86_64-pc-windows-msvc`
48
+
*`aarch64-pc-windows-msvc`
49
+
38
50
### NVPTX
39
51
40
52
Clang is built with NVPTX support.
@@ -44,9 +56,12 @@ Clang is built with NVPTX support.
44
56
### Linux
45
57
* glibc and libstdc++ are used rather than musl and libc++ to ensure compatibility when linking against system libraries on most distributions.
46
58
* libstdc++ is statically linked into Linux binaries to maximize compatibility with older operating systems.
59
+
* "Old" kernel headers are used to maximize compatibility with older operating systems.
47
60
48
-
### macOS
49
-
* macOS does not always have the latest libc++ available. Header-only features are generally fine to use with this older libc++, but some features reference `libc++.dylib` and won't work on some macOS versions.
61
+
For exact versions, consult the release notes.
62
+
63
+
### macOS and Windows
64
+
Apple and Microsoft provide their own SDKs that are not redistributed with this toolchain. You must install Xcode or the Windows SDK/Visual Studio to target those operating systems.
0 commit comments