Add support for building libcxx and libcxxabi in LTO mode, along aside
the regular non-LTO builds.
Pass CLANG_VERSION to the wasi-libc build so that it can build itself in
LTO and non-LTO modes.
And drop the explicit -O1 from the compiler-rt build, and just go with
the default optimization settings.
To support this, add a mechanism for filtering test output to filter
out uninteresting diffs.
This adds some coverage for the code being changed in
https://github.com/WebAssembly/wasi-libc/pull/184.
- Don't build pushes to non-main branches, only build the PR itself.
- Remove special windows llvm-nm installation
The SDK build process itself builds llvm so we don't need to download
it.
- Make the `name` the first item in each step. I peronally find
this more readable.
This change was mostly generated by changing the upstream llvm
branch to 9.x and running:
$ git submodule update --remote
As well as switching the llvm 9 this change also bring in the
following wasi-libc changes:
5933c20 fix macos filename, use https
7c39519 CI: upgrade to llvm 9.0.0
9ca5187 remove no-self-update workaround for windows azure
9580a25 deprecate azure pipelines CI, build libc on GH Actions
2c2fc9a Don't call `free` on paths which are about to call `_Exit`. (#161)
c6f2c05 gen-headers: Generate assertions of layout from witx (#149)
37c663f Correct minor typo in c_headers.rs (#166)
12f5832 Convert more wasi-libc code to `//`-style comments. (#153)
ec86d4d Improvements to wasi-headers tool (#160)
1fad338 Fix environment variable init to exit successfully. (#159)
a280fea Move math source files. (#151)
dd010be Avoid using cast expressions in WASI API constants. (#148)
Fixes: #101
This uses Apache-2.0, which is the same as what's used in other
WebAssembly CG repositories, plus the LLVM-exception which provides for
GPLv2 compatibility and makes it easier to move code between libraries
and compilers.
wasi-libc builds special versions of printf and other routines optimized
for the case where long double and floating-point in general are not
needed. Ensure that everything still compiles and runs.
This adds a very primitive test harness and tests relevant to the recent
changes to how program startup works, as well as the upcoming changes
to support LTO.
* build: put artifacts into dist/. workflow: upload contents of dist/.
* review feedback
* CI workflow: add comment explaining artifact name
* checkout action to v1
* typo fix
This brings in the following changes:
f645f49 Update signal macros after upgrade to snapshot1 (#144)
8b3266d github actions: pin checkout action to v1 (#145)
410c660 Use constructor functions for optional init routines. (#142)
fe13053 c header generation updated for reorganized witx ast (#139)
cd74e1d Correct the version of #136 on master (#141)
446cb3f Wasi snapshot preview1 (#140)
54102f0 Ignore rights in libpreopen. (#129)
8c9e1c6 Make the `__original_main` definition weak, fixing -flto. (#138)
cf81683 Optimize `fmin`, `fmax`, etc. (#120)
deb8eae Don't pre-check capabilities in `openat`. (#130)
ca9046d Use consistent style for wasi-libc C source files. (#131)
951cc3e Fix unintended recursion in __wasilibc_register_preopened_fd. (#133)
5216983 Avoid a `strdup` call in `__wasilibc_populate_libpreopen`. (#128)
70099d4 Don't link in libpreopen initialization code when it isn't needed. (#127)
ec4549d Temporarily disable the use of `__heap_base`. (#132)
a214f1c Use __heap_base by dlmalloc (#114)
a94d2d0 Avoid varargs conventions when calling open (#126)
7fcc4f2 Revamp and simplify the libpreopen code. (#110)
eb7230c Remove more unsupported headers. (#123)
This installs unqualified `nm`, `ar`, and other symlinks, additional
tools including `llvm-objdump` and `llvm-objcopy`, and additional clang
tools such as `clang-format` and `clang-tidy`.
Ubuntu is based on debian and debian a more stable base to build on
IMHO. This shouldn't effect much other than some minor changes in the
exact version clang we use to cross compile and the specific linked
host shared libraries.
Also, run `apt-get clean` to minimize image size (not that that really
matters since this is only used during SDK build).
libc++ and libc++abi have config variables which can be used to enable
multi-arch installation paths. Use those instead of moving the libraries
after they are installed.