1
0
mirror of https://github.com/skeeto/w64devkit.git synced 2025-09-20 13:42:03 +03:00

53 Commits

Author SHA1 Message Date
Christopher Wellons
36ac343fc3 gcc: Patch misaligned AVX spills (GCC bug 54412)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412
2025-02-17 18:45:27 -05:00
Christopher Wellons
62e236cf95 Add operating system support section to README.md 2024-09-19 11:26:50 -04:00
Christopher Wellons
f60a892e13 Add details about MSVCRT and AVX in README.md
UCRT is gradually growing in popularity, and it wasn't obvious from
README.md that w64devkit is a traditional MSVCRT toolchain.

The AVX issue comes up from time to time, just infrequently enough that
I need to rediscover the solution each time. Documentation in README.md
will be easier to find next time, warns those who haven't been bitten
yet, and documents the mitigation offline. Since it is unlikely to be
fixed any time soon, medium term I should figure out a small patch that
makes GCC only emit unaligned AVX moves. The penalty for unaligned moves
is 0% on newer processors and up to 10% on older ones. That's certainly
better than crashing due to a compilier bug.

https://lemire.me/blog/2012/05/31/data-alignment-for-speed-myth-or-reality/
2024-09-06 22:18:30 -04:00
Christopher Wellons
ecc5c65615 Replace .zip with a self-extracting 7-zip (#87)
Cuts the distribution size by around 60%, and unpacks around 100x faster
than Windows built-in .zip support. However, 7-zip is the worst packaged
project included so far. The source release is a tarbomb with a URL that
contains two variations of the release version. It is not designed for
cross-compilation, and so requires minor source corrections and a custom
build script. Still, considering the circumstances, it's surprising how
easily it compiles.
2024-07-29 17:15:26 -04:00
Christopher Wellons
85a52aac4e Enable Fortran compiler in all builds
When I first put w64devkit together, there were incompatibilities with
Binutils and supporting gfortran was difficult. It's been stable for
years, and I want to simplify the download options.
2024-07-29 17:12:31 -04:00
Christopher Wellons
6b6b6449d7 Remove Cppcheck from the distribution
I was initially impressed with its output, but over time I've found it
less and less useful. I hardly use it anymore, and it would at best be
neglected if left in the distribution. The build script is retained in
the contrib/ directory, and it's easy to build natively from source.
2024-07-29 17:12:31 -04:00
Christopher Wellons
ec561dae94 Remove NASM from the distribution
It's proven less useful than I originally hoped, and it's nearly always
better to use the GNU assembler instead. NASM doesn't support DWARF with
COFF, so it cannot be debugged with GDB. It's also ~100x slower than as,
which makes a huge different for generated assembly. With the autotools
fixes, it's now easy to natively build NASM from source using w64dk.
2024-07-29 17:12:31 -04:00
Christopher Wellons
28912083d7 Add note to README about ordinal hints
Reflects changes in 6a19f821. Regarding the compression comment, this
little change shrank the distribution .zip by 0.5%.
2024-06-07 12:10:44 -04:00
Christopher Wellons
77f0afe4fb Add peports to the README, expanding a new section
The new order reflects general usefulness. I'm probably the only user of
debugbreak, even if frequent, so move it to the end of the list.
2024-06-07 11:21:17 -04:00
Christopher Wellons
43bf1e56c9 New runtime library: libchkstk
Provides 32-bit and 64-bit ___chkstk_ms and __chkstk. The former can
replace the libgcc implementation. Better license, about half the size,
and substantially faster when used on a hot path. The purpose and role
is similar to libmemory.
2024-02-02 22:01:33 -05:00
Christopher Wellons
41aff0cf84 Add notes to README.md about vc++filt and libmemory
These new additions had not yet been documented, and are unlikely to be
discovered by chance. I dropped __USE_MINGW_ANSI_STDIO because now that
I've learned more I realized it has no practical use. If one cares about
this issue, one wouldn't use stdio in the first place, especially not
the particularly poor Microsoft stdio.
2024-01-06 14:43:37 -05:00
Christopher Wellons
2b0ae5a7f3 Add note to README.md about PowerShell (#69, #76)
Despite appearances, the ">" operator is actually a pipe to Out-File,
and GetFileType() returns FILE_TYPE_PIPE for that handle. It is not
seekable and does not behave like a file. By default it re-encodes its
input, which is virtually always destructive, unwanted, and surprising.
Regardless of the wording in its documentation, it is not possible to
connect process output to a file, and PowerShell does not support file
redirection.
2023-07-06 13:52:59 -04:00
Christopher Wellons
c0bc4707ab Update README.md note about UBSan for GCC >= 13
The new option name is a lot nicer, so encourage its use! I don't know
if the old option will ever be removed.
2023-05-02 18:24:51 -04:00
Daniel Martín
db1f3f68de Fix 404 Win32 link
The file is available via the Internet Archive, luckily.
2023-02-05 23:04:36 +01:00
Christopher Wellons
16f300cd69 Add a library installation section to the README
Except for the pkg-config part, these already worked. The new pkg-config
command expands and complements the options.
2023-01-27 11:50:01 -05:00
Peter0x44
ded508907b Correct some typos in README.md 2022-10-11 21:14:41 +01:00
Christopher Wellons
6d4549f78a Update README with note about debugbreak 2022-08-05 16:23:49 -04:00
Christopher Wellons
2b9b65319d Introduce w64devkit.ini for configuration 2022-08-05 16:18:11 -04:00
Christopher Wellons
df7da2193e Move "Cppcheck tips" to the bottom of the README 2022-08-04 12:19:28 -04:00
Christopher Wellons
b854d363b9 Add the Cppcheck command line program
Cppcheck is a static analysis tool that's pretty easy to build and
include. Its "addons" are excluded since they depend on Python, as are
the "platforms" configuration since none of them are useful for Windows
applications. The "win32A" and "win32W" platforms are already embedded
within the tool.

It has a "FILESDIR" option to locate its configuration data. Relative
paths are unsupported, and so this feature is useless for a "portable"
Windows application. Fortunately it searches next to the executable, so
it can still find its configuration as long as it resides in the same
directory. These should not be in bin/, so build an alias to redirect
execution into share/.

This is yet another open source project that does not publish a stable
source tarball, so this build is likely to fail in the future when
GitHub changes its tarball layout. The --remote-header-name curl option
tells it to pick up the GitHub-provided name rather than use the request
path. Fortunately this doesn't seem to interfere with other downloads.
2022-08-04 12:14:07 -04:00
Christopher Wellons
b89061ac7e Add note about UBSan availability to README 2022-07-04 10:00:55 -04:00
Christopher Wellons
f08f24108f README.md: Two more documentation links 2021-09-26 17:30:07 -04:00
Christopher Wellons
3b38e752f1 Add README links to various offline documentation 2021-09-26 16:41:49 -04:00
Christopher Wellons
45b1fc5552 Set environment variables W64DEVKIT, W64DEVKIT_HOME 2021-09-25 16:06:50 -04:00
Christopher Wellons
adf9aa7449 Remove activate.bat (replaced by w64devkit.exe) 2021-09-25 14:27:32 -04:00
Christopher Wellons
6b45d148a6 Tweak the README with updated information
The "releases" section needs emphasis since GitHub doesn't give it good
visiblitiy, and lots of people seem to miss it. Also, in the time since
w64devkit came about, Mingw-w64 itself and other distributions have
improved, picking up features once unique to w64devkit. The previous
claims are less strong now.
2021-09-15 22:53:43 -04:00
Christopher Wellons
f611616f61 Use --with-pic and restore Fortran README note
Fixes #12.
2021-09-15 21:35:36 -04:00
Christopher Wellons
2c0d69b22b Remove Fortran information from the README
Even GCC 11 GFortran remains incompatible with Binutils 2.36.1. Since
this is unlike to be fixed anytime soon, just drop Fortran support.
2021-04-27 16:40:33 -04:00
Christopher Wellons
626212f1b5 Introduce a new standalone launcher
This launcher doesn't depend on cmd.exe, which eliminates another
annoyance. Credit for the icon goes to Kelsey Wellons.
2021-02-28 20:04:39 -05:00
Christopher Wellons
ada316516c README.md updates and tweaks
Mingw-w64 v8.0.0 finally puts to rest the long-standing and irritating
issues with __USE_MINGW_ANSI_STDIO. As other distributions update they
will be on par with w64devkit on this point.

Msys2 supports optional static linking, and it does this well (though
optimized for speed, not size).
2021-02-11 14:56:59 -05:00
Christopher Wellons
d86ea47afe "Install" BusyBox using custom command alias tool
The "busybox --install" step has always been an unfortunate extra step
that I've watned to eliminate. I hoped I could do it via batch scripts
command "aliases". However, each aliased command has cmd.exe as its
parent interfering with its operation — particularly the disruptive and
infamous "Terminate batch job (Y/N)?" message which cannot be disabled.

The usual suggestion when people complain about this misfeature is to
use PowerShell. However, unlike batch scripts, PowerShell scripts are
not first class citizens on Windows. PowerShell is not always available
(often disabled by the adminstrator), and its scripts generally can't be
installed on and executed via the PATH, at least not without system-wide
configuration (i.e. PATHEXT).

The here is to use a tiny 4kB executable as a kind of crude compiled
shell script that, unlike cmd.exe, does the right thing. Since there are
so many, it adds about 150kB to the final .zip, but it does eliminate
this finall installation step.
2021-02-07 19:06:28 -05:00
Christopher Wellons
f27d399c4c README.md updates and tweaks
Since my busybox-w32 ash patch has been accepted upstream, BusyBox's
shell is now quite adequate and capable, so there's little reason to
consider a replacement shell at this point.
2021-02-02 20:22:57 -05:00
Christopher Wellons
7067e135f8 Add note about __USE_MINGW_ANSI_STDIO and -Os 2021-01-10 14:14:53 -05:00
Christopher Wellons
09d0714f14 Expand the README: more information, more bragging 2021-01-09 20:02:54 -05:00
Christopher Wellons
0771e29c0a Fix libsanitizer README link 2020-12-02 21:34:44 -05:00
Christopher Wellons
5fe7efb377 Include Mingw-w64 licenses in the distribution
As discussed in the README, this makes it easier for users to comply
with the Mingw-w64 licenses, and it's probably necessary for the
distribution itself anyway.
2020-08-23 15:30:26 -04:00
Christopher Wellons
493ba28af9 Add note to README about Mingw-w64 license crap
I hate this stuff.
2020-06-25 22:06:41 -04:00
Christopher Wellons
b3ece094b2 Add note to README about statically-linked OpenMP 2020-05-27 13:18:47 -04:00
Christopher Wellons
e6a9e2f588 Enable C++11 thread support
pthreads already works fine in C, so I assumed C++ threads worked.
However, it requires choosing POSIX, not Win32, threads during GCC's
configuration, which, in retrospect, makes sense.
2020-05-25 13:15:10 -04:00
Christopher Wellons
cc73e7b8e7 Add note about libsanitizer to the README 2020-05-19 12:44:44 -04:00
Christopher Wellons
91b4af6131 Tweak some README wording 2020-05-12 10:55:12 -04:00
Christopher Wellons
4d46361400 Add Universal Ctags
Unfortunately Universal Ctags has never made an official release, and
the maintainer doesn't seem to be interesting in ever making one. So
there's no official stable tarball of the source code. GitHub's
automatically generated tarballs are not stable, so we can't use them.
So the best we can do is use a stable snapshot from a Linux
distribution, in this case Debian. This means we're limited to whatever
version Debian packages.
2020-05-12 09:24:01 -04:00
Christopher Wellons
b98ce0342e Add missing program descriptions to README 2020-05-12 09:23:41 -04:00
Christopher Wellons
c23a8da98c Add links to GDB and GNU Make in the README 2020-05-12 09:10:58 -04:00
Christopher Wellons
c63e5b26c8 Add note to README about man pages 2020-05-11 21:54:18 -04:00
Christopher Wellons
e40db51e8a Rename "release" to "distribution" in the README 2020-05-11 16:21:33 -04:00
Christopher Wellons
13d4294e17 Add activate.bat script to distribution 2020-05-11 16:21:22 -04:00
Christopher Wellons
8744a39bf0 Add more notes and details to the README 2020-05-11 08:37:34 -04:00
Christopher Wellons
341bc1f89c Add GDB to tools 2020-05-10 20:17:33 -04:00
Christopher Wellons
1b27e702ac Add note about BusyBox installation 2020-05-10 14:55:12 -04:00