On Mon Jan 08, 2024 at 07:34:56PM +0100, Rafael Sadowski wrote: > On Mon Jan 08, 2024 at 05:53:02PM +0100, Rafael Sadowski wrote: > > Please find a diff to fix the missing FFTW3LibraryDepends.cmake in > > fftw3. This file would normally be generated by cmake, but we are using > > the more feature-complete and stable autotools configure. > > > > https://github.com/FFTW/fftw3/issues/130 > > > > While I'm here, I think the cmake files should be moved from -double, > > -float to -common? > > > > Forget the previews diff. Here is a proper diff that fix the build with > upcoming krita. More consumer tests needed but I think this is the way > to go. > > > - Split cmake files in fftw3 and fftw3f depending on the FLAVOR. > - Subst FFTW3LibraryDepends.cmake (missing in the old diff) > - With this approach we could introduce "--enable-long-double" (l) and > "--enable-quad-precision" (q) if we need it. I saw it in krita 5.2: > > -- Could NOT find FFTW3l (missing: FFTW3l_DIR) > -- Could NOT find FFTW3q (missing: FFTW3q_DIR) > -- Found FFTW3: /usr/local/include (found version "3.3.10") > > In the next step I would test all consumers. Happy to read your input.
All consumers survived a `make port-lib-depends-check` test without significant changes. OK? > > Rafael > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/math/fftw3/Makefile,v > diff -u -p -u -p -r1.41 Makefile > --- Makefile 27 Sep 2023 09:27:54 -0000 1.41 > +++ Makefile 8 Jan 2024 18:26:41 -0000 > @@ -14,6 +14,9 @@ SHARED_LIBS= fftw3 7.1 \ > fftw3f_threads 1.2 > CATEGORIES= math > > +REVISION-main= 0 > +REVISION-common= 0 > + > HOMEPAGE= https://www.fftw.org/ > > # GPL > @@ -34,8 +37,11 @@ USE_GMAKE= Yes > CONFIGURE_STYLE=gnu > CONFIGURE_ARGS= --enable-threads > > +FFTW3_SUFX= > + > .if ${FLAVOR} == "float" > -CONFIGURE_ARGS+=--enable-float > +FFTW3_SUFX= f > +CONFIGURE_ARGS+= --enable-float > FULLPKGNAME-main= fftw3-float-${V} > .endif > > @@ -44,8 +50,17 @@ RUN_DEPENDS-main= ${FULLPKGPATH-common} > WANTLIB-main= c m pthread > PKG_ARCH-common= * > > +SUBST_VARS += FFTW3_SUFX > + > post-install: > ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/fftw3 > ${INSTALL_DATA} ${WRKSRC}/doc/fftw3.pdf ${PREFIX}/share/doc/fftw3 > +.if ${FLAVOR} == "float" > + mv ${WRKINST}/${LOCALBASE}/lib/cmake/fftw3/ > ${PREFIX}/lib/cmake/fftw3${FFTW3_SUFX} > +.endif > + # https://github.com/FFTW/fftw3/issues/130 > + ${INSTALL_DATA} ${FILESDIR}/FFTW3LibraryDepends.cmake.in \ > + ${PREFIX}/lib/cmake/fftw3${FFTW3_SUFX}/FFTW3LibraryDepends.cmake > + ${SUBST_CMD} > ${PREFIX}/lib/cmake/fftw3${FFTW3_SUFX}/FFTW3LibraryDepends.cmake > > .include <bsd.port.mk> > Index: files/FFTW3LibraryDepends.cmake.in > =================================================================== > RCS file: files/FFTW3LibraryDepends.cmake.in > diff -N files/FFTW3LibraryDepends.cmake.in > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ files/FFTW3LibraryDepends.cmake.in 8 Jan 2024 18:26:41 -0000 > @@ -0,0 +1,68 @@ > +# Generated by CMake > + > +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8) > + message(FATAL_ERROR "CMake >= 2.8.0 required") > +endif() > +if(CMAKE_VERSION VERSION_LESS "2.8.3") > + message(FATAL_ERROR "CMake >= 2.8.3 required") > +endif() > +cmake_policy(PUSH) > +cmake_policy(VERSION 2.8.3...3.25) > +#---------------------------------------------------------------- > +# Generated CMake target import file. > +#---------------------------------------------------------------- > + > +# Commands may need to know the format version. > +set(CMAKE_IMPORT_FILE_VERSION 1) > + > +# Protect against multiple inclusion, which would fail when already imported > targets are added once more. > +set(_cmake_targets_defined "") > +set(_cmake_targets_not_defined "") > +set(_cmake_expected_targets "") > +foreach(_cmake_expected_target IN ITEMS FFTW3::fftw3${FFTW3_SUFX}) > + list(APPEND _cmake_expected_targets "${_cmake_expected_target}") > + if(TARGET "${_cmake_expected_target}") > + list(APPEND _cmake_targets_defined "${_cmake_expected_target}") > + else() > + list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}") > + endif() > +endforeach() > +unset(_cmake_expected_target) > +if(_cmake_targets_defined STREQUAL _cmake_expected_targets) > + unset(_cmake_targets_defined) > + unset(_cmake_targets_not_defined) > + unset(_cmake_expected_targets) > + unset(CMAKE_IMPORT_FILE_VERSION) > + cmake_policy(POP) > + return() > +endif() > +if(NOT _cmake_targets_defined STREQUAL "") > + string(REPLACE ";" ", " _cmake_targets_defined_text > "${_cmake_targets_defined}") > + string(REPLACE ";" ", " _cmake_targets_not_defined_text > "${_cmake_targets_not_defined}") > + message(FATAL_ERROR "Some (but not all) targets in this export set were > already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets > not yet defined: ${_cmake_targets_not_defined_text}\n") > +endif() > +unset(_cmake_targets_defined) > +unset(_cmake_targets_not_defined) > +unset(_cmake_expected_targets) > + > + > +# Create imported target FFTW3::fftw3${FFTW3_SUFX} > +add_library(FFTW3::fftw3${FFTW3_SUFX} SHARED IMPORTED) > + > +set_target_properties(FFTW3::fftw3${FFTW3_SUFX} PROPERTIES > + INTERFACE_LINK_LIBRARIES "m" > +) > + > +# Import target "FFTW3::fftw3${FFTW3_SUFX}" for configuration "Release" > +set_property(TARGET FFTW3::fftw3${FFTW3_SUFX} APPEND PROPERTY > IMPORTED_CONFIGURATIONS RELEASE) > +set_target_properties(FFTW3::fftw3${FFTW3_SUFX} PROPERTIES > + IMPORTED_LOCATION_RELEASE > "${LOCALBASE}/lib/libfftw3${FFTW3_SUFX}.so.${LIBfftw3_VERSION}" > + IMPORTED_SONAME_RELEASE "libfftw3${FFTW3_SUFX}.so.${LIBfftw3_VERSION}" > + ) > + > +# This file does not depend on other imported targets which have > +# been exported from the same project but in a separate export set. > + > +# Commands beyond this point should not need to know the version. > +set(CMAKE_IMPORT_FILE_VERSION) > +cmake_policy(POP) > Index: pkg/PFRAG.double-main > =================================================================== > RCS file: /cvs/ports/math/fftw3/pkg/PFRAG.double-main,v > diff -u -p -u -p -r1.7 PFRAG.double-main > --- pkg/PFRAG.double-main 21 Nov 2022 23:01:17 -0000 1.7 > +++ pkg/PFRAG.double-main 8 Jan 2024 18:26:41 -0000 > @@ -3,6 +3,7 @@ > @bin bin/fftw-wisdom > lib/cmake/fftw3/FFTW3Config.cmake > lib/cmake/fftw3/FFTW3ConfigVersion.cmake > +lib/cmake/fftw3/FFTW3LibraryDepends.cmake > @static-lib lib/libfftw3.a > lib/libfftw3.la > @lib lib/libfftw3.so.${LIBfftw3_VERSION} > Index: pkg/PFRAG.float-main > =================================================================== > RCS file: /cvs/ports/math/fftw3/pkg/PFRAG.float-main,v > diff -u -p -u -p -r1.7 PFRAG.float-main > --- pkg/PFRAG.float-main 21 Nov 2022 23:01:17 -0000 1.7 > +++ pkg/PFRAG.float-main 8 Jan 2024 18:26:41 -0000 > @@ -1,7 +1,8 @@ > @pkgpath math/fftw3,float > @bin bin/fftwf-wisdom > -lib/cmake/fftw3/FFTW3fConfig.cmake > -lib/cmake/fftw3/FFTW3fConfigVersion.cmake > +lib/cmake/fftw3f/FFTW3fConfig.cmake > +lib/cmake/fftw3f/FFTW3fConfigVersion.cmake > +lib/cmake/fftw3f/FFTW3LibraryDepends.cmake > @static-lib lib/libfftw3f.a > lib/libfftw3f.la > @lib lib/libfftw3f.so.${LIBfftw3f_VERSION} >