Commit Graph
1413 Commits
Author SHA1 Message Date
Martin Storsjö 096033f443 build-llvm: Bump to LLVM 21.1.0 final 2025-08-26 22:37:10 +03:00
Martin Storsjö 747a6cd27a build-mingw-w64: Bump to the latest version as of Aug 26th 2025-08-26 22:36:18 +03:00
Martin Storsjö a96bbc0c7f build-make: Download from ftpmirror.gnu.org rather than directly from ftp.gnu.org
Direct access from ftp.gnu.org has been slow lately, and using
a mirror is more considerate in general.
2025-08-26 16:00:23 +03:00
Martin Storsjö 5c5a462dd1 github: Stop manually installing ninja on Windows
Since https://github.com/actions/runner-images/pull/11706,
https://github.com/actions/runner-images/pull/11707 and
https://github.com/actions/runner-images/pull/11737, ninja is
preinstalled in the Ubuntu, macOS and x86 Windows runner images.
Thanks to that, redundant installs of ninja on Unix were removed
in e20f0e3acd.

As noted in https://github.com/actions/partner-runner-images/issues/96,
ninja now also seems to be available on the Windows on ARM
images - thus remove redundant installs of ninja on Windows.
2025-08-21 00:13:51 +03:00
Martin Storsjö 9abe6a8f31 build-llvm, build-cross-tools: Include --no-llvm-tool-reuse in the help listings 2025-08-13 13:36:56 +03:00
Martin Storsjö ccbccc774f build-cross-tools: Fix a help string typo 2025-08-13 13:27:45 +03:00
Martin Storsjö 5bade09998 build-llvm: Bump to LLVM 21.1.0 RC 3 2025-08-12 13:37:27 +03:00
Martin Storsjö 9ae76cfbe0 build-mingw-w64: Bump to the latest version as of Aug 12th 2025-08-12 13:37:12 +03:00
Martin Storsjö 58ee158be2 pgo-training: Pass ARCHS to the makefile
If ARCHS itself was set by the caller, it would already have been
implicitly passed to the makefile - but if the caller set
TOOLCHAIN_ARCHS instead, that wasn't acted upon by the makefile.

