Skip to content

Commit 0ef9a4e

Browse files
committed
readme: rewrite
1 parent bae85fa commit 0ef9a4e

1 file changed

Lines changed: 82 additions & 56 deletions

File tree

‎README.md‎

Lines changed: 82 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,60 @@
1-
Fork of https://chromium.googlesource.com/native_client/src/native_client
2-
with edits to enable building NaCl without the Chromium
3-
dev tools. History had to be cut off due to 200 MB zip files in the history.
4-
Currently it only works for amd64 host+target. (run.py won't work
5-
since NaCl targets aren't supported yet.)
6-
Dependencies:
7-
- LLVM (must be installed in /usr/bin)
1+
# Native Client loader
2+
3+
This project makes possible to rebuild the Native Client loader for usage with the [Dæmon game engine](https://github.com/DaemonEngine/Daemon). The Dæmon engine is the open-source game engine powering the [Unvanquished game](https://unvanquished.net). The Dæmon engine uses Native Client to securely and portably run downloadable compiled games.
4+
5+
Native Client is a sandboxing technology by Google, it was used by Chrome extensions and Chrome apps.
6+
7+
Google publicly annouced [in May of 2017](https://www.tomshardware.com/news/chrome-deprecates-pnacl-embraces-webassembly%2C34583.html) the (then-)upcoming deprecation and abandonment of Native Client technologies in favor of WebAssembly, and announced the actual deprecation [in 2020](https://developer.chrome.com/deprecated). But Google also [supported](https://developer.chrome.com/docs/native-client) the Native Client-powered ChromeOS 138 [until July of 2025](https://support.google.com/chrome/a/answer/10314655) and as such continued developpement of some Native Client technologies.
8+
9+
The related project to rebuild the Saigo Native Client compiler can be found there:
10+
11+
- [github.com/DaemonEngine/saigo-release-scripts](https://github.com/DaemonEngine/saigo-release-scripts)
12+
13+
Nothing about Native Client should be expected from Google anymore.
14+
15+
16+
## History
17+
18+
This is a fork of the upstream repository:
19+
20+
- [chromium.googlesource.com/native_client/src/native_client](https://chromium.googlesource.com/native_client/src/native_client)
21+
22+
The Git history has been rewritten to remove very large files (multiple MinGW archives were stored in Git and things like that!), reducing the history size from 384MB to 57MB.
23+
24+
More information about this history rewriting can be found there:
25+
26+
- [github.com/DaemonEngine/native_client/issues/13](https://github.com/DaemonEngine/native_client/issues/13)
27+
28+
This fork brings edits to enable the building of NaCl without the Chromium
29+
dev tools.
30+
31+
Many of the original project pages are no longer available. Some documentation about Native Client can be found at:
32+
33+
- Documentation for [contributors to Native Client](https://web.archive.org/web/20250323050839/https://www.chromium.org/nativeclient/) (Web archive)
34+
- [Research papers](https://web.archive.org/web/20250821150630/https://www.chromium.org/nativeclient/reference/research-papers/) (Web archive)
35+
36+
37+
## Status
38+
39+
Currently it only works for amd64 host+target (`run.py` won't work
40+
since NaCl targets aren't supported yet).
41+
42+
43+
## Dependencies
44+
45+
- LLVM (must be installed in `/usr/bin`)
846
- SCons
947

10-
### Build the NaCl loader and boostrap loader
11-
```
48+
49+
## Build the NaCl loader and boostrap loader
50+
51+
```sh
1252
scons --mode=opt-host platform=x86-64 sel_ldr
1353
```
1454

55+
1556
### Build the IRT
57+
1658
This requires the Saigo NaCl toolchain. You can provide it by either
1759
(a) passing `saigo_newlib_dir=<path>` on the command line (the directory
1860
you want to target is normally called `saigo_newlib`), or
@@ -21,67 +63,51 @@ top-level directory from `saigo_newlib` to `saigo_newlib_raw`.
2163

2264
The following command builds one `irt_core_raw.nexe`. You need to strip it
2365
yourself; ordinary Linux `strip` seems to work.
24-
```
66+
67+
```sh
2568
scons --mode=nacl saigo=1 platform=x86-64 irt_core_raw [optional saigo_newlib_dir=...]
2669
```
2770

28-
### Try some tests
71+
72+
## Try some tests
73+
2974
This builds both components and runs some tests.
30-
```
75+
76+
```sh
3177
scons --mode=opt-host,nacl saigo=1 platform=x86-64 --keep-going small_tests medium_tests
78+
```
3279

3380
To enable crash dump tests, add the option `breakpad_tools_dir=<path to breakpad>`. The
3481
repository can be found at `daemon/libs/breakpad`. You need to have built the Breakpad
3582
tools in-source.
36-
```
37-
---
3883

39-
# Native Client
4084

41-
Native Client is a deprecated sandboxing technology. It is currently used by a
42-
few third party chrome extensions and chrome apps. Many of the original project
43-
pages are not longer available. Some documentation can be found at:
44-
* Documentation for [contributors to Native
45-
Client](http://www.chromium.org/nativeclient)
46-
* [Research
47-
papers](http://www.chromium.org/nativeclient/reference/research-papers)
48-
49-
## Directory structure
85+
## Directory structure
5086

5187
The following list describes major files and directories that you'll see in
5288
your working copy of the repository, including some directories that don't
5389
exist until you've built Native Client. Paths are relative to the
5490
`native_client` directory.
5591

56-
* `COPYING NOTICE README.md RELEASE_NOTES documentation/`: Documentation,
57-
release, and license information.
58-
59-
* `SConstruct scons.bat scons scons-out/ site_scons/`: Build-related files.
60-
The `scons.bat` and `scons` files, with data from `SConstruct`, let you
61-
build Native Client and its tests. The `scons-out` and `site-scons`
62-
directories don't exist in the git repository; they're created when Native
63-
Client is built. The `scons-out/*/staging` directories contain files, such
64-
as the Native Client plug-in and compiled examples, that let you use and
65-
test Native Client.
66-
67-
* `src/`: Core source code for Native Client.
68-
69-
* `src/include/`: Header files that are missing from some platforms and are
70-
used by more than one major part of Native Client
71-
72-
* `src/shared/`: Source code that's used by both trusted code (such as the
73-
service runtime) and untrusted code (such as Native Client modules)
74-
75-
* `src/third_party`: Other people's source code
76-
77-
* `src/trusted/`: Source code that's used only by trusted code
78-
79-
* `src/untrusted/`: Source code that's used only by untrusted code
80-
81-
* `tests/common/`: Source code for examples and tests.
82-
83-
* `../third_party/`: Third-party source code and binaries that aren't part of
84-
the service runtime. When built, the Native Client toolchain is in
85-
`src/third_party/nacl_sdk/`.
86-
87-
* `tools/`: Utilities such as the plug-in installer.
92+
- `COPYING NOTICE README.md RELEASE_NOTES documentation/`: Documentation,
93+
release, and license information.
94+
- `SConstruct scons.bat scons scons-out/ site_scons/`: Build-related files.
95+
The `scons.bat` and `scons` files, with data from `SConstruct`, let you
96+
build Native Client and its tests. The `scons-out` and `site-scons`
97+
directories don't exist in the git repository; they're created when Native
98+
Client is built. The `scons-out/*/staging` directories contain files, such
99+
as the Native Client plug-in and compiled examples, that let you use and
100+
test Native Client.
101+
- `src/`: Core source code for Native Client.
102+
- `src/include/`: Header files that are missing from some platforms and are
103+
used by more than one major part of Native Client
104+
- `src/shared/`: Source code that's used by both trusted code (such as the
105+
service runtime) and untrusted code (such as Native Client modules)
106+
- `src/third_party`: Other people's source code
107+
- `src/trusted/`: Source code that's used only by trusted code
108+
- `src/untrusted/`: Source code that's used only by untrusted code
109+
- `tests/common/`: Source code for examples and tests.
110+
- `../third_party/`: Third-party source code and binaries that aren't part of
111+
the service runtime. When built, the Native Client toolchain is in
112+
`src/third_party/nacl_sdk/`.
113+
- `tools/`: Utilities such as the plug-in installer (deprecated).

0 commit comments

Comments
 (0)