Commit Graph
243 Commits
Author SHA1 Message Date
Martin Storsjö ca8ce421cd Strip the llvm installation after building
This still inflates the docker image chain since it's done in
a separate RUN command though.

This tests that one still can (re)build
compiler-rt/libunwind/libcxxabi/libcxx after stripping down the llvm
installation.
2018-08-03 10:56:49 +03:00
Martin Storsjö 2739421564 Update compiler-rt/libuwnind/libcxxabi/libcxx to the latest version
For compiler-rt and libunwind, this makes them build successfully even
if llvm-config and the llvm cmake files aren't available.

For libcxxabi, this brings in support for using SEH exceptions.

For libcxx, this removes a few build time warnings.
2018-08-03 10:56:49 +03:00
Martin Storsjö f92f858ae2 Add gitignores for new files generated by the previous commit 2018-08-03 10:56:49 +03:00
Martin Storsjö 26ab7a4424 Add a test app for thread local variables with destructors 2018-08-03 10:19:50 +03:00
Martin Storsjö 11e04f0466 Support destructors for thread local objects 2018-08-02 23:28:39 +03:00
Martin Storsjö c21fb8356e Update mingw-w64 to the latest version
This version provides __cxa_thread_atexit, for supporting destructors
for TLS objects.
2018-08-02 23:28:39 +03:00
Martin Storsjö 1836ed28dd Test __attribute__((constructor)) and __attribute__((destructor))
When using a global C++ object, the destructor isn't handled via
the .dtors section, but the destructor is set up with atexit() once
the constructor has been called.
2018-08-02 14:28:21 +03:00
Martin Storsjö 1ecc51f84d Clean up some more files installed by current clang 2018-07-25 14:59:31 +03:00
Martin Storsjö 609fe4b81d Use binutils objcopy and strip if available
For x86 architectures, binutils objcopy and strip can be used as
such.

For armv7 and aarch64, binutils doesn't recognize the architectures
and refuse to touch the files. For most/everything that objcopy/strip
do, the actual architecture doesn't really matter though. Therefore,
provide a wrapper script and a minimal tool for editing PE executables,
that change the architecture from armv7 and aarch64 to i686 and x86_64
respectively before invoking binutils, and change it back afterwards.

In case the binutils tools are missing, just return a successful result
without doing anything for stripping operations (previously, we had the
<triplet>-strip tool symlinked to /bin/true, so this isn't any worse than
before) and fail for other objcopy operations.
2018-07-25 00:56:58 +03:00
Martin Storsjö 86d8400cae Update llvm/clang/lld to a version from today
This allows using GNU binutils strip and objcopy on executables with
dwarf debug info linked by lld.

This also improves clang's handling of detecting known libraries
that override default libraries to link.
2018-07-25 00:56:40 +03:00
Martin Storsjö ca43ab5ccd Use dwarf exceptions on i686 as well
Now libunwind works properly in this case for dwarf on i686 mingw.
2018-07-17 22:26:58 +03:00
Martin Storsjö 3da8d27a8e Update libunwind to the latest version
This version fixes the issue that caused dwarf exceptions not to work
properly on i686 mingw.
2018-07-17 22:26:44 +03:00
Martin Storsjö 4631869407 Update compiler-rt to the latest version
This adds __chkstk, needed for Windows Store apps for armv7.
2018-07-17 22:22:52 +03:00
Martin Storsjö af4e0b0021 readme: Remove the issue about libunwind vs WinRT
libwinstorecompat now provides a reimplementation of EnumProcessModules,
making libunwind compatible with WinRT.
2018-07-16 23:30:54 +03:00
Martin Storsjö 3c1c81f321 Build the winstorecompat library from mingw-w64-libraries 2018-07-16 23:30:54 +03:00
Martin Storsjö 4981924170 Update mingw-w64 to the latest version
This version has improvements for building for WinRT/UWP.
2018-07-16 23:30:54 +03:00
Martin Storsjö 6e4478b778 Fix overwriting symlinks to directories
This avoids extra misplaced symlinks if rerunning the build scripts.
2018-07-16 23:02:38 +03:00
Martin Storsjö 158b65f7c0 Set LIBUNWIND_STANDALONE_BUILD while building
This avoids accidentally finding an extra copy of libcxc outside
of the source tree.
2018-07-16 14:42:53 +03:00
Martin Herkt 2aef445b89 windres-wrapper.sh: actually implement -U 2018-07-11 16:14:22 +02:00
Martin Storsjö 00d67c0479 Don't set DLLTOOL when building winpthreads
This tool isn't usee while building winpthreads.
2018-07-07 23:59:50 +03:00
Martin Storsjö d12ee1543e Use the windows api sets version of the universal crt 2018-06-28 11:48:39 +03:00
Martin Storsjö 6ba6ac5c52 Upgrade to the latest version of mingw-w64
This version includes the windows api sets version of the universal
crt, fixes a few other functions when used with the universal crt,
and fixes the widl tool when running on macos.
2018-06-28 11:47:55 +03:00
Martin Storsjö 2372dc03e8 Update to the latest versions of libunwind/libcxxabi/libcxx
These updates help in building these projects on windows in msys.
2018-06-21 11:52:14 +03:00
Martin Storsjö 3506c70451 Remove a stray unicode nbsp 2018-06-20 00:20:23 +03:00
Martin Storsjö 1d3f223d29 Don't error out in install-wrappers.sh if some binary tools are missing
If installing on top of a prebuilt win32 release of llvm instead of
building from source, the nm and strings executables are missing,
and MSYS2 errors out when creating a symlink to a file that doesn't
exist (since it does a copy instead of making an actual symlink).
2018-06-19 09:31:57 +03:00
Martin Storsjö 9990dc49f1 Don't error out if unable to create the i386->i686 symlink in build-compiler-rt.sh
If running in MSYS2, this symlink will fail unless the i686-w64-mingw32
directory actually exists.
2018-06-19 09:31:45 +03:00
Martin Storsjö 951796aeb7 extract-docker: Remove leading slashes when removing an earlier copy
If extracting from an absolute path within the image, like
/opt/llvm-mingw, it will still be extracted into opt/llvm-mingw in
the local directory.
2018-06-12 10:04:55 +03:00
Martin Storsjö 86cc330999 Expand the help text in extract-docker.sh 2018-06-10 23:26:44 +03:00
Martin Storsjö 3b3924e4b1 test: Add a testcase for setjmp 2018-06-05 23:40:25 +03:00
Martin Storsjö 024d125611 test: Test the now fixed copysignl function on x86_64 as well 2018-06-04 10:08:47 +03:00
Martin Storsjö fe08750026 test: Test building crt-test.c with -fno-builtin as well 2018-06-04 10:08:47 +03:00
Martin Storsjö 6a3080fa58 test: More clearly print errors in the NAN tests 2018-06-04 10:08:47 +03:00
Martin Storsjö 0e86b1ed49 test: Extend the intrinsics tests 2018-06-04 10:08:47 +03:00
Martin Storsjö 4fe1cb9aad Update mingw-w64 to the latest version
This fixes interlocked intrinsics for arm and arm64, and fixes
the copysignl function for x86_64.
2018-06-04 10:08:47 +03:00
Martin Storsjö b73785af3b Fix a typo in the readme about PDB output 2018-06-02 23:03:42 +03:00
Martin Storsjö 1c73ae0fd1 Mention PDB support in the readme 2018-05-21 14:39:00 +03:00
Martin Storsjö 66d79fd7fe Update to the latest versions of llvm/clang/lld
This fixes an issue with code generation for functions that needed
a stack probe on armv7, improves llvm-rc and adds a few more options
to the mingw lld frontend.
2018-05-16 09:10:01 +03:00
Martin Storsjö cc2d414ea3 windres: Add the input file directory as include path
This fixes building resource files that refer to external files
relative to the source directory, without specifying any directory
via include flags to windres itself. This is needed since llvm-rc
doesn't see the original source file but only sees the preprocessed
one in a temporary directory.

