bat: Avoid local signal.h file

Patch backported from upstream:

  http://git.alsa-project.org/?p=alsa-utils.git;a=commit;h=3bf8e79c3bfee3ca14277aad3d9c406dfc053bbf

Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>

From 3bf8e79c3bfee3ca14277aad3d9c406dfc053bbf Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Mon, 9 Nov 2015 14:04:11 +0100
Subject: [PATCH 1/2] bat: Avoid local signal.h file

The local header file named as "signal.h" causes mysterious compile
error when built with an old glibc.
 signal.h:27: error: conflicting types for 'sin_generator_init'
 ./signal.h:27: error: previous declaration of 'sin_generator_init' was here
 signal.h:28: error: conflicting types for 'sin_generator_next_sample'
 ./signal.h:28: error: previous declaration of 'sin_generator_next_sample' was here
 ....

This turned out to be the conflict of signal.h; namely, pthread.h that
is included before our local signal.h also includes "pthread.h".
Since our local "signal.h" has a higher priority, it gets loaded
instead of the expected pthread's one.  Then we load it again, and it
screws up.

Although it's basically a bug of pthread, it's anyway not good to have
a header file conflicting with the standard header file.  So, let's
name it more explicitly as specific to BAT, bat-signal.h, for avoiding
such a conflict.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 bat/Makefile.am  |  2 +-
 bat/alsa.c       |  2 +-
 bat/bat-signal.h | 30 ++++++++++++++++++++++++++++++
 bat/signal.h     | 30 ------------------------------
 4 files changed, 32 insertions(+), 32 deletions(-)
 create mode 100644 bat/bat-signal.h
 delete mode 100644 bat/signal.h

diff --git a/bat/Makefile.am b/bat/Makefile.am
index 842ae6b..f0dc5ab 100644
--- a/bat/Makefile.am
+++ b/bat/Makefile.am
@@ -13,7 +13,7 @@ bat_SOURCES = \
 
 noinst_HEADERS = \
 	common.h \
-	signal.h \
+	bat-signal.h \
 	alsa.h \
 	convert.h \
 	analyze.h
diff --git a/bat/alsa.c b/bat/alsa.c
index 582c604..d31a633 100644
--- a/bat/alsa.c
+++ b/bat/alsa.c
@@ -27,7 +27,7 @@
 
 #include "common.h"
 #include "alsa.h"
-#include "signal.h"
+#include "bat-signal.h"
 
 struct pcm_container {
 	snd_pcm_t *handle;
diff --git a/bat/bat-signal.h b/bat/bat-signal.h
new file mode 100644
index 0000000..a295517
--- /dev/null
+++ b/bat/bat-signal.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2015 Caleb Crome
+ * Copyright (C) 2013-2015 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+/*
+ * Here's a generic sine wave generator that will work indefinitely
+ * for any frequency.
+ *
+ * Note:  the state & phasor are stored as doubles (and updated as
+ * doubles) because after a million samples the magnitude drifts a
+ * bit.  If we really need floats, it can be done with periodic
+ * renormalization of the state_real+state_imag magnitudes.
+ */
+
+int sin_generator_init(struct sin_generator *, float, float, float);
+float sin_generator_next_sample(struct sin_generator *);
+void sin_generator_vfill(struct sin_generator *, float *, int);
+int generate_sine_wave(struct bat *, int, void *);
diff --git a/bat/signal.h b/bat/signal.h
deleted file mode 100644
index a295517..0000000
--- a/bat/signal.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2015 Caleb Crome
- * Copyright (C) 2013-2015 Intel Corporation
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- */
-
-/*
- * Here's a generic sine wave generator that will work indefinitely
- * for any frequency.
- *
- * Note:  the state & phasor are stored as doubles (and updated as
- * doubles) because after a million samples the magnitude drifts a
- * bit.  If we really need floats, it can be done with periodic
- * renormalization of the state_real+state_imag magnitudes.
- */
-
-int sin_generator_init(struct sin_generator *, float, float, float);
-float sin_generator_next_sample(struct sin_generator *);
-void sin_generator_vfill(struct sin_generator *, float *, int);
-int generate_sine_wave(struct bat *, int, void *);
-- 
2.4.10

