From 2aa4a9308df8f90a55d30c10f02f1cce044875b3 Mon Sep 17 00:00:00 2001 From: Quantum Date: Fri, 20 Dec 2019 19:14:33 -0500 Subject: [PATCH 1/4] Split input modules into separate object files --- Makefile.am | 3 +- cava.c | 25 ++-------------- input/alsa.c | 10 +++++++ input/alsa.h | 2 ++ input/common.c | 43 ++++++++++++++++++++++++++++ input/common.h | 29 +++++++++++++++++++ input/fifo.c | 73 ++++------------------------------------------- input/fifo.h | 4 ++- input/portaudio.c | 9 ++++-- input/portaudio.h | 2 ++ input/pulse.c | 9 ++++++ input/pulse.h | 2 ++ input/shmem.c | 10 +++++-- input/shmem.h | 5 ++++ input/sndio.c | 6 ++++ input/sndio.h | 5 ++++ 16 files changed, 142 insertions(+), 95 deletions(-) create mode 100644 input/common.c create mode 100644 input/common.h create mode 100644 input/shmem.h create mode 100644 input/sndio.h diff --git a/Makefile.am b/Makefile.am index 2c42d10..2b48369 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,7 +9,8 @@ ACLOCAL_AMFLAGS = -I m4 M_CPPFLAGS = -DSYSTEM_LIBINIPARSER=@SYSTEM_LIBINIPARSER@ bin_PROGRAMS = cava -cava_SOURCES = cava.c +cava_SOURCES = cava.c input/common.c input/alsa.c input/fifo.c input/portaudio.c input/pulse.c \ + input/sndio.c input/shmem.c cava_LDFLAGS = -L/usr/local/lib -Wl,-rpath /usr/local/lib cava_CPPFLAGS = -DPACKAGE=\"$(PACKAGE)\" -DVERSION=\"$(VERSION)\" \ -D_POSIX_SOURCE -D _POSIX_C_SOURCE=200809L diff --git a/cava.c b/cava.c index 060207a..97542d6 100644 --- a/cava.c +++ b/cava.c @@ -50,32 +50,13 @@ #include "output/raw.h" #include "output/raw.c" +#include "input/common.h" #include "input/fifo.h" -#include "input/fifo.c" - -#ifdef ALSA -#include #include "input/alsa.h" -#include "input/alsa.c" -#endif - -#ifdef PORTAUDIO #include "input/portaudio.h" -#include "input/portaudio.c" -#endif - -#ifdef PULSE #include "input/pulse.h" -#include "input/pulse.c" -#endif - -#ifdef SNDIO -#include "input/sndio.c" -#endif - -#ifdef SHMEM -#include "input/shmem.c" -#endif +#include "input/shmem.h" +#include "input/sndio.h" #include diff --git a/input/alsa.c b/input/alsa.c index ebf3434..4a5ba63 100644 --- a/input/alsa.c +++ b/input/alsa.c @@ -1,4 +1,12 @@ // input: ALSA +#ifdef ALSA + +#include "input/alsa.h" +#include "debug.h" +#include "input/common.h" + +#include +#include // assuming stereo #define CHANNELS_COUNT 2 @@ -156,3 +164,5 @@ void *input_alsa(void *data) { snd_pcm_close(handle); return NULL; } + +#endif // ALSA diff --git a/input/alsa.h b/input/alsa.h index 9daf87d..daa2f58 100644 --- a/input/alsa.h +++ b/input/alsa.h @@ -1,3 +1,5 @@ // header file for alsa, part of cava. +#pragma once + void *input_alsa(void *data); diff --git a/input/common.c b/input/common.c new file mode 100644 index 0000000..10f3221 --- /dev/null +++ b/input/common.c @@ -0,0 +1,43 @@ +#include "input/common.h" + +int write_to_fftw_input_buffers(int16_t buf[], int16_t frames, void *data) { + struct audio_data *audio = (struct audio_data *)data; + + for (uint16_t i = 0; i < frames * 2; i += 2) { + if (audio->channels == 1) { + if (audio->average) { + audio->audio_out_bass_l[audio->bass_index] = (buf[i] + buf[i + 1]) / 2; + } + if (audio->left) { + audio->audio_out_bass_l[audio->bass_index] = buf[i]; + } + if (audio->right) { + audio->audio_out_bass_l[audio->bass_index] = buf[i + 1]; + } + } + // stereo storing channels in buffer + if (audio->channels == 2) { + audio->audio_out_bass_l[audio->bass_index] = buf[i]; + audio->audio_out_bass_r[audio->bass_index] = buf[i + 1]; + + audio->audio_out_mid_r[audio->mid_index] = audio->audio_out_bass_r[audio->bass_index]; + audio->audio_out_treble_r[audio->treble_index] = + audio->audio_out_bass_r[audio->bass_index]; + } + + audio->audio_out_mid_l[audio->mid_index] = audio->audio_out_bass_l[audio->bass_index]; + audio->audio_out_treble_l[audio->treble_index] = audio->audio_out_bass_l[audio->bass_index]; + + audio->bass_index++; + audio->mid_index++; + audio->treble_index++; + if (audio->bass_index == audio->FFTbassbufferSize - 1) + audio->bass_index = 0; + if (audio->mid_index == audio->FFTmidbufferSize - 1) + audio->mid_index = 0; + if (audio->treble_index == audio->FFTtreblebufferSize - 1) + audio->treble_index = 0; + } + + return 0; +} diff --git a/input/common.h b/input/common.h new file mode 100644 index 0000000..1aa0257 --- /dev/null +++ b/input/common.h @@ -0,0 +1,29 @@ +#pragma once + +#include +#include + +struct audio_data { + int FFTbassbufferSize; + int FFTmidbufferSize; + int FFTtreblebufferSize; + int bass_index; + int mid_index; + int treble_index; + int16_t audio_out_bass_r[65536]; + int16_t audio_out_bass_l[65536]; + int16_t audio_out_mid_r[65536]; + int16_t audio_out_mid_l[65536]; + int16_t audio_out_treble_r[65536]; + int16_t audio_out_treble_l[65536]; + int format; + unsigned int rate; + char *source; // alsa device, fifo path or pulse source + int im; // input mode alsa, fifo or pulse + int channels; + bool left, right, average; + int terminate; // shared variable used to terminate audio thread + char error_message[1024]; +}; + +int write_to_fftw_input_buffers(int16_t buf[], int16_t frames, void *data); diff --git a/input/fifo.c b/input/fifo.c index c4bb225..aea3c2e 100644 --- a/input/fifo.c +++ b/input/fifo.c @@ -1,75 +1,14 @@ +#include "input/fifo.h" +#include "input/common.h" + +#include +#include #include + #define BUFSIZE 1024 #define MAX_FFTBUFERSIZE int rc; -struct audio_data { - - int FFTbassbufferSize; - int FFTmidbufferSize; - int FFTtreblebufferSize; - int bass_index; - int mid_index; - int treble_index; - int16_t audio_out_bass_r[65536]; - int16_t audio_out_bass_l[65536]; - int16_t audio_out_mid_r[65536]; - int16_t audio_out_mid_l[65536]; - int16_t audio_out_treble_r[65536]; - int16_t audio_out_treble_l[65536]; - int format; - unsigned int rate; - char *source; // alsa device, fifo path or pulse source - int im; // input mode alsa, fifo or pulse - int channels; - bool left, right, average; - int terminate; // shared variable used to terminate audio thread - char error_message[1024]; -}; - -int write_to_fftw_input_buffers(int16_t buf[], int16_t frames, void *data) { - - struct audio_data *audio = (struct audio_data *)data; - - for (uint16_t i = 0; i < frames * 2; i += 2) { - if (audio->channels == 1) { - if (audio->average) { - audio->audio_out_bass_l[audio->bass_index] = (buf[i] + buf[i + 1]) / 2; - } - if (audio->left) { - audio->audio_out_bass_l[audio->bass_index] = buf[i]; - } - if (audio->right) { - audio->audio_out_bass_l[audio->bass_index] = buf[i + 1]; - } - } - // stereo storing channels in buffer - if (audio->channels == 2) { - audio->audio_out_bass_l[audio->bass_index] = buf[i]; - audio->audio_out_bass_r[audio->bass_index] = buf[i + 1]; - - audio->audio_out_mid_r[audio->mid_index] = audio->audio_out_bass_r[audio->bass_index]; - audio->audio_out_treble_r[audio->treble_index] = - audio->audio_out_bass_r[audio->bass_index]; - } - - audio->audio_out_mid_l[audio->mid_index] = audio->audio_out_bass_l[audio->bass_index]; - audio->audio_out_treble_l[audio->treble_index] = audio->audio_out_bass_l[audio->bass_index]; - - audio->bass_index++; - audio->mid_index++; - audio->treble_index++; - if (audio->bass_index == audio->FFTbassbufferSize - 1) - audio->bass_index = 0; - if (audio->mid_index == audio->FFTmidbufferSize - 1) - audio->mid_index = 0; - if (audio->treble_index == audio->FFTtreblebufferSize - 1) - audio->treble_index = 0; - } - - return 0; -} - int open_fifo(const char *path) { int fd = open(path, O_RDONLY); int flags = fcntl(fd, F_GETFL, 0); diff --git a/input/fifo.h b/input/fifo.h index 8afb382..52b6ba6 100644 --- a/input/fifo.h +++ b/input/fifo.h @@ -1,3 +1,5 @@ // header files for fifo, part of cava + +#pragma once + void *input_fifo(void *data); -int write_to_fftw_input_buffers(int16_t buf[], int16_t frames, void *data); diff --git a/input/portaudio.c b/input/portaudio.c index abaeef8..738663d 100644 --- a/input/portaudio.c +++ b/input/portaudio.c @@ -1,5 +1,8 @@ -#include "portaudio.h" -#include "fifo.h" +#ifdef PORTAUDIO + +#include "input/portaudio.h" +#include "input/common.h" + #include #include #include @@ -204,3 +207,5 @@ void *input_portaudio(void *audiodata) { portaudio_simple_free(data); return 0; } + +#endif // PORTAUDIO diff --git a/input/portaudio.h b/input/portaudio.h index 3e21a7d..1953e7f 100644 --- a/input/portaudio.h +++ b/input/portaudio.h @@ -1 +1,3 @@ +#pragma once + void *input_portaudio(void *audiodata); diff --git a/input/pulse.c b/input/pulse.c index ae87ab7..0decdd1 100644 --- a/input/pulse.c +++ b/input/pulse.c @@ -1,10 +1,17 @@ +#ifdef PULSE + +#include "input/pulse.h" +#include "input/common.h" + #include +#include #include #include #include #include #include #include + #define BUFFERSIZE 4096 pa_mainloop *m_pulseaudio_mainloop; @@ -140,3 +147,5 @@ void *input_pulse(void *data) { pa_simple_free(s); return 0; } + +#endif // PULSE diff --git a/input/pulse.h b/input/pulse.h index 5a16157..155da47 100644 --- a/input/pulse.h +++ b/input/pulse.h @@ -1,4 +1,6 @@ // header file for pulse, part of cava. +#pragma once + void *input_pulse(void *data); void getPulseDefaultSink(); diff --git a/input/shmem.c b/input/shmem.c index b3aaeb8..8c30999 100644 --- a/input/shmem.c +++ b/input/shmem.c @@ -1,6 +1,12 @@ +#ifdef SHMEM + +#include "input/shmem.h" +#include "input/common.h" + #include #include #include +#include #include #include @@ -36,8 +42,6 @@ void *input_shmem(void *data) { vis_t *mmap_area; int fd; /* file descriptor to mmaped area */ int mmap_count = sizeof(vis_t); - int n = 0; - int i; printf("input_shmem: source: %s", audio->source); @@ -86,3 +90,5 @@ void *input_shmem(void *data) { } return 0; } + +#endif // SHMEM diff --git a/input/shmem.h b/input/shmem.h new file mode 100644 index 0000000..d02da8d --- /dev/null +++ b/input/shmem.h @@ -0,0 +1,5 @@ +// header file for shmem, part of cava. + +#pragma once + +void *input_shmem(void *data); diff --git a/input/sndio.c b/input/sndio.c index 7da4d9b..f0c89ba 100644 --- a/input/sndio.c +++ b/input/sndio.c @@ -1,3 +1,7 @@ +#ifdef SNDIO + +#include "input/sndio.h" + #include #include #include @@ -62,3 +66,5 @@ void *input_sndio(void *data) { return 0; } + +#endif // SNDIO \ No newline at end of file diff --git a/input/sndio.h b/input/sndio.h new file mode 100644 index 0000000..61801a5 --- /dev/null +++ b/input/sndio.h @@ -0,0 +1,5 @@ +// header file for sndio, part of cava. + +#pragma once + +void *input_sndio(void *data); From 45b538ad1022f282809ea5d3ca888b0e12b3205d Mon Sep 17 00:00:00 2001 From: Quantum Date: Fri, 20 Dec 2019 19:28:14 -0500 Subject: [PATCH 2/4] Split output modules into separate object files --- Makefile.am | 3 ++- cava.c | 25 ++++++++----------------- output/raw.c | 3 +++ output/terminal_bcircle.c | 6 ++++++ output/terminal_bcircle.h | 1 + output/terminal_ncurses.c | 9 +++++++++ output/terminal_noncurses.c | 3 +++ util.h | 8 ++++++++ 8 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 util.h diff --git a/Makefile.am b/Makefile.am index 2b48369..2fc4e5b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -10,7 +10,8 @@ M_CPPFLAGS = -DSYSTEM_LIBINIPARSER=@SYSTEM_LIBINIPARSER@ bin_PROGRAMS = cava cava_SOURCES = cava.c input/common.c input/alsa.c input/fifo.c input/portaudio.c input/pulse.c \ - input/sndio.c input/shmem.c + input/sndio.c input/shmem.c output/terminal_bcircle.c output/terminal_ncurses.c \ + output/terminal_noncurses.c output/raw.c cava_LDFLAGS = -L/usr/local/lib -Wl,-rpath /usr/local/lib cava_CPPFLAGS = -DPACKAGE=\"$(PACKAGE)\" -DVERSION=\"$(VERSION)\" \ -D_POSIX_SOURCE -D _POSIX_C_SOURCE=200809L diff --git a/cava.c b/cava.c index 97542d6..0f6d693 100644 --- a/cava.c +++ b/cava.c @@ -14,45 +14,34 @@ #include #include -#include -#include -#define max(a, b) \ - ({ \ - __typeof__(a) _a = (a); \ - __typeof__(b) _b = (b); \ - _a > _b ? _a : _b; \ - }) #include #include +#include #include #include #include #include +#include #include #include #include #include #include "debug.h" +#include "util.h" -// We need to make sure that clang-format does not order the .h files before the .c files. -// clang-format off #ifdef NCURSES #include "output/terminal_bcircle.h" -#include "output/terminal_bcircle.c" #include "output/terminal_ncurses.h" -#include "output/terminal_ncurses.c" +#include #endif -#include "output/terminal_noncurses.h" -#include "output/terminal_noncurses.c" - #include "output/raw.h" -#include "output/raw.c" +#include "output/terminal_noncurses.h" +#include "input/alsa.h" #include "input/common.h" #include "input/fifo.h" -#include "input/alsa.h" #include "input/portaudio.h" #include "input/pulse.h" #include "input/shmem.h" @@ -60,6 +49,8 @@ #include +// We need to make sure that clang-format does not order the .h files before the .c files. +// clang-format off #include "config.h" #include "config.c" // clang-format on diff --git a/output/raw.c b/output/raw.c index 02f0868..eaef8ee 100644 --- a/output/raw.c +++ b/output/raw.c @@ -1,5 +1,8 @@ +#include #include #include +#include + int16_t buf_16; int8_t buf_8; diff --git a/output/terminal_bcircle.c b/output/terminal_bcircle.c index efe1ea3..302a9e6 100644 --- a/output/terminal_bcircle.c +++ b/output/terminal_bcircle.c @@ -1,3 +1,7 @@ +#ifdef NCURSES + +#include "output/terminal_bcircle.h" + #include #include #include @@ -81,3 +85,5 @@ void cleanup_terminal_bcircle(void) { endwin(); system("clear"); } + +#endif // NCURSES diff --git a/output/terminal_bcircle.h b/output/terminal_bcircle.h index 674deaf..87bbe0f 100644 --- a/output/terminal_bcircle.h +++ b/output/terminal_bcircle.h @@ -1,3 +1,4 @@ +#pragma once int init_terminal_bcircle(int col, int bgcol); void get_terminal_dim_bcircle(int *w, int *h); diff --git a/output/terminal_ncurses.c b/output/terminal_ncurses.c index 5f8ef3f..d20befe 100644 --- a/output/terminal_ncurses.c +++ b/output/terminal_ncurses.c @@ -1,7 +1,14 @@ +#ifdef NCURSES + +#include "output/terminal_ncurses.h" + #include #include +#include #include +#include "util.h" + int gradient_size = 64; struct colors { @@ -269,3 +276,5 @@ void cleanup_terminal_ncurses(void) { system("clear"); system("reset"); } + +#endif // NCURSES diff --git a/output/terminal_noncurses.c b/output/terminal_noncurses.c index 02f30ca..bb6cdcf 100644 --- a/output/terminal_noncurses.c +++ b/output/terminal_noncurses.c @@ -1,6 +1,9 @@ #include +#include #include #include +#include +#include #include #include #include diff --git a/util.h b/util.h new file mode 100644 index 0000000..6deb36e --- /dev/null +++ b/util.h @@ -0,0 +1,8 @@ +#pragma once + +#define max(a, b) \ + ({ \ + __typeof__(a) _a = (a); \ + __typeof__(b) _b = (b); \ + _a > _b ? _a : _b; \ + }) From 19fdf69664f187a07ad775415e2492a00a2226ab Mon Sep 17 00:00:00 2001 From: Quantum Date: Fri, 20 Dec 2019 19:34:48 -0500 Subject: [PATCH 3/4] Split config.c into a separate object file --- Makefile.am | 6 +++--- cava.c | 7 +------ config.c | 42 ++++++++++++------------------------------ config.h | 26 +++++++++++++++++++++++--- 4 files changed, 39 insertions(+), 42 deletions(-) diff --git a/Makefile.am b/Makefile.am index 2fc4e5b..4f0fb44 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,9 +9,9 @@ ACLOCAL_AMFLAGS = -I m4 M_CPPFLAGS = -DSYSTEM_LIBINIPARSER=@SYSTEM_LIBINIPARSER@ bin_PROGRAMS = cava -cava_SOURCES = cava.c input/common.c input/alsa.c input/fifo.c input/portaudio.c input/pulse.c \ - input/sndio.c input/shmem.c output/terminal_bcircle.c output/terminal_ncurses.c \ - output/terminal_noncurses.c output/raw.c +cava_SOURCES = cava.c config.c input/common.c input/alsa.c input/fifo.c input/portaudio.c \ + input/pulse.c input/sndio.c input/shmem.c output/terminal_bcircle.c \ + output/terminal_ncurses.c output/terminal_noncurses.c output/raw.c cava_LDFLAGS = -L/usr/local/lib -Wl,-rpath /usr/local/lib cava_CPPFLAGS = -DPACKAGE=\"$(PACKAGE)\" -DVERSION=\"$(VERSION)\" \ -D_POSIX_SOURCE -D _POSIX_C_SOURCE=200809L diff --git a/cava.c b/cava.c index 0f6d693..2c084f4 100644 --- a/cava.c +++ b/cava.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -47,13 +48,7 @@ #include "input/shmem.h" #include "input/sndio.h" -#include - -// We need to make sure that clang-format does not order the .h files before the .c files. -// clang-format off #include "config.h" -#include "config.c" -// clang-format on #ifdef __GNUC__ // curses.h or other sources may already define diff --git a/config.c b/config.c index 71ad749..359c73e 100644 --- a/config.c +++ b/config.c @@ -1,27 +1,16 @@ -#define MAX_ERROR_LEN 1024 +#include "config.h" + +#include +#include +#include +#include +#include +#include double smoothDef[5] = {1, 1, 1, 1, 1}; char *inputMethod, *outputMethod, *channels; -struct config_params { - - char *color, *bcolor, *raw_target, *audio_source, - /**gradient_color_1, *gradient_color_2,*/ **gradient_colors, *data_format, *mono_option; - char bar_delim, frame_delim; - double monstercat, integral, gravity, ignore, sens; - unsigned int lowcf, highcf; - double *smooth; - int smcount, customEQ, im, om, col, bgcol, autobars, stereo, is_bin, ascii_range, bit_format, - gradient, gradient_count, fixedbars, framerate, bw, bs, autosens, overshoot, waves, - FFTbufferSize, fifoSample; -}; - -struct error_s { - char message[MAX_ERROR_LEN]; - int length; -}; - void write_errorf(void *err, const char *fmt, ...) { struct error_s *error = (struct error_s *)err; va_list args; @@ -138,11 +127,7 @@ bool validate_colors(void *params, void *err) { return true; } -bool validate_config(char supportedInput[255], void *params, void *err) { - - struct config_params *p = (struct config_params *)params; - struct error_s *error = (struct error_s *)err; - +bool validate_config(char supportedInput[255], struct config_params *p, struct error_s *error) { // validate: input method p->im = 0; if (strcmp(inputMethod, "alsa") == 0) { @@ -385,11 +370,8 @@ bool load_colors(struct config_params *p, dictionary *ini, void *err) { return true; } -bool load_config(char configPath[255], char supportedInput[255], void *params, bool colorsOnly, - void *err) { - - struct config_params *p = (struct config_params *)params; - struct error_s *error = (struct error_s *)err; +bool load_config(char configPath[255], char supportedInput[255], struct config_params *p, + bool colorsOnly, struct error_s *error) { FILE *fp; // config: creating path to default config file @@ -565,7 +547,7 @@ bool load_config(char configPath[255], char supportedInput[255], void *params, b } #endif - bool result = validate_config(supportedInput, params, error); + bool result = validate_config(supportedInput, p, error); iniparser_freedict(ini); return result; } diff --git a/config.h b/config.h index 69e513b..0dc5c1d 100644 --- a/config.h +++ b/config.h @@ -1,6 +1,26 @@ -#include +#pragma once + #include #include -bool load_config(char configPath[255], char supportedInput[255], void *p, bool colorsOnly, - void *error); +#define MAX_ERROR_LEN 1024 + +struct config_params { + char *color, *bcolor, *raw_target, *audio_source, + /**gradient_color_1, *gradient_color_2,*/ **gradient_colors, *data_format, *mono_option; + char bar_delim, frame_delim; + double monstercat, integral, gravity, ignore, sens; + unsigned int lowcf, highcf; + double *smooth; + int smcount, customEQ, im, om, col, bgcol, autobars, stereo, is_bin, ascii_range, bit_format, + gradient, gradient_count, fixedbars, framerate, bw, bs, autosens, overshoot, waves, + FFTbufferSize, fifoSample; +}; + +struct error_s { + char message[MAX_ERROR_LEN]; + int length; +}; + +bool load_config(char configPath[255], char supportedInput[255], struct config_params *p, + bool colorsOnly, struct error_s *error); From f7064a97070022d977e1b0984505fca75b041598 Mon Sep 17 00:00:00 2001 From: Quantum Date: Fri, 20 Dec 2019 20:12:58 -0500 Subject: [PATCH 4/4] Use AM_CONDITIONAL to do conditional compilation --- Makefile.am | 25 ++++++++++++++++++++++--- configure.ac | 11 +++++++++++ input/alsa.c | 4 ---- input/portaudio.c | 4 ---- input/pulse.c | 4 ---- input/shmem.c | 4 ---- input/sndio.c | 4 ---- output/terminal_bcircle.c | 4 ---- output/terminal_ncurses.c | 4 ---- 9 files changed, 33 insertions(+), 31 deletions(-) diff --git a/Makefile.am b/Makefile.am index 4f0fb44..fa82769 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,14 +9,33 @@ ACLOCAL_AMFLAGS = -I m4 M_CPPFLAGS = -DSYSTEM_LIBINIPARSER=@SYSTEM_LIBINIPARSER@ bin_PROGRAMS = cava -cava_SOURCES = cava.c config.c input/common.c input/alsa.c input/fifo.c input/portaudio.c \ - input/pulse.c input/sndio.c input/shmem.c output/terminal_bcircle.c \ - output/terminal_ncurses.c output/terminal_noncurses.c output/raw.c +cava_SOURCES = cava.c config.c input/common.c input/fifo.c \ + output/terminal_noncurses.c output/raw.c cava_LDFLAGS = -L/usr/local/lib -Wl,-rpath /usr/local/lib cava_CPPFLAGS = -DPACKAGE=\"$(PACKAGE)\" -DVERSION=\"$(VERSION)\" \ -D_POSIX_SOURCE -D _POSIX_C_SOURCE=200809L cava_CFLAGS = -std=c99 -Wall -Wextra -Wno-unused-result -Wno-maybe-uninitialized +if ALSA + cava_SOURCES += input/alsa.c +endif + +if PORTAUDIO + cava_SOURCES += input/portaudio.c +endif + +if PULSE + cava_SOURCES += input/pulse.c +endif + +if SNDIO + cava_SOURCES += input/sndio.c +endif + +if NCURSES + cava_SOURCES += output/terminal_bcircle.c output/terminal_ncurses.c +endif + cava_font_dir = @FONT_DIR@ cava_font__DATA = cava.psf diff --git a/configure.ac b/configure.ac index 9169aa6..0239ca6 100644 --- a/configure.ac +++ b/configure.ac @@ -65,6 +65,8 @@ AC_CHECK_LIB(asound, snd_pcm_open, have_alsa=yes, have_alsa=no) AC_MSG_NOTICE([WARNING: No alsa dev files found building without alsa support]) fi + AM_CONDITIONAL([ALSA], [test x$have_alsa = xyes]) + dnl ###################### dnl checking for pulse dev @@ -79,6 +81,8 @@ AC_CHECK_LIB(pulse-simple, pa_simple_new, have_pulse=yes, have_pulse=no) AC_MSG_NOTICE([WARNING: No pusleaudio dev files found building without pulseaudio support]) fi + AM_CONDITIONAL([PULSE], [test x$have_pulse = xyes]) + dnl ###################### dnl checking for portaudio dev dnl ###################### @@ -92,6 +96,8 @@ AC_CHECK_LIB(portaudio, Pa_Initialize, have_portaudio=yes, have_portaudio=no) AC_MSG_NOTICE([WARNING: No portaudio dev files found building without portaudio support]) fi + AM_CONDITIONAL([PORTAUDIO], [test x$have_portaudio = xyes]) + dnl ###################### dnl checking for sndio dev dnl ###################### @@ -105,6 +111,8 @@ AC_CHECK_LIB(sndio, sio_open, have_sndio=yes, have_sndio=no) AC_MSG_NOTICE([WARNING: No sndio dev files found building without sndio support]) fi + AM_CONDITIONAL([SNDIO], [test x$have_sndio = xyes]) + dnl ###################### dnl checking for math lib dnl ###################### @@ -151,8 +159,10 @@ AC_CHECK_LIB($curses_lib, initscr, LIBS="$LIBS `$CURSES_CONFIG --libs`" fi AC_CHECK_HEADERS([curses.h], , AC_MSG_ERROR([missing curses.h header])) + AM_CONDITIONAL([NCURSES], [true]) , AC_MSG_NOTICE([WARNING: building without ncursesw support ncursesw is recomended!]) + AM_CONDITIONAL([NCURSES], [false]) ) @@ -199,6 +209,7 @@ AS_IF([test "x$enable_shmem" = "xyes"], [ CPPFLAGS="$CPPFLAGS -DSHMEM" LIBS="$LIBS -lrt" ]) +AM_CONDITIONAL([SHMEM], [test "x$enable_shmem" = xyes]) diff --git a/input/alsa.c b/input/alsa.c index 4a5ba63..8ddce75 100644 --- a/input/alsa.c +++ b/input/alsa.c @@ -1,6 +1,4 @@ // input: ALSA -#ifdef ALSA - #include "input/alsa.h" #include "debug.h" #include "input/common.h" @@ -164,5 +162,3 @@ void *input_alsa(void *data) { snd_pcm_close(handle); return NULL; } - -#endif // ALSA diff --git a/input/portaudio.c b/input/portaudio.c index 738663d..1d51c9a 100644 --- a/input/portaudio.c +++ b/input/portaudio.c @@ -1,5 +1,3 @@ -#ifdef PORTAUDIO - #include "input/portaudio.h" #include "input/common.h" @@ -207,5 +205,3 @@ void *input_portaudio(void *audiodata) { portaudio_simple_free(data); return 0; } - -#endif // PORTAUDIO diff --git a/input/pulse.c b/input/pulse.c index 0decdd1..8229752 100644 --- a/input/pulse.c +++ b/input/pulse.c @@ -1,5 +1,3 @@ -#ifdef PULSE - #include "input/pulse.h" #include "input/common.h" @@ -147,5 +145,3 @@ void *input_pulse(void *data) { pa_simple_free(s); return 0; } - -#endif // PULSE diff --git a/input/shmem.c b/input/shmem.c index 8c30999..c218968 100644 --- a/input/shmem.c +++ b/input/shmem.c @@ -1,5 +1,3 @@ -#ifdef SHMEM - #include "input/shmem.h" #include "input/common.h" @@ -90,5 +88,3 @@ void *input_shmem(void *data) { } return 0; } - -#endif // SHMEM diff --git a/input/sndio.c b/input/sndio.c index f0c89ba..ec5922e 100644 --- a/input/sndio.c +++ b/input/sndio.c @@ -1,5 +1,3 @@ -#ifdef SNDIO - #include "input/sndio.h" #include @@ -66,5 +64,3 @@ void *input_sndio(void *data) { return 0; } - -#endif // SNDIO \ No newline at end of file diff --git a/output/terminal_bcircle.c b/output/terminal_bcircle.c index 302a9e6..90363cb 100644 --- a/output/terminal_bcircle.c +++ b/output/terminal_bcircle.c @@ -1,5 +1,3 @@ -#ifdef NCURSES - #include "output/terminal_bcircle.h" #include @@ -85,5 +83,3 @@ void cleanup_terminal_bcircle(void) { endwin(); system("clear"); } - -#endif // NCURSES diff --git a/output/terminal_ncurses.c b/output/terminal_ncurses.c index d20befe..6a2260c 100644 --- a/output/terminal_ncurses.c +++ b/output/terminal_ncurses.c @@ -1,5 +1,3 @@ -#ifdef NCURSES - #include "output/terminal_ncurses.h" #include @@ -276,5 +274,3 @@ void cleanup_terminal_ncurses(void) { system("clear"); system("reset"); } - -#endif // NCURSES