libvips / build-win64-mxe

76 stars 15 forks source link

-dev packages should include headers? #2

Closed jcupitt closed 5 years ago

jcupitt commented 6 years ago

The -dev zip that this repo makes only includes the DLLs and EXEs. Many developers will want the headers, the link libraries and the def files too.

Perhaps there should be a switch to generate either a stripped-back binary, or a zip with all the developer files? I could cook up a PR if that would be useful.

kleisauke commented 6 years ago

A PR would be useful! Otherwise, I can take a look at it (it was on my TODO-list).

For NetVips it's not necessary (only the DLL's are sufficient), so a switch would be useful. Perhaps libvipsCC-42.dll and libvips-cpp-42.dll should be added too (they are missing now).

Do you plan to use this distribution for the upcoming libvips version?

jcupitt commented 6 years ago

I've done the rc1 in the old jhbuild one. We can switch at any point, I think, so it's not urgent. sharp have their own libvips builder based on jhbuild as well, so it'd be good to pull in anything from that too.

You're right, the vips8 C++ stuff should be in there too. I'm a bit surprised you didn't need the libstdc++ DLL, it's used by some part of libvips as well, I thought. Anyway, more stuff to check.

kleisauke commented 6 years ago

I didn't need the libstdc++-6.dll because it was only included by libvipsCC-42.dll and libvips-cpp-42.dl. libvips-42.dll (and it's dependencies) doesn't depend on it, see: libvips-web-deps Checked with the open-source modern Dependency Walker.

kleisauke commented 6 years ago

Hopefully resolved with the above commit, you can download the binaries here.

The gtk-docs is still missing from those binaries, I added it to my TODO-list. Also note that the size of those binaries are reduced quite a lot, thanks to these compiler flags. The libvips test suite still seems to run smoothly, so I think it does not affect the behavior of libvips (not sure if it's slower because of the missing -O3).

I also added support for building 32-bit binaries. You can build a 32-bit libvips binary with the 3rd parameter (for e.g. ./build.sh 8.7 web i686). If nothing is specified, defaults to x86_64.

jcupitt commented 6 years ago

Nice!

-O3 enabled the auto-vectoriser. I think with -Os you'll need to add -ftree-vectorize to enable it. You could consider -ffast-math as well.

kleisauke commented 5 years ago

The GCC optimizations -ffast-math and -ftree-vectorize are enabled with the above commit.

Also, thanks for making me a member of the libvips organization, it feels like an honor. Should I move net-vips and this repo to the organization as well?

jcupitt commented 5 years ago

Oh, no problem.

Up to you! I can see arguments for having all the bindings in one place, but equally you might prefer to keep your name on them if you want to use them for job hunting.

I held off from moving libvips into an org for a long time because I hoped having my name on it would help me, so I would completely understand.

kleisauke commented 5 years ago

Ah I see, I'll keep my name on the .NET binding for job hunting (I hadn't thought about it, since I'm still a student).

I'll transfer this repo to the libvips organization to make it easier to find and to open up development.

kleisauke commented 5 years ago

I'm not sure if the gtk-docs still need to be distributed with the binaries. I think most of the developers will check out https://libvips.github.io/libvips/API/current/.

The headers, link libraries and the def files are included in the 8.7+ binaries and I've just updated this distribution to 8.7.1 with https://github.com/libvips/build-win64-mxe/commit/cbd9dabf00989bdb75a1cec1d8b0702ce96e577d.

I'll close this issue. Thanks for noticing this!