mirror of https://github.com/WebAssembly/wasi-sdk
main
toolchain_conly
threads-prerelease
sunfishcode/really-update-llvm
sunfishcode/llvm-13
cmake_module_path
sunfishcode/test-seekdir
remove_no_threads
run_tests
update_expected
lto
pch/compnerd_cmake_integration
pch/debian_dep
remove-hacks
wasi-sdk-25
wasi-sdk-24
wasi-sdk-23
wasi-sdk-22
wasi-sdk-21
wasi-sdk-20
wasi-sdk-20+threads
wasi-sdk-19
wasi-sdk-18
wasi-sdk-17
wasi-sdk-16
wasi-sdk-15
wasi-sdk-14
wasi-sdk-13
wasi-sdk-12
wasi-sdk-11
wasi-sdk-10
wasi-sdk-9
wasi-sdk-8
wasi-sdk-7
wasi-sdk-6
wasi-sdk-5
wasi-sdk-4
wasi-sdk-3
wasi-sdk-2
wasi-sdk-1
wasi-sdk-0
${ noResults }
4 Commits (b416e2beb40beecc05de33e300203843f62b3263)
Author | SHA1 | Message | Date |
---|---|---|---|
Alex Crichton |
0de1b487fc
|
Fix testing the right targets on CI (#461)
This commit fixes a bug from the cmake migration where tests were not actually testing the correct target. Object files were compiled with the right options but the link step was missing both `--target` and `-pthread` which caused everything to accidentally be tested as `wasm32-wasi`. When fixing this one test was needed to have its stderr updated because the component output of `wasm32-wasip2` is slightly different. A timeout was additionally added because without `-pthread` at the link step some tests infinitely ran which made debugging difficult. |
5 months ago |
Alex Crichton |
9ee70805ec
|
Add a CI check for testing toolchains as-distributed (#449)
* Add a CI check for testing toolchains as-distributed One aspect of testing lost in the CMake-based migration is the ability to test the toolchains as distributed in release artifacts. Tests use `--sysroot` and `-resource-dir` (soon) to customize how the host compiler runs but this means that it would be possible to regress the default sysroot theoretically. To rectify this situation this commit adds a new CI test which uses the release artifacts of previous steps to build a `wasi-sdk-*.tar.gz` tarball which is then extracted and tested as-is. A new flag was added to the cmake configuration to avoid depending on fresh sysroot libraries for tests and instead test the host toolchain. * Fix version.py script running * Fix artifact download * Add ninja * Update submodules in new test job * Only add extra options for libcxx build Otherwise the test directory seems like it inherits these options which isn't desired when testing the host toolchain. |
6 months ago |
Alex Crichton |
08be2d4b29
|
Don't modify the host compiler's sysroot (#445)
This commit updates the building of the wasi-sdk sysroot to leverage the `-resource-dir` argument from Clang to avoid modifying the host compiler's sysroot with compiler-rt things. This should help improve the experience of building a standalone sysroot with whatever host Clang is on the system. Closes #444 |
6 months ago |
Alex Crichton |
e29a3fef8b
|
Rewrite the build system with CMake (#429)
* Rewrite the build system with CMake This commit is an attempt to provide a concrete path forward on WebAssembly/wasi-sdk#425. I personally think it's pretty important to get the ability to have more architectures here but at the same time I also think it's important to to take this as an opportunity to refactor and improve the build system of this repository. To that end this represents my attempt to improve the status quo. This removes the old `Makefile` and replaces it with a CMake-based system to build all these projects. Overall this is intended to be a "no functional change" intended sort of refactoring. Changing build systems inevitably causes issues, however, so this change additionally has a very high likelihood of needing follow-up fixes. At a high enough level this commit introduces two major changes to how this repository is built: 1. The `make`-based system (the root `Makefile`) is replaced with CMake. This additionally updates tests to use CMake. 2. A single "build" is split into either building a toolchain or building a sysroot. This enables builds to only build one or the other as necessary. The first change, using CMake, is due to the fact that using `make` on Windows basically is not pleasant coupled with the fact that more advanced logic, such as changing flags, compilers, etc, is much easier with a CMake-based system. The second change is intended to cover the use case of #425 in addition to refactoring the current build. Throughout this change I have intentionally not tried to keep a 1:1 correspondance with behaviors in the old `Makefile` because much of this PR is intended to address shortcomings in the old build system. A list of changes, improvements, etc, made here are: * CMake provides a much nicer portability story to Windows than `make`. This is moving towards the direction of not needing `bash`, for example, to build an SDK. Currently `wasi-libc` still requires this, but that's now the only "hard" dependency. * The set of targets built can now be configured for smaller builds and/or debugging just a single target. All WASI targets are still built by default but it's much easier to add/remove them. * Different targets are now able to be built in parallel as opposed to the unconditional serial-nature of the `Makefile`. * Use of `ninja` is no longer required and separate build systems can be used if desired. * The sysroot and the toolchain can now be built with different CMake build profiles. For example the `Makefile` hardcoded `MinSizeRel` and `RelWithDebInfo` and this can now be much more easily customized by the SDK builder. * Tarballs are now more consistently produced and named. For a tarball of the name `foo.tar.gz` it's guaranteed that there's a single folder `foo` created when unpacking the tarball. * The macOS binaries are no longer hybrid x64/arm64 binaries which greatly inflates the size of the SDK. There's now a separate build for each architecture. * CI now produces arm64-linux binaries. The sysroot is not built on the arm64-linux builder and the sysroot from the x86_64-linux builder is used instead. * Tests are almost ready to execute on Windows, there's just a few minor issues related to exit statuses and probably line endings which need to be worked out. Will require someone with a Windows checkout, however. * Tests are now integrated into CMake. This means that the wasm binaries are able to be built in parallel and the tests are additionally executed in parallel with `ctest`. It is possible to build/run a single test. Tests no longer place all of their output in the source tree. * Out-of-tree builds are now possible and the build/installation directories can both be customized. * CI configuration of Windows/macOS/Linux is much more uniform by having everything in one build matrix instead of separate matrices. * Linux builds are exclusively done in docker containers in CI now. CI no longer produces two Linux builds only for one to be discarded when artifacts are published. * Windows 32-bit builds are no longer produced in CI since it's expected that everyone actually wants the 64-bit ones instead. * Use of `ccache` is now automatically enabled if it's detected on the system. * Many preexisting shell scripts are now translated to CMake one way or another. * There's no longer a separate build script for how to build wasi-sdk in docker and outside of docker which needs to be kept in sync, everything funnels through the same script. * The `docker/Dockerfile` build of wasi-sdk now uses the actual toolchain built from CI and additionally doesn't duplicate various CMake-based configuration files. Overall one thing I want to additionally point out is that I'm not CMake expert. I suspect there's lots of little stylistic and such improvements that can be made. * Fix skipping tests on windows * Fetch a full depth in the finalize workflow too * Fix multi-arch docker build * Fix assembling of sysroot * Fix script syntax * Clean up the merge script slightly * Remove Pat's email * Move configuration of CMAKE_EXECUTABLE_SUFFIX * Remove redundant sysroot option * Fix comment in testcase.sh * Update new p2 cmake files * Remove now-duplicate wasi-sdk-p2.cmake |
6 months ago |