Commit Graph
572 Commits
Author SHA1 Message Date
Mateusz Mikuła 6ee98bd0ea Update MSYS2 instructions
`pacman -S` by default reinstalls (and redownloads if necessary) packages given as arguments. Adding `--needed` flag makes it skip packages which are already installed and up to date.
2020-04-14 13:25:15 +03:00
Martin Storsjö d8aefd7b1a build-llvm: Fix a typo in the flags for disabling external libs
These aren't strictly necessary any longer, as the external libs
are used automatically if found (instead of erroring out if not
found, unless explicitly disabled as before).

Still keeping the explicit disables, to avoid potential issues if
e.g. the libs are found but exist in an incompatible version.
2020-03-27 13:29:25 +02:00
Martin Storsjö 8e461131cf Clean the build dirs before building, if the env var CLEAN is set 2020-03-25 23:24:31 +02:00
Martin Storsjö 36fc0f6432 build-compiler-rt, build-libcxx: Use ninja for building, if available 2020-03-25 00:29:07 +02:00
Martin Storsjö 92f5caa918 build-compiler-rt: Move CMake generator selection further out in the script 2020-03-25 00:29:07 +02:00
Martin Storsjö b89cdef107 build-llvm: Generalize the build command 2020-03-25 00:29:07 +02:00
Martin Storsjö 13e441d60e build-llvm: Only pass -j to ninja if CORES was set originally
If CORES was unset, let ninja pick the core count (which normally
is set higher than the number of cores).
2020-03-25 00:29:07 +02:00
Martin Storsjö ca303864ba Dockerfile.cross: Download a newer version of cmake than what the base distribution has
When building lldb for windows with the llvm 10.0.0 version,
cmake 3.13 is required. (Ubuntu 18.04 comes with cmake 3.10.2.)
2020-03-25 00:24:26 +02:00
Martin Storsjö 2c1a4645d9 Update the base distro used for dockerfiles and linux releases to Ubuntu 18.04
There's probably not much need for binaries based on 16.04 any longer.
2020-03-25 00:24:26 +02:00
Martin Storsjö 91c1339222 Only use the newer form for disabling LLDB's external dependencies
Also pass the new form properly when cross compiling LLDB.
2020-03-25 00:19:49 +02:00
Martin Storsjö efec56e495 build-mingw-w64: Update to the latest master version
- Fixed the dinput/dinput8 libraries for armv7/aarch64
- Provide libcfgmgr32.a for aarch64
- Fix cases of duplicate definitions of snprintf/vsnprintf when using
  msvcrt as crt, when building C++ code
- Fix cases where mftransform.h would undefine EXTERN_C, turning other
  variables declared as EXTERN_C into actual definitions
