Control: tags -1 patch

Juhani Numminen kirjoitti 04.12.2017 klo 00:39:

A FreeBSD bug from 2012 looks similar, there the fix was
s|inline void|static inline void|.[1]
That change entered upstream repository earlier in 2012.[2]
Debian's version doesn't have it.[3]

A patch is attached. Build was successful using cowbuilder, sid i386.

Juhani
Description: Fix FTBFS with gcc 7: undefined references
Origin: https://sourceforge.net/p/nyquist/code/73/tree/trunk/nyquist/ffts/src/fftlib.c?diff=50d0ad1227184648a86e886f:72
Author: Roger B. Dannenberg <[email protected]>
Bug-Debian: https://bugs.debian.org/878318
Bug-FreeBSD: https://bugs.freebsd.org/174376
Last-Update: 2017-12-10

--- a/ffts/src/fftlib.c
+++ b/ffts/src/fftlib.c
@@ -1,6 +1,8 @@
 /*******************************************************************
 lower level fft stuff including routines called in fftext.c and fft2d.c
 *******************************************************************/
+/* inline declarations modified by RBD for C99 compiler */
+
 #include "fftlib.h"
 #include <math.h>
 #define	MCACHE	(11-(sizeof(float)/8))	// fft's with M bigger than this bust primary cache
@@ -61,8 +63,8 @@
 parts of ffts1
 *************************************************/
 
-inline void bitrevR2(float *ioptr, long M, short *BRLow);
-inline void bitrevR2(float *ioptr, long M, short *BRLow){
+//inline void bitrevR2(float *ioptr, long M, short *BRLow);
+static inline void bitrevR2(float *ioptr, long M, short *BRLow){
 /*** bit reverse and first radix 2 stage of forward or inverse fft ***/
 float	f0r;
 float	f0i;
@@ -198,8 +200,8 @@
 };
 }
 
