Rewrite the Readme!#20
Conversation
|
@slipher I would like to know the current status of this sentence:
|
e9c7c22 to
2c986ac
Compare
| - `src/trusted/`: Source code that's used only by trusted code | ||
| - `src/untrusted/`: Source code that's used only by untrusted code | ||
| - `tests/common/`: Source code for examples and tests. | ||
| - `../third_party/`: Third-party source code and binaries that aren't part of |
There was a problem hiding this comment.
I guess we can delete this ../third_party mention. The first purpose of the fork was to not require things outside this repository.
2c986ac to
0ef9a4e
Compare
Oh that's out of date indeed. NaCl targets work great. You can built NaCl targets, including the IRT, and test everything together. That's why I complain that using CMake is a regression, since it can't handle the multiple toolchains working in concert. I have verified that Linux stuff generally works and tests pass on the |
|
I haven't tested Windows or Mac yet. But I know that |
|
|
||
| ## Dependencies | ||
|
|
||
| - LLVM (must be installed in `/usr/bin`) |
There was a problem hiding this comment.
@slipher do we still need LLVM be in /usr/bin/?
There was a problem hiding this comment.
I suggest to rewrite this line as GCC or Clang.
There was a problem hiding this comment.
Yes the LLVM location is still hard-coded. GCC just needs to be in the PATH. And with the other PR LLVM is now optional.
There was a problem hiding this comment.
Also the way to use GCC is by putting --no-clang in the command line.
Great.
CMake can totally use a different toolchain per The reason why my CMake implementation doesn't care about IRT right now is that the first goal is to give the ability to build native trusted binaries from Dæmon's IRT can be downloaded for now, built with SCons in advance. I'm not excluding the opportunity to build the IRT too, but this is not needed to reach the minimal valuable product which is to make the native loader binary buildable with CMake with the exact same ease we do with the engine itself. It's totally on purpose that IRT isn't cared about yet, that's a selling point: I don't want the IRT topic to hold back the CMake implementation. The fact the current CMake implementation doesn't build the IRT should not be used against the CMake implementation. It would be holding it back because of the special effort made to not hold it back. I don't mind that tests remain implemented in SCons forever, run by a CI or something. |
| - LLVM (must be installed in /usr/bin) | ||
| # Native Client loader | ||
|
|
||
| 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. |
There was a problem hiding this comment.
The very long lines are annoying.
|
|
||
| Native Client is a sandboxing technology by Google, it was used by Chrome extensions and Chrome apps. | ||
|
|
||
| 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. |
There was a problem hiding this comment.
The last link isn't very useful. It goes to a list of all release notes without giving any clue which version I'm supposed to look at.
There was a problem hiding this comment.
Not my fault if Google doesn't know how to make web pages… The information is in “ChromeOS 139 release summary” part, in the ”Chrome 139: July 30, 2025” collapsed part. There are anchors for every paragraph but the ChromeOS release paragraphs.
There was a problem hiding this comment.
At leas this link is better: https://support.google.com/chrome/a/answer/10314655?‹
The deprecation mention is waaay below in the summary that has no anchor.
|
|
||
| - [github.com/DaemonEngine/native_client/issues/13](https://github.com/DaemonEngine/native_client/issues/13) | ||
|
|
||
| This fork brings edits to enable the building of NaCl without the Chromium |
There was a problem hiding this comment.
This could use a more prominent billing, like in the first paragraph. The fact it can be built without gclient or any other Chromium repos.
|
|
||
| ## Build the NaCl loader and boostrap loader | ||
|
|
||
| ```sh |
There was a problem hiding this comment.
We can mention the other possible architectures are x86 and arm.
| * `tools/`: Utilities such as the plug-in installer. | ||
| - `COPYING NOTICE README.md RELEASE_NOTES documentation/`: Documentation, | ||
| release, and license information. | ||
| - `SConstruct scons.bat scons scons-out/ site_scons/`: Build-related files. |
There was a problem hiding this comment.
scons (+ scons.bat I guess) could be dropped as we no longer use a vendored scons, just the scons command normally installed. Though ./scons still works apparently.
The tests have a lot less value if they don't run against the build that's actually used. |
Of course they have less value, but not “lot less”, the code is still tested. The problem lies in the build options if they differ. We may investigate scons testing what's built by CMake. Scons is not a viable option and I stand on this ground: And especially, Scons is not good enough for the |
|
As seen with that simple example as |
CMake is also not a viable option since it can't incorporate more than one toolchain into the build (besides NaCl toolchains I think there are also host-mode tools...). I guess we should just give up.
What do you mean? I can build any Linux architecture from an amd64 machine. I don't know about MinGW since I haven't tried yet. |
Our The CMake script I wrote will obey to the instructions, and will not pretend to be so special it doesn't have to follow instructions. The purpose is to get what we request, and Scons defeats that.
Despite the initial repository wasting hundreds of MB in MinGW tarballs stored in the repository, the code itself assumes MSVC all the way down, doesn't build on MinGW, and even requires both MASM executable and Microsoft include file. I ported the code to MinGW by the way. And I implemented the build in CMake, including the emulation of MASM with JWasm and the stubbing of the include.
The CMake system I wrote is ready to ship and could have been used in |
|
MinGW porting effort:
Despite the name, the last one is also needed outside of CMake, it's the stubbing of some Microsoft ASM include. |
Google will no longer update it, we fully adopt this!
This is now our Readme!