Package: praat
Severity: minor
Tags: patch
User: [email protected]
Usertags: clang-ftbfs
Hello,
Using the rebuild infrastructure, your package fails to build with clang
(instead of gcc).
Detected this kind of error:
http://clang.debian.net/status.php?version=3.6.0&key=MISSING_PROTOTYPE
Full build log is available here:
http://clang.debian.net/logs/2015-03-25/praat_5.4.0-1_unstable_clang.log
I have attached a patch to fix this error.
Regards,
--Arthur Marble
-- System Information:
Debian Release: sid (unstable)
Architecture: amd64 (x86_64)
Kernel: Linux 4.2.0-1-amd64
Locale: LANG=en_US.UTF-8, LC_CTYPE="en_US.UTF-8"
Shell: /bin/sh linked to /bin/dash
Compiler: Debian clang version 3.6.2-3 (based on LLVM 3.6.2)
--- a/external/espeak/compiledict.cpp
+++ b/external/espeak/compiledict.cpp
@@ -138,6 +138,13 @@
int group3_ix;
} RGROUP;
+// Function prototypes
+const char *LookupMnemName(MNEM_TAB *table, const int value);
+char *print_dictionary_flags(unsigned int *flags);
+char *DecodeRule(const char *group_chars, int group_length, char *rule, int control);
+int isHexDigit(int c);
+int string_sorter(char **a, char **b);
+
int isspace2(unsigned int c)
{//=========================
--- a/external/espeak/dictionary.cpp
+++ b/external/espeak/dictionary.cpp
@@ -40,6 +40,10 @@
extern char *print_dictionary_flags(unsigned int *flags);
extern char *DecodeRule(const char *group_chars, int group_length, char *rule, int control);
+// Function prototypes
+int HashDictionary(const char *string);
+int IsVowel(Translator *tr, int letter);
+
// accented characters which indicate (in some languages) the start of a separate syllable
//static const unsigned short diereses_list[7] = {L'ä',L'ë',L'ï',L'ö',L'ü',L'ÿ',0};
static const unsigned short diereses_list[7] = {0xe4,0xeb,0xef,0xf6,0xfc,0xff,0};
--- a/external/espeak/klatt.cpp
+++ b/external/espeak/klatt.cpp
@@ -71,6 +71,11 @@
static klatt_frame_t kt_frame;
static klatt_global_t kt_globals;
+// Function prototypes
+int Wavegen_Klatt(int resume);
+void SetSynth_Klatt(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v, int control);
+
+
/*
function RESONATOR
--- a/external/espeak/numbers.cpp
+++ b/external/espeak/numbers.cpp
@@ -389,6 +389,10 @@
LIGATURE('t','s',M_CURL),
};
+// Function prototypes
+bool CheckThousandsGroup(char *word, int group_len);
+
+
static int LookupLetter2(Translator *tr, unsigned int letter, char *ph_buf)
{//========================================================================
int len;
--- a/external/espeak/readclause.cpp
+++ b/external/espeak/readclause.cpp
@@ -1381,6 +1381,9 @@
} // end of attr_prosody_value
+// Function prototypes
+int AddNameData(const char *name, int wide);
+
int AddNameData(const char *name, int wide)
{//========================================
// Add the name to the namedata and return its position
--- a/external/espeak/speak_lib.cpp
+++ b/external/espeak/speak_lib.cpp
@@ -742,7 +742,7 @@
uri_callback = UriCallback;
}
-
+ESPEAK_API void espeak_SetPhonemeCallback(int (* PhonemeCallback)(const char*));
ESPEAK_API void espeak_SetPhonemeCallback(int (* PhonemeCallback)(const char*))
{//===========================================================================
phoneme_callback = PhonemeCallback;
--- a/external/espeak/synthdata.cpp
+++ b/external/espeak/synthdata.cpp
@@ -177,6 +177,7 @@
} // end of LoadPhData
+void FreePhData(void);
void FreePhData(void)
{//==================
#ifndef DATA_FROM_SOURCECODE_FILES
--- a/external/espeak/synthesize.cpp
+++ b/external/espeak/synthesize.cpp
@@ -613,6 +613,7 @@
}
+int FormantTransition2(frameref_t *seq, int &n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which);
int FormantTransition2(frameref_t *seq, int &n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which)
{//==============================================================================================================================
int ix;
--- a/external/espeak/tr_languages.cpp
+++ b/external/espeak/tr_languages.cpp
@@ -319,6 +319,7 @@
} // end of SetCyrillicLetters
+void SetIndicLetters(Translator *tr);
void SetIndicLetters(Translator *tr)
{//=================================
// Set letter types for Indic scripts, Devanagari, Tamill, etc
@@ -345,6 +346,7 @@
}
+void SetupTranslator(Translator *tr, const short *lengths, const unsigned char *amps);
void SetupTranslator(Translator *tr, const short *lengths, const unsigned char *amps)
{//==================================================================================
if(lengths != NULL)
--- a/external/espeak/translate.cpp
+++ b/external/espeak/translate.cpp
@@ -437,6 +437,7 @@
return(0);
}
+int IsSpace(unsigned int c);
int IsSpace(unsigned int c)
{//========================
if(c == 0)
@@ -607,6 +608,7 @@
}
+int IsAllUpper(const char *word);
int IsAllUpper(const char *word)
{//=============================
int c;
@@ -715,6 +717,7 @@
extern char *phondata_ptr;
+int ChangeEquivalentPhonemes(Translator *tr, int lang2, char *phonemes);
int ChangeEquivalentPhonemes(Translator *tr, int lang2, char *phonemes)
{//====================================================================
// tr: the original language
@@ -1609,6 +1612,7 @@
}
+void Word_EmbeddedCmd();
void Word_EmbeddedCmd()
{//====================
// Process embedded commands for emphasis, sayas, and break
--- a/LPC/Tube.cpp
+++ b/LPC/Tube.cpp
@@ -88,6 +88,7 @@
}
}
+void Tube_init (Tube me, double tmin, double tmax, long nt, double dt, double t1, long maxnSegments, double defaultLength);
void Tube_init (Tube me, double tmin, double tmax, long nt, double dt, double t1, long maxnSegments, double defaultLength) {
my maxnSegments = maxnSegments;
Sampled_init (me, tmin, tmax, nt, dt, t1);
--- a/dwtools/CC.cpp
+++ b/dwtools/CC.cpp
@@ -205,6 +205,7 @@
return index > cf -> numberOfCoefficients ? NUMundefined : cf -> c[index];
}
+double CC_getValueAtTime (I, double t, long index);
double CC_getValueAtTime (I, double t, long index) {
iam (CC);
long iframe = Sampled_xToNearestIndex (me, t);
@@ -230,6 +231,7 @@
return cf -> c0;
}
+double CC_getC0ValueAtTime (I, double t);
double CC_getC0ValueAtTime (I, double t) {
iam (CC);
long iframe = Sampled_xToNearestIndex (me, t);
--- a/dwtools/DataModeler.cpp
+++ b/dwtools/DataModeler.cpp
@@ -1300,6 +1300,8 @@
}
void FormantModeler_speckle_inside (FormantModeler me, Graphics g, double xmin, double xmax, double fmax,
+ long fromTrack, long toTrack, int estimated, long numberOfParameters, int errorBars, double barWidth_mm, double horizontalOffset_mm);
+void FormantModeler_speckle_inside (FormantModeler me, Graphics g, double xmin, double xmax, double fmax,
long fromTrack, long toTrack, int estimated, long numberOfParameters, int errorBars, double barWidth_mm, double horizontalOffset_mm) {
for (long iformant = fromTrack; iformant <= toTrack; iformant++) {
DataModeler ffi = (DataModeler) my trackmodelers -> item[iformant];
@@ -1376,6 +1378,7 @@
}
+long FormantModeler_getMaximumNumberOfParameters (FormantModeler me);
long FormantModeler_getMaximumNumberOfParameters (FormantModeler me) {
long maxnum = 1;
for (long i = 1; i <= my trackmodelers -> size; i++) {
@@ -1703,6 +1706,7 @@
}
}
+void FormantModeler_getVariancesBetweenTrackAndEstimatedTrack (FormantModeler me, long iformant, long estimatedFormant, double var[]);
void FormantModeler_getVariancesBetweenTrackAndEstimatedTrack (FormantModeler me, long iformant, long estimatedFormant, double var[]) {
long numberOfDataPoints = FormantModeler_getNumberOfDataPoints (me);
long numberOfFormants = my trackmodelers -> size;
@@ -2139,6 +2143,7 @@
}
}
+void FormantModeler_Formant_correctFormantsProbablyIndexedFalsely (FormantModeler me, Formant thee);
void FormantModeler_Formant_correctFormantsProbablyIndexedFalsely (FormantModeler me, Formant thee) {
try {
(void) thee;
@@ -2149,6 +2154,7 @@
}
// If e.g. first formant is obviously "missing" then assign F1 as
+void FormantModeler_correctFormantsProbablyIndexedFalsely (FormantModeler me);
void FormantModeler_correctFormantsProbablyIndexedFalsely (FormantModeler me) {
(void) me;
/* if shift down F1 ("correct" F1 missed)
--- a/dwtools/HMM.cpp
+++ b/dwtools/HMM.cpp
@@ -142,6 +142,7 @@
Thing_implement (HMMObservation, Daata, 0);
+void HMMObservation_init (HMMObservation me, const char32 *label, long numberOfComponents, long dimension, long storage);
void HMMObservation_init (HMMObservation me, const char32 *label, long numberOfComponents, long dimension, long storage) {
my label = Melder_dup (label);
my gm = GaussianMixture_create (numberOfComponents, dimension, storage);
@@ -201,6 +202,7 @@
Thing_implement (HMMState, Daata, 0);
+void HMMState_init (HMMState me, const char32 *label);
void HMMState_init (HMMState me, const char32 *label) {
my label = Melder_dup (label);
}
--- a/dwtools/Minimizers.cpp
+++ b/dwtools/Minimizers.cpp
@@ -158,6 +158,7 @@
Minimizer_reset (me, popt.peek());
}
+void Minimizer_setAfterEachIteration (Minimizer me, void (*after) (Minimizer me, Any aclosure), Any aclosure);
void Minimizer_setAfterEachIteration (Minimizer me, void (*after) (Minimizer me, Any aclosure), Any aclosure) {
my after = after;
my aclosure = aclosure;
--- a/external/espeak/voices.cpp
+++ b/external/espeak/voices.cpp
@@ -1765,6 +1765,7 @@
} // end of SetVoiceByProperties
+void FreeVoiceList();
void FreeVoiceList()
{//=================
for(int ix=0; ix<n_voices_list; ix++)
--- a/external/espeak/wavegen.cpp
+++ b/external/espeak/wavegen.cpp
@@ -798,6 +798,7 @@
} // end of WavegenInit
+int GetAmplitude(void);
int GetAmplitude(void)
{//===================
int amp;
@@ -863,6 +864,7 @@
+int PeaksToHarmspect(wavegen_peaks_t *peaks, int pitch, int *htab, int control);
int PeaksToHarmspect(wavegen_peaks_t *peaks, int pitch, int *htab, int control)
{//============================================================================
// Calculate the amplitude of each harmonics from the formants
@@ -1175,6 +1177,7 @@
+int Wavegen();
int Wavegen()
{//==========
unsigned short waveph;
@@ -1666,6 +1669,7 @@
}
+void SetPitch2(voice_t *voice, int pitch1, int pitch2, int *pitch_base, int *pitch_range);
void SetPitch2(voice_t *voice, int pitch1, int pitch2, int *pitch_base, int *pitch_range)
{//======================================================================================
int x;
@@ -1697,6 +1701,7 @@
}
+void SetPitch(int length, unsigned char *env, int pitch1, int pitch2);
void SetPitch(int length, unsigned char *env, int pitch1, int pitch2)
{//==================================================================
// length in samples
@@ -1734,6 +1739,7 @@
+void SetSynth(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v);
void SetSynth(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v)
{//========================================================================
int ix;
@@ -1869,6 +1875,7 @@
+int WavegenFill2(int fill_zeros);
int WavegenFill2(int fill_zeros)
{//============================
// Pick up next wavegen commands from the queue
--- a/sys/melder_audio.cpp
+++ b/sys/melder_audio.cpp
@@ -598,6 +598,7 @@
}
#ifdef HAVE_PULSEAUDIO
+void pulseAudio_initialize ();
void pulseAudio_initialize () {
struct MelderPlay *me = & thePlay;
if (! my pulseAudio.pulseAudioInitialized) {
@@ -644,6 +645,7 @@
my pulseAudio.pulseAudioInitialized = false;
}
+void pulseAudio_server_info_cb (pa_context *context, const pa_server_info *info, void *userdata);
void pulseAudio_server_info_cb (pa_context *context, const pa_server_info *info, void *userdata) {
struct MelderPlay *me = (struct MelderPlay *) userdata;
if (! info) {
@@ -678,6 +680,7 @@
pa_threaded_mainloop_signal (my pulseAudio.mainloop, 0);
}
+void pulseAudio_serverReport ();
void pulseAudio_serverReport () {
// TODO: initiaize context
struct MelderPlay *me = & thePlay;
@@ -766,6 +769,7 @@
(void) p;
}
// asynchronous version
+void stream_write_cb2 (pa_stream *stream, size_t length, void *userdata);
void stream_write_cb2 (pa_stream *stream, size_t length, void *userdata) {
struct MelderPlay *me = (struct MelderPlay *) userdata;
if (stream == my pulseAudio.stream) {
@@ -882,6 +886,7 @@
}
}
+void stream_state_cb (pa_stream *stream, void *userdata);
void stream_state_cb (pa_stream *stream, void *userdata) {
struct MelderPlay *me = (struct MelderPlay *) userdata;