Home | History | Annotate | Download | only in libopus
      1 # Provide the full test output for failed tests when using the parallel
      2 # test suite (which is enabled by default with automake 1.13+).
      3 export VERBOSE = yes
      4 
      5 AUTOMAKE_OPTIONS = subdir-objects
      6 ACLOCAL_AMFLAGS = -I m4
      7 
      8 lib_LTLIBRARIES = libopus.la
      9 
     10 DIST_SUBDIRS = doc
     11 
     12 AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/celt -I$(top_srcdir)/silk \
     13               -I$(top_srcdir)/silk/float -I$(top_srcdir)/silk/fixed $(NE10_CFLAGS)
     14 
     15 include celt_sources.mk
     16 include silk_sources.mk
     17 include opus_sources.mk
     18 
     19 if FIXED_POINT
     20 SILK_SOURCES += $(SILK_SOURCES_FIXED)
     21 if HAVE_SSE4_1
     22 SILK_SOURCES += $(SILK_SOURCES_SSE4_1) $(SILK_SOURCES_FIXED_SSE4_1)
     23 endif
     24 if HAVE_ARM_NEON_INTR
     25 SILK_SOURCES += $(SILK_SOURCES_FIXED_ARM_NEON_INTR)
     26 endif
     27 else
     28 SILK_SOURCES += $(SILK_SOURCES_FLOAT)
     29 if HAVE_SSE4_1
     30 SILK_SOURCES += $(SILK_SOURCES_SSE4_1)
     31 endif
     32 endif
     33 
     34 if DISABLE_FLOAT_API
     35 else
     36 OPUS_SOURCES += $(OPUS_SOURCES_FLOAT)
     37 endif
     38 
     39 if HAVE_SSE
     40 CELT_SOURCES += $(CELT_SOURCES_SSE)
     41 endif
     42 if HAVE_SSE2
     43 CELT_SOURCES += $(CELT_SOURCES_SSE2)
     44 endif
     45 if HAVE_SSE4_1
     46 CELT_SOURCES += $(CELT_SOURCES_SSE4_1)
     47 endif
     48 
     49 if CPU_ARM
     50 CELT_SOURCES += $(CELT_SOURCES_ARM)
     51 SILK_SOURCES += $(SILK_SOURCES_ARM)
     52 
     53 if HAVE_ARM_NEON_INTR
     54 CELT_SOURCES += $(CELT_SOURCES_ARM_NEON_INTR)
     55 SILK_SOURCES += $(SILK_SOURCES_ARM_NEON_INTR)
     56 endif
     57 
     58 if HAVE_ARM_NE10
     59 CELT_SOURCES += $(CELT_SOURCES_ARM_NE10)
     60 endif
     61 
     62 if OPUS_ARM_EXTERNAL_ASM
     63 noinst_LTLIBRARIES = libarmasm.la
     64 libarmasm_la_SOURCES = $(CELT_SOURCES_ARM_ASM:.s=-gnu.S)
     65 BUILT_SOURCES = $(CELT_SOURCES_ARM_ASM:.s=-gnu.S) \
     66  $(CELT_AM_SOURCES_ARM_ASM:.s.in=.s) \
     67  $(CELT_AM_SOURCES_ARM_ASM:.s.in=-gnu.S)
     68 endif
     69 endif
     70 
     71 CLEANFILES = $(CELT_SOURCES_ARM_ASM:.s=-gnu.S) \
     72  $(CELT_AM_SOURCES_ARM_ASM:.s.in=-gnu.S)
     73 
     74 include celt_headers.mk
     75 include silk_headers.mk
     76 include opus_headers.mk
     77 
     78 libopus_la_SOURCES = $(CELT_SOURCES) $(SILK_SOURCES) $(OPUS_SOURCES)
     79 libopus_la_LDFLAGS = -no-undefined -version-info @OPUS_LT_CURRENT@:@OPUS_LT_REVISION@:@OPUS_LT_AGE@
     80 libopus_la_LIBADD = $(NE10_LIBS) $(LIBM)
     81 if OPUS_ARM_EXTERNAL_ASM
     82 libopus_la_LIBADD += libarmasm.la
     83 endif
     84 
     85 pkginclude_HEADERS = include/opus.h include/opus_multistream.h include/opus_types.h include/opus_defines.h
     86 
     87 noinst_HEADERS = $(OPUS_HEAD) $(SILK_HEAD) $(CELT_HEAD)
     88 
     89 if EXTRA_PROGRAMS
     90 noinst_PROGRAMS = celt/tests/test_unit_cwrs32 \
     91                   celt/tests/test_unit_dft \
     92                   celt/tests/test_unit_entropy \
     93                   celt/tests/test_unit_laplace \
     94                   celt/tests/test_unit_mathops \
     95                   celt/tests/test_unit_mdct \
     96                   celt/tests/test_unit_rotation \
     97                   celt/tests/test_unit_types \
     98                   opus_compare \
     99                   opus_demo \
    100                   repacketizer_demo \
    101                   silk/tests/test_unit_LPC_inv_pred_gain \
    102                   tests/test_opus_api \
    103                   tests/test_opus_decode \
    104                   tests/test_opus_encode \
    105                   tests/test_opus_padding
    106 
    107 TESTS = celt/tests/test_unit_cwrs32 \
    108         celt/tests/test_unit_dft \
    109         celt/tests/test_unit_entropy \
    110         celt/tests/test_unit_laplace \
    111         celt/tests/test_unit_mathops \
    112         celt/tests/test_unit_mdct \
    113         celt/tests/test_unit_rotation \
    114         celt/tests/test_unit_types \
    115         silk/tests/test_unit_LPC_inv_pred_gain \
    116         tests/test_opus_api \
    117         tests/test_opus_decode \
    118         tests/test_opus_encode \
    119         tests/test_opus_padding
    120 
    121 opus_demo_SOURCES = src/opus_demo.c
    122 
    123 opus_demo_LDADD = libopus.la $(NE10_LIBS) $(LIBM)
    124 
    125 repacketizer_demo_SOURCES = src/repacketizer_demo.c
    126 
    127 repacketizer_demo_LDADD = libopus.la $(NE10_LIBS) $(LIBM)
    128 
    129 opus_compare_SOURCES = src/opus_compare.c
    130 opus_compare_LDADD = $(LIBM)
    131 
    132 tests_test_opus_api_SOURCES = tests/test_opus_api.c tests/test_opus_common.h
    133 tests_test_opus_api_LDADD = libopus.la $(NE10_LIBS) $(LIBM)
    134 
    135 tests_test_opus_encode_SOURCES = tests/test_opus_encode.c tests/opus_encode_regressions.c tests/test_opus_common.h
    136 tests_test_opus_encode_LDADD = libopus.la $(NE10_LIBS) $(LIBM)
    137 
    138 tests_test_opus_decode_SOURCES = tests/test_opus_decode.c tests/test_opus_common.h
    139 tests_test_opus_decode_LDADD = libopus.la $(NE10_LIBS) $(LIBM)
    140 
    141 tests_test_opus_padding_SOURCES = tests/test_opus_padding.c tests/test_opus_common.h
    142 tests_test_opus_padding_LDADD = libopus.la $(NE10_LIBS) $(LIBM)
    143 
    144 CELT_OBJ = $(CELT_SOURCES:.c=.lo)
    145 SILK_OBJ = $(SILK_SOURCES:.c=.lo)
    146 
    147 silk_tests_test_unit_LPC_inv_pred_gain_SOURCES = silk/tests/test_unit_LPC_inv_pred_gain.c
    148 silk_tests_test_unit_LPC_inv_pred_gain_LDADD = $(SILK_OBJ) $(CELT_OBJ) $(NE10_LIBS) $(LIBM)
    149 if OPUS_ARM_EXTERNAL_ASM
    150 silk_tests_test_unit_LPC_inv_pred_gain_LDADD += libarmasm.la
    151 endif
    152 
    153 celt_tests_test_unit_cwrs32_SOURCES = celt/tests/test_unit_cwrs32.c
    154 celt_tests_test_unit_cwrs32_LDADD = $(LIBM)
    155 
    156 celt_tests_test_unit_dft_SOURCES = celt/tests/test_unit_dft.c
    157 celt_tests_test_unit_dft_LDADD = $(CELT_OBJ) $(NE10_LIBS) $(LIBM)
    158 if OPUS_ARM_EXTERNAL_ASM
    159 celt_tests_test_unit_dft_LDADD += libarmasm.la
    160 endif
    161 
    162 celt_tests_test_unit_entropy_SOURCES = celt/tests/test_unit_entropy.c
    163 celt_tests_test_unit_entropy_LDADD = $(LIBM)
    164 
    165 celt_tests_test_unit_laplace_SOURCES = celt/tests/test_unit_laplace.c
    166 celt_tests_test_unit_laplace_LDADD = $(LIBM)
    167 
    168 celt_tests_test_unit_mathops_SOURCES = celt/tests/test_unit_mathops.c
    169 celt_tests_test_unit_mathops_LDADD = $(CELT_OBJ) $(NE10_LIBS) $(LIBM)
    170 if OPUS_ARM_EXTERNAL_ASM
    171 celt_tests_test_unit_mathops_LDADD += libarmasm.la
    172 endif
    173 
    174 celt_tests_test_unit_mdct_SOURCES = celt/tests/test_unit_mdct.c
    175 celt_tests_test_unit_mdct_LDADD = $(CELT_OBJ) $(NE10_LIBS) $(LIBM)
    176 if OPUS_ARM_EXTERNAL_ASM
    177 celt_tests_test_unit_mdct_LDADD += libarmasm.la
    178 endif
    179 
    180 celt_tests_test_unit_rotation_SOURCES = celt/tests/test_unit_rotation.c
    181 celt_tests_test_unit_rotation_LDADD = $(CELT_OBJ) $(NE10_LIBS) $(LIBM)
    182 if OPUS_ARM_EXTERNAL_ASM
    183 celt_tests_test_unit_rotation_LDADD += libarmasm.la
    184 endif
    185 
    186 celt_tests_test_unit_types_SOURCES = celt/tests/test_unit_types.c
    187 celt_tests_test_unit_types_LDADD = $(LIBM)
    188 endif
    189 
    190 if CUSTOM_MODES
    191 pkginclude_HEADERS += include/opus_custom.h
    192 if EXTRA_PROGRAMS
    193 noinst_PROGRAMS += opus_custom_demo
    194 opus_custom_demo_SOURCES = celt/opus_custom_demo.c
    195 opus_custom_demo_LDADD = libopus.la $(LIBM)
    196 endif
    197 endif
    198 
    199 EXTRA_DIST = opus.pc.in \
    200              opus-uninstalled.pc.in \
    201              opus.m4 \
    202              Makefile.mips \
    203              Makefile.unix \
    204              tests/run_vectors.sh \
    205              celt/arm/arm2gnu.pl \
    206              celt/arm/celt_pitch_xcorr_arm.s \
    207              win32/VS2015/opus.vcxproj \
    208              win32/VS2015/test_opus_encode.vcxproj.filters \
    209              win32/VS2015/test_opus_encode.vcxproj \
    210              win32/VS2015/opus_demo.vcxproj \
    211              win32/VS2015/test_opus_api.vcxproj.filters \
    212              win32/VS2015/test_opus_api.vcxproj \
    213              win32/VS2015/test_opus_decode.vcxproj.filters \
    214              win32/VS2015/opus_demo.vcxproj.filters \
    215              win32/VS2015/opus.vcxproj.filters \
    216              win32/VS2015/test_opus_decode.vcxproj \
    217              win32/VS2015/opus.sln \
    218              win32/VS2015/common.props \
    219              win32/genversion.bat \
    220              win32/config.h
    221 
    222 pkgconfigdir = $(libdir)/pkgconfig
    223 pkgconfig_DATA = opus.pc
    224 
    225 m4datadir = $(datadir)/aclocal
    226 m4data_DATA = opus.m4
    227 
    228 # Targets to build and install just the library without the docs
    229 opus check-opus install-opus: export NO_DOXYGEN = 1
    230 
    231 opus: all
    232 check-opus: check
    233 install-opus: install
    234 
    235 
    236 # Or just the docs
    237 docs:
    238 	( cd doc && $(MAKE) $(AM_MAKEFLAGS) )
    239 
    240 install-docs:
    241 	( cd doc && $(MAKE) $(AM_MAKEFLAGS) install )
    242 
    243 
    244 # Or everything (by default)
    245 all-local:
    246 	@[ -n "$(NO_DOXYGEN)" ] || ( cd doc && $(MAKE) $(AM_MAKEFLAGS) )
    247 
    248 install-data-local:
    249 	@[ -n "$(NO_DOXYGEN)" ] || ( cd doc && $(MAKE) $(AM_MAKEFLAGS) install )
    250 
    251 clean-local:
    252 	-( cd doc && $(MAKE) $(AM_MAKEFLAGS) clean )
    253 
    254 uninstall-local:
    255 	( cd doc && $(MAKE) $(AM_MAKEFLAGS) uninstall )
    256 
    257 
    258 # We check this every time make is run, with configure.ac being touched to
    259 # trigger an update of the build system files if update_version changes the
    260 # current PACKAGE_VERSION (or if package_version was modified manually by a
    261 # user with either AUTO_UPDATE=no or no update_version script present - the
    262 # latter being the normal case for tarball releases).
    263 #
    264 # We can't just add the package_version file to CONFIGURE_DEPENDENCIES since
    265 # simply running autoconf will not actually regenerate configure for us when
    266 # the content of that file changes (due to autoconf dependency checking not
    267 # knowing about that without us creating yet another file for it to include).
    268 #
    269 # The MAKECMDGOALS check is a gnu-make'ism, but will degrade 'gracefully' for
    270 # makes that don't support it.  The only loss of functionality is not forcing
    271 # an update of package_version for `make dist` if AUTO_UPDATE=no, but that is
    272 # unlikely to be a real problem for any real user.
    273 $(top_srcdir)/configure.ac: force
    274 	@case "$(MAKECMDGOALS)" in \
    275 	    dist-hook)                             exit 0       ;; \
    276 	    dist-* | dist | distcheck | distclean) _arg=release ;; \
    277 	esac; \
    278 	if ! $(top_srcdir)/update_version $$_arg 2> /dev/null; then \
    279 	    if [ ! -e $(top_srcdir)/package_version ]; then \
    280 		echo 'PACKAGE_VERSION="unknown"' > $(top_srcdir)/package_version; \
    281 	    fi; \
    282 	    . $(top_srcdir)/package_version || exit 1; \
    283 	    [ "$(PACKAGE_VERSION)" != "$$PACKAGE_VERSION" ] || exit 0; \
    284 	fi; \
    285 	touch $@
    286 
    287 force:
    288 
    289 # Create a minimal package_version file when make dist is run.
    290 dist-hook:
    291 	echo 'PACKAGE_VERSION="$(PACKAGE_VERSION)"' > $(top_distdir)/package_version
    292 
    293 
    294 .PHONY: opus check-opus install-opus docs install-docs
    295 
    296 # automake doesn't do dependency tracking for asm files, that I can tell
    297 $(CELT_SOURCES_ARM_ASM:%.s=%-gnu.S): celt/arm/armopts-gnu.S
    298 $(CELT_SOURCES_ARM_ASM:%.s=%-gnu.S): $(top_srcdir)/celt/arm/arm2gnu.pl
    299 
    300 # convert ARM asm to GNU as format
    301 %-gnu.S: $(top_srcdir)/%.s
    302 	$(top_srcdir)/celt/arm/arm2gnu.pl @ARM2GNU_PARAMS@ < $< > $@
    303 # For autoconf-modified sources (e.g., armopts.s)
    304 %-gnu.S: %.s
    305 	$(top_srcdir)/celt/arm/arm2gnu.pl @ARM2GNU_PARAMS@ < $< > $@
    306 
    307 OPT_UNIT_TEST_OBJ = $(celt_tests_test_unit_mathops_SOURCES:.c=.o) \
    308                     $(celt_tests_test_unit_rotation_SOURCES:.c=.o) \
    309                     $(celt_tests_test_unit_mdct_SOURCES:.c=.o) \
    310                     $(celt_tests_test_unit_dft_SOURCES:.c=.o) \
    311                     $(silk_tests_test_unit_LPC_inv_pred_gain_SOURCES:.c=.o)
    312 
    313 if HAVE_SSE
    314 SSE_OBJ = $(CELT_SOURCES_SSE:.c=.lo)
    315 $(SSE_OBJ): CFLAGS += $(OPUS_X86_SSE_CFLAGS)
    316 endif
    317 
    318 if HAVE_SSE2
    319 SSE2_OBJ = $(CELT_SOURCES_SSE2:.c=.lo)
    320 $(SSE2_OBJ): CFLAGS += $(OPUS_X86_SSE2_CFLAGS)
    321 endif
    322 
    323 if HAVE_SSE4_1
    324 SSE4_1_OBJ = $(CELT_SOURCES_SSE4_1:.c=.lo) \
    325              $(SILK_SOURCES_SSE4_1:.c=.lo) \
    326              $(SILK_SOURCES_FIXED_SSE4_1:.c=.lo)
    327 $(SSE4_1_OBJ): CFLAGS += $(OPUS_X86_SSE4_1_CFLAGS)
    328 endif
    329 
    330 if HAVE_ARM_NEON_INTR
    331 ARM_NEON_INTR_OBJ = $(CELT_SOURCES_ARM_NEON_INTR:.c=.lo) \
    332                     $(SILK_SOURCES_ARM_NEON_INTR:.c=.lo) \
    333                     $(SILK_SOURCES_FIXED_ARM_NEON_INTR:.c=.lo)
    334 $(ARM_NEON_INTR_OBJ): CFLAGS += \
    335  $(OPUS_ARM_NEON_INTR_CFLAGS)  $(NE10_CFLAGS)
    336 endif
    337