Alternatively, the preprocessed file could be placed in the same
directory as the source file, but when building e.g. outside of the
source tree, writing files (even temporary ones) inside the source
tree isn't generally expected.
2018-05-11 09:48:07 +03:00
Martin Storsjö ecdb6647b7 windres: Remove the rc filtering in the wrapper shell script
llvm-rc does this filtering internally now.
2018-05-11 09:48:07 +03:00
Martin Storsjö da4d3df5da Update to the latest version of llvm/clang/lld
This version improves llvm-rc to support more rc script features
and features built-in filtering of CPP output in llvm-rc. It also
improves the handling of some def features in llvm-dlltool, allows
producing codeview debug information when targeting mingw and adds
handling of a few more ARM64 relocations in lld.
2018-05-11 09:48:07 +03:00
Martin Storsjö d3d57c2890 Fix conversion from res to coff in the new windres wrapper 2018-05-08 12:44:39 +03:00
Martin Storsjö 5899f4f536 Add the installation bin directory to the path internally in wrapper scripts
This allows invoking the script frontends via an explicit path,
without adding the directory to the PATH environment variable before
calling them.
2018-05-07 10:24:24 +03:00
Martin Storsjö fa08e722ed Don't use bashisms for finding the script directory
Posix sh and $0 should be good enough in most cases.
2018-05-07 09:49:48 +03:00
Martin Storsjö ce282cdf5d Use --driver-mode=g++ instead of invoking clang++
This avoids needing the clang++ symlink. On platforms without symlinks
(i.e. windows), clang.exe and clang++.exe are two separate but identical
executables. This allows getting rid of the latter, saving size.
2018-05-07 09:49:34 +03:00
Josh de Kock 69b81a6d01 Build the mingw winpthreads library 2018-05-07 09:46:10 +03:00
Martin Storsjö fd71e83e2d Update to the latest version of mingw-w64
This version includes fixes for building winpthreads for arm and arm64.
2018-05-07 09:45:38 +03:00
Martin Storsjö decfd0030b Update README.md about using llvm-rc instead of GNU binutils windres 2018-05-07 09:44:41 +03:00
Josh de Kock 08224169fd Add windres wrapper for LLVM tools 2018-05-05 00:14:45 +03:00
Martin Storsjö 37e0a35aa5 Update to the latest version of llvm/clang/lld
This version contains improvements and fixes for llvm-rc and llvm-cvtres.
2018-05-03 14:51:26 +03:00
Martin Storsjö 35c2028e50 Define _LIBCPP_HAS_THREAD_API_WIN32 while building libcxxabi
When building libcxx, this is also already enabled via the cmake
option -DLIBCXX_HAS_WIN32_THREAD_API=ON.

This fixes building libcxxabi if pthreads are available.
2018-05-03 14:50:43 +03:00