Commit Graph
901 Commits
Author SHA1 Message Date
Martin Storsjö 3f72fcbabf strip-llvm: Strip out some darwin specific files 2023-04-20 14:00:24 +03:00
Martin Storsjö 0b3fc13a42 github: Add a job for running compiler-rt tests 2023-04-20 10:40:35 +03:00
Martin Storsjö 5d778657c2 github: Include libcxxabi and libunwind tests in the test-libcxx job too
These test suites now pass in the latest git main.

This target isn't run automatically anywhere, but in case the
target is enabled to run the tests, include the libcxxabi and libunwind
test suites too.
2023-04-20 10:36:19 +03:00
Martin Storsjö 0ab70b67d8 github: Remove ignores for failing ffmpeg tests
These no longer fail; they were fixed in ffmpeg in commit
76b33704b628248d77ed61cbef9ecd9430a4b6c5 in July 2022; we currently
test a pinned 6.0 release, where this fix is included.
2023-04-19 23:18:17 +03:00
Martin Storsjö b495c39a6d github: Use less specific filenames in the ffmpeg test jobs
This reduces the differences if using a proper release tarball
instead of an artifact from an earlier step (if testing parts of
the workflow by modifying it).
2023-04-19 23:18:17 +03:00
Martin Storsjö 5264f99ade github: Stop setting PYTHON_EXECUTABLE in the openmp test job
This shouldn't be necessary any longer since commit
40079637569f999015eaf3f7e137a63b2c8ade92 in llvm-project (in
December 2022).
2023-04-11 11:06:43 +03:00
Martin Storsjö 8189893403 github: Update a comment about the openmp test job
We're now on 16.x, and the tests do pass, but we still skip running
these tests on regular pushes - we only do them for the scheduled
nightly builds.
2023-04-11 11:06:43 +03:00
Martin Storsjö c1d6c39d33 Revert "github: Disable building lldb-mi in the scheduled cross builds"
This reverts commit 1b216b6fdf.

It's now compatible with current llvm versions.
2023-04-11 00:08:38 +03:00
Martin Storsjö d347b2022c Revert "build-lldb-mi: Skip building lldb-mi, as it's incompatible with current llvm versions"
This reverts commit 49950ae6be.

It's now compatible with current llvm versions.
2023-04-11 00:08:27 +03:00
Martin Storsjö dc2c2e0727 build-lldb-mi: Bump to a version that builds in C++17 mode
This is compatible with LLVM 16 and git main.
2023-04-10 11:57:08 +03:00
Martin Storsjö 0b68b891e0 build-all: Remove stray/leftover help for an unsupported option
This was added in 050b4ef701, but this
option was never supported to be passed on to build-llvm.sh from
here.

Additionally, this option was removed entirely from build-llvm.sh
in bd190c04c3.
2023-03-28 11:38:53 +03:00
Martin Storsjö 51abc9117f build-llvm: Enable LLD_DEFAULT_LD_LLD_IS_MINGW for builds on Windows
This makes sure we get the right behaviour (and output from "--help")
if ld.lld.exe is called directly without a wrapper setting the -m
parameter.
2023-03-22 23:32:53 +02:00
Martin Storsjö 8ee28e2938 build-llvm: Enable the custom defaults for Clang when building natively on MSYS2
Normally our releases are cross-built from Linux, but we also
support building the toolchain in MSYS2. Enable the custom defaults
when building the toolchain in MSYS2 too.
2023-03-22 23:32:53 +02:00
Martin Storsjö 4a579e1562 build-llvm: Remove an unused variable
This became unused in 8536b740e3.
2023-03-22 23:32:53 +02:00
Martin Storsjö d5c9fb3e04 build-mingw-w64: Pass --disable-dependency-tracking when configuring mingw-w64-crt on MSYS2
Configuring the mingw-w64-crt build takes a really long time on MSYS2;
the generating Makefile phase takes easily 4-5 minutes, when the rest
of configure runs in a matter of seconds. By passing
--disable-dependency-tracking, the whole configure for mingw-w64-crt
takes 11-14 seconds where it previously took many mnutes.

