Download raw body.
Fix cmake in math/fftw3
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.
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}
Fix cmake in math/fftw3