StrawberryPerl / build-extlibs

16 stars 11 forks source link

Proj is now version 9 #5

Open shawnlaffan opened 1 year ago

shawnlaffan commented 1 year ago

The build system currently targets Proj version 5. The current release of Proj is version 9.

Proj under Strawberry Perl is used to support PDL (and possibly others?). However, PDL now uses Proj via Alien::proj.

If Strawberry perl provides libproj then Alien::proj will detect this and use it as a system lib. Otherwise Alien::proj will run a share install and build from source.

Note that Proj now also depends on sqlite, and optionally libtiff and libcurl, so the build system is a little more involved. It also uses CMake but that's already in the build system.

If full functionality for PDL is needed then Alien::proj needs to be added to the distributed packages. Otherwise users can install it themselves and then reinstall PDL.

shawnlaffan commented 4 months ago

This is closable.

PDL now uses Alien::proj so we can build with that instead. Doing so avoids the need to hack cmake files to append the underscores.

mohawk2 commented 4 months ago

Can I ask what this "appending underscores" is about/for?

shawnlaffan commented 4 months ago

DLLs in Strawberrry Perl have underscores appended to the name so they don't clash with other systems (one for 32 bit systems, two for 64 bit).

An example is libbz2-1__.dll.

Updating build systems to append the underscores is straightforward with autotools builds, but cmake systems are a bit more complex. Proj shifted to cmake a few versions back.

mohawk2 commented 4 months ago

I did not know that! Thank you. Might it be worth reaching out to cmake itself to seek a way to automatically suffix DLL names?