Replies: 17 comments 3 replies
-
Here is a list of people who have shown interest in ccache Windows support previously: @AmineKhaldi Perhaps some of you would like to help out with maintaining or discussing ccache's support for running on Windows? |
Beta Was this translation helpful? Give feedback.
-
Hi, I am happy to help out with this. And I've done some windows portability stuff recently. I will add some notes:
|
Beta Was this translation helpful? Give feedback.
-
Good to hear. Let's see if more people are interested as well.
Sure, there are no technical reasons why ccache can't support Visual Studio, only organizational reasons. By that I mean that the project complexity will increase, which means that more developer time and effort will be needed.
(As mentioned in the description, see also #247.)
See also #430. |
Beta Was this translation helpful? Give feedback.
-
Hi @jrosdahl : pls also count me in. |
Beta Was this translation helpful? Give feedback.
-
I would like some official Windows support. If not, my fork works fine with native MinGW-w64 (no MSYS2) on Windows. Since I already spent some cycles on this, I can spend some more :) |
Beta Was this translation helpful? Give feedback.
-
I'm interested in Windows support as this would help our group to reduce (re)compile times significantly. |
Beta Was this translation helpful? Give feedback.
-
The latest version of lld in msys2/mingw works for me. I backported several patches for some bugs that I reported and were fixed upstream, and it now works for most cases. Did you try it recently? |
Beta Was this translation helpful? Give feedback.
-
@peterbud, @cristianadam & @melven: Great, thanks. Lately I've spent most of my spare cycles on finishing up the first steps of C++-ification, so I haven't thought much about the Windows story for a while. What do you all think is the next step? Would you like to aim for option 5 (sibling ccache-for-windows project) or option 4 (full Windows native support officially). I take it you're not interested in option 3. What I would like to see is for official Windows support regardless of the project model:
Regarding Windows-specific bugs: #450 is a good example where I need help. Any takers? |
Beta Was this translation helpful? Give feedback.
-
I've blogged about speeding up C++ GitHub Actions recipes using ccache, on all platforms, including Windows with Visual C++: https://cristianadam.eu/20200113/speeding-up-c-plus-plus-github-actions-using-ccache/ I've used this not only in my HelloWorld project, but also building Qt Creator which went from building in 1 hour to building in 20 minutes. |
Beta Was this translation helpful? Give feedback.
-
Since I haven't received any reply to my previous comment I've been thinking some more about this. I fully understand that it's quite hard to commit to driving and maintaining the Windows ccache port. At the same time several people do want to help out, so Windows support will probably continue to be OK enough for people to actually use it, just potentially broken and underdocumented from time to time. I've previously been thinking that the status quo is not good enough, but maybe it's actually the best option if it's just made clear that some platforms where ccache likely works in practise do not necessarily have the same level of support or attention as others. So I've decided to go with kind of option 1b for now: document which platforms/compilers have full support and which are more on the "likely works" level. And I hope that @peterbud, @cristianadam, @melven and others who are interested in ccache for Windows continue to contribute. Keep an eye on the windows label. 🙂 |
Beta Was this translation helpful? Give feedback.
-
Published now: https://ccache.dev/platform-compiler-language-support.html |
Beta Was this translation helpful? Give feedback.
-
Even in case of option 1/1b there should probably be a (slow!!) conversion of tests from shell scripts to e.g. python, cpp or whatever. For example for newly written tests. |
Beta Was this translation helpful? Give feedback.
-
Is there still anything to do or decide here? Both Windows and MSVC support can be solved by marking them as 'B" support at https://ccache.dev/platform-compiler-language-support.html and then they are at the same level like Objective-C, other Unix-like platforms or Intel C++ compiler. I don't why Windows/MSVC should be fundamentally any different there. The way I see it, the Windows/MSVC problem in ccache is a chicken-and-egg problem. You'd like to have people working on Windows/MSVC support, but you're pretty unlikely to get that as long as there's no Windows/MSVC support in ccache. Working on somebody else's random fork is making it more difficult, working based on pending PR's is making it more difficult, etc., and then it turns into things like #162 and #506 , which is further demotivating. FWIW, seeing all these open issues and PR's about it made me think that it must be pretty hard, and I was really surprised to see how simple #506 was. Had I known, I would have possibly written something like that sooner. Windows/MSVC support is usable with #506 and #954, I've self-built ccache using it, and then LibreOffice. It's nowhere near the level of A features, but if you accept these and mark Windows/MSVC as B, it can get fixed with follow-up commits, and you're much more likely get more contributions when it will be as simple as working on something that is in ccache itself and already works. As for maintainers, I think ccache has the problem that its users tend to usually have enough work already with whatever project they already use ccache for. But if there's something you don't know how to sort out, you can CC the contributors (I can count at least 3 of us) and hopefully somebody does something with it. And if not, well, B level is B level. Not to mention, if people actually start using ccache for Windows/MSVC, then if something breaks, people will be more likely to fix the problems once it's already in use. |
Beta Was this translation helpful? Give feedback.
-
@llunak wrote:
This sounds a bit backwards. If other people want Windows/MSVC support then ideally those other people should work on and maintain it and the complexity it brings. I'm not personally interested in Windows/MSVC support. What I am interested in, though, is being helpful, but only to the extent that I don't burn out. The challenge is finding the right balance.
I too was surprised that MSVC support would require few changes (leading to #506 (review)). Again, the main issue is that I want to be sure that I don't accept stuff that makes the project too hard or boring for me to work with so that I don't want to do it anymore. Then everybody loses, unless somebody with more time and energy than I have wants to take over. Most bullets in The present part of #447 (comment) are still applicable. |
Beta Was this translation helpful? Give feedback.
-
@jrosdahl Hi, hope you're doing well. I have been working on a Windows developer setup/usage guide for Linux users on and off for the past couple of years and more lately. If you have any interest in this at all, it's here: |
Beta Was this translation helpful? Give feedback.
-
Personally I'm very happy with using ccache with msvc (at least after applying #992) locally. Before I was very concerned when switching branches &c., now it's no problem at all. The only issue is that msvc benefits a lot in terms of compilation speed from precompiled headers and I turn them off for now because I'm not sure how they interact with ccache currently but it's just a trade-off in the end and not a deal-breaker. |
Beta Was this translation helpful? Give feedback.
-
I did some unscientific timings of builds of our project with msvc (https://github.com/visualboyadvance-m/visualboyadvance-m/) and the improvement with ccache is very minor, unlike it is under linux: https://gist.github.com/rkitover/d248ef0c9af9a08dfdfd2e93a2440960 I need to see why that is, if the problem is in our project or in ccache or what. But it does work now at least. |
Beta Was this translation helpful? Give feedback.
-
This issue is for discussing the future of ccache's support for running on Windows for caching GCC/Clang output. It's not about building/using ccache with Visual Studio.
The present
We need to figure out a way forward to avoid wasting time and to reduce friction between people with different goals and perceptions on what ccache should support.
The future
I see the following possibilities:
Do you see other possibilities? Do you want to help out? Please share your thoughts.
Beta Was this translation helpful? Give feedback.
All reactions