summaryrefslogtreecommitdiff
path: root/cras/configure.ac
blob: f39a14a69a94eaad7a2940600e2e75980ba52940 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
AC_INIT([cras], [0.1], [dgreid@chromium.org],
             [cras], [http://www.chromium.org/])
AC_PREREQ([2.59])

AC_CANONICAL_HOST

AM_INIT_AUTOMAKE([1.10 -Wall no-define])
#AC_CONFIG_HEADERS([config.h])

# To compile with full logs, use V=1 with make instead.
AM_SILENT_RULES([yes])

m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
AC_PROG_LIBTOOL
AC_PROG_CC
# c++ unit test (gtest).
AC_PROG_CXX
AC_LANG_C
AM_PROG_CC_C_O
PKG_PROG_PKG_CONFIG
AC_CONFIG_FILES([Makefile src/Makefile libcras.pc])

PKG_CHECK_MODULES([LIBSPEEX], [ speexdsp >= 1.2 ])
PKG_CHECK_MODULES([ASOUNDLIB], [ alsa >= 1.1.0 ])

AC_CHECK_HEADERS([iniparser/iniparser.h])

AC_ARG_ENABLE([dbus], AS_HELP_STRING([--disable-dbus], [Disable all DBUS uses]), have_dbus=$enableval, have_dbus=yes)
AM_CONDITIONAL(HAVE_DBUS, test "$have_dbus" = "yes")
if test "$have_dbus" = "yes"; then
    PKG_CHECK_MODULES([DBUS], [ dbus-1 >= 1.4.12 ])
    AS_VAR_APPEND([DBUS_CFLAGS], [" -DCRAS_DBUS"])
else
    DBUS_CFLAGS=
    DBUS_LIBS=
fi
AC_SUBST(DBUS_LIBS)
AC_SUBST(DBUS_CFLAGS)

AC_ARG_ENABLE([selinux], AS_HELP_STRING([--enable-selinux], [Enable SELinux calls]), have_selinux=$enableval, have_selinux=no)
AM_CONDITIONAL(HAVE_SELINUX, test "$have_selinux" = "yes")
if test "$have_selinux" = "yes"; then
    PKG_CHECK_MODULES([SELINUX], [ libselinux ])
    AS_VAR_APPEND([SELINUX_CFLAGS], [" -DCRAS_SELINUX"])
else
    SELINUX_CFLAGS=
    SELINUX_LIBS=
fi
AC_SUBST(SELINUX_CFLAGS)
AC_SUBST(SELINUX_LIBS)

# WEBRTC APM support
AC_ARG_ENABLE([webrtc-apm], AS_HELP_STRING([--enable-webrtc-apm], [Enable webrtc-apm uses]), have_webrtc_apm=$enableval, have_webrtc_apm=no)
AM_CONDITIONAL(HAVE_WEBRTC_APM, test "$have_webrtc_apm" = "yes")
if test "$have_webrtc_apm" = "yes"; then
    PKG_CHECK_MODULES([WEBRTC_APM], [ libwebrtc_apm ])
    AC_DEFINE(HAVE_WEBRTC_APM, 1, [Define to use webrtc-apm.])
else
    WEBRTC_APM_LIBS=
fi
AC_SUBST(WEBRTC_APM_LIBS)

# Build fuzzer binaries
AC_ARG_ENABLE([fuzzer], AS_HELP_STRING([--enable-fuzzer], [Enable fuzzer build]), have_fuzzer=$enableval, have_fuzzer=no)
AM_CONDITIONAL(HAVE_FUZZER, test "$have_fuzzer" = "yes")
if test "$have_fuzzer" = "yes"; then
    AC_DEFINE(HAVE_FUZZER, 1, [Define to build fuzzers.])
fi

PKG_CHECK_MODULES([SBC], [ sbc >= 1.0 ])
AC_CHECK_HEADERS([iniparser/iniparser.h iniparser.h], [FOUND_INIPARSER=1;break])
test [$FOUND_INIPARSER] || AC_MSG_ERROR([Missing iniparser, please install.])
AC_SEARCH_LIBS([LADSPA], [ladspa-sdk], [], [
	AC_CHECK_HEADERS([ladspa.h], [], [
		AC_MSG_ERROR([Missing ladspa-sdk, please install.])
	])
])
PKG_CHECK_MODULES([UDEV], [ libudev >= 1.0 ])
PKG_CHECK_MODULES([GTEST], [ gtest >= 1.0 ])
AC_CHECK_LIB(asound, snd_pcm_ioplug_create,,
	     AC_ERROR([*** libasound has no external plugin SDK]), -ldl)

AC_ARG_ENABLE([alsa-plugin], AS_HELP_STRING([--disable-alsa-plugin],
                                            [Disable building of ALSA plugin]))

AC_ARG_ENABLE([metrics], AS_HELP_STRING([--enable-metrics], [Enable metrics uses]), have_metrics=$enableval, have_metrics=no)
if test "$have_metrics" = "yes"; then
    AC_DEFINE(HAVE_LIB_METRICS, 1, [Define to use libmetrics])
    METRICS_LIBS=-lmetrics
else
    METRICS_LIBS=
fi
AC_SUBST(METRICS_LIBS)

# Check if the system copy of the cras rust library should be used. If not, make sure cargo and rustc are present to build it.
AC_ARG_WITH([system-cras-rust],
	    AS_HELP_STRING([--with-system-cras-rust], [Use the system provided cras_rust library]),
	    with_system_rust=$enableval,
	    with_system_rust=no)
AM_CONDITIONAL(WITH_SYSTEM_RUST, test "$with_system_rust" = "yes")
if test "$with_system_rust" = "no"; then
    AC_CHECK_PROG(CARGO, [cargo], [yes], [no])
    AS_IF(test x$CARGO = xno,
        AC_MSG_ERROR([cargo is required to build cras rust lib.])
    )
    AC_CHECK_PROG(RUSTC, [rustc], [yes], [no])
    AS_IF(test x$RUSTC = xno,
        AC_MSG_ERROR([rustc is required to build cras rust lib.])
    )
fi

# Determine ALSA plugin directory.
test "x$prefix" = xNONE && prefix=$ac_default_prefix
test "x$exec_prefix" = xNONE && exec_prefix=$prefix

AC_ARG_WITH(plugindir,
    AS_HELP_STRING([--with-plugindir=dir],
	[path where ALSA plugin files are stored]),
    plugindir="$withval", plugindir="")
if test -z "$plugindir"; then
    eval dir="$libdir"
    case "$dir" in
    /*) ;;
    *) dir="$dir"
    esac
    plugindir="$dir/alsa-lib"
fi
AC_DEFINE_UNQUOTED(ALSA_PLUGIN_DIR, "$plugindir",
                   [directory containing ALSA add-on modules])
ALSA_PLUGIN_DIR="$plugindir"
AC_SUBST(ALSA_PLUGIN_DIR)

# Determine CRAS configuration directory.
eval cras_config_file_dir="$sysconfdir/cras"
AC_DEFINE_UNQUOTED(CRAS_CONFIG_FILE_DIR, "$cras_config_file_dir",
                   [directory containing CRAS configuration])

# CRAS socket dir
AC_ARG_WITH(socketdir,
    AS_HELP_STRING([--with-socketdir=dir],
        [path where CRAS stores its sockets]),
    socketdir="$withval",
    socketdir="/run/cras")
AC_DEFINE_UNQUOTED(CRAS_SOCKET_FILE_DIR, "$socketdir",
                   [directory containing CRAS socket files])

# SSE4_2 support
AC_ARG_ENABLE(sse42, [AS_HELP_STRING([--enable-sse42],[enable SSE42 optimizations])], have_sse42=$enableval, have_sse42=yes)
if  test "x$host_cpu" != xx86_64; then
	have_sse42=no
fi
if test "$have_sse42" = "yes"; then
        AC_DEFINE(HAVE_SSE42,1,[Define to enable SSE42 optimizations.])
	SSE42_CFLAGS="-DOPS_SSE42 -msse4.2 -ffast-math"
fi
AM_CONDITIONAL(HAVE_SSE42, test "$have_sse42" = "yes")
AC_SUBST(SSE42_CFLAGS)

# AVX support
AC_ARG_ENABLE(avx, [AS_HELP_STRING([--enable-avx],[enable AVX optimizations])], have_avx=$enableval, have_avx=yes)
if  test "x$host_cpu" != xx86_64; then
	have_avx=no
fi
if test "$have_avx" = "yes"; then
        AC_DEFINE(HAVE_AVX,1,[Define to enable AVX optimizations.])
	AVX_CFLAGS="-DOPS_AVX -mavx -ffast-math"
fi
AM_CONDITIONAL(HAVE_AVX, test "$have_avx" = "yes")
AC_SUBST(AVX_CFLAGS)

# AVX2 support
AC_ARG_ENABLE(avx2, [AS_HELP_STRING([--enable-avx2],[enable AVX2 optimizations])], have_avx2=$enableval, have_avx2=yes)
if  test "x$host_cpu" != xx86_64; then
	have_avx2=no
fi
if test "$have_avx2" = "yes"; then
        AC_DEFINE(HAVE_AVX2,1,[Define to enable AVX2 optimizations.])
	AVX2_CFLAGS="-DOPS_AVX2 -mavx2 -ffast-math"
fi
AM_CONDITIONAL(HAVE_AVX2, test "$have_avx2" = "yes")
AC_SUBST(AVX2_CFLAGS)

# FMA support
AC_ARG_ENABLE(fma, [AS_HELP_STRING([--enable-fma],[enable FMA optimizations])], have_fma=$enableval, have_fma=yes)
if  test "x$host_cpu" != xx86_64; then
	have_fma=no
fi
if test "$have_fma" = "yes"; then
        AC_DEFINE(HAVE_FMA,1,[Define to enable FMA optimizations.])
	FMA_CFLAGS="-DOPS_FMA -mavx2 -mfma -ffast-math"
fi
AM_CONDITIONAL(HAVE_FMA, test "$have_fma" = "yes")
AC_SUBST(FMA_CFLAGS)

AC_OUTPUT

AC_MSG_NOTICE([

Enable SSE42:                  ${have_sse42}
Enable AVX:                    ${have_avx}
Enable AVX2:                   ${have_avx2}
Enable FMA:                    ${have_fma}
])