blob: 2758f45901a2fe2973518165f457108815117e61 [file] [log] [blame]
Ron90a39032013-06-29 16:36:24 +09301# Provide the full test output for failed tests when using the parallel
2# test suite (which is enabled by default with automake 1.13+).
3export VERBOSE = yes
4
Gregory Maxwell135e5d32012-04-29 20:24:36 -04005AUTOMAKE_OPTIONS = subdir-objects
Ron50b395b2013-05-20 12:31:48 +09306ACLOCAL_AMFLAGS = -I m4
Ralph Giles2852cb12011-08-02 11:43:43 -07007
Jean-Marc Valine05aaf22011-04-29 19:48:42 -04008lib_LTLIBRARIES = libopus.la
Jean-Marc Valina0cbeca2010-07-08 11:27:20 -04009
Ron9a89d562012-06-12 04:40:42 +093010DIST_SUBDIRS = doc
11
Ron64b39852013-06-29 15:40:27 +093012AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/celt -I$(top_srcdir)/silk \
13 -I$(top_srcdir)/silk/float -I$(top_srcdir)/silk/fixed
Jean-Marc Valina0cbeca2010-07-08 11:27:20 -040014
Jean-Marc Valin8e4f5a82011-04-30 00:35:55 -040015include celt_sources.mk
16include silk_sources.mk
17include opus_sources.mk
Jean-Marc Valine7a2a032011-02-14 21:18:08 -050018
Jean-Marc Valinb2c00d22011-08-02 08:13:42 -040019if FIXED_POINT
20SILK_SOURCES += $(SILK_SOURCES_FIXED)
xiangmingzhuc95c9a02014-04-30 15:48:07 +080021if HAVE_SSE4_1
22SILK_SOURCES += $(SILK_SOURCES_SSE4_1) $(SILK_SOURCES_FIXED_SSE4_1)
23endif
Jean-Marc Valinb2c00d22011-08-02 08:13:42 -040024else
25SILK_SOURCES += $(SILK_SOURCES_FLOAT)
Jonathan Lennox43120f02015-08-03 17:04:27 -040026if HAVE_SSE4_1
27SILK_SOURCES += $(SILK_SOURCES_SSE4_1)
28endif
Jean-Marc Valinb2c00d22011-08-02 08:13:42 -040029endif
30
Jean-Marc Valind814c5d2013-11-04 12:26:50 -050031if DISABLE_FLOAT_API
32else
Jean-Marc Valin3ab03e02013-09-06 16:00:39 -040033OPUS_SOURCES += $(OPUS_SOURCES_FLOAT)
Jean-Marc Valind814c5d2013-11-04 12:26:50 -050034endif
Jean-Marc Valin3ab03e02013-09-06 16:00:39 -040035
Jonathan Lennoxcb0875e2015-08-03 17:04:26 -040036if HAVE_SSE
xiangmingzhuc95c9a02014-04-30 15:48:07 +080037CELT_SOURCES += $(CELT_SOURCES_SSE)
38endif
Jonathan Lennoxcb0875e2015-08-03 17:04:26 -040039if HAVE_SSE2
40CELT_SOURCES += $(CELT_SOURCES_SSE2)
41endif
42if HAVE_SSE4_1
43CELT_SOURCES += $(CELT_SOURCES_SSE4_1)
xiangmingzhuc95c9a02014-04-30 15:48:07 +080044endif
45
Aurélien Zanellicd4c8242013-05-31 15:07:00 +020046if CPU_ARM
47CELT_SOURCES += $(CELT_SOURCES_ARM)
Timothy B. Terriberry39386e02013-11-18 13:30:13 -050048SILK_SOURCES += $(SILK_SOURCES_ARM)
Viswanath Puttagunta0b0a2b42014-12-19 17:25:55 -060049
50if OPUS_ARM_NEON_INTR
51CELT_SOURCES += $(CELT_SOURCES_ARM_NEON_INTR)
Viswanath Puttagunta0b0a2b42014-12-19 17:25:55 -060052endif
53
Timothy B. Terriberry39386e02013-11-18 13:30:13 -050054if OPUS_ARM_EXTERNAL_ASM
Ron135d1c92013-11-19 17:34:12 +103055nodist_libopus_la_SOURCES = $(CELT_SOURCES_ARM_ASM:.s=-gnu.S)
Timothy B. Terriberry39386e02013-11-18 13:30:13 -050056BUILT_SOURCES = $(CELT_SOURCES_ARM_ASM:.s=-gnu.S) \
57 $(CELT_AM_SOURCES_ARM_ASM:.s.in=.s) \
Timothy B. Terriberry7a0b6822013-11-18 14:10:57 -050058 $(CELT_AM_SOURCES_ARM_ASM:.s.in=-gnu.S)
Timothy B. Terriberry39386e02013-11-18 13:30:13 -050059endif
Aurélien Zanellicd4c8242013-05-31 15:07:00 +020060endif
61
Ralph Gilesd5cb0632013-11-19 17:50:05 +130062CLEANFILES = $(CELT_SOURCES_ARM_ASM:.s=-gnu.S) \
63 $(CELT_AM_SOURCES_ARM_ASM:.s.in=-gnu.S)
64
Ralph Gilescd539df2012-04-05 09:23:47 -070065include celt_headers.mk
66include silk_headers.mk
67include opus_headers.mk
Jean-Marc Valin3596fed2011-07-09 09:20:51 -040068
Jean-Marc Valin8e4f5a82011-04-30 00:35:55 -040069libopus_la_SOURCES = $(CELT_SOURCES) $(SILK_SOURCES) $(OPUS_SOURCES)
Gregory Maxwell8d2e9ad2012-08-10 17:21:28 -040070libopus_la_LDFLAGS = -no-undefined -version-info @OPUS_LT_CURRENT@:@OPUS_LT_REVISION@:@OPUS_LT_AGE@
Ron45106b72013-07-02 17:01:23 +093071libopus_la_LIBADD = $(LIBM)
Jean-Marc Valine05aaf22011-04-29 19:48:42 -040072
Jean-Marc Valin4923f3f2011-10-26 21:36:57 -040073pkginclude_HEADERS = include/opus.h include/opus_multistream.h include/opus_types.h include/opus_defines.h
Jean-Marc Valine05aaf22011-04-29 19:48:42 -040074
Jean-Marc Valin3596fed2011-07-09 09:20:51 -040075noinst_HEADERS = $(OPUS_HEAD) $(SILK_HEAD) $(CELT_HEAD)
76
Aurélien Zanellifaec6732013-05-26 22:08:02 +020077if EXTRA_PROGRAMS
Ralph Gilese7ec9332012-11-30 18:00:38 -080078noinst_PROGRAMS = opus_demo repacketizer_demo opus_compare tests/test_opus_api tests/test_opus_encode tests/test_opus_decode tests/test_opus_padding celt/tests/test_unit_cwrs32 celt/tests/test_unit_dft celt/tests/test_unit_entropy celt/tests/test_unit_laplace celt/tests/test_unit_mathops celt/tests/test_unit_mdct celt/tests/test_unit_rotation celt/tests/test_unit_types
Jean-Marc Valine05aaf22011-04-29 19:48:42 -040079
Ralph Gilese7ec9332012-11-30 18:00:38 -080080TESTS = celt/tests/test_unit_types celt/tests/test_unit_mathops celt/tests/test_unit_entropy celt/tests/test_unit_laplace celt/tests/test_unit_dft celt/tests/test_unit_mdct celt/tests/test_unit_rotation celt/tests/test_unit_cwrs32 tests/test_opus_api tests/test_opus_decode tests/test_opus_encode tests/test_opus_padding
Jean-Marc Valine05aaf22011-04-29 19:48:42 -040081
Gregory Maxwella5ff49e2011-10-26 19:56:00 -040082opus_demo_SOURCES = src/opus_demo.c
83
Ron5bac4f22013-06-29 02:06:53 +093084opus_demo_LDADD = libopus.la $(LIBM)
Jean-Marc Valine8dbcb82011-08-10 09:47:30 -040085
Gregory Maxwell38805f32011-10-26 20:05:56 -040086repacketizer_demo_SOURCES = src/repacketizer_demo.c
Jean-Marc Valine8dbcb82011-08-10 09:47:30 -040087
Ron5bac4f22013-06-29 02:06:53 +093088repacketizer_demo_LDADD = libopus.la $(LIBM)
Ralph Giles9f713092011-08-28 22:32:13 +120089
Jean-Marc Valinc4ca21f2011-09-15 10:10:40 -070090opus_compare_SOURCES = src/opus_compare.c
Ron5bac4f22013-06-29 02:06:53 +093091opus_compare_LDADD = $(LIBM)
Jean-Marc Valinc4ca21f2011-09-15 10:10:40 -070092
Gregory Maxwell9652f812011-10-26 23:55:33 -040093tests_test_opus_api_SOURCES = tests/test_opus_api.c tests/test_opus_common.h
Ron5bac4f22013-06-29 02:06:53 +093094tests_test_opus_api_LDADD = libopus.la $(LIBM)
Gregory Maxwella5ff49e2011-10-26 19:56:00 -040095
Gregory Maxwell9652f812011-10-26 23:55:33 -040096tests_test_opus_encode_SOURCES = tests/test_opus_encode.c tests/test_opus_common.h
Ron5bac4f22013-06-29 02:06:53 +093097tests_test_opus_encode_LDADD = libopus.la $(LIBM)
Gregory Maxwella5ff49e2011-10-26 19:56:00 -040098
Gregory Maxwell9652f812011-10-26 23:55:33 -040099tests_test_opus_decode_SOURCES = tests/test_opus_decode.c tests/test_opus_common.h
Ron5bac4f22013-06-29 02:06:53 +0930100tests_test_opus_decode_LDADD = libopus.la $(LIBM)
Gregory Maxwell9652f812011-10-26 23:55:33 -0400101
Ralph Gilese7ec9332012-11-30 18:00:38 -0800102tests_test_opus_padding_SOURCES = tests/test_opus_padding.c tests/test_opus_common.h
Ron5bac4f22013-06-29 02:06:53 +0930103tests_test_opus_padding_LDADD = libopus.la $(LIBM)
Ralph Gilese7ec9332012-11-30 18:00:38 -0800104
Gregory Maxwell9652f812011-10-26 23:55:33 -0400105celt_tests_test_unit_cwrs32_SOURCES = celt/tests/test_unit_cwrs32.c
Ron5bac4f22013-06-29 02:06:53 +0930106celt_tests_test_unit_cwrs32_LDADD = $(LIBM)
Gregory Maxwell9652f812011-10-26 23:55:33 -0400107
108celt_tests_test_unit_dft_SOURCES = celt/tests/test_unit_dft.c
Ron5bac4f22013-06-29 02:06:53 +0930109celt_tests_test_unit_dft_LDADD = $(LIBM)
Gregory Maxwell9652f812011-10-26 23:55:33 -0400110
111celt_tests_test_unit_entropy_SOURCES = celt/tests/test_unit_entropy.c
Ron5bac4f22013-06-29 02:06:53 +0930112celt_tests_test_unit_entropy_LDADD = $(LIBM)
Gregory Maxwell9652f812011-10-26 23:55:33 -0400113
114celt_tests_test_unit_laplace_SOURCES = celt/tests/test_unit_laplace.c
Ron5bac4f22013-06-29 02:06:53 +0930115celt_tests_test_unit_laplace_LDADD = $(LIBM)
Gregory Maxwell9652f812011-10-26 23:55:33 -0400116
117celt_tests_test_unit_mathops_SOURCES = celt/tests/test_unit_mathops.c
Ron5bac4f22013-06-29 02:06:53 +0930118celt_tests_test_unit_mathops_LDADD = $(LIBM)
Tristan Matthewsfd562ee2014-10-12 15:12:52 -0400119if CPU_ARM
120if OPUS_ARM_EXTERNAL_ASM
121celt_tests_test_unit_mathops_LDADD += libopus.la
122endif
123endif
Gregory Maxwell9652f812011-10-26 23:55:33 -0400124
125celt_tests_test_unit_mdct_SOURCES = celt/tests/test_unit_mdct.c
Ron5bac4f22013-06-29 02:06:53 +0930126celt_tests_test_unit_mdct_LDADD = $(LIBM)
Gregory Maxwell9652f812011-10-26 23:55:33 -0400127
128celt_tests_test_unit_rotation_SOURCES = celt/tests/test_unit_rotation.c
Ron5bac4f22013-06-29 02:06:53 +0930129celt_tests_test_unit_rotation_LDADD = $(LIBM)
Tristan Matthewsfd562ee2014-10-12 15:12:52 -0400130if CPU_ARM
131if OPUS_ARM_EXTERNAL_ASM
132celt_tests_test_unit_rotation_LDADD += libopus.la
133endif
134endif
Gregory Maxwell9652f812011-10-26 23:55:33 -0400135
136celt_tests_test_unit_types_SOURCES = celt/tests/test_unit_types.c
Ron5bac4f22013-06-29 02:06:53 +0930137celt_tests_test_unit_types_LDADD = $(LIBM)
Aurélien Zanellifaec6732013-05-26 22:08:02 +0200138endif
Gregory Maxwella5ff49e2011-10-26 19:56:00 -0400139
Jean-Marc Valin06237d72011-09-01 13:20:40 -0400140if CUSTOM_MODES
Jean-Marc Valin4923f3f2011-10-26 21:36:57 -0400141pkginclude_HEADERS += include/opus_custom.h
Aurélien Zanellifaec6732013-05-26 22:08:02 +0200142if EXTRA_PROGRAMS
Gregory Maxwella5ff49e2011-10-26 19:56:00 -0400143noinst_PROGRAMS += opus_custom_demo
144opus_custom_demo_SOURCES = celt/opus_custom_demo.c
Ron5bac4f22013-06-29 02:06:53 +0930145opus_custom_demo_LDADD = libopus.la $(LIBM)
Jean-Marc Valin06237d72011-09-01 13:20:40 -0400146endif
Aurélien Zanellifaec6732013-05-26 22:08:02 +0200147endif
Jean-Marc Valin06237d72011-09-01 13:20:40 -0400148
Ralph Giles59c5a822012-08-16 11:39:56 -0700149EXTRA_DIST = version.mk \
Timothy B. Terriberry39386e02013-11-18 13:30:13 -0500150 opus.pc.in \
Gregory Maxwelle852c342012-08-09 07:29:58 -0400151 opus-uninstalled.pc.in \
Gregory Maxwell6e2dd162012-08-30 12:26:34 -0400152 opus.m4 \
Jean-Marc Valin45cbdff2015-02-11 14:10:03 -0500153 Makefile.mips \
Jean-Marc Valine91dfa02012-08-31 23:10:12 -0400154 Makefile.unix \
Gregory Maxwell1b58bc72012-08-19 16:45:20 -0400155 tests/run_vectors.sh \
Timothy B. Terriberry39386e02013-11-18 13:30:13 -0500156 celt/arm/arm2gnu.pl \
Ron135d1c92013-11-19 17:34:12 +1030157 celt/arm/celt_pitch_xcorr_arm.s \
Jean-Marc Valinaecebff2013-06-27 04:04:48 -0400158 win32/VS2010/silk_float.vcxproj \
159 win32/VS2010/celt.vcxproj.filters \
160 win32/VS2010/opus.vcxproj \
161 win32/VS2010/silk_common.vcxproj.filters \
162 win32/VS2010/silk_float.vcxproj.filters \
163 win32/VS2010/test_opus_encode.vcxproj.filters \
164 win32/VS2010/silk_common.vcxproj \
165 win32/VS2010/test_opus_encode.vcxproj \
166 win32/VS2010/opus_demo.vcxproj \
167 win32/VS2010/test_opus_api.vcxproj.filters \
168 win32/VS2010/test_opus_api.vcxproj \
169 win32/VS2010/test_opus_decode.vcxproj.filters \
170 win32/VS2010/silk_fixed.vcxproj.filters \
171 win32/VS2010/opus_demo.vcxproj.filters \
172 win32/VS2010/silk_fixed.vcxproj \
173 win32/VS2010/opus.vcxproj.filters \
174 win32/VS2010/test_opus_decode.vcxproj \
175 win32/VS2010/celt.vcxproj \
176 win32/VS2010/opus.sln \
Gregory Maxwelle852c342012-08-09 07:29:58 -0400177 win32/genversion.bat \
178 win32/config.h
Ralph Giles9f713092011-08-28 22:32:13 +1200179
180pkgconfigdir = $(libdir)/pkgconfig
181pkgconfig_DATA = opus.pc
Ronb6512b42012-05-21 23:16:39 +0930182
Gregory Maxwell6e2dd162012-08-30 12:26:34 -0400183m4datadir = $(datadir)/aclocal
184m4data_DATA = opus.m4
Ronb6512b42012-05-21 23:16:39 +0930185
186# Targets to build and install just the library without the docs
187opus check-opus install-opus: export NO_DOXYGEN = 1
188
189opus: all
190check-opus: check
191install-opus: install
192
193
194# Or just the docs
195docs:
Ronb371cf82012-10-18 14:05:55 +1030196 ( cd doc && $(MAKE) $(AM_MAKEFLAGS) )
Ronb6512b42012-05-21 23:16:39 +0930197
198install-docs:
Ronb371cf82012-10-18 14:05:55 +1030199 ( cd doc && $(MAKE) $(AM_MAKEFLAGS) install )
Ronb6512b42012-05-21 23:16:39 +0930200
201
202# Or everything (by default)
203all-local:
Ronb371cf82012-10-18 14:05:55 +1030204 @[ -n "$(NO_DOXYGEN)" ] || ( cd doc && $(MAKE) $(AM_MAKEFLAGS) )
Ronb6512b42012-05-21 23:16:39 +0930205
206install-data-local:
Ronb371cf82012-10-18 14:05:55 +1030207 @[ -n "$(NO_DOXYGEN)" ] || ( cd doc && $(MAKE) $(AM_MAKEFLAGS) install )
Ronb6512b42012-05-21 23:16:39 +0930208
209clean-local:
Ronb371cf82012-10-18 14:05:55 +1030210 -( cd doc && $(MAKE) $(AM_MAKEFLAGS) clean )
Ronb6512b42012-05-21 23:16:39 +0930211
212uninstall-local:
Ronb371cf82012-10-18 14:05:55 +1030213 ( cd doc && $(MAKE) $(AM_MAKEFLAGS) uninstall )
Ronb6512b42012-05-21 23:16:39 +0930214
215
Ron2f2f9d62013-05-11 02:05:24 +0930216# We check this every time make is run, with configure.ac being touched to
217# trigger an update of the build system files if update_version changes the
218# current PACKAGE_VERSION (or if package_version was modified manually by a
219# user with either AUTO_UPDATE=no or no update_version script present - the
220# latter being the normal case for tarball releases).
221#
222# We can't just add the package_version file to CONFIGURE_DEPENDENCIES since
223# simply running autoconf will not actually regenerate configure for us when
224# the content of that file changes (due to autoconf dependency checking not
225# knowing about that without us creating yet another file for it to include).
226#
227# The MAKECMDGOALS check is a gnu-make'ism, but will degrade 'gracefully' for
228# makes that don't support it. The only loss of functionality is not forcing
229# an update of package_version for `make dist` if AUTO_UPDATE=no, but that is
230# unlikely to be a real problem for any real user.
231$(top_srcdir)/configure.ac: force
232 @case "$(MAKECMDGOALS)" in \
233 dist-hook) exit 0 ;; \
234 dist-* | dist | distcheck | distclean) _arg=release ;; \
235 esac; \
236 if ! $(top_srcdir)/update_version $$_arg 2> /dev/null; then \
Ron8d925ec2013-05-11 07:33:03 +0930237 if [ ! -e $(top_srcdir)/package_version ]; then \
238 echo 'PACKAGE_VERSION="unknown"' > $(top_srcdir)/package_version; \
239 fi; \
Ron2f2f9d62013-05-11 02:05:24 +0930240 . $(top_srcdir)/package_version || exit 1; \
241 [ "$(PACKAGE_VERSION)" != "$$PACKAGE_VERSION" ] || exit 0; \
242 fi; \
243 touch $@
244
245force:
246
247# Create a minimal package_version file when make dist is run.
248dist-hook:
249 echo 'PACKAGE_VERSION="$(PACKAGE_VERSION)"' > $(top_distdir)/package_version
250
251
Ronb6512b42012-05-21 23:16:39 +0930252.PHONY: opus check-opus install-opus docs install-docs
Timothy B. Terriberry39386e02013-11-18 13:30:13 -0500253
254# automake doesn't do dependency tracking for asm files, that I can tell
255$(CELT_SOURCES_ARM_ASM:%.s=%-gnu.S): celt/arm/armopts-gnu.S
256$(CELT_SOURCES_ARM_ASM:%.s=%-gnu.S): $(top_srcdir)/celt/arm/arm2gnu.pl
257
258# convert ARM asm to GNU as format
259%-gnu.S: $(top_srcdir)/%.s
Martin Storsjo76e831d2014-03-19 21:36:39 +0200260 $(top_srcdir)/celt/arm/arm2gnu.pl @ARM2GNU_PARAMS@ < $< > $@
Timothy B. Terriberry39386e02013-11-18 13:30:13 -0500261# For autoconf-modified sources (e.g., armopts.s)
262%-gnu.S: %.s
Timothy B. Terriberry4ae4bc62014-03-26 12:58:04 -0700263 $(top_srcdir)/celt/arm/arm2gnu.pl @ARM2GNU_PARAMS@ < $< > $@
xiangmingzhuc95c9a02014-04-30 15:48:07 +0800264
Jonathan Lennoxcb0875e2015-08-03 17:04:26 -0400265OPT_UNIT_TEST_OBJ = $(celt_tests_test_unit_mathops_SOURCES:.c=.o) \
266 $(celt_tests_test_unit_rotation_SOURCES:.c=.o) \
267 $(celt_tests_test_unit_mdct_SOURCES:.c=.o) \
268 $(celt_tests_test_unit_dft_SOURCES:.c=.o)
269
270if HAVE_SSE
271SSE_OBJ = $(CELT_SOURCES_SSE:.c=.lo)
272$(SSE_OBJ) $(OPT_UNIT_TEST_OBJ): CFLAGS += $(OPUS_X86_SSE_CFLAGS)
273endif
274
275if HAVE_SSE2
276SSE2_OBJ = $(CELT_SOURCES_SSE2:.c=.lo)
277$(SSE2_OBJ) $(OPT_UNIT_TEST_OBJ): CFLAGS += $(OPUS_X86_SSE2_CFLAGS)
278endif
xiangmingzhuc95c9a02014-04-30 15:48:07 +0800279
280if HAVE_SSE4_1
Jonathan Lennoxcb0875e2015-08-03 17:04:26 -0400281SSE4_1_OBJ = $(CELT_SOURCES_SSE4_1:.c=.lo) \
282 $(SILK_SOURCES_SSE4_1:.c=.lo) \
283 $(SILK_SOURCES_FIXED_SSE4_1:.c=.lo)
284$(SSE4_1_OBJ) $(OPT_UNIT_TEST_OBJ): CFLAGS += $(OPUS_X86_SSE4_1_CFLAGS)
xiangmingzhuc95c9a02014-04-30 15:48:07 +0800285endif
Viswanath Puttagunta0b0a2b42014-12-19 17:25:55 -0600286
287if OPUS_ARM_NEON_INTR
Jonathan Lennoxcb0875e2015-08-03 17:04:26 -0400288CELT_ARM_NEON_INTR_OBJ = $(CELT_SOURCES_ARM_NEON_INTR:.c=.lo)
289$(CELT_ARM_NEON_INTR_OBJ) $(OPT_UNIT_TEST_OBJ): CFLAGS += $(OPUS_ARM_NEON_INTR_CFLAGS)
Viswanath Puttagunta0b0a2b42014-12-19 17:25:55 -0600290endif