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