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}
> 

Reply via email to