StephanTLavavej / mingw-distro

MinGW distro build scripts.
492 stars 55 forks source link

GCC 8.1 support soon? #59

Closed oscarbg closed 6 years ago

StephanTLavavej commented 6 years ago

Yes, soon. I should have a free weekend either this week or next.

JoeUX commented 6 years ago

Cool. I was going to ask for the same thing. It looks like GCC 8.0 includes lots of optimization improvements, and 8.1 fixes a lot of bugs.

I was unable to find where the code here specifies a GCC version. It would be great if there was a simple flag somewhere that enabled people to choose a GCC version when they build your MinGW themselves.

oscarbg commented 6 years ago

Good news.. Thanks for good work.. it’s appreciated.. Just by coincidence read a few days ago: https://www.openacc.org/blog/evaluating-performance-openacc-gcc and seems gcc 8.1 has mature support for OpenACC for NV GPUs as you can see.. So just asking if your MinGW GCC build supports also OpenACC PTX Nvidia target.. and if not if it’s much work to add support for it.. Anyway thanks as said previously..

StephanTLavavej commented 6 years ago

@JoeUX - mingw-w64+gcc.sh specifies the GCC, mingw-w64, and supporting library versions (GMP, MPFR, MPC, ISL) being used, as the tarball names being extracted. They are easily editable (which is how I upgrade the distro) but aren't further parameterized, since you need to inspect the upgraded build and make sure that it's succeeding without anything weird happening that requires a workaround.

@oscarbg - I don't know anything about OpenACC and I definitely don't have additional time for investigating whether it can work and how to make it work. You can use my distro as a starting point but I can't provide further assistance.

oscarbg commented 6 years ago

Any update? No pressure BTW..

StephanTLavavej commented 6 years ago

I've completed 3 full builds. After updating essential components like GCC, I use the old distro to build the new components as a "hybrid" build, e.g. this is the first build containing GCC 8.1.0. Then I use the hybrid build to build itself making a "pure" build, e.g. this is the first build that uses GCC 8.1.0 to build libpng. Finally I use the pure build to build itself making an "ultrapure" build, e.g. this is the first build that uses GCC 8.1.0-built libpng to link pngcrush. I have occasionally discovered problems during the pure build, never during the ultrapure build, but I prefer all 3 for consistency.

I am currently deciding whether to attempt resolving #49 in this release, or just packaging and releasing.

oscarbg commented 6 years ago

Thanks for detailed response, nice to know.. can wait some few weeks, no pressure from me..

JoeUX commented 6 years ago

@StephanTLavavej By the way, you might consider updating the PNG optimizer to something like OptiPNG, for reasons given in Section 3 here. pngcrush is kind of dated, and OptiPNG is faster and doesn't write to disk until it's done. There are other, newer tools as well, like pingo, ECT, pngwolf, and ZopfliPNG (though the last two are slow, but have good compression ratios). pingo and ECT have good combinations of speed and ratio.

JoeUX commented 6 years ago

@StephanTLavavej Also, the four libraries you parenthetically listed above were all unfamiliar to me, and none of them are listed on the website (nuwen/mingw), under either Libraries or Utilities. I had to google them for a while, and I think I know what they are now, but I can't do a PR to add them to the list on the website since the website isn't repo'ed here. So you might want to add them to the list.

StephanTLavavej commented 6 years ago

OptiPNG is interesting but I don’t have time to investigate a new utility. I would consider a pull request containing a build script following my conventions.

GMP etc. are internal libraries used by GCC; I don’t package them for use by users. Therefore it’s intentional that they aren’t listed among the components.

StephanTLavavej commented 6 years ago

Released distro 16.0. I successfully upgraded MPFR.

StephanTLavavej commented 5 years ago

@JoeUX FYI, distro 16.1 replaced pngcrush with OptiPNG.