This comes with the drawback that these build directories aren't
suitable for incremental development (unless manual care is taken
to rebuild all necessary files), but these builds are mostly done
for non-interactive building.

Thanks to Jeremy Drake for realizing this optimization opportunity,
and LIU Hao for making me aware of it.
2023-03-21 12:07:02 +02:00
Martin Storsjö 1ca5ecf22f build-llvm: Update to the final 16.0.0 release
Notable changes for mingw users are:
- Support demangling C++ symbols on i386 in LLVM backtraces
- Don't report fatal errors when the output pipe is closed on Windows
- Ignore file access times on Windows when comparing whether files are
  equivalent
2023-03-20 12:23:47 +02:00
Martin Storsjö 2994becbbe build-mingw-w64: Bump to the current version fron March 20th
Notable changes:
- Support for _FORTIFY_SOURCE=3
- Fortification of [v]s[n]printf for UCRT
- Add the __gets_chk function, for fortification of the (highly
  deprecated) gets function
- Fixed the inconsistent signature of the wcstok function on UCRT
  in string.h
- Allow opting out from SEH based setjmp/longjmp by defining
  __USE_MINGW_SETJMP_NON_SEH before including setjmp.h

And as usual, lots of other minor updates.
2023-03-20 12:23:47 +02:00
Martin Storsjö 1022231482 wrappers: Try to resolve short form 8.3 file names into long form
This allows the wrappers to invoke the right tool with the right
options, even when the wrapper was invoked with an obfuscated
short form file name.

This happens e.g. when CMake/Ninja invokes the tools from a path
that contains spaces.
2023-03-12 00:08:13 +02:00
Martin Storsjö b592dd734e tests: Consistently use <triple>-gcc instead of <triple>-clang for cross compilation
While <triple>-clang is more specific, using <triple>-gcc allows
testing GCC based toolchains (somewhat) with the same scripts/makefiles
too.
2023-03-11 23:59:19 +02:00
Martin Storsjö 3844ad9a95 build-python: Use $HOST-gcc instead of $HOST-clang for cross compilation
While $HOST-clang is more specific for the use in llvm-mingw,
using the form $HOST-gcc would allow using the same script in
GCC based environments too.
2023-03-11 23:53:10 +02:00
Martin Storsjö 75dc6fd314 strip-llvm: Strip out the new amdgpu-arch and nvptx-arch executables
These weren't present in LLVM 15.x.
2023-03-11 23:29:12 +02:00
Martin Storsjö 9e612d76f9 github: Stop setting LIBCXX_TARGET_INFO for the libcxx test setup
This variable is no longer needed/used.
2023-03-10 20:05:47 +02:00
Martin Storsjö 04ec21bea7 github: Run tests with the ffmpeg 6.0 release instead of 5.1.2 2023-03-09 13:54:10 +02:00
Martin Storsjö 22790a89f4 github: Don't run builds for tags, only pushes to branches
There's no need to rerun all the builds when pushing a tag.
2023-02-10 23:56:30 +02:00
Alvin Wong aca6871c26 Add a note in readme for Control Flow Guard 2023-02-10 23:55:51 +02:00
Martin Storsjö 8536b740e3 build-llvm: Use the new LLVM_NATIVE_TOOL_DIR option for pointing out preexisting native tools
This allows setting one variable pointing at all tools, instead
of setting multiple individual options for all tools.
2023-01-29 01:13:48 +02:00
Martin Storsjö c49460aa86 github: Add setup for running libcxx's tests on the built toolchain
Keep this disabled by default (since it takes a fair amount of time
and has good test coverage upstream), but including it in disabled
form so that it's easy to enable temporarily for testing occasionally.

Libcxx does test the mingw configuration in their own CI (with an older
pinned release of the compiler), so this is mostly redundant, and
primarily relevant for testing that the very latest compiler (and
python setup) works for the tests.
2023-01-29 01:13:39 +02:00
Martin Storsjö dfd4c31f2e test: Simplify handling of OpenMP
It is available on all architectures by default now. Keep the
HAVE_OPENMP conditional within the test makefile to allow custom
testing without having it available.
2023-01-29 01:09:17 +02:00
Martin Storsjö 6b8725333a build-openmp: Build the OpenMP library on all architectures
Since a356782426f5bf54a00570e1f925345e5fda7b2e in llvm-project,
OpenMP can be built for mingw/aarch64, since
fb947c358661b3bd3d5e1fa776ec74cc0f308854 it should work correctly
in all currently tested cases, and since
97958c9bb83cec44b6ce13e732b53de0171a5d43 it can be built for
mingw/armv7.
2023-01-29 01:09:17 +02:00
Martin Storsjö c31664aba4 Dockerfile.dev: Merge the ssp tests up with an earlier block 2023-01-29 01:09:17 +02:00
Martin Storsjö fb67e16120 build-all: Stop requiring curl to be available
Curl (or wget) isn't required for fetching libssp any longer,
so don't require it while running build-all.sh.

(It's still required by build-cross-tools.sh, for build-make.sh
though.)
2023-01-29 01:09:17 +02:00
Martin Storsjö 4ba7adbb90 run-tests: Check for the error messages from ssp routines
Since using the ssp routines from mingw-w64 instead of those from
GCC's libssp, these messages are included in the piped output of
the process, so we can check for the right messages.
2023-01-29 01:09:17 +02:00
Martin Storsjö abc36e1f7c run-tests: Stop trying to copy libssp-0.dll
We no longer build that DLL.
2023-01-29 01:09:17 +02:00
Martin Storsjö 4ee7cc97de build-libssp: Stop building the real libssp from GCC
As mingw-w64 now provides these routines, we no longer need to build
the original library from GCC.

As building with -fstack-protector-strong still links with -lssp
(and -lssp_nonshared), we still need to provide libraries with these
names, but they can be empty dummy libraries.
2023-01-29 01:09:17 +02:00
Martin Storsjö ef9806fc0a run-tests: Stop explicitly linking against -lssp for the fortification test
Since libmingwex.a provides these routines now, we don't need to
specify -lssp manually.
2023-01-29 01:09:17 +02:00
Martin Storsjö 36f8c1359e Switch the default to enabling CFGuard in all individual build-* scripts 2023-01-29 01:09:17 +02:00
Alvin Wong ce554e93c5 Revert "Enable CFGuard for scheduled builds which uses latest llvm and mingw-w64"
This reverts commit e76e935c7d.

This is no longer necessary, since the default currently is to
enable CFGuard.
2023-01-29 01:09:17 +02:00
Alvin Wong 9d352374f2 Enable CFGuard by default 2023-01-29 01:09:17 +02:00
Martin Storsjö d07bb8889b build-python: Bump to Python 3.10.9 2023-01-29 01:09:17 +02:00
Martin Storsjö 26ae975a6a build-mingw-w64: Bump to the current version from January 28th
Notable changes:
- Support for CFGuard
- SSP routines are bundled as part of libmingwex, rendering the separate
  libssp from GCC unnecessary

Plus lots and lots of various other minor fixes and improvements.
2023-01-29 01:09:17 +02:00
Martin Storsjö e06702461f build-llvm: Update to llvm 16.0.0 RC1
Notable changes are:
- Emit -exclude-symbols: directives for hidden symbol visibility (supported
  by LLD 15 and binutils ld 2.40). This allows reducing the number of
  exported symbols in e.g. libLLVM-*.dll.
- Support for CFGuard on mingw, thanks to Alvin Wong!
- LLD now picks up libraries named <name>.lib when linking with -l<name>,
  even if -static was specified
- Fixed SEH unwind info on AArch64 if using the AArch64 feature
  PAC (Pointer Authentication Code) - previously, unwinding would fail if
  running on a system that actually does use the feature. (The consistency
  of AArch64 SEH unwind info was also improved for other cases.)
- Fixed stack alignment on AArch64, for stack frames large enough to
  require stack probing
- Fixed llvm-objcopy corrupting some cases of object files with empty sections
- Improvements to LLDB, where it now uses the regular symbol list of DLLs
  (including non-exported symbols)
- OpenMP now can be built and works on armv7 and aarch64 (in mingw
  configurations)

