blob: a0e2e2d697efffce9fa4486236b800a526647ab0 [file] [log] [blame]
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +01001AC_PREREQ([2.69])
Liam Girdwood6bb37832018-01-10 20:43:25 +00002AC_INIT([sof],[m4_esyscmd(./version.sh)],[sound-open-firmware@alsa-project.org])
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +01003AC_CONFIG_SRCDIR([src/init/init.c])
4AC_CONFIG_HEADERS([src/include/config.h])
5AC_CONFIG_MACRO_DIRS([m4])
6AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability subdir-objects silent-rules color-tests dist-xz tar-ustar])
7
8# Initialize maintainer mode
9AM_MAINTAINER_MODE([enable])
10
11# get version info from git
Pierre-Louis Bossart81708a52018-04-04 18:46:50 -050012m4_define(sof_major, `cat .version | cut -dv -f2 | cut -d. -f1`)
13m4_define(sof_minor, `cat .version | cut -d. -f2 | cut -d- -f1`)
14m4_define(sof_micro, `cat .version | cut -d. -f3 | cut -d- -f1`)
15AC_DEFINE_UNQUOTED([SOF_MAJOR], sof_major, [Sof major version])
16AC_DEFINE_UNQUOTED([SOF_MINOR], sof_minor, [Sof minor version])
17AC_DEFINE_UNQUOTED([SOF_MICRO], sof_micro, [Sof micro version])
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010018
19AC_CANONICAL_HOST
20
21# General compiler flags
Liam Girdwood05ef4342018-02-13 20:29:40 +000022CFLAGS="${CFLAGS:+$CFLAGS } -O2 -g -Wall -Werror -Wl,-EL -Wmissing-prototypes"
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010023
Liam Girdwoodcc9fba32018-01-22 23:31:24 +000024# General assembler flags
25ASFLAGS="-DASSEMBLY"
26AC_SUBST(ASFLAGS)
27
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010028# Cross compiler tool libgcc and headers
Liam Girdwood8855ce52016-10-18 17:18:16 +010029AC_ARG_WITH([root-dir],
30 AS_HELP_STRING([--with-root-dir], [Specify location of cross gcc libraries and headers]),
31 [], [with_root_dir=no])
Ranjani Sridharan05058232018-01-24 22:42:38 -080032
33# check if we are building FW image or library
34AC_ARG_ENABLE(library, [AS_HELP_STRING([--enable-library],[build library])], have_library=$enableval, have_library=no)
35if test "$have_library" = "yes"; then
36 AC_DEFINE([CONFIG_LIB], [1], [Configure for Shared Library])
37fi
38AM_CONDITIONAL(BUILD_LIB, test "$have_library" = "yes")
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010039
Liam Girdwood05ef4342018-02-13 20:29:40 +000040# check if we are building tools
41AC_ARG_ENABLE(rimage, [AS_HELP_STRING([--enable-rimage],[build rimage tool])], have_rimage=$enableval, have_rimage=no)
42if test "$have_rimage" = "yes"; then
43 AC_DEFINE([CONFIG_RIMAGE], [1], [Configure to build rimage])
44fi
45AM_CONDITIONAL(BUILD_RIMAGE, test "$have_rimage" = "yes")
46
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010047# Architecture support
48AC_ARG_WITH([arch],
49 AS_HELP_STRING([--with-arch], [Specify DSP architecture]),
50 [], [with_arch=no])
51
52case "$with_arch" in
53 xtensa*)
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010054
55 ARCH_CFLAGS="-mtext-section-literals"
56 AC_SUBST(ARCH_CFLAGS)
57
58 ARCH_LDFLAGS="-nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static"
59 AC_SUBST(XTENSA_LDFLAGS)
60
61 # extra CFLAGS defined here otherwise configure working gcc tests fails.
Liam Girdwood05ef4342018-02-13 20:29:40 +000062 CFLAGS="${CFLAGS:+$CFLAGS }-fno-inline-functions -nostdlib -mlongcalls"
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010063 LDFLAGS="${LDFLAGS:+$LDFLAGS }-nostdlib"
64
65 #ARCH_ASFLAGS=""
66 AC_SUBST(ARCH_ASFLAGS)
67
68 ARCH="xtensa"
69 AC_SUBST(ARCH)
Ranjani Sridharan05058232018-01-24 22:42:38 -080070
71 AS_IF([test "x$with_root_dir" = xno],
72 AC_MSG_ERROR([Please specify cross compiler root header directory]),
73 [ROOT_DIR=$with_root_dir])
74 AC_SUBST(ROOT_DIR)
75 ;;
76 host*)
77
78 ARCH_CFLAGS="-g"
79 AC_SUBST(ARCH_CFLAGS)
80
81 # extra CFLAGS defined here otherwise configure working gcc tests fails.
82 CFLAGS="${CFLAGS:+$CFLAGS } -O3"
83 LDFLAGS="${LDFLAGS:+$LDFLAGS }-lpthread"
84
85 ARCH="host"
86 AC_SUBST(ARCH)
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010087 ;;
88 *)
Liam Girdwood05ef4342018-02-13 20:29:40 +000089 if test "$have_rimage" = "no"; then
90 AC_MSG_ERROR([DSP architecture not specified])
91 fi
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010092 ;;
93esac
94
Liam Girdwood2eab4672017-11-27 05:24:51 +080095AM_CONDITIONAL(BUILD_XTENSA, test "$ARCH" = "xtensa")
Ranjani Sridharan05058232018-01-24 22:42:38 -080096AM_CONDITIONAL(BUILD_HOST, test "$ARCH" = "host")
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010097
98# Platform support
99AC_ARG_WITH([platform],
100 AS_HELP_STRING([--with-platform], [Specify Host Platform]),
101 [], [with_platform=no])
102
103case "$with_platform" in
104 baytrail*)
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100105
106 PLATFORM_LDSCRIPT="baytrail.x"
107 AC_SUBST(PLATFORM_LDSCRIPT)
108
109 PLATFORM="baytrail"
110 AC_SUBST(PLATFORM)
111
112 FW_NAME="byt"
113 AC_SUBST(FW_NAME)
114
Liam Girdwoodf63c7892017-12-04 20:08:39 +0000115 XTENSA_CORE="hifiep_bd5"
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100116 AC_SUBST(XTENSA_CORE)
117
118 AC_DEFINE([CONFIG_BAYTRAIL], [1], [Configure for Baytrail])
Keyon Jiefb784212017-12-06 21:16:32 +0800119 AC_DEFINE([CONFIG_HOST_PTABLE], [1], [Configure handling host page table])
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100120 ;;
121 cherrytrail*)
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100122
123 PLATFORM_LDSCRIPT="baytrail.x"
124 AC_SUBST(PLATFORM_LDSCRIPT)
125
126 PLATFORM="baytrail"
127 AC_SUBST(PLATFORM)
128
129 FW_NAME="cht"
130 AC_SUBST(FW_NAME)
131
Liam Girdwoodf63c7892017-12-04 20:08:39 +0000132 XTENSA_CORE="hifiep_bd5"
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100133 AC_SUBST(XTENSA_CORE)
134
135 AC_DEFINE([CONFIG_CHERRYTRAIL], [1], [Configure for Cherrytrail])
Keyon Jiefb784212017-12-06 21:16:32 +0800136 AC_DEFINE([CONFIG_HOST_PTABLE], [1], [Configure handling host page table])
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100137 ;;
Liam Girdwood095c9072018-01-23 14:53:00 +0000138 apollolake*)
139
140 PLATFORM_LDSCRIPT="apollolake.x"
141 AC_SUBST(PLATFORM_LDSCRIPT)
142
143 PLATFORM="apollolake"
144 AC_SUBST(PLATFORM)
145
146 FW_NAME="apl"
147 AC_SUBST(FW_NAME)
148
149 XTENSA_CORE="hifi3_std"
150 AC_SUBST(XTENSA_CORE)
151
152 AC_DEFINE([CONFIG_APOLLOLAKE], [1], [Configure for Apololake])
153 AC_DEFINE([CONFIG_IRQ_MAP], [1], [Configure IRQ maps])
Keyon Jiec610c642018-02-08 20:48:11 +0800154 AC_DEFINE([CONFIG_DMA_GW], [1], [Configure DMA Gateway])
Liam Girdwood095c9072018-01-23 14:53:00 +0000155 ;;
Liam Girdwoodf198ad92018-01-21 23:48:35 +0000156 haswell*)
157
158 PLATFORM_LDSCRIPT="haswell.x"
159 AC_SUBST(PLATFORM_LDSCRIPT)
160
161 PLATFORM="haswell"
162 AC_SUBST(PLATFORM)
163
164 FW_NAME="hsw"
165 AC_SUBST(FW_NAME)
166
167 XTENSA_CORE="hifiep_bd5"
168 AC_SUBST(XTENSA_CORE)
169
170 AC_DEFINE([CONFIG_HASWELL], [1], [Configure for Haswell])
171 AC_DEFINE([CONFIG_HOST_PTABLE], [1], [Configure handling host page table])
172 ;;
173 broadwell*)
174
175 PLATFORM_LDSCRIPT="broadwell.x"
176 AC_SUBST(PLATFORM_LDSCRIPT)
177
178 PLATFORM="haswell"
179 AC_SUBST(PLATFORM)
180
181 FW_NAME="bdw"
182 AC_SUBST(FW_NAME)
183
184 XTENSA_CORE="hifiep_bd5"
185 AC_SUBST(XTENSA_CORE)
186
187 AC_DEFINE([CONFIG_BROADWELL], [1], [Configure for Broadwell])
188 AC_DEFINE([CONFIG_HOST_PTABLE], [1], [Configure handling host page table])
189 ;;
Liam Girdwood17c6bcf2018-01-23 15:44:08 +0000190 cannonlake*)
191
192 PLATFORM_LDSCRIPT="cannonlake.x"
193 AC_SUBST(PLATFORM_LDSCRIPT)
194
195 PLATFORM="cannonlake"
196 AC_SUBST(PLATFORM)
197
198 FW_NAME="cnl"
199 AC_SUBST(FW_NAME)
200
201 XTENSA_CORE="hifi4_std"
202 AC_SUBST(XTENSA_CORE)
203
204 AC_DEFINE([CONFIG_CANNONLAKE], [1], [Configure for Cannonlake])
205 AC_DEFINE([CONFIG_IRQ_MAP], [1], [Configure IRQ maps])
Keyon Jiec610c642018-02-08 20:48:11 +0800206 AC_DEFINE([CONFIG_DMA_GW], [1], [Configure DMA Gateway])
Liam Girdwood17c6bcf2018-01-23 15:44:08 +0000207 ;;
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100208 *)
Liam Girdwood05ef4342018-02-13 20:29:40 +0000209 if test "$have_rimage" = "no"; then
210 if test "$ARCH" = "host"; then
211 PLATFORM="host"
212 AC_SUBST(PLATFORM)
213 else
214 AC_MSG_ERROR([Host platform not specified])
215 fi
Ranjani Sridharan05058232018-01-24 22:42:38 -0800216 fi
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100217 ;;
218esac
219
Liam Girdwood2eab4672017-11-27 05:24:51 +0800220AM_CONDITIONAL(BUILD_BAYTRAIL, test "$FW_NAME" = "byt")
221AM_CONDITIONAL(BUILD_CHERRYTRAIL, test "$FW_NAME" = "cht")
222AM_CONDITIONAL(BUILD_HASWELL, test "$FW_NAME" = "hsw")
223AM_CONDITIONAL(BUILD_BROADWELL, test "$FW_NAME" = "bdw")
224AM_CONDITIONAL(BUILD_APOLLOLAKE, test "$FW_NAME" = "apl")
Liam Girdwood17c6bcf2018-01-23 15:44:08 +0000225AM_CONDITIONAL(BUILD_CANNONLAKE, test "$FW_NAME" = "cnl")
226AM_CONDITIONAL(BUILD_BOOTLOADER, test "$FW_NAME" = "cnl")
Liam Girdwood095c9072018-01-23 14:53:00 +0000227AM_CONDITIONAL(BUILD_MODULE, test "$FW_NAME" = "apl" -o "$FW_NAME" = "cnl")
Rander Wang45027652018-02-08 16:06:33 +0800228AM_CONDITIONAL(BUILD_APL_SSP, test "$FW_NAME" = "apl" -o "$FW_NAME" = "cnl")
Liam Girdwoodf198ad92018-01-21 23:48:35 +0000229
Sebastien Guiriecca23f512016-11-02 08:44:19 +0100230# DSP core support (Optional)
231AC_ARG_WITH([dsp-core],
232 AS_HELP_STRING([--with-dsp-core], [Specify DSP Core]),
233 [], [with_dsp_core=no])
234
235case "$with_dsp_core" in
236 CHT_audio_hifiep*)
237 # BXT/CHT DSP Core
238 XTENSA_CORE="CHT_audio_hifiep"
239 AC_SUBST(XTENSA_CORE)
240 ;;
241
242esac
243
Liam Girdwood17c6bcf2018-01-23 15:44:08 +0000244PLATFORM_BOOT_LDR_LDSCRIPT="boot_ldr.x"
245AC_SUBST(PLATFORM_BOOT_LDR_LDSCRIPT)
246
Ranjani Sridharan05058232018-01-24 22:42:38 -0800247# Optimisation settings and checks
248
249# SSE4_2 support
250AC_ARG_ENABLE(sse42, [AS_HELP_STRING([--enable-sse42],[enable SSE42 optimizations])], have_sse42=$enableval, have_sse42=yes)
251AX_CHECK_COMPILE_FLAG(-msse4.2, [SSE42_CFLAGS="-DOPS_SSE42 -msse4.2 -ffast-math -ftree-vectorizer-verbose=0"],
252 [have_sse42=no])
253if test "$have_sse42" = "yes"; then
254 AC_DEFINE(HAVE_SSE42,1,[Define to enable SSE42 optimizations.])
255fi
256AM_CONDITIONAL(HAVE_SSE42, test "$have_sse42" = "yes")
257AC_SUBST(SSE42_CFLAGS)
258
259# AVX support
260AC_ARG_ENABLE(avx, [AS_HELP_STRING([--enable-avx],[enable AVX optimizations])], have_avx=$enableval, have_avx=yes)
261AX_CHECK_COMPILE_FLAG(-mavx, [AVX_CFLAGS="-DOPS_AVX -mavx -ffast-math -ftree-vectorizer-verbose=0"],
262 [have_avx=no])
263if test "$have_avx" = "yes"; then
264 AC_DEFINE(HAVE_AVX,1,[Define to enable AVX optimizations.])
265fi
266AM_CONDITIONAL(HAVE_AVX, test "$have_avx" = "yes")
267AC_SUBST(AVX_CFLAGS)
268
269
270# AVX2 support
271AC_ARG_ENABLE(avx2, [AS_HELP_STRING([--enable-avx2],[enable AVX2 optimizations])], have_avx2=$enableval, have_avx2=yes)
272AX_CHECK_COMPILE_FLAG(-mavx2, [AVX2_CFLAGS="-DOPS_AVX2 -mavx2 -ffast-math -ftree-vectorizer-verbose=0"],
273 [have_avx2=no])
274if test "$have_avx2" = "yes"; then
275 AC_DEFINE(HAVE_AVX2,1,[Define to enable AVX2 optimizations.])
276fi
277AM_CONDITIONAL(HAVE_AVX2, test "$have_avx2" = "yes")
278AC_SUBST(AVX2_CFLAGS)
279
280
281# FMA support
282AC_ARG_ENABLE(fma, [AS_HELP_STRING([--enable-fma],[enable FMA optimizations])], have_fma=$enableval, have_fma=yes)
283AX_CHECK_COMPILE_FLAG(-mfma, [FMA_CFLAGS="-DOPS_FMA -mfma -ffast-math -ftree-vectorizer-verbose=0"],
284 [have_fma=no])
285if test "$have_fma" = "yes"; then
286 AC_DEFINE(HAVE_FMA,1,[Define to enable FMA optimizations.])
287fi
288AM_CONDITIONAL(HAVE_FMA, test "$have_fma" = "yes")
289AC_SUBST(FMA_CFLAGS)
290
291# Hifi2EP
292AC_ARG_ENABLE(hifi2ep, [AS_HELP_STRING([--enable-hifi2ep],[enable HiFi2EP optimizations])], have_hifi2ep=$enableval, have_hifi2ep=yes)
293AX_CHECK_COMPILE_FLAG(-mhifi2ep, [FMA_CFLAGS="-DOPS_HIFI2EP -mhifi2ep -ffast-math -ftree-vectorizer-verbose=0"],
294 [have_hifi2ep=no])
295if test "$have_hifi2ep" = "yes"; then
296 AC_DEFINE(HAVE_HIFI2EP,1,[Define to enable Hifi2 EP optimizations.])
297fi
298AM_CONDITIONAL(HAVE_HIFI2EP, test "$have_hifi2ep" = "yes")
299AC_SUBST(HIFI2EP_CFLAGS)
300
301# Hifi3
302AC_ARG_ENABLE(hifi3, [AS_HELP_STRING([--enable-hifi3],[enable HiFi3 optimizations])], have_hifi3=$enableval, have_hifi3=yes)
303AX_CHECK_COMPILE_FLAG(-mhihi3, [FMA_CFLAGS="-DOPS_HIFI3 -mhifi3 -ffast-math -ftree-vectorizer-verbose=0"],
304 [have_hifi3=no])
305if test "$have_hifi3" = "yes"; then
306 AC_DEFINE(HAVE_HIFI3,1,[Define to enable Hifi3 optimizations.])
307fi
308AM_CONDITIONAL(HAVE_HIFI3, test "$have_hifi3" = "yes")
309AC_SUBST(HIFI3_CFLAGS)
310
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100311# Test after CFLAGS set othewise test of cross compiler fails.
312AM_PROG_AS
313AM_PROG_AR
314AC_PROG_CC
315LT_INIT
316AC_CHECK_TOOL([OBJCOPY], [objcopy], [])
317AC_CHECK_TOOL([OBJDUMP], [objdump], [])
318
Liam Girdwood05ef4342018-02-13 20:29:40 +0000319# Check for openssl - used by rimage
320AC_CHECK_LIB([crypto], [OPENSSL_config], , [have_openssl="no"])
321if test "$have_rimage" = "yes"; then
322 if test "$have_openssl" = "no"; then
323 AC_MSG_ERROR([Need OpenSSL libcrypto for rimage code signing])
324 fi
325fi
326
327PEM_KEY_PREFIX="/usr/local/share/rimage"
328AC_DEFINE_UNQUOTED([PEM_KEY_PREFIX], ["$PEM_KEY_PREFIX"], ["Path for PEM keys"])
329AC_SUBST(PEM_KEY_PREFIX)
330
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100331AM_EXTRA_RECURSIVE_TARGETS([bin])
332
333AM_EXTRA_RECURSIVE_TARGETS([vminstall])
334
335AC_CONFIG_FILES([
336 Makefile
Liam Girdwood05ef4342018-02-13 20:29:40 +0000337 rimage/Makefile
338 rimage/keys/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100339 src/Makefile
340 src/tasks/Makefile
341 src/init/Makefile
342 src/arch/Makefile
343 src/arch/xtensa/Makefile
344 src/arch/xtensa/include/Makefile
Liam Girdwoodb14e8522018-01-10 17:36:41 +0000345 src/arch/xtensa/include/arch/Makefile
346 src/arch/xtensa/include/xtensa/Makefile
347 src/arch/xtensa/include/xtensa/config/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100348 src/arch/xtensa/hal/Makefile
349 src/arch/xtensa/xtos/Makefile
Ranjani Sridharan05058232018-01-24 22:42:38 -0800350 src/arch/host/Makefile
351 src/arch/host/include/Makefile
352 src/arch/host/include/arch/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100353 src/audio/Makefile
Seppo Ingalsuo6a274832017-06-07 14:17:55 +0300354 src/math/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100355 src/drivers/Makefile
356 src/include/Makefile
Pierre-Louis Bossart81708a52018-04-04 18:46:50 -0500357 src/include/sof/Makefile
358 src/include/sof/audio/Makefile
359 src/include/sof/audio/coefficients/Makefile
360 src/include/sof/audio/coefficients/src/Makefile
361 src/include/sof/math/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100362 src/include/uapi/Makefile
363 src/ipc/Makefile
Ranjani Sridharan05058232018-01-24 22:42:38 -0800364 src/library/Makefile
365 src/library/include/Makefile
366 src/library/include/platform/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100367 src/lib/Makefile
368 src/platform/Makefile
369 src/platform/baytrail/Makefile
370 src/platform/baytrail/include/Makefile
371 src/platform/baytrail/include/platform/Makefile
372 src/platform/baytrail/include/xtensa/Makefile
373 src/platform/baytrail/include/xtensa/config/Makefile
Liam Girdwood095c9072018-01-23 14:53:00 +0000374 src/platform/apollolake/Makefile
375 src/platform/apollolake/include/Makefile
376 src/platform/apollolake/include/platform/Makefile
377 src/platform/apollolake/include/xtensa/Makefile
378 src/platform/apollolake/include/xtensa/config/Makefile
Liam Girdwoodf198ad92018-01-21 23:48:35 +0000379 src/platform/haswell/Makefile
380 src/platform/haswell/include/Makefile
381 src/platform/haswell/include/platform/Makefile
382 src/platform/haswell/include/xtensa/Makefile
383 src/platform/haswell/include/xtensa/config/Makefile
Liam Girdwood17c6bcf2018-01-23 15:44:08 +0000384 src/platform/cannonlake/Makefile
385 src/platform/cannonlake/include/Makefile
386 src/platform/cannonlake/include/platform/Makefile
387 src/platform/cannonlake/include/xtensa/Makefile
388 src/platform/cannonlake/include/xtensa/config/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100389])
390AC_OUTPUT
391
392echo "
393---{ $PACKAGE_NAME $VERSION }---
394
395Target Architecture: ${ARCH}
396Target Platform: ${PLATFORM}
Sebastien Guiriecca23f512016-11-02 08:44:19 +0100397Target Core: ${XTENSA_CORE}
Liam Girdwood05ef4342018-02-13 20:29:40 +0000398PEM: ${PEM_KEY_PREFIX}
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100399
400Compiler: ${CC}
401CFLAGS: ${CFLAGS}
402LDFLAGS: ${LDFLAGS}
403ARCH_CFLAGS: ${ARCH_CFLAGS}
404ARCH_LDFLAGS: ${ARCH_LDFLAGS}
405"
406