As the shell script already has the logic for initializing this
(in the same fashion as all other shell scripts), just use that
and pass the value on to the makefile.
2025-08-07 13:11:24 +03:00
Martin Storsjö 4ae8f04ed6 pgo-training: Remove the accidental executable bit on the makefile 2025-08-07 13:05:42 +03:00
Martin Storsjö 2e938d2b66 prepare-cross-toolchain-unix: Remove the linux/macOS runtimes
This matches what is done in build-all.sh for the PGO step; this
removes rather large (~50 MB) libraries that mostly are needed
for compiling for the host unix platforms. (On Linux it's needed
if building with profiling, on macOS it's needed for the builtin
functions for platform version availability too.)
2025-08-03 00:21:03 +03:00
Martin Storsjö fd7848ea84 build-llvm: Bump to LLVM 21.1.0 RC 2 2025-07-30 10:38:30 +03:00
Martin Storsjö 45c0dc4112 build-mingw-w64: Bump to the latest version as of Jul 30th 2025-07-30 10:38:07 +03:00
Martin Storsjö 2324d8354f github: Simplify running the msvcrt workflow on push, for testing
Only pick parameters from "inputs" if we were invoked through a
"workflow_dispatch" event.
2025-07-29 22:40:34 +03:00
Martin Storsjö 0681c739aa github: Run tests directly after cross compiling the msvcrt runtimes
This matches what is done for the regular builds; we run (build-only)
tests already with the first cross compiler toolchains, not needing
to wait for the cross compiled toolchains to run on Windows.
2025-07-29 22:39:28 +03:00
Martin Storsjö 67827c9569 github: Switch the condition for inputs vs defaults for test-llvm and test-libcxx
This makes it easier to run these workflows through a push (by
adding an "on:push:" at the start of the files.
2025-07-29 22:38:54 +03:00
Martin Storsjö 848bf53fe0 github: Pass -D__USE_MINGW_ANSI_STDIO=1 for test-llvm on x86
This is required for properly formatting long doubles on x86
with UCRT (which doesn't use the mingw builtin printfs by default).

This fixes running the LLVM testsuite on x86 after commit
9bf7d04c4386daf1ef0acf95782a59855c98474a in llvm-project.
2025-07-29 22:38:25 +03:00
Martin Storsjö 39f4179af6 build-llvm: Fix using a relative PREFIX path
This fixes a regression from
6d31f358d8, which shows up as
"./strip-llvm.sh: 129: cd: can't cd to share" when running
build-all.sh, fixing
https://github.com/mstorsjo/llvm-mingw/issues/509, and the root
issue behind https://github.com/mstorsjo/llvm-mingw/pull/507.
2025-07-29 22:25:29 +03:00
Martin Storsjö 0d59f0f827 github: Skip the stage1 artifacts when making a release
The linux stage1 artifacts were uploaded, while the macos ones
weren't (as they didn't match the *-toolchain glob pattern).
2025-07-19 11:21:19 +03:00
Martin Storsjö 056dd7329b run-tests: Skip testing arm64ec in msvcrt builds
It is currently known to fail to link some tests.
2025-07-18 19:47:28 +03:00
Martin Storsjö 087c11746a dockerfile: Skip the openmp tests for arm64ec
This was missed in 4700b4f7bb.
2025-07-18 19:47:28 +03:00
Martin Storsjö 09c5a4e822 github: Fix the use of dawidd6/action-download-artifact in msvcrt.yml
The older version doesn't support the ref parameter.
2025-07-18 19:47:04 +03:00
Martin Storsjö 4a6030a850 run-tests: Execute arm64ec tests on Windows 11 on aarch64 2025-07-17 22:49:10 +03:00
Martin Storsjö 4700b4f7bb test: Skip building the ubsan and openmp tests for arm64ec
Also unset RUN for arm64ec, instead of accidentally inheriting the
earlier value.
2025-07-17 22:49:10 +03:00
Martin Storsjö cb92de78e7 Include arm64ec in the lists of all architectures
Since LLVM 21.x, the upstream support for ARM64EC in LLD and
compiler-rt is complete enough for us to be able to build it.
2025-07-17 22:48:39 +03:00
Martin Storsjö ae0357758c build-llvm: Bump to LLVM 21.1.0 RC 1
Relevant changes include:
- Lots of work for supporting ARM64EC and ARM64X
- LLD now produces more compact string tables in executables (only
  relevant when including debug symbols)
- llvm-rc now supports multiplication/division expressions, like GNU
  windres
- Improved support for armv7 and aarch64 in libunwind (for Itanium
  ABI "forced unwinding", which I'm not aware of being used in
  practice anywhere)
- Made the libunwind, libcxxabi, libcxx and compiler-rt tests pass on
  armv7 and aarch64 mingw
- Made the llvm/clang tests pass on aarch64 mingw
2025-07-17 22:22:24 +03:00
Martin Storsjö 2844cfd336 build-mingw-w64: Bump to the latest version as of Jul 17th 2025-07-17 22:21:45 +03:00
Martin Storsjö f5a90414dd github: Stop running armv7 binaries
The ARM github actions runners now run on Windows 11 10.0.26100,
which no longer support executing armv7 binaries. (Previously they
were running Windows 11 10.0.22631.)
2025-07-16 09:58:18 +03:00
Martin Storsjö aa9406e06a build-all: Fix the error message when specifying two directories without --pgo or --full-pgo 2025-07-13 23:51:19 +03:00
Martin Storsjö a1f6413e5c build-llvm: Bump to LLVM 20.1.8 2025-07-09 19:50:09 +03:00
Martin Storsjö 007b88af19 build-mingw-w64: Bump to the latest version as of Jul 9th 2025-07-09 19:49:47 +03:00
Martin Storsjö 081b68c2bb github: Include the architecture in the linux-asserts artifact name
This should make it clearer what it is.
2025-06-30 14:13:36 +03:00
Martin Storsjö 8e90268bf3 github: Simplify the if: conditions for all chained jobs
As all the other jobs depend on the "prepare" job, it's enough to
keep the condition within the "prepare" job and remove/simplify
the rest.
2025-06-30 14:13:23 +03:00
Martin Storsjö 6cc02cf854 github: Update a comment to refer to the right job 2025-06-30 14:12:02 +03:00
Martin Storsjö a41085f7d9 build-llvm: Set CMAKE_STRIP when cross compiling with Clang
If using Clang from /usr/bin, this makes it clear to CMake to use
$HOST-strip, as it otherwise may pick plain /usr/bin/strip, which
may not be able to strip the cross built executables.
2025-06-30 14:12:02 +03:00
Martin Storsjö 9d5860a02d build-llvm: Set CMAKE_ASM_COMPILER_TARGET when cross compiling with Clang
CMAKE_ASM_COMPILER is set implicitly from CMAKE_C_COMPILER,
but the target flags aren't implied in the same way.

This fixes cross compiling LLVM with clang for an x86_64 target.

This wasn't an issue when cross compiling LLVM with clang for an
aarch64 target, because the BLAKE3 aarch64 SIMD is in the form
of a C file (with intrinsics), not a standalone .S file.
2025-06-30 14:12:02 +03:00
Martin Storsjö ee2239a2b8 build-llvm: Unset CLEAN in build-llvm for --macos-native-tools
In this case, we want to incrementally build the remaining tools,
not do a full build. In case someone runs build-all.sh with CLEAN
set, the --macos-native-tools invocation of build-llvm.sh shouldn't
wipe the build directory.
2025-06-30 00:18:22 +03:00
Martin Storsjö 6a2d235ffd Revert "build-lldb-mi: Disallow detecting LLVM outside of $LLVM_DIR"
This reverts commit 9e628b0f2d.

If LLVM was built with --disable-dylib, then the individual
LLVM libraries may expose a dependency on zlib. By restricting
the lldb-mi build to detect dependencies outside of $LLVM_DIR,
the build of lldb-mi fails to find zlib, making it impossible to
find all the necessary dependencies, ending up with errors like this:

    CMake Error at llvm-mingw/llvm-project/llvm/build-asserts/lib/cmake/llvm/LLVMExports.cmake:55 (set_target_properties):
      The link interface of target "LLVMSupport" contains:

        ZLIB::ZLIB

      but the target was not found.  Possible reasons include:

        * There is a typo in the target name.
        * A find_package call is missing for an IMPORTED target.
        * An ALIAS target is missing.

Revert this change for now, to allow building lldb-mi against
a non-dylib build of LLVM.
2025-06-26 13:41:05 +03:00
Martin Storsjö 04bc2bc1c5 github: Build the whole multiplatform docker image with Dockerfile.toolchain
This makes the docker image contain a PGO optimized compiler,
without needing to redo all of the PGO build stages in docker.

This reverts commit 8f42112719,
and fixes building the multiplatform image in a simpler way.

Instead of doing two separate builds, with separate Dockerfiles,
just do one multiplatform build of one Dockerfile, which
docker runs serially, for each one of the included architectures,
just packaging the prebuilt toolchains in the docker image.
2025-06-25 11:51:07 +03:00
Martin Storsjö ca34a15634 github: Build the msvcrt toolchains with LTO and PGO 2025-06-25 11:51:07 +03:00
Martin Storsjö 80fad73644 github: Build with PGO
Using Frontend instrumentation rather than IR. This gives less
total speedup, but makes the profile much more usable for cross
other build targets.

Build the full Linux toolchain in stage1; this avoids needing to
rebuild runtimes for doing the profiling in stage2, and avoids
needing to wait for stage3 to complete before cross building
for Windows.
2025-06-25 11:51:07 +03:00
Martin Storsjö 05625eaf62 github: Build the linux full toolchain already in stage1
This makes a cross compiler available before doing the full second
stage.
2025-06-25 11:51:07 +03:00
Martin Storsjö bc8eea6fc0 github: Build all second stage toolchains with thinlto 2025-06-25 11:51:07 +03:00
Martin Storsjö eb3cb9c31d github: Build macOS and Linux toolchains with a stage1 Clang 2025-06-25 11:51:07 +03:00
Martin Storsjö 7dcff8f89f build-all: Add support for PGO builds
Allow both doing one single stage at a time, or driving the
full build with three stages all in one command.
2025-06-25 11:51:07 +03:00
Martin Storsjö d3c7a1b06f build-all: Add an --llvm-only option 2025-06-25 11:51:07 +03:00
Martin Storsjö 37daec78ac build-all: Allow passing more options through to build-llvm.sh 2025-06-25 11:51:07 +03:00
Martin Storsjö c6001d3056 build-cross-tools: Allow passing LTO and PGO options to build-llvm.sh 2025-06-25 11:51:06 +03:00
Martin Storsjö 9e628b0f2d build-lldb-mi: Disallow detecting LLVM outside of $LLVM_DIR
Do the same as when cross compiling; disallow detecting dependencies
outside of the given CMAKE_FIND_ROOT_PATH. Don't export LLVM_DIR
as we no longer need to pass it implicitly that way.

This makes the errors clearer, if LLVM isn't found where expected,
instead of misdetecting it from a different installation of LLVM
in the system.

If lldb-mi would try to find other optional dependencies, they would
no longer be found; this was already the case when cross compiling
though.
2025-06-25 11:51:06 +03:00
Martin Storsjö d69ccd33a7 build-lldb-mi: Fix finding the build directory
As build-llvm now can create a larger variety of build dir names,
enumerating all possible suffixes becomes problematic (especially
as they don't necessarily appear in one canonical order).

Instead, iterate over potential matches. If cross compiling, it
is easy as we can require the directory to contain the expected
suffix. If not cross compiling, we have no explicit suffix to look
for, but we can check that the directory doesn't match common
cross compilation triples.
2025-06-25 11:51:06 +03:00