Commit Graph
529 Commits
Author SHA1 Message Date
Martin Storsjö 8bf82393b1 build-mingw-w64: Update to the latest version
This contains new declarations that the latest version of llvm
requires, when building llvm for windows on aarch64.

Notable changes are:
- Fixed compatibility fallbacks for running libc++ on Windows 7
- Improved handling of multibyte functions with UCRT
- Fixed installing mingw-w64-crt and widl in paths that contain spaces
- Fixed sscanf with double output on arm/aarch64
- Improved math functions, in particular for arm/aarch64
2019-12-19 22:38:47 +02:00
Martin Storsjö cd8e71d0e7 Make it possible to override the default win32 target version and mingw-w64 via environment variables
This makes it easier to change the default win32 target when using
build-all.sh, and also makes it possible to change the version of
mingw-w64 that is used, which wasn't possible at all before.
2019-12-19 22:21:02 +02:00
Jacek Caban f862f91c1c Allow overriding default llvm and msvcrt versions.
build-mingw-w64.sh already provides --with-default-msvcrt option, but
this makes it more convenient to use build-all.sh with non-default
msvcrt config.
2019-12-19 22:18:22 +02:00
Martin Storsjö f7fd04dd42 run-tests: Print a message if all tests ran successfully 2019-12-18 11:32:31 +02:00
Martin Storsjö 348d1f18df test: Remove an unused, leftover variable 2019-12-18 11:27:50 +02:00
Martin Storsjö 5938c12227 readme: Recommend installing python3 instead of python2
Nowadays msys2 provides python 3.8 in the python3 package, so the
previous bug regarding running subprocesses in python3 is fixed.
2019-12-09 23:40:39 +02:00
Martin Storsjö bcfb883687 build-compiler-rt.sh: Don't make the i386-w64-mingw32 symlink if not building i686 2019-12-03 23:31:08 +02:00
Martin Storsjö af1099048a Fix building only certain architectures when building on windows
On windows, we rename clang.exe to clang-$MAJOR.exe, and later
install clang.exe as a wrapper for the default architecture. But
if only building certain architectures, and the host architecture
isn't one of them, we shouldn't install any unprefixed clang.exe at
all.
2019-12-03 23:31:01 +02:00
Martin Storsjö 64d39428b6 Quote uses of $PREFIX in the build script, to improve support for installing into a path that contains spaces
For build-mingw-w64.sh to succeed when installing to such a path,
the mingw-w64 version has to be updated to the latest git master.

build-mingw-w64-libraries.sh still fails in this case, as libtool
fails to properly quote $LD in a test for whether the linker is GNU ld.
2019-12-03 21:49:53 +02:00
Martin Storsjö ee555b9013 Fix building when $PATH contains spaces 2019-11-30 10:37:19 +02:00
Martin Storsjö 4a4cc16393 build-libcxx: Stop manually linking to -lpsapi
Since the default _WIN32_WINNT now is for Windows 7, psapi.h
redirects to PSAPI version 2, which is available in kernel32.dll
with a "K32" prefix on the function names (K32EnumProcessModules).
2019-11-26 12:17:51 +02:00
Martin Storsjö 3d13aefc70 Bump the default _WIN32_WINNT to 0x0601, i.e. Windows 7
Since the C++ libraries require Windows 7, there's little point in
keeping the default target for C at Vista.
2019-11-26 12:16:38 +02:00
Martin Storsjö ce7d3ec874 windres-wrapper: Short options joined with the option value doesn't use an equals character
This makes options like "-iinput.rc -ooutput.o" work properly.
2019-11-21 08:10:52 +02:00
Martin Storsjö f1168d3016 Don't rely on EXEEXT as an env variable, infer it from --host instead 2019-11-13 12:59:53 +02:00
Martin Storsjö 577400a5f7 Pass $HOST to individual script with a --host parameter
This avoids ambiguity on distributions (such as openSUSE) where the
HOST environment variable already is set, to the hostname.
2019-11-13 12:55:39 +02:00
Martin Storsjö b5ae2b5cc7 Allow overriding the default crt in dockerfiles with --build-arg DEFAULT_CRT=msvcrt 2019-11-13 12:39:30 +02:00
Martin Storsjö dcf34a9a35 readme: The minimum Windows version that libc++ runs on is Windows 7
It uses TryAcquireSRWLockExclusive which didn't exist until Windows 7,
unlike the rest of the SRWLock APIs that appeared in Vista.
2019-10-28 13:49:24 +02:00
Martin Storsjö 255286eb72 build-llvm: Fix only checking out the source
This is used if calling build-compiler-rt.sh or build-libcxx.sh with
the environment variable SYNC set.
2019-10-23 13:21:56 +00:00
Martin Storsjö c7821ce27d build-llvm, strip-llvm: Include llvm-symbolizer
This is necessary for getting addr2line included.
2019-10-23 13:21:56 +00:00
Martin Storsjö 9f8e5cebd6 windres-wrapper: Implement the -F/--target flag like GNU windres
The values passed to this parameter aren't arch/vendor/os triples, but
bfd target names.
2019-10-08 09:24:50 +03:00
Martin Storsjö 2d1aeef4ac build-mingw-w64-libraries: Add an explicit --libdir parameter
On some distributions, e.g. openSUSE, the libraries for 64 bit
architectures end up stored in <target>/<triplet>/lib64 instead of
plain "lib".

(This is caused by their use of a site script for configure, which
overrides libdir when the host triplet matches 64 bit architecture
names - even if it's a triple for cross compilation for a totally
different OS. This only affects the libraries and not mingw-w64-crt,
as the crt's makefiles manually set the output directory name.)

This fixes https://github.com/mstorsjo/llvm-mingw/issues/51.
2019-09-26 16:25:08 +03:00
Martin Storsjö ef9af0d3ad build-llvm: Update to the 9.0.0 release 2019-09-20 11:27:27 +03:00
Martin Storsjö c2f25a93ad build-llvm: Remove a redundant -b parameter to git clone 2019-09-20 11:27:27 +03:00
Martin Storsjö ecb0824234 build-mingw-w64: Update the mingw-w64 version
This version contains fixes for wchar printf functions in how they
handle %s/%S formats.

This isn't the absolute latest version, as there's other commits further
ahead adding support for _FORTIFY_SOURCE (which has little to no effect
with Clang as it doesn't evaluate __builtin_object_size in inlined
contexts), and the commits for _FORTIFY_SOURCE caused a few regressions,
and things might still be a bit in flux (even though the current master
seems to work fine).
2019-09-20 11:27:27 +03:00
Martin Storsjö cb38ada41c Add llvm-project to the .dockerignore file 2019-09-20 11:27:27 +03:00
Martin Storsjö 3024fbc50f build-llvm: Set LLVM_HOST_TRIPLE when cross compiling
This makes the bare executables know what their default triple
is.
2019-09-17 13:59:59 +03:00
Martin Storsjö d31dc46137 build-llvm: Use symlinks in the llvm/tools directory instead of LLVM_ENABLE_PROJECTS
This makes cmake use relative paths to all source files, allowing ccache
to reuse compilation results from different source trees in different
directories.

Keep using LLVM_ENABLE_PROJECTS on msys, where symlinks aren't supported.
2019-09-12 14:32:14 +03:00
Martin Storsjö 0f9d9f1986 Check out llvm sources using the new llvm git monorepo
This updates compiler-rt, libunwind, libcxxabi and libcxx to a newer
version, matching the compiler.

This will be the official, canonical repo in the future.

For the non-dev Dockerfile build, this means that all the llvm based
subprojects need to be built in one RUN to avoid storing the llvm
checkout in the docker layers.
2019-09-12 13:14:19 +03:00
Martin Storsjö 51da9d154c readme: Fix a typo and clarify a sentence 2019-08-28 13:25:56 +03:00
Martin Storsjö cf76ac237b readme: Clarify the known issue with libtool and linker script 2019-08-14 12:45:41 +03:00
Martin Storsjö 7d904d0df8 readme: Mention the common error when the compiler_rt builtins have been omitted by libtool 2019-08-13 12:55:59 +03:00
Martin Storsjö d4a27dfd80 Stop manually setting CC/AR/RANLIB when building autotools projects
Since we have triplet prefixed wrappers for all tools, and wrappers
named <triplet>-gcc/g++ as well, we don't need to manually provide
them.
2019-08-13 12:51:42 +03:00
Martin Storsjö 6f93f0d618 readme: Include some more known issues wrt lld, linker script and libtool 2019-08-12 13:14:27 +03:00
Martin Storsjö 293f2af9e7 readme: Add more subheadings 2019-08-12 12:55:14 +03:00
Martin Storsjö 89e0891d8f readme: Remove the note about only being tested on macos and linux
It has recently been tested on msys2 as well, with few changes since
the last time it was tested.
2019-08-12 12:54:18 +03:00
Martin Storsjö 00edbd4ec3 crt-test: Test negative zero in a few places 2019-08-01 22:30:45 +03:00
Martin Storsjö f07f6b71fe crt-test: Add tests for many more math functions
This should complete the coverage of all the C99 math functions.
2019-08-01 22:30:45 +03:00
Martin Storsjö e9da355304 crt-test: Test the copysign function on any platform, not only on windows 2019-08-01 22:30:45 +03:00
Martin Storsjö 7347d257ed crt-test: More thoroughly test some math functions
Also check that NaN is propagated properly where possible.
2019-08-01 22:30:45 +03:00
Martin Storsjö 52e7fff7a6 crt-test: Reduce code duplication in tests for math functions 2019-08-01 22:30:45 +03:00
Martin Storsjö 8eea910f47 crt-test: Extend existing tests for NAN to check that input NANs are preserved
Don't check the full NAN in itself, but check that the sign bit appears
correctly.
2019-08-01 22:30:45 +03:00
Martin Storsjö 2e6fa5bca7 crt-test: Wrap parameter expansion in TEST macros in parentheses 2019-08-01 22:30:45 +03:00
Martin Storsjö 70f074b599 crt-test: Restore the rounding direction after testing it 2019-08-01 22:30:45 +03:00
Martin Storsjö da4562be1b Update to the latest version of mingw-w64
This version includes fixes for a lot of c99 math functions.
2019-08-01 22:30:32 +03:00
Martin Storsjö 315e1ab683 Install the needed packages in docker images with --no-install-recommends
This avoids installing a few unneeded ones, but requires manually
picking ca-certificates instead.
2019-08-01 22:30:32 +03:00
Martin Storsjö 4670446157 Install llvm-addr2line 2019-07-01 22:30:24 +03:00
Martin Storsjö a61af72ca9 Write some sort of msys2 build instructions 2019-06-28 23:31:17 +03:00
Martin Storsjö 60609f0716 Reorder the readme, mention prebuilt toolchains first 2019-06-28 00:15:44 +03:00
Martin Storsjö 0933a30500 Avoid printing an error when rerunning build-compiler-rt.sh on msys2 2019-06-28 00:14:32 +03:00
Martin Storsjö 5f70dd1a1f Avoid errors when recreating an existing symlink on msys2
In this environment, symlinks don't exist but are made as copies.
In such cases, the -n option to ln doesn't work for making this
a no-op.

Alternatively, we could append "|| true", which would print an
error but continue.
2019-06-28 00:13:24 +03:00