blob: b46f6f29277356377146440a2be2f727dad4d954 [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
Liam Girdwood77bc0652016-12-22 16:01:21 +000012m4_define(reef_major, `cat .version | cut -dv -f2 | cut -d. -f1`)
13m4_define(reef_minor, `cat .version | cut -d. -f2 | cut -d- -f1`)
Liam Girdwood93d62e52018-01-10 20:26:08 +000014m4_define(reef_micro, `cat .version | cut -d. -f3 | cut -d- -f1`)
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010015AC_DEFINE_UNQUOTED([REEF_MAJOR], reef_major, [Reef major version])
16AC_DEFINE_UNQUOTED([REEF_MINOR], reef_minor, [Reef minor version])
Liam Girdwood93d62e52018-01-10 20:26:08 +000017AC_DEFINE_UNQUOTED([REEF_MICRO], reef_micro, [Reef micro version])
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010018
19AC_CANONICAL_HOST
20
21# General compiler flags
Pierre-Louis Bossartd46dd352017-09-25 14:55:09 -050022CFLAGS="${CFLAGS:+$CFLAGS } -O2 -g -Wall -Werror -Wl,-EL -fno-inline-functions -nostdlib -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
40# Architecture support
41AC_ARG_WITH([arch],
42 AS_HELP_STRING([--with-arch], [Specify DSP architecture]),
43 [], [with_arch=no])
44
45case "$with_arch" in
46 xtensa*)
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010047
48 ARCH_CFLAGS="-mtext-section-literals"
49 AC_SUBST(ARCH_CFLAGS)
50
51 ARCH_LDFLAGS="-nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static"
52 AC_SUBST(XTENSA_LDFLAGS)
53
54 # extra CFLAGS defined here otherwise configure working gcc tests fails.
55 CFLAGS="${CFLAGS:+$CFLAGS }-mlongcalls"
56 LDFLAGS="${LDFLAGS:+$LDFLAGS }-nostdlib"
57
58 #ARCH_ASFLAGS=""
59 AC_SUBST(ARCH_ASFLAGS)
60
61 ARCH="xtensa"
62 AC_SUBST(ARCH)
Ranjani Sridharan05058232018-01-24 22:42:38 -080063
64 AS_IF([test "x$with_root_dir" = xno],
65 AC_MSG_ERROR([Please specify cross compiler root header directory]),
66 [ROOT_DIR=$with_root_dir])
67 AC_SUBST(ROOT_DIR)
68 ;;
69 host*)
70
71 ARCH_CFLAGS="-g"
72 AC_SUBST(ARCH_CFLAGS)
73
74 # extra CFLAGS defined here otherwise configure working gcc tests fails.
75 CFLAGS="${CFLAGS:+$CFLAGS } -O3"
76 LDFLAGS="${LDFLAGS:+$LDFLAGS }-lpthread"
77
78 ARCH="host"
79 AC_SUBST(ARCH)
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010080 ;;
81 *)
82 AC_MSG_ERROR([DSP architecture not specified])
83 ;;
84esac
85
Liam Girdwood2eab4672017-11-27 05:24:51 +080086AM_CONDITIONAL(BUILD_XTENSA, test "$ARCH" = "xtensa")
Ranjani Sridharan05058232018-01-24 22:42:38 -080087AM_CONDITIONAL(BUILD_HOST, test "$ARCH" = "host")
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010088
89# Platform support
90AC_ARG_WITH([platform],
91 AS_HELP_STRING([--with-platform], [Specify Host Platform]),
92 [], [with_platform=no])
93
94case "$with_platform" in
95 baytrail*)
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +010096
97 PLATFORM_LDSCRIPT="baytrail.x"
98 AC_SUBST(PLATFORM_LDSCRIPT)
99
100 PLATFORM="baytrail"
101 AC_SUBST(PLATFORM)
102
103 FW_NAME="byt"
104 AC_SUBST(FW_NAME)
105
Liam Girdwoodf63c7892017-12-04 20:08:39 +0000106 XTENSA_CORE="hifiep_bd5"
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100107 AC_SUBST(XTENSA_CORE)
108
109 AC_DEFINE([CONFIG_BAYTRAIL], [1], [Configure for Baytrail])
Keyon Jiefb784212017-12-06 21:16:32 +0800110 AC_DEFINE([CONFIG_HOST_PTABLE], [1], [Configure handling host page table])
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100111 ;;
112 cherrytrail*)
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100113
114 PLATFORM_LDSCRIPT="baytrail.x"
115 AC_SUBST(PLATFORM_LDSCRIPT)
116
117 PLATFORM="baytrail"
118 AC_SUBST(PLATFORM)
119
120 FW_NAME="cht"
121 AC_SUBST(FW_NAME)
122
Liam Girdwoodf63c7892017-12-04 20:08:39 +0000123 XTENSA_CORE="hifiep_bd5"
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100124 AC_SUBST(XTENSA_CORE)
125
126 AC_DEFINE([CONFIG_CHERRYTRAIL], [1], [Configure for Cherrytrail])
Keyon Jiefb784212017-12-06 21:16:32 +0800127 AC_DEFINE([CONFIG_HOST_PTABLE], [1], [Configure handling host page table])
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100128 ;;
Liam Girdwood095c9072018-01-23 14:53:00 +0000129 apollolake*)
130
131 PLATFORM_LDSCRIPT="apollolake.x"
132 AC_SUBST(PLATFORM_LDSCRIPT)
133
134 PLATFORM="apollolake"
135 AC_SUBST(PLATFORM)
136
137 FW_NAME="apl"
138 AC_SUBST(FW_NAME)
139
140 XTENSA_CORE="hifi3_std"
141 AC_SUBST(XTENSA_CORE)
142
143 AC_DEFINE([CONFIG_APOLLOLAKE], [1], [Configure for Apololake])
144 AC_DEFINE([CONFIG_IRQ_MAP], [1], [Configure IRQ maps])
Keyon Jiec610c642018-02-08 20:48:11 +0800145 AC_DEFINE([CONFIG_DMA_GW], [1], [Configure DMA Gateway])
Liam Girdwood095c9072018-01-23 14:53:00 +0000146 ;;
Liam Girdwoodf198ad92018-01-21 23:48:35 +0000147 haswell*)
148
149 PLATFORM_LDSCRIPT="haswell.x"
150 AC_SUBST(PLATFORM_LDSCRIPT)
151
152 PLATFORM="haswell"
153 AC_SUBST(PLATFORM)
154
155 FW_NAME="hsw"
156 AC_SUBST(FW_NAME)
157
158 XTENSA_CORE="hifiep_bd5"
159 AC_SUBST(XTENSA_CORE)
160
161 AC_DEFINE([CONFIG_HASWELL], [1], [Configure for Haswell])
162 AC_DEFINE([CONFIG_HOST_PTABLE], [1], [Configure handling host page table])
163 ;;
164 broadwell*)
165
166 PLATFORM_LDSCRIPT="broadwell.x"
167 AC_SUBST(PLATFORM_LDSCRIPT)
168
169 PLATFORM="haswell"
170 AC_SUBST(PLATFORM)
171
172 FW_NAME="bdw"
173 AC_SUBST(FW_NAME)
174
175 XTENSA_CORE="hifiep_bd5"
176 AC_SUBST(XTENSA_CORE)
177
178 AC_DEFINE([CONFIG_BROADWELL], [1], [Configure for Broadwell])
179 AC_DEFINE([CONFIG_HOST_PTABLE], [1], [Configure handling host page table])
180 ;;
Liam Girdwood17c6bcf2018-01-23 15:44:08 +0000181 cannonlake*)
182
183 PLATFORM_LDSCRIPT="cannonlake.x"
184 AC_SUBST(PLATFORM_LDSCRIPT)
185
186 PLATFORM="cannonlake"
187 AC_SUBST(PLATFORM)
188
189 FW_NAME="cnl"
190 AC_SUBST(FW_NAME)
191
192 XTENSA_CORE="hifi4_std"
193 AC_SUBST(XTENSA_CORE)
194
195 AC_DEFINE([CONFIG_CANNONLAKE], [1], [Configure for Cannonlake])
196 AC_DEFINE([CONFIG_IRQ_MAP], [1], [Configure IRQ maps])
Keyon Jiec610c642018-02-08 20:48:11 +0800197 AC_DEFINE([CONFIG_DMA_GW], [1], [Configure DMA Gateway])
Liam Girdwood17c6bcf2018-01-23 15:44:08 +0000198 ;;
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100199 *)
Ranjani Sridharan05058232018-01-24 22:42:38 -0800200 if test "$ARCH" = "host"; then
201 PLATFORM="host"
202 AC_SUBST(PLATFORM)
203 else
204 AC_MSG_ERROR([Host platform not specified])
205 fi
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100206 ;;
207esac
208
Liam Girdwood2eab4672017-11-27 05:24:51 +0800209AM_CONDITIONAL(BUILD_BAYTRAIL, test "$FW_NAME" = "byt")
210AM_CONDITIONAL(BUILD_CHERRYTRAIL, test "$FW_NAME" = "cht")
211AM_CONDITIONAL(BUILD_HASWELL, test "$FW_NAME" = "hsw")
212AM_CONDITIONAL(BUILD_BROADWELL, test "$FW_NAME" = "bdw")
213AM_CONDITIONAL(BUILD_APOLLOLAKE, test "$FW_NAME" = "apl")
Liam Girdwood17c6bcf2018-01-23 15:44:08 +0000214AM_CONDITIONAL(BUILD_CANNONLAKE, test "$FW_NAME" = "cnl")
215AM_CONDITIONAL(BUILD_BOOTLOADER, test "$FW_NAME" = "cnl")
Liam Girdwood095c9072018-01-23 14:53:00 +0000216AM_CONDITIONAL(BUILD_MODULE, test "$FW_NAME" = "apl" -o "$FW_NAME" = "cnl")
Rander Wang45027652018-02-08 16:06:33 +0800217AM_CONDITIONAL(BUILD_APL_SSP, test "$FW_NAME" = "apl" -o "$FW_NAME" = "cnl")
Liam Girdwoodf198ad92018-01-21 23:48:35 +0000218
Sebastien Guiriecca23f512016-11-02 08:44:19 +0100219# DSP core support (Optional)
220AC_ARG_WITH([dsp-core],
221 AS_HELP_STRING([--with-dsp-core], [Specify DSP Core]),
222 [], [with_dsp_core=no])
223
224case "$with_dsp_core" in
225 CHT_audio_hifiep*)
226 # BXT/CHT DSP Core
227 XTENSA_CORE="CHT_audio_hifiep"
228 AC_SUBST(XTENSA_CORE)
229 ;;
230
231esac
232
Keyon Jie0e420302017-12-06 21:16:30 +0800233# dma trace support (Optional), dma trace by default
234AC_ARG_ENABLE([dma-trace],
235 AS_HELP_STRING([--disable-dma-trace], [Disabled dma trace and use fallback mailbox trace]))
236
237AS_IF([test "x$enable_dma_trace" != "xno"], [
238 AC_DEFINE([CONFIG_DMA_TRACE], [1], [Configure DMA trace])
239 ])
240
Keyon Jie1a8a6532017-12-22 23:10:56 +0800241AM_CONDITIONAL(BUILD_DMA_TRACE, test "x$enable_dma_trace" != "xno")
242
Liam Girdwood17c6bcf2018-01-23 15:44:08 +0000243PLATFORM_BOOT_LDR_LDSCRIPT="boot_ldr.x"
244AC_SUBST(PLATFORM_BOOT_LDR_LDSCRIPT)
245
Ranjani Sridharan05058232018-01-24 22:42:38 -0800246# Optimisation settings and checks
247
248# SSE4_2 support
249AC_ARG_ENABLE(sse42, [AS_HELP_STRING([--enable-sse42],[enable SSE42 optimizations])], have_sse42=$enableval, have_sse42=yes)
250AX_CHECK_COMPILE_FLAG(-msse4.2, [SSE42_CFLAGS="-DOPS_SSE42 -msse4.2 -ffast-math -ftree-vectorizer-verbose=0"],
251 [have_sse42=no])
252if test "$have_sse42" = "yes"; then
253 AC_DEFINE(HAVE_SSE42,1,[Define to enable SSE42 optimizations.])
254fi
255AM_CONDITIONAL(HAVE_SSE42, test "$have_sse42" = "yes")
256AC_SUBST(SSE42_CFLAGS)
257
258# AVX support
259AC_ARG_ENABLE(avx, [AS_HELP_STRING([--enable-avx],[enable AVX optimizations])], have_avx=$enableval, have_avx=yes)
260AX_CHECK_COMPILE_FLAG(-mavx, [AVX_CFLAGS="-DOPS_AVX -mavx -ffast-math -ftree-vectorizer-verbose=0"],
261 [have_avx=no])
262if test "$have_avx" = "yes"; then
263 AC_DEFINE(HAVE_AVX,1,[Define to enable AVX optimizations.])
264fi
265AM_CONDITIONAL(HAVE_AVX, test "$have_avx" = "yes")
266AC_SUBST(AVX_CFLAGS)
267
268
269# AVX2 support
270AC_ARG_ENABLE(avx2, [AS_HELP_STRING([--enable-avx2],[enable AVX2 optimizations])], have_avx2=$enableval, have_avx2=yes)
271AX_CHECK_COMPILE_FLAG(-mavx2, [AVX2_CFLAGS="-DOPS_AVX2 -mavx2 -ffast-math -ftree-vectorizer-verbose=0"],
272 [have_avx2=no])
273if test "$have_avx2" = "yes"; then
274 AC_DEFINE(HAVE_AVX2,1,[Define to enable AVX2 optimizations.])
275fi
276AM_CONDITIONAL(HAVE_AVX2, test "$have_avx2" = "yes")
277AC_SUBST(AVX2_CFLAGS)
278
279
280# FMA support
281AC_ARG_ENABLE(fma, [AS_HELP_STRING([--enable-fma],[enable FMA optimizations])], have_fma=$enableval, have_fma=yes)
282AX_CHECK_COMPILE_FLAG(-mfma, [FMA_CFLAGS="-DOPS_FMA -mfma -ffast-math -ftree-vectorizer-verbose=0"],
283 [have_fma=no])
284if test "$have_fma" = "yes"; then
285 AC_DEFINE(HAVE_FMA,1,[Define to enable FMA optimizations.])
286fi
287AM_CONDITIONAL(HAVE_FMA, test "$have_fma" = "yes")
288AC_SUBST(FMA_CFLAGS)
289
290# Hifi2EP
291AC_ARG_ENABLE(hifi2ep, [AS_HELP_STRING([--enable-hifi2ep],[enable HiFi2EP optimizations])], have_hifi2ep=$enableval, have_hifi2ep=yes)
292AX_CHECK_COMPILE_FLAG(-mhifi2ep, [FMA_CFLAGS="-DOPS_HIFI2EP -mhifi2ep -ffast-math -ftree-vectorizer-verbose=0"],
293 [have_hifi2ep=no])
294if test "$have_hifi2ep" = "yes"; then
295 AC_DEFINE(HAVE_HIFI2EP,1,[Define to enable Hifi2 EP optimizations.])
296fi
297AM_CONDITIONAL(HAVE_HIFI2EP, test "$have_hifi2ep" = "yes")
298AC_SUBST(HIFI2EP_CFLAGS)
299
300# Hifi3
301AC_ARG_ENABLE(hifi3, [AS_HELP_STRING([--enable-hifi3],[enable HiFi3 optimizations])], have_hifi3=$enableval, have_hifi3=yes)
302AX_CHECK_COMPILE_FLAG(-mhihi3, [FMA_CFLAGS="-DOPS_HIFI3 -mhifi3 -ffast-math -ftree-vectorizer-verbose=0"],
303 [have_hifi3=no])
304if test "$have_hifi3" = "yes"; then
305 AC_DEFINE(HAVE_HIFI3,1,[Define to enable Hifi3 optimizations.])
306fi
307AM_CONDITIONAL(HAVE_HIFI3, test "$have_hifi3" = "yes")
308AC_SUBST(HIFI3_CFLAGS)
309
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100310# Test after CFLAGS set othewise test of cross compiler fails.
311AM_PROG_AS
312AM_PROG_AR
313AC_PROG_CC
314LT_INIT
315AC_CHECK_TOOL([OBJCOPY], [objcopy], [])
316AC_CHECK_TOOL([OBJDUMP], [objdump], [])
317
318AM_EXTRA_RECURSIVE_TARGETS([bin])
319
320AM_EXTRA_RECURSIVE_TARGETS([vminstall])
321
322AC_CONFIG_FILES([
323 Makefile
324 src/Makefile
325 src/tasks/Makefile
326 src/init/Makefile
327 src/arch/Makefile
328 src/arch/xtensa/Makefile
329 src/arch/xtensa/include/Makefile
Liam Girdwoodb14e8522018-01-10 17:36:41 +0000330 src/arch/xtensa/include/arch/Makefile
331 src/arch/xtensa/include/xtensa/Makefile
332 src/arch/xtensa/include/xtensa/config/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100333 src/arch/xtensa/hal/Makefile
334 src/arch/xtensa/xtos/Makefile
Ranjani Sridharan05058232018-01-24 22:42:38 -0800335 src/arch/host/Makefile
336 src/arch/host/include/Makefile
337 src/arch/host/include/arch/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100338 src/audio/Makefile
Seppo Ingalsuo6a274832017-06-07 14:17:55 +0300339 src/math/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100340 src/drivers/Makefile
341 src/include/Makefile
342 src/include/reef/Makefile
343 src/include/reef/audio/Makefile
Liam Girdwoodb14e8522018-01-10 17:36:41 +0000344 src/include/reef/audio/coefficients/Makefile
345 src/include/reef/audio/coefficients/src/Makefile
346 src/include/reef/math/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100347 src/include/uapi/Makefile
348 src/ipc/Makefile
Ranjani Sridharan05058232018-01-24 22:42:38 -0800349 src/library/Makefile
350 src/library/include/Makefile
351 src/library/include/platform/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100352 src/lib/Makefile
353 src/platform/Makefile
354 src/platform/baytrail/Makefile
355 src/platform/baytrail/include/Makefile
356 src/platform/baytrail/include/platform/Makefile
357 src/platform/baytrail/include/xtensa/Makefile
358 src/platform/baytrail/include/xtensa/config/Makefile
Liam Girdwood095c9072018-01-23 14:53:00 +0000359 src/platform/apollolake/Makefile
360 src/platform/apollolake/include/Makefile
361 src/platform/apollolake/include/platform/Makefile
362 src/platform/apollolake/include/xtensa/Makefile
363 src/platform/apollolake/include/xtensa/config/Makefile
Liam Girdwoodf198ad92018-01-21 23:48:35 +0000364 src/platform/haswell/Makefile
365 src/platform/haswell/include/Makefile
366 src/platform/haswell/include/platform/Makefile
367 src/platform/haswell/include/xtensa/Makefile
368 src/platform/haswell/include/xtensa/config/Makefile
Liam Girdwood17c6bcf2018-01-23 15:44:08 +0000369 src/platform/cannonlake/Makefile
370 src/platform/cannonlake/include/Makefile
371 src/platform/cannonlake/include/platform/Makefile
372 src/platform/cannonlake/include/xtensa/Makefile
373 src/platform/cannonlake/include/xtensa/config/Makefile
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100374])
375AC_OUTPUT
376
377echo "
378---{ $PACKAGE_NAME $VERSION }---
379
380Target Architecture: ${ARCH}
381Target Platform: ${PLATFORM}
Sebastien Guiriecca23f512016-11-02 08:44:19 +0100382Target Core: ${XTENSA_CORE}
Liam Girdwoodc0dfb4e2016-09-21 15:57:22 +0100383
384Compiler: ${CC}
385CFLAGS: ${CFLAGS}
386LDFLAGS: ${LDFLAGS}
387ARCH_CFLAGS: ${ARCH_CFLAGS}
388ARCH_LDFLAGS: ${ARCH_LDFLAGS}
389"
390