Notable for simplifying how to cross compile LLVM itself:
- The preexisting build machine tools can be specified with one single option
  LLVM_NATIVE_TOOL_DIR instead of passing a number of variables like
  LLVM_TABLEGEN, CLANG_TABLEGEN etc.
2023-01-29 01:08:43 +02:00
Martin Storsjö 49950ae6be build-lldb-mi: Skip building lldb-mi, as it's incompatible with current llvm versions
Since the switch to building in C++17 mode in llvm 16, lldb-mi is
incompatible, until lldb-mi itself switches to building with C++17 too.

A fix has been suggested upstream in
https://github.com/lldb-tools/lldb-mi/pull/102, but there hasn't
been any action on it so far.
2023-01-29 01:06:10 +02:00
Martin Storsjö 241a1cd148 test: Prepare the test scripts for testing native Windows tools via WSL
Use the TOOLEXT variable in run-tests.sh in the same way as in the
Makefile. The Makefile sets this variable automatically if invoked
by mingw32-make, but if running run-tests.sh in WSL with native
Windows compilers, then we need to set TOOLEXT manually when calling
run-tests.sh.

Allow skipping the cfguard failure tests when run in such a
configuration, since Linux make in WSL can't easily run cmd.exe
like in MSYS2.
2023-01-21 23:48:24 +02:00
Martin Storsjö 9d96e5745f Include the llvm-size tool like other binutils-like tools
This was requested in
https://github.com/mstorsjo/llvm-mingw/issues/320.
2023-01-12 14:11:03 +02:00
Martin Storsjö bd190c04c3 build-llvm: Remove the --symlink-projects option
This option was mostly relevant for making it possible to share
ccache between builds in different directories, due to specific
logic in CMake's Ninja generator, which used relative paths for
sources as long as they were below the main source directory
(llvm-project/llvm). This option wasn't usable on Windows.

Since CMake 3.21.0, this option no longer worked for the intended
purpose - that version of CMake changed the Ninja generator to
always use absolute paths to sources, for consistency with other
generators and to simplify things. (See commit
c564a3e3fff52ef811291c5ba8fb07a5a1b47f97 in CMake's git history.)

It is still possible to achieve ccache sharing across build
directories anyway, by setting the ccache option CCACHE_BASEDIR,
which makes ccache rewrite absolute paths to relative ones within
that tree, and by setting the LLVM CMake option
LLVM_USE_RELATIVE_PATHS_IN_FILES=ON, which adds -ffile-prefix-map
options to the compiler, to remap source paths as they are exposed
in the generated code.

(Strictly speaking, LLVM_USE_RELATIVE_PATHS_IN_FILES is only needed
if debug info is enabled. On its own, without CCACHE_BASEDIR, that
option produces compiler output that is identical across build
directories - but the absolute paths end up in the preprocessor output
in source file/line comments, which makes ccache fail to reuse the cache.)
2023-01-10 12:01:06 +02:00
Martin Storsjö 04c623fe8b crt-test: Improve the check for testing the >64 bit range for strtold
The previous condition failed to identify that macOS on aarch64
also has long double equal to regular double.
2022-12-01 12:13:20 +02:00
Martin Storsjö 21c279aab5 crt-test: Skip the NAN preservation tests on platforms other than mingw
This part of the tests does pass on glibc on x86_64 and on MSVC,
but fails on macOS (for some functions) and on glibc on aarch64
(for one function).

This is a somewhat overly pedantic test, but is useful for checking
the NAN preservation behaviour when modifying implementations.

Also print the sign bit explicitly - not all printf implementations
distinguish between NAN and -NAN when printed.
2022-12-01 12:07:32 +02:00
Martin Storsjö 6a37ec900b github: Test building and running the OpenMP tests on Windows
These tests should pass with the latest version from git (but
don't pass with the current pinned 15.0.0 version).
2022-11-29 22:40:47 +02:00
Martin Storsjö 01597c1d72 github: Include the version file in the cross-built toolchains too 2022-11-14 00:26:44 +02:00
Martin Storsjö a5a6488198 github: Test a known-good version of ffmpeg
The latest version in git might have some tests failing occasionally
(like it does currently).
2022-11-07 23:10:21 +02:00