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;