2020-03-24 23:15:10 +02:00
Martin Storsjö 68280abd1a build-llvm: Update to the 10.0.0 release of llvm
Notable changes since the previously pinned (early December 2019)
version:
- Implicitly add the .exe suffix if not provided in the clang
  -o argument, when running on windows (to match GCC's behaviour)
- Fixes for accesses to TLS variables in another object file
- Fixes for accessing weak functions that may be undefined, on ARM and AArch64
  (x86 was fixed earlier)
- Fixed many instances of locale handling in libcxx
2020-03-24 23:07:21 +02:00
Martin Storsjö 353af4ba24 readme: Add a note about incompatibility with object files and static libraries from other toolchains 2020-03-14 13:51:30 +02:00
Martin Storsjö 8507ee6023 windres-wrapper: Do the format name comparisons case insensitively 2020-03-14 12:58:18 +02:00
Martin Storsjö 96b149eb72 native-wrapper: Make static functions inline, to avoid warnings if unused 2020-03-14 12:58:18 +02:00
Martin Storsjö c994e9cb92 build-mingw-w64: Update to the latest version
This fixes a regression in the previously pinned version, where
the asprintf function produced undefined references when using UCRT.
2020-03-09 22:52:58 +02:00
Martin Storsjö ad3d710c9a build-libssp: Fetch the libssp source from gcc's github mirror
The GCC svn repo is no longer available, and fetching the whole GCC
git repo at around 1 GB is a bit wasteful, when we just need libssp
(which is less than 1 MB), but github provides svn access to git repos,
allowing us to fetch just this subdirectory.
2020-03-09 11:25:37 +02:00
Martin Storsjö 3110e27f64 run-tests: Transfer all tested files in one go
This should speed up testing a bit, especially if $COPY has a long
startup overhead.
2020-03-05 16:00:06 +02:00
Martin Storsjö 20d3b32b30 run-tests: Silence errors from trying to build uwp-error which intentionally should fail in certain configurations 2020-03-05 15:39:30 +02:00
Martin Storsjö 551b046498 run-tests: Don't build all tests for mingw32uwp, restrict it to the specific uwp-error test
Build one single test to verify that building generic code for mingw32uwp
works, but skip building all of the tests for this target.

Keep building the uwp-error test for all targets, to verify that it
builds successfully for mingw32 but fails for mingw32uwp.

This reduces the runtime for the tests by around a third.
2020-03-05 15:39:30 +02:00
Martin Storsjö 6b9b4ef1e3 Add a LICENSE.txt file explaining the licensing of the build files and of the built toolchain 2020-03-05 11:32:08 +02:00
Martin Storsjö 93d8fb4a8b build-llvm: Install the LLVM license 2020-03-05 11:31:31 +02:00
Martin Storsjö c1882530c3 Add copyright and license headers to all shell script files, for clarity 2020-03-05 11:31:31 +02:00
Martin Storsjö b1e19e7ebb wrappers: Relicense windres-wrapper.c from Unlicense to ISC
This is done with permission from Josh de Kock, see
https://github.com/mstorsjo/llvm-mingw/pull/4 for discussion.
2020-03-05 11:31:31 +02:00
Martin Storsjö 4f16aa8277 build-mingw-w64: Update to the latest version
This contains a minor assortment of fixes, but also fixes building
widl on BSD.
2020-03-05 11:31:20 +02:00
Martin Storsjö f4272deea5 test: Avoid a warning about a cast to a smaller integer type on 64 bit architectures 2020-03-04 14:01:26 +02:00
russellhaley 5fe2e05419 FreeBSD support
Use "gmake" instead of "make" when gmake is available.

The makefile used for libssp is a handwritten one that requires
GNU make features. mingw-w64 uses automake, which in principle should
work with BSD make, but mingw-w64-headers hangs indefinitely if built
with BSD make.
2020-03-04 09:52:22 +02:00
Martin Storsjö 3e35338ab3 Add make-* to .dockerignore 2020-02-29 23:00:14 +02:00
russellhaley 9a1bf6d630 Add missing items to .gitignore 2020-02-29 22:59:20 +02:00
Martin Storsjö 39f7bf5e6e strip-llvm: Inclue lldb-argdumper and lldb-instr
These can be useful for integrating with an IDE such as VS Code.
This should fix issue #83.
2020-02-17 09:59:25 +02:00
Anton Mitrofanov 130bbed695 windres-wrapper: Fix --target=pe-i386 2020-02-09 23:43:40 +02:00
Martin Storsjö ee894b6f63 windres: Accept the abbreviated form --include in addition to --include-dir
As GNU binutils windres uses getopt for option parsing, it accepts
any unique abbreviation of the long options. For now just look
for this particular abbreviation instead of any potential one,
as there's at least one existing use in the wild of --include:

https://github.com/tcltk/tcl/blob/fe69f643609d633facf249c9c963ce121153a8ff/win/tcl.m4#L640
2020-01-05 22:09:31 +02:00
Martin Storsjö 6513708aff build-llvm: Use more cmake variables for disbling python and other lldb external libs
These defines were renamed in lldb git master, soon after the current
pinned version.

This fixes building with a later version of llvm than the pinned one.
2020-01-05 21:59:37 +02:00
Martin Storsjö de510f07b5 build-llvm: Enable building LLDB 2019-12-28 13:59:42 +02:00
Martin Storsjö 0d08c6ab18 build-mingw-w64: Use make install-strip instead of building with -Wl,-s
These days, we have a working strip tool, so we can do a slightly
more straightforward procedure here.

In build-make.sh we still build with -Wl,-s, as we call a less
obvious install target there, in order to only install mingw32-make.sh,
not some header files and documentation.
2019-12-28 00:24:50 +02:00
Martin Storsjö c8d181fa90 Build a mingw32-make.exe when cross building toolchains
This can be used e.g. for building Qt without any MSYS installation,
and should also work for cmake, if using the mingw makefiles
generator.
2019-12-23 19:47:11 +02:00
Martin Storsjö 57c4f47db3 Add the --host flag to the help output in the individual build scripts 2019-12-21 00:04:47 +02:00
Martin Storsjö bc6df720ce wrappers: Stop specifying -fuse-cxa-atexit
Since clang 9.0.0 (34ec6929a1fb33716d0035dc0f1f164d7568b4dc
in llvm-project), it's no longer necessary to set this to be able
to use __cxa_thread_atexit (for TLS destructors). This brings the
behaviour closer to GCC, and reduces the amount of non-default
options used.
2019-12-20 23:18:41 +02:00
Martin Storsjö 7f2171d587 test: Simplify the hello.c test app 2019-12-20 09:43:39 +02:00
Martin Storsjö f023c3416f run-tests: Test building and running crt-test with -D__USE_MINGW_ANSI_STDIO=1 2019-12-20 09:39:08 +02:00
Martin Storsjö 4e9072aef0 crt-test: Add tests for large values in functions that do rounding and similar operations
Some of these functions earlier were using integer intermediates,
where the range easily is exhausted.
2019-12-20 09:38:32 +02:00
Martin Storsjö 7f7d2f9852 crt-test: Add tests for sscanf with double/long double outputs 2019-12-20 09:38:32 +02:00
Martin Storsjö 056c1f5cd2 build-llvm: Update to a recent git master version of llvm
Notable changes since the previous version are:
- Added a lld option for requesting delay loading libraries
- Allowing using custom .edata from input object files in lld (for Wine)
- Fixed llvm-dlltool with symbol renaming with stdcall decorations
- Supporting merging resources from more than one resource object file in lld
- Improved error messages for duplicate or undefined symbols in lld
  (including demangling C++ symbols and printing source locations
  where possible)
- Made lld look for for more library name patterns, matching GNU ld
- Brushed up support for using LLDB for, and building on, mingw
- Implemented initial support for armv7 and aarch64 windows in LLDB
2019-12-19 23:09:29 +02:00
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