Martin Storsjö
5f56f7694b
Display the output filename after packaging the cross built toolchain
2019-01-24 13:25:16 +02:00
Martin Storsjö
56506a5c6e
Avoid warnings when building libcxxabi due to redefining _LIBCPP_BUILDING_LIBRARY
...
Some libcxxabi source files define _LIBCPP_BUILDING_LIBRARY themselves.
A "#define FOO" in a file defines it to "", while "-DFOO" on the command
line defines it to "1". Define it on the command line using "-DFOO=" to
make it match the #define within the source files.
2019-01-24 11:12:17 +02:00
Martin Storsjö
a0d10c51cc
Build libunwind with -Wno-dll-attribute-on-redeclaration
...
libunwind doesn't have the dllexport attributes on the original
declarations of functions, and clang normally warns about this.
2019-01-24 11:12:09 +02:00
Martin Storsjö
371f002680
Revert "Suppress compiler warnings in libunwind/libcxxabi if llvm cmake files are unavailable"
...
This reverts commit 92f301f775 .
With the latest versions of libunwind and libcxxabi, the -w option
for suppressing compiler warnings isn't added any longer when building
with the llvm cmake files available.
2019-01-24 11:11:40 +02:00
Martin Storsjö
bc4dde7cd1
Update libunwind and libcxxabi to the latest versions
...
These versions no longer disable warnings when llvm cmake files
are available, and have got a lot of warnings silenced within the
code.
2019-01-24 11:11:36 +02:00
Martin Storsjö
62b208aee2
Use llvm-objcopy/llvm-strip instead of a shell script wrapper and binutils
2019-01-24 10:58:20 +02:00
Martin Storsjö
78bade5cf1
Build and install llvm-objcopy and llvm-strip
2019-01-24 10:58:20 +02:00
Martin Storsjö
c013ab7548
Update llvm/clang/lld to the latest version
...
In this version, llvm-objcopy has gained support for operating on
COFF object files and executables.
2019-01-24 10:58:20 +02:00
Martin Storsjö
add8d6ee31
Update mingw-w64 to the latest version
...
This fixes issues with the _xgetbv builtin in latest trunk versions
of clang.
2019-01-24 10:58:20 +02:00
Martin Storsjö
da00a0662e
Update libunwind to the latest version
...
This version makes libunwind actually make the SjLj context properly
thread local.
2019-01-18 22:39:26 +02:00
Martin Storsjö
f43d7825e5
Remove the new OptRemarks.dll when stripping the llvm installation
2019-01-04 01:30:26 +02:00
Martin Storsjö
6d9eb8296f
Update llvm/clang/lld
...
This implements the .arch_extension directive for aarch64, and fixes a
regression in the C++ ABI in the previous clang update.
2019-01-03 09:04:43 +02:00
Martin Storsjö
5be98a5cd6
Ignore *.tar.xz and *.zip for docker builds
2019-01-03 09:04:43 +02:00
Martin Storsjö
b9eb66bc1f
Set LIBCXX_INCLUDE_TESTS=FALSE when building libcxx
...
The DLL build fails since we stopped setting LIBCXX_ABI_UNSTABLE=TRUE,
if the tests are enabled (which they are if building against a
non-stripped llvm installation).
2018-12-21 09:42:38 +02:00
Martin Storsjö
585c767ee4
Use llvm-ar with the flag 'L' instead of a helper MRI script for merging archives
2018-12-20 12:11:10 +02:00
Martin Storsjö
52fc6c5c06
Update libunwind to the latest version
...
This version supports SEH unwinding on aarch64.
2018-12-20 12:10:15 +02:00
Martin Storsjö
5004db0de6
Update mingw-w64 to the latest version
...
This fixes symbol availability of __C_specific_handler for
use of SEH on arm64.
2018-12-20 12:10:15 +02:00
Martin Storsjö
04beed38bc
Update llvm/clang/lld
...
This version supports SEH for arm64, fixes certain cases of dllexport
of C++ classes defined entirely in headers (fixing building Qt in
debug mode), and fixes a compiler bug (regression since the end of
August 2018) when compiling glslang (as part of VLC) for armv7.
2018-12-20 12:10:15 +02:00
Martin Storsjö
837fee3ce1
Clarify the output of the exception-locale test
2018-12-12 00:07:50 +02:00
Martin Storsjö
1228a03be4
Update libunwind to the latest version, fixing SEH exceptions in certain cases
2018-12-11 13:35:56 +02:00
Martin Storsjö
7e0dbe79bf
Stop building libcxx with LIBCXX_ABI_UNSTABLE=TRUE
...
This didn't seem to actually be necessary, not even in the initial
commit adding support for building a DLL of libcxx. It might have
been necessary at some earlier point while working on building a DLL.
2018-12-06 00:49:25 +02:00
Martin Storsjö
7a86e4ce73
Define _LIBCPP_ABI_UNSTABLE manually when building libcxxabi
...
This is set via a cmake option when building libcxx, but libcxxabi
uses the raw libcxx headers from its include directory before they
are installed.
This fixes cases of inconsistent classes seen while compiling libcxxabi
and libcxx. With potential future patches to clang to adjust how
classes are exported with dllexport, this change is needed to avoid
conflicts.
2018-12-05 13:47:48 +02:00
Martin Storsjö
4d861b67b5
Don't move clang.exe to clang-<major>.exe if clang-<major>.exe already exists
2018-11-30 12:03:09 +02:00
Martin Storsjö
11a83711ad
Check that clang.exe exists before moving it to clang-<major>.exe
2018-11-30 12:03:09 +02:00
Martin Storsjö
32668f336b
Keep clang.exe around if we won't be replacing it with an unprefixed wrapper
2018-11-30 12:03:09 +02:00
Martin Storsjö
e45e9ab98e
Update compiler-rt to a newer version
...
This fixes building sanitizers natively on windows/msys.
2018-11-30 12:03:09 +02:00
Martin Storsjö
1f838437ca
Automatically set EXEEXT in build-mingw-w64.sh and strip-llvm.sh
2018-11-30 12:03:09 +02:00
Martin Storsjö
9e7a6e0afb
Convert msys style paths to windows style in merge-archives.sh
2018-11-30 12:03:09 +02:00
Martin Storsjö
fdd0a116ae
Try to set "MSYS Makefiles" as cmake generator in mingw environments
2018-11-30 12:03:09 +02:00
Martin Storsjö
f9811f258e
Set CMAKE_GENERATOR to the intended generator only, add the -G separately
2018-11-30 12:03:09 +02:00
Martin Storsjö
d294d17053
Create the prefix/triplet/bin directory before installing DLLs in build-libcxx.sh
...
If the triplet directory is wiped and only the build-mingw-w64.sh
step is rerun, the bin subdirectory would be missing, ending up
with a file named "bin", which actually was the libc++ DLL.
2018-11-30 11:37:00 +02:00
Martin Storsjö
53db1c3a4c
Resolve $PREFIX to an absolute path at the start of shell scripts
...
This fixes building/installing into a relative path.
2018-11-23 13:51:05 +02:00
Martin Storsjö
ecdbfaacc3
Only apply .gitignore ignore rules at the top level
2018-11-20 22:51:35 +02:00
Martin Storsjö
ae2a98efba
windres: Ignore the --use-temp-file option
...
This option seems to be used occasionally by projects to work around
various issues with popen in GNU windres.
Our windres wrapper always uses a temp file for the preprocessing
output, so for us the option is a no-op.
2018-11-13 00:35:53 +02:00
Martin Storsjö
99e2fefc9d
Use nproc and sysctl -n hw.cpu for default initializing CORES
...
This avoids having to pass --build-arg CORES=n when building the
docker images.
2018-11-09 22:20:34 +02:00
Martin Storsjö
9367988be7
Mention the fact that binutils can't use the generated import libraries
2018-11-03 14:26:21 +02:00
Martin Storsjö
8002486c84
clang-target-wrapper: Filter the output from "clang -v" on windows
...
Convert paths with backslashes to forward slashes.
libtool tries to parse this output in order to find object files and
libraries that always should be linked in, but libtool can't handle
paths with backslashes (and quotes) which clang currently outputs.
This is a quick and ugly workaround until clang can be made to
output paths with forward slashes on windows, see
https://reviews.llvm.org/D53066 for progress on that matter.
2018-11-02 12:31:41 +02:00
Martin Storsjö
643d9c1645
windres: Fix handling of -D/-U options with a space between the option and the name of the define
2018-10-19 09:23:30 +03:00
Martin Storsjö
af069a9c29
Update to the latest version of mingw-w64
...
This fixes the _isdigit_l function for UCRT, fixing iostream formatting
of numbers in certain cases, in cases e.g. like this:
double test = 1.0 / 3.0;
std::cout << test << std::endl;
2018-10-19 09:15:43 +03:00
Martin Storsjö
a999e54760
Mention prebuilt binaries in the readme
2018-10-17 23:34:13 +03:00
Martin Storsjö
f09fc9d618
Add a script for packaging a release
2018-10-17 23:19:43 +03:00
Martin Storsjö
fc88912646
Mention ubsan in the readme
2018-10-17 22:45:54 +03:00
Martin Storsjö
c9817eca35
Add a testcase for ubsan
2018-10-17 22:45:54 +03:00
Martin Storsjö
6ead0a46b3
Add a known issue about the fact that sanitizers only are supported on x86
2018-10-17 22:45:54 +03:00
Martin Storsjö
c1fe94fcef
Update compiler-rt to the latest version
...
This fixes using ubsan with mingw targets.
2018-10-17 22:45:54 +03:00
Martin Storsjö
2244b6cdfa
Update llvm/clang/lld to a newer version
...
This makes the help output from llvm-nm contain keywords that libtool
may look for, makes combined compilation and linking with -flto in
one command work, fixes a bug with alignment of locally imported
symbols on arm64, allows using linker directives for specifying
default libraries to link, and allows linking to undefined behaviour
sanitizer.
2018-10-17 22:45:54 +03:00
Martin Storsjö
f47a4009ac
Add a separate dockerfile for crosscompiling the toolchain itself
2018-10-17 22:45:54 +03:00
Martin Storsjö
f5008d5380
Merge build-mingw-w64-widl.sh back into build-mingw-w64.sh
...
This allows checking out the mingw-w64 repo if it is missing, when
building widl.
2018-10-17 22:45:54 +03:00
Martin Storsjö
14e7d650f1
Allow building llvm-tblgen/clang-tblgen/llvm-config if needed
2018-10-16 20:27:53 +03:00
Martin Storsjö
5390b58835
Consistently use "COPY .. ./" in Dockerfiles
...
This avoids potential issues and confusion with cases where a plain "." as
target doesn't work.
2018-10-16 20:25:39 +03:00
Martin Storsjö
e9d8d57ec6
Fix adding build-compiler-rt.sh after wiping the build dir
...
With newer docker versions, "COPY foo .", when the workdir doesn't exist,
produces a plain file named as the workdir, breaking the rest of the build.
2018-10-16 19:42:31 +03:00
Martin Storsjö
3c6e1fe8bc
Make a shell script case more compact
2018-10-13 23:57:41 +03:00
Martin Storsjö
73bd1bc62c
Provide wrappers named cc/c99/c11/c++ as well
2018-10-10 23:33:19 +03:00
Martin Storsjö
3d1b15b01e
Make widl default to prefix/include instead of prefix/target/include, for windows toolchains
...
In these setups, we already install headers into prefix/include, in
order to save diskspace.
2018-10-10 23:33:19 +03:00
Martin Storsjö
f16867dd20
Update mingw-w64 to the latest version
...
This version allows overriding the default include directory used
by widl.
2018-10-10 23:33:19 +03:00
Martin Storsjö
8bfc9a18c6
Error out early if trying to compile ada
...
If we try to do that, clang would end up calling <triplet>-gcc with the
same arguments. In our setup, this recursively ends up calling clang again,
ending up with infinite recursion.
2018-10-10 23:33:19 +03:00
Martin Storsjö
7bca89b53f
Adjust clang-target-wrapper.c to closer match the new windres wrapper
2018-10-10 23:33:19 +03:00
Martin Storsjö
b611bc1904
Convert the windres wrapper from shell script to C
...
This allow running windres on windows without a surrounding posix shell.
2018-10-10 23:33:19 +03:00
Martin Storsjö
9069c627a9
Install unprefixed tools when cross compiling the toolchain
2018-10-10 23:33:19 +03:00
Martin Storsjö
b5deb9fc1f
Set a default target in wrapper scripts and executables
2018-10-10 23:33:19 +03:00
Martin Storsjö
1bc3d75a41
For cross-built toolchains, rename the clang executable to clang-$MAJOR.exe
2018-10-10 23:33:19 +03:00
Martin Storsjö
fb26be33a1
Correct the escaping of arguments passed through on windows
2018-10-10 23:33:18 +03:00
Martin Storsjö
b9543f23b9
Mention the lack of llvm-objcopy for COFF as a known issue in the readme
2018-10-09 11:40:26 +03:00
Martin Storsjö
2a3cdc9115
Update the description of the project's status
...
The level of maturity is generally quite a bit higher now than when
this initially was written.
2018-10-09 11:40:03 +03:00
Martin Storsjö
a914746ab2
Remove the mention of other similar projects
...
The mentioned differences aren't quite as pronounced any longer.
2018-10-09 11:35:16 +03:00
Martin Storsjö
945845fba2
Make a helper function static in clang-target-wrapper.c
2018-10-08 14:15:25 +03:00
Martin Storsjö
818766d3d4
Use posix shell variable expansion substitution instead of subshells with sed
2018-10-08 14:13:42 +03:00
Martin Storsjö
0ec597b1bb
Remove inconsistently used braces
...
Using braces here is fine in itself, but we write most similar cases
without braces, so change it for consistency.
2018-10-08 14:12:55 +03:00
Martin Storsjö
89c91ecaae
windres: Print help and version texts to stdout
...
meson checks the output from --version, and expects to see it on stdout.
2018-10-08 14:12:55 +03:00
Martin Storsjö
b1b6c0ba6f
windres: Minor cleanups
...
Make indentation consistent, define a variable used in printing errors,
remove an unused helper function.
2018-10-08 14:12:54 +03:00
Martin Storsjö
03b99b5144
Do one in-bounds write in clean runs of stacksmash.c
2018-10-07 21:00:30 +03:00
Martin Storsjö
461f889187
Update llvm/clang/lld to the latest version
...
This avoids warnings about both main and wmain being present when linking,
warnings that appeared in the previous update.
2018-10-06 07:44:33 +03:00
Martin Storsjö
99b6407196
Quote arguments in clang-target-wrapper.c
...
We quote each passed through argument, and escape quote chars in them.
For cases when the passed through argument ends with a backslash, this
fails though, since whatever is unescaping it doesn't seem to handle
double backslashes for escaping backslashes themselves.
2018-10-05 12:46:11 +03:00
Martin Storsjö
22b5681765
Add $EXEEXT as suffix for the ar/ranlib/nm/strings symlinks
2018-10-05 12:46:10 +03:00
Martin Storsjö
10210478ee
Update llvm/clang/lld to the latest version
...
This fixes cases where llvm built without assertions can hang when
assembling a file that references _GLOBAL_OFFSET_TABLE_ for windows
(which is unsupported; previously this used llvm_unreachable making
it undefined what happens if that really is hit).
2018-10-05 09:07:41 +03:00
Martin Storsjö
a62ee10c2d
Build clang-target-wrapper.c with -municode for windows
2018-10-03 23:06:22 +03:00
Martin Storsjö
ad47efba70
Implement clang-target-wrapper as an executable for windows
...
This allows non-msys build systems to use the triplet prefixed
compiler frontends on windows.
Keep the old shell script version as well, for easier hackability
on unix platforms.
2018-10-03 22:48:36 +03:00
Martin Storsjö
9f3a4a25f2
Support wrappers named <triplet>-c++ in clang-target-wrapper.sh as well
...
We currently don't install any such wrapper, but one might want to.
2018-10-02 23:38:19 +03:00
Martin Storsjö
fb5c95589c
Restructure clang-target-wrapper.sh to set one flag per line
2018-10-02 23:38:19 +03:00
Martin Storsjö
7f98eea889
Mention prebuilt docker images from Docker Hub
2018-10-02 21:34:54 +03:00
Martin Storsjö
9db7f21bcb
Make windres --version output the string "GNU windres"
...
meson might start looking for this string soon, for identifying
the kind of resource compiler.
2018-10-02 21:34:54 +03:00
Martin Storsjö
773c0299c5
Add scripts for crosscompiling the toolchain using an already built native toolchain
2018-10-02 21:34:54 +03:00
Martin Storsjö
8f15532652
Clean up more for windows builds in strip-llvm.sh
...
On windows, symlinks might be changed into regular copies, so we keep
as few extra symlinks as possible.
2018-10-02 21:34:54 +03:00
Martin Storsjö
47392c5a90
Don't expect that all files exist in strip-llvm.sh
...
If run multiple times, this removal would try to remove a file named
clang-*, which doesn't exist.
2018-10-02 21:34:54 +03:00
Martin Storsjö
391c93d0d4
Allow strip-llvm.sh to run on files with a potential $EXEEXT suffix
2018-10-02 21:34:54 +03:00
Martin Storsjö
49103cf127
Strip the built widl by passing -Wl,-s to the linker, instead of INSTALL="install -s"
...
When stripping via "install -s", install invokes the system's
strip tool, which might not support the cross target that we are
building for. This could also be handled by passing
--strip-program=<arch>-w64-mingw32-strip to install though.
2018-10-02 21:34:54 +03:00
Martin Storsjö
fb4862b0d6
Split out building widl to a separate shell script
...
When cross compiling a llvm-mingw toolchain, we need to build widl
for the intended host environment as well.
2018-10-02 21:34:54 +03:00
Martin Storsjö
0c24f99adb
Allow setting CC or HOST for install-wrappers.sh
...
Also allow setting EXEEXT for the executable suffix.
2018-10-02 21:34:54 +03:00
Martin Storsjö
bf2ede1537
Add support for crosscompiling llvm
2018-10-02 21:34:54 +03:00
Martin Storsjö
81864b3883
Disable asserts in llvm by default
...
This gives a 25% speedup. As long as the llvm version has been
reasonably tested, this should hopefully be safe.
2018-10-02 21:34:54 +03:00
Martin Storsjö
784c15f9b9
Allow passing --enable-shared/static to build-libcxx.sh
...
These are the default already, but by allowing them as options, it becomes
easier to potentially change the default behaviour.
2018-10-02 21:34:54 +03:00
Martin Storsjö
d379cc8b21
Allow passing --enable-asserts to build-llvm.sh
...
This is the default already, but by allowing this as an option, it becomes
easier to potentially change the default behaviour.
2018-10-02 21:34:54 +03:00
Martin Storsjö
6bb0cfca58
Convert TOOLCHAIN_ARCHS from ENV to ARG
...
This allows overriding it with --build-arg.
2018-10-02 21:34:54 +03:00
Martin Storsjö
0a181a36a3
Use -n instead of != "" in build-llvm.sh
2018-10-02 21:34:54 +03:00
Martin Storsjö
a7616d6d23
Add helpful printouts in stacksmash.c
2018-10-02 21:34:54 +03:00
Martin Storsjö
a38e52fff5
Build address sanitizer
2018-10-02 14:53:53 +03:00
Martin Storsjö
6d7cef9e9e
test: Rename ssp.c to stacksmash.c
2018-10-02 14:53:53 +03:00
Martin Storsjö
cea63c570a
Update llvm/clang/lld to the latest version
...
This version allows clang to use address sanitizer for mingw,
adds support for linking against import libraries from GNU tools
and makes the linker provide the __CTOR_LIST__ symbol for better
compatibility with binutils based sysroots, and adds support for
thunks for armv7 (allowing linking armv7 binaries over 16 MB).
2018-10-02 14:53:53 +03:00
Martin Storsjö
e26ab372bf
Update compiler-rt to the latest version
...
This version supports building address sanitizer for mingw.
2018-10-02 14:53:53 +03:00
Martin Storsjö
4d110b4508
Update mingw-w64 to the latest version
...
This fixes a few headers as necessary for building asan, and
fixes cross compiling widl.
2018-10-02 14:53:53 +03:00