Opened 7 months ago
Last modified 7 months ago
#68555 assigned defect
fftw-3 @3.3.10_0+gfortran [*, *-long, *-single]: Build cannot be used to satisfy dependancies for cmake built applications.
Reported by: | vk1kcm (Carl Makin) | Owned by: | MarcusCalhoun-Lopez (Marcus Calhoun-Lopez) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | ||
Port: | fftw-3 |
Description
The current fftw-3 ports cannot be used to satisfy dependancies for cmake built applications.
The autotools build of fftw-3 installs things in slightly different places than the cmake build and also omits FFTW3LibraryDepends.cmake which is referenced in the FFTW3fConfig.cmake. Note: Autotools is still the default and recommended way to build fftw-3.
See the upstream bug and a helpful comment here; https://github.com/FFTW/fftw3/issues/130#issuecomment-869046195
So there end up being two problems, one is that FFTW3LibraryDepends.cmake is only created if you build fftw-3 with cmake and is listed as a hard dependancy in FFTW3fConfig.cmake, and the other is that the different versions, -single, -long, drop their files into <CMAKE_PREFIX_PATH>/<libdirs>/cmake/fftw3/ but cmake find_package() searches <CMAKE_PREFIX_PATH>/<libdirs>/cmake/fftw3<type>/.
This makes it impossible for the cmake find_package() tool to find right .cmake files so can't build things with cmake that require fftw-3.
I'm not entirely sure what the correct answer is here, especially as it's still an open bug upstream. To get around it for the moment I've manually symlinked /opt/local/lib/cmake/fftwf-3 to /opt/local/lib/cmake/fftw-3 (for -single) and put a version of FFTW3LibraryDepends.cmake (see attached) into /opt/local/lib/cmake/ that I built separately and then modified (easy, 1 line change). This seems to be what other projects have done (ie pfsense, linked in the bug above).
Attachments (1)
Change History (2)
Changed 7 months ago by vk1kcm (Carl Makin)
Attachment: | FFTW3LibraryDepends.cmake added |
---|
comment:1 Changed 7 months ago by jmroot (Joshua Root)
Owner: | set to MarcusCalhoun-Lopez |
---|---|
Status: | new → assigned |
Hand modified cmake depends file