-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
64-bit windows build. #1237
Comments
@graydon just following up as you are assigned to this issue (although I can't see when you were assigned unfortunately, and can only assume it was when this issue was made). Are you still planning on completing this? Not volunteering because I don't personally run Windows, just trying to see if there's any progress. Sounds like a pretty significant change and I can't see anything particular holding it back, so it would be nice to see someone finish this off. |
The current milestone here is "well-covered", but I think it would be suicide to release 1.0 without supporting the world's most popular desktop platform. It would also completely destroy the notion of ever using Rust for the sort of games that currently require C++. I know we don't currently have a milestone for 1.0, but I'm tempted to reassign this to "backwards-compatible" just to ensure that it doesn't slip. |
renominating for production ready |
accepted for production-ready milestone |
1 similar comment
accepted for production-ready milestone |
#8488 and #8840 enabled rustc to cross-build for mingw-w64. With cross-built What's missing now:
Also, I think it's better to use mingw-w64 for both win32/win64, to minimize platform difference (e.g. #8663). |
I found win64/SEH patchset from LDC (via ldc-developers/ldc#166 and LDC wiki). It is not merged in trunk now, and I don't know any further discussion from LDC or LLVM. |
1.0, high |
@klutzy, so what's the current status on win64 support? |
@vadimcn when I cross-built 64-bit rustc recently (maybe 2 months ago?):
(I used mingw-builds x64 + win32 threads + seh unwinding.) |
Huh, after rebasing my changes on top of recent rust master, Rust build no longer crashes in stage1 when compiling with optimizations, and gets all the way to compiletest. |
I have a branch here, which gets all the way to stage2 and passes almost all tests, when built with RUSTFLAGS="-Z no-opt". Unfortunately, after rebasing on top of the current rust master, it started crashing again while building stage2 libstd :( Anyhow, I thought some of you folks might be interested. @klutzy, @thadguidry, @alexcrichton, @kvanberendonck |
That looks really impressive, nice work! I'd be willing to help you upstream any of those LLVM patches, they all look pretty easily upstream-able. |
Ok, now it works on top of current rust master: https://github.com/vadimcn/rust/compare/Win64 |
Perhaps the |
LLVM will infer |
Oh dear, that's a good point. It sounds like we'll need to fix upstream to turn on optimizations. @vadimcn, I'd be fine if you wanted to upstream to those patches to rust for now, and we could even set up a 64-nopt-c builder (like we have for 32-bit windows) to help prevent some regressions. |
Actually, stripping 'noreturn' does help. On Apr 14, 2014, at 12:56 PM, Alex Crichton notifications@github.com Oh dear, that's a good point. It sounds like we'll need to fix upstream to @vadimcn https://github.com/vadimcn, I'd be fine if you wanted to — |
Okay, I made a fix in LLVM for noreturns, and it all works now: https://github.com/vadimcn/rust/compare/Win64 (rebased on top of the pending LLVM upgrade). As before, you'll need to fetch Win64 branch from llvm and compiler-rt repos in order to build this. I am going to wait until #13513 lands, before submitting this as a PR. |
Could you submit the LLVM patches upstream beforehand? I'm more than willing to help out, and I'd love to keep using upstream LLVM! The second one looks trivial enough (it may need some tests), but the first one looks a little more involved... |
Yup, working on it... |
Here's Phabricator review for it, btw: http://reviews.llvm.org/D3418. It's going very slowly. |
Is this fixed by #13692 ? |
Not quite just yet, I think we can close this once we have a 64-bit windows snapshot and we're bootstrapping on 64-bit windows (with at least some tests passing). |
Nominating for removal from milestone. Our ability to do this is entirely dependent on upstream LLVM. |
Removing from milestone. Keeping at P-high. (If LLVM grows 64-bit Windows support, then we can revisit this choice.) |
@vadimcn Landed 64-bit SEH support in LLVM: http://reviews.llvm.org/rL211399. |
Thought I'd post an update on the status of win64:
Known problems:
I've published the current state of my repo in on github: https://github.com/vadimcn/rust/commits/Win64. To build it you'll need to fetch LLVM master and run configure --build=x86_64-w64-mingw32. |
Now somebody's gonna have to set up a build bot for it . 😉 |
- rust-lang#1237 is closed - `libgcc` is now statically linked: rust-lang#17471
- rust-lang#1237 is closed - `libgcc` is now statically linked: rust-lang#17471
Currently the windows build is 32-bit only. This is mostly a matter of figuring out the right build environment and editing the Makefiles, though there may be some changes needed to the x86_64 assembly as the windows calling convention is not the same as the one used on Mac and linux.
The text was updated successfully, but these errors were encountered: