1AC_INIT([cava], [m4_esyscmd_s([cat version])], [karl@stavestrand.no])
2AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror foreign])
3dnl AC_CONFIG_MACRO_DIRS([m4])
4AM_PROG_AR
5LT_INIT
6AC_PROG_CC
7AC_PROG_CC_STDC
8
9AM_PROG_LIBTOOL
10
11
12dnl ############################
13dnl checking if debug is enabled
14dnl ############################
15
16AC_ARG_ENABLE([debug],
17  AS_HELP_STRING([--enable-debug],
18    [enable debug messages and frequency table output])
19)
20
21AS_IF([test "x$enable_debug" != "xyes"], [
22  dnl enabling debug mode
23  CPPFLAGS="$CPPFLAGS -DNDEBUG"
24])
25
26AC_ARG_ENABLE([asan],
27  AS_HELP_STRING([--enable-asan],
28    [build with AddressSanitizer])
29)
30
31AS_IF([test "x$enable_asan" = "xyes"], [
32  dnl enabling asan
33  CPPFLAGS="$CPPFLAGS -fsanitize=address"
34  LDFLAGS="$LDFLAGS -fsanitize=address"
35])
36
37AC_ARG_ENABLE([tsan],
38  AS_HELP_STRING([--enable-tsan],
39    [build with ThreadSanitizer])
40)
41
42AS_IF([test "x$enable_tsan" = "xyes"], [
43  dnl enabling tsan
44  CPPFLAGS="$CPPFLAGS -fsanitize=thread"
45  LDFLAGS="$LDFLAGS -fsanitize=thread"
46])
47
48AC_ARG_ENABLE([ubsan],
49  AS_HELP_STRING([--enable-ubsan],
50    [build with UndefinedBehaviorSanitizer])
51)
52
53AS_IF([test "x$enable_ubsan" = "xyes"], [
54  dnl enabling ubsan
55  CPPFLAGS="$CPPFLAGS -fsanitize=undefined"
56  LDFLAGS="$LDFLAGS -fsanitize=undefined"
57])
58
59
60dnl ######################
61dnl checking for pthread
62dnl ######################
63
64AC_CHECK_HEADERS([pthread.h],
65	AC_CHECK_LIB(pthread, pthread_create, LIBS="$LIBS -lpthread",
66		AC_MSG_ERROR([pthread.h found but there is no pthread library to make use of])
67	),
68	AC_MSG_ERROR([no pthread.h header header file found])
69)
70
71dnl ######################
72dnl checking for alloca.h
73dnl ######################
74
75AC_CHECK_HEADER([alloca.h], [CPPFLAGS="$CPPFLAGS -DHAVE_ALLOCA_H"])
76
77dnl ######################
78dnl checking for alsa dev
79dnl ######################
80AC_ARG_ENABLE([input_alsa],
81  AS_HELP_STRING([--disable-input-alsa],
82    [do not include support for input from alsa streams])
83)
84
85AS_IF([test "x$enable_input_alsa" != "xno"], [
86  AC_CHECK_LIB(asound, snd_pcm_open, have_alsa=yes, have_alsa=no)
87  if [[ $have_alsa = "yes" ]] ; then
88    LIBS="$LIBS -lasound"
89    CPPFLAGS="$CPPFLAGS -DALSA"
90  fi
91  if [[ $have_alsa = "no" ]] ; then
92    AC_MSG_NOTICE([WARNING: No alsa dev files found building without alsa support])
93  fi],
94  [have_alsa=no]
95)
96
97AM_CONDITIONAL([ALSA], [test "x$have_alsa" = "xyes"])
98
99
100dnl ######################
101dnl checking for pulse dev
102dnl ######################
103AC_ARG_ENABLE([input_pulse],
104  AS_HELP_STRING([--disable-input-pulse],
105    [do not include support for input from pulseaudio])
106)
107
108AS_IF([test "x$enable_input_pulse" != "xno"], [
109  AC_CHECK_LIB(pulse-simple, pa_simple_new, have_pulse=yes, have_pulse=no)
110  if [[ $have_pulse = "yes" ]] ; then
111    LIBS="$LIBS -lpulse-simple -lpulse"
112    CPPFLAGS="$CPPFLAGS -DPULSE"
113  fi
114
115  if [[ $have_pulse = "no" ]] ; then
116    AC_MSG_NOTICE([WARNING: No pusleaudio dev files found building without pulseaudio support])
117  fi],
118  [have_pulse=no]
119)
120
121AM_CONDITIONAL([PULSE], [test "x$have_pulse" = "xyes"])
122
123dnl ######################
124dnl checking for portaudio dev
125dnl ######################
126AC_ARG_ENABLE([input_portaudio],
127  AS_HELP_STRING([--disable-input-portaudio],
128    [do not include support for input from portaudio])
129)
130
131AS_IF([test "x$enable_input_portaudio" != "xno"], [
132  AC_CHECK_LIB(portaudio, Pa_Initialize, have_portaudio=yes, have_portaudio=no)
133  if [[ $have_portaudio = "yes" ]] ; then
134    LIBS="$LIBS -lportaudio"
135    CPPFLAGS="$CPPFLAGS -DPORTAUDIO"
136  fi
137
138  if [[ $have_portaudio = "no" ]] ; then
139    AC_MSG_NOTICE([WARNING: No portaudio dev files found building without portaudio support])
140  fi],
141  [have_portaudio=no]
142)
143
144AM_CONDITIONAL([PORTAUDIO], [test "x$have_portaudio" = "xyes"])
145
146dnl ######################
147dnl checking for sndio dev
148dnl ######################
149AC_ARG_ENABLE([input_sndio],
150  AS_HELP_STRING([--disable-input-sndio],
151    [do not include support for input from sndio])
152)
153
154AS_IF([test "x$enable_input_sndio" != "xno"], [
155  AC_CHECK_LIB(sndio, sio_open, have_sndio=yes, have_sndio=no)
156  if [[ $have_sndio = "yes" ]] ; then
157    LIBS="$LIBS -lsndio"
158    CPPFLAGS="$CPPFLAGS -DSNDIO"
159  fi
160
161  if [[ $have_sndio = "no" ]] ; then
162    AC_MSG_NOTICE([WARNING: No sndio dev files found building without sndio support])
163  fi],
164  [have_portaudio=no]
165)
166
167AM_CONDITIONAL([SNDIO], [test "x$have_sndio" = "xyes"])
168
169dnl ######################
170dnl checking for math lib
171dnl ######################
172AC_CHECK_LIB(m, sqrt, have_m=yes, have_m=no)
173    if [[ $have_m = "yes" ]] ; then
174      LIBS="$LIBS -lm"
175    fi
176
177    if [[ $have_m = "no" ]] ; then
178      AC_MSG_ERROR([math library is required!])
179    fi
180
181
182dnl ######################
183dnl checking for fftw3
184dnl ######################
185AC_CHECK_LIB(fftw3,fftw_execute, have_fftw=yes, have_fftw=no)
186    if [[ $have_fftw = "yes" ]] ; then
187      LIBS="$LIBS -lfftw3"
188    fi
189
190    if [[ $have_fftw = "no" ]] ; then
191      AC_MSG_ERROR([fftw library is required!])
192    fi
193
194dnl ######################
195dnl checking for ncursesw
196dnl ######################
197AC_ARG_ENABLE([output_ncurses],
198  AS_HELP_STRING([--disable-output-ncurses],
199    [do not include support for output with ncurses])
200)
201
202AS_IF([test "x$enable_output_ncurses" != "xno"], [
203  curses_config_bin="ncursesw6-config ncursesw5-config"
204
205  AC_PATH_PROGS(CURSES_CONFIG, $curses_config_bin)
206
207  AC_CHECK_LIB(ncursesw, initscr,
208    curses_lib=ncursesw
209  )
210
211  AC_CHECK_LIB($curses_lib, initscr,
212    if test "$CURSES_CONFIG" = "" ; then
213      LIBS="$LIBS -l$curses_lib"
214      CPPFLAGS="$CPPFLAGS -DNCURSES"
215    fi
216    if test "$CURSES_CONFIG" != "" ; then
217      CPPFLAGS="$CPPFLAGS `$CURSES_CONFIG --cflags` -DNCURSES"
218      LIBS="$LIBS `$CURSES_CONFIG --libs`"
219    fi
220
221    AC_CHECK_HEADERS([curses.h], , AC_MSG_ERROR([missing curses.h header]))
222    have_ncurses=yes,
223
224    AC_MSG_NOTICE([WARNING: building without ncursesw support ncursesw is recomended!])
225    have_ncurses=no
226  )],
227  [have_ncurses=no]
228)
229
230AM_CONDITIONAL([NCURSES], [test "x$have_ncurses" = "xyes"])
231
232
233dnl ######################
234dnl checking for system iniparser
235dnl ######################
236
237AC_ARG_ENABLE([system_iniparser],
238  AS_HELP_STRING([--disable-system-iniparser],
239    [do not use system iniparser library (use bundled iniparser library)])
240)
241
242AS_IF([test "x$enable_system_iniparser" != "xno"], [
243  AC_SEARCH_LIBS([iniparser_load], [iniparser], [
244    AC_CHECK_HEADERS([iniparser.h], [have_system_iniparser=yes])
245    ])
246  ],
247  [have_system_iniparser=no]
248)
249
250AM_CONDITIONAL([SYSTEM_LIBINIPARSER], [test "x$have_system_iniparser" = "xyes"])
251
252if test "x$have_system_iniparser" = "xyes"; then
253  AC_SUBST(SYSTEM_LIBINIPARSER, 1)
254  AC_MSG_NOTICE([Using installed iniparser])
255  LIBS="$LIBS -liniparser"
256  AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <iniparser.h>]],
257    [[dictionary* ini;
258    const char *keys[3];
259    iniparser_getseckeys(ini, "eq", keys);]])],
260    [AC_MSG_RESULT(iniparser > 3.2 test OK)],
261    [AC_MSG_RESULT(iniparser > 3.2 test failed falling back to legacy iniparser mode)
262    CPPFLAGS="$CPPFLAGS -DLEGACYINIPARSER"])
263else
264  AC_SUBST(SYSTEM_LIBINIPARSER, 0)
265  AC_CONFIG_FILES(iniparser/Makefile)
266  AC_MSG_NOTICE([Building iniparser])
267fi
268
269
270dnl ############################
271dnl Set font directory
272dnl ############################
273DEFAULT_FONT_DIR="${datarootdir}/consolefonts"
274AC_ARG_VAR(FONT_DIR, [Directory where the font will be installed.])
275if test -z "$FONT_DIR" ; then
276  FONT_DIR="$DEFAULT_FONT_DIR"
277fi
278
279AC_CANONICAL_HOST
280
281build_linux=no
282build_windows=no
283build_mac=no
284
285AC_MSG_NOTICE([Checking OS])
286# Detect the target system
287case "${host_os}" in
288    linux*)
289        AC_MSG_NOTICE([Linux detected])
290        build_linux=yes
291        ;;
292    darwin*)
293        AC_MSG_NOTICE([OSX detected])
294        build_mac=yes
295        ;;
296    *)
297        AC_MSG_NOTICE([I'm a teapot])
298        ;;
299esac
300
301# Pass the conditionals to automake
302AM_CONDITIONAL([LINUX], [test "$build_linux" = "yes"])
303AM_CONDITIONAL([OSX], [test "$build_mac" = "yes"])
304
305
306AC_CONFIG_FILES([Makefile])
307AC_OUTPUT
308
309
310
311
312
313