-inline void fft2pt(float *ioptr);
-inline void fft2pt(float *ioptr){
+//inline void fft2pt(float *ioptr);
+static inline void fft2pt(float *ioptr){
 /***   RADIX 2 fft	***/
 float f0r, f0i, f1r, f1i;
 float t0r, t0i;
@@ -229,8 +231,8 @@
 }
 
 
-inline void fft4pt(float *ioptr);
-inline void fft4pt(float *ioptr){
+//inline void fft4pt(float *ioptr);
+static inline void fft4pt(float *ioptr){
 /***   RADIX 4 fft	***/
 float f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i;
 float t0r, t0i, t1r, t1i;
@@ -284,8 +286,8 @@
 ioptr[7] = f3i;
 }
 
-inline void fft8pt(float *ioptr);
-inline void fft8pt(float *ioptr){
+//inline void fft8pt(float *ioptr);
+static inline void fft8pt(float *ioptr){
 /***   RADIX 8 fft	***/
 float w0r = 1.0/MYROOT2; /* cos(pi/4)	*/
 float f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i;
@@ -403,8 +405,8 @@
 ioptr[15] = f6i;
 }
 
-inline void bfR2(float *ioptr, long M, long NDiffU);
-inline void bfR2(float *ioptr, long M, long NDiffU){
+//inline void bfR2(float *ioptr, long M, long NDiffU);
+static inline void bfR2(float *ioptr, long M, long NDiffU){
 /*** 2nd radix 2 stage ***/
 unsigned long	pos;
 unsigned long	posi;
@@ -512,8 +514,8 @@
 }
 }
 
-inline void bfR4(float *ioptr, long M, long NDiffU);
-inline void bfR4(float *ioptr, long M, long NDiffU){
+//inline void bfR4(float *ioptr, long M, long NDiffU);
+static inline void bfR4(float *ioptr, long M, long NDiffU){
 /*** 1 radix 4 stage ***/
 unsigned long	pos;
 unsigned long	posi;
@@ -721,8 +723,8 @@
 
 }
 
-inline void bfstages(float *ioptr, long M, float *Utbl, long Ustride, long NDiffU, long StageCnt);
-inline void bfstages(float *ioptr, long M, float *Utbl, long Ustride, long NDiffU, long StageCnt){
+// inline void bfstages(float *ioptr, long M, float *Utbl, long Ustride, long NDiffU, long StageCnt);
+static inline void bfstages(float *ioptr, long M, float *Utbl, long Ustride, long NDiffU, long StageCnt){
 /***   RADIX 8 Stages	***/
 unsigned long	pos;
 unsigned long	posi;
@@ -1125,8 +1127,8 @@
 parts of iffts1
 *************************************************/
 
-inline void scbitrevR2(float *ioptr, long M, short *BRLow, float scale);
-inline void scbitrevR2(float *ioptr, long M, short *BRLow, float scale){
+// inline void scbitrevR2(float *ioptr, long M, short *BRLow, float scale);
+static inline void scbitrevR2(float *ioptr, long M, short *BRLow, float scale){
 /*** scaled bit reverse and first radix 2 stage forward or inverse fft ***/
 float	f0r;
 float	f0i;
@@ -1262,8 +1264,8 @@
 };
 }
 
-inline void ifft2pt(float *ioptr, float scale);
-inline void ifft2pt(float *ioptr, float scale){
+//inline void ifft2pt(float *ioptr, float scale);
+static inline void ifft2pt(float *ioptr, float scale){
 /***   RADIX 2 ifft	***/
 float f0r, f0i, f1r, f1i;
 float t0r, t0i;
@@ -1292,8 +1294,8 @@
 ioptr[3] = scale*f1i;
 }
 
-inline void ifft4pt(float *ioptr, float scale);
-inline void ifft4pt(float *ioptr, float scale){
+// inline void ifft4pt(float *ioptr, float scale);
+static inline void ifft4pt(float *ioptr, float scale){
 /***   RADIX 4 ifft	***/
 float f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i;
 float t0r, t0i, t1r, t1i;
@@ -1347,8 +1349,8 @@
 ioptr[7] = scale*f3i;
 }
 
-inline void ifft8pt(float *ioptr, float scale);
-inline void ifft8pt(float *ioptr, float scale){
+//inline void ifft8pt(float *ioptr, float scale);
+static inline void ifft8pt(float *ioptr, float scale){
 /***   RADIX 8 ifft	***/
 float w0r = 1.0/MYROOT2; /* cos(pi/4)	*/
 float f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i;
@@ -1467,8 +1469,8 @@
 ioptr[15] = scale*f6i;
 }
 
-inline void ibfR2(float *ioptr, long M, long NDiffU);
-inline void ibfR2(float *ioptr, long M, long NDiffU){
+//inline void ibfR2(float *ioptr, long M, long NDiffU);
+static inline void ibfR2(float *ioptr, long M, long NDiffU){
 /*** 2nd radix 2 stage ***/
 unsigned long	pos;
 unsigned long	posi;
@@ -1576,8 +1578,8 @@
 }
 }
 
-inline void ibfR4(float *ioptr, long M, long NDiffU);
-inline void ibfR4(float *ioptr, long M, long NDiffU){
+//inline void ibfR4(float *ioptr, long M, long NDiffU);
+static inline void ibfR4(float *ioptr, long M, long NDiffU){
 /*** 1 radix 4 stage ***/
 unsigned long	pos;
 unsigned long	posi;
@@ -1785,8 +1787,8 @@
 
 }
 
-inline void ibfstages(float *ioptr, long M, float *Utbl, long Ustride, long NDiffU, long StageCnt);
-inline void ibfstages(float *ioptr, long M, float *Utbl, long Ustride, long NDiffU, long StageCnt){
+//inline void ibfstages(float *ioptr, long M, float *Utbl, long Ustride, long NDiffU, long StageCnt);
+static inline void ibfstages(float *ioptr, long M, float *Utbl, long Ustride, long NDiffU, long StageCnt){
 /***   RADIX 8 Stages	***/
 unsigned long	pos;
 unsigned long	posi;
@@ -2193,8 +2195,8 @@
 parts of rffts1
 *************************************************/
 
-inline void rfft1pt(float *ioptr);
-inline void rfft1pt(float *ioptr){
+//inline void rfft1pt(float *ioptr);
+static inline void rfft1pt(float *ioptr){
 /***   RADIX 2 rfft	***/
 float f0r, f0i;
 float t0r, t0i;
@@ -2212,8 +2214,8 @@
 ioptr[1] = t0i;
 }
 
-inline void rfft2pt(float *ioptr);
-inline void rfft2pt(float *ioptr){
+//inline void rfft2pt(float *ioptr);
+static inline void rfft2pt(float *ioptr){
 /***   RADIX 4 rfft	***/
 float f0r, f0i, f1r, f1i;
 float t0r, t0i;
@@ -2245,8 +2247,8 @@
 ioptr[3] = f1i;
 }
 
-inline void rfft4pt(float *ioptr);
-inline void rfft4pt(float *ioptr){
+//inline void rfft4pt(float *ioptr);
+static inline void rfft4pt(float *ioptr){
 /***   RADIX 8 rfft	***/
 float f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i;
 float t0r, t0i, t1r, t1i;
@@ -2318,8 +2320,8 @@
 ioptr[7] = scale*f3i;
 }
 
-inline void rfft8pt(float *ioptr);
-inline void rfft8pt(float *ioptr){
+//inline void rfft8pt(float *ioptr);
+static inline void rfft8pt(float *ioptr){
 /***   RADIX 16 rfft	***/
 float w0r = 1.0/MYROOT2; /* cos(pi/4)	*/
 float w1r = MYCOSPID8; /* cos(pi/8)	*/
@@ -2477,8 +2479,8 @@
 ioptr[15] = scale*f6i;
 }
 
-inline void frstage(float *ioptr, long M, float *Utbl);
-inline void frstage(float *ioptr, long M, float *Utbl){
+//inline void frstage(float *ioptr, long M, float *Utbl);
+static inline void frstage(float *ioptr, long M, float *Utbl){
 /*	Finish RFFT		*/
 
 unsigned long 	pos;
@@ -2687,8 +2689,8 @@
 parts of riffts1
 *************************************************/
 
-inline void rifft1pt(float *ioptr, float scale);
-inline void rifft1pt(float *ioptr, float scale){
+//inline void rifft1pt(float *ioptr, float scale);
+static inline void rifft1pt(float *ioptr, float scale){
 /***   RADIX 2 rifft	***/
 float f0r, f0i;
 float t0r, t0i;
@@ -2706,8 +2708,8 @@
 ioptr[1] = scale*t0i;
 }
 
-inline void rifft2pt(float *ioptr, float scale);
-inline void rifft2pt(float *ioptr, float scale){
+//inline void rifft2pt(float *ioptr, float scale);
+static inline void rifft2pt(float *ioptr, float scale){
 /***   RADIX 4 rifft	***/
 float f0r, f0i, f1r, f1i;
 float t0r, t0i;
@@ -2740,8 +2742,8 @@
 ioptr[3] = scale*f1i;
 }
 
-inline void rifft4pt(float *ioptr, float scale);
-inline void rifft4pt(float *ioptr, float scale){
+//inline void rifft4pt(float *ioptr, float scale);
+static inline void rifft4pt(float *ioptr, float scale){
 /***   RADIX 8 rifft	***/
 float f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i;
 float t0r, t0i, t1r, t1i;
@@ -2811,8 +2813,8 @@
 ioptr[7] = scale*f3i;
 }
 
-inline void rifft8pt(float *ioptr, float scale);
-inline void rifft8pt(float *ioptr, float scale){
+//inline void rifft8pt(float *ioptr, float scale);
+static inline void rifft8pt(float *ioptr, float scale){
 /***   RADIX 16 rifft	***/
 float w0r = 1.0/MYROOT2; /* cos(pi/4)	*/
 float w1r = MYCOSPID8; /* cos(pi/8)	*/
@@ -2968,8 +2970,8 @@
 ioptr[15] = scale*f6i;
 }
 
-inline void ifrstage(float *ioptr, long M, float *Utbl);
-inline void ifrstage(float *ioptr, long M, float *Utbl){
+//inline void ifrstage(float *ioptr, long M, float *Utbl);
+static inline void ifrstage(float *ioptr, long M, float *Utbl){
 /*	Start RIFFT		*/
 
 unsigned long 	pos;

Reply via email to