Makefile.am 6.58 KB
Newer Older
1
EXTRA_DIST=autogen.sh mswebrtc.iss.in
2
webrtc_VERSION = 1.0.0
Ghislain MARY's avatar
Ghislain MARY committed
3
webrtc_DIR=$(top_srcdir)/webrtc
4

5
ISAC_FLAVOUR ?= fix # use 'main' or 'fix'
6 7 8 9
ISAC_SRC_DIR = $(top_srcdir)/webrtc/webrtc/modules/audio_coding/codecs/isac/$(ISAC_FLAVOUR)
AEC_SRC_DIR = $(top_srcdir)/webrtc/webrtc/modules/audio_processing/aecm
WEBRTC_COMMON_DIR = $(top_srcdir)/webrtc/webrtc/common_audio/
WEBRTC_COMMON_SP_DIR = $(WEBRTC_COMMON_DIR)/signal_processing
10 11 12

pluginsdir = $(libdir)/mediastreamer/plugins

13
plugins_LTLIBRARIES=libmswebrtc.la
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
WEBRTC_COMMON_SRCS = \ 
$(WEBRTC_COMMON_SP_DIR)/auto_correlation.c          $(WEBRTC_COMMON_SP_DIR)/levinson_durbin.c \
$(WEBRTC_COMMON_SP_DIR)/auto_corr_to_refl_coef.c    $(WEBRTC_COMMON_SP_DIR)/lpc_to_refl_coef.c \
$(WEBRTC_COMMON_SP_DIR)/complex_bit_reverse.c       $(WEBRTC_COMMON_SP_DIR)/min_max_operations.c \
$(WEBRTC_COMMON_SP_DIR)/complex_fft.c             \
$(WEBRTC_COMMON_SP_DIR)/randomization_functions.c \
$(WEBRTC_COMMON_SP_DIR)/copy_set_operations.c       $(WEBRTC_COMMON_SP_DIR)/real_fft.c \
$(WEBRTC_COMMON_SP_DIR)/cross_correlation.c         $(WEBRTC_COMMON_SP_DIR)/refl_coef_to_lpc.c \
$(WEBRTC_COMMON_SP_DIR)/resample_48khz.c \
$(WEBRTC_COMMON_SP_DIR)/resample_by_2.c \
$(WEBRTC_COMMON_SP_DIR)/division_operations.c       $(WEBRTC_COMMON_SP_DIR)/resample_by_2_internal.c \
$(WEBRTC_COMMON_SP_DIR)/dot_product_with_scale.c \
$(WEBRTC_COMMON_SP_DIR)/downsample_fast.c           $(WEBRTC_COMMON_SP_DIR)/resample.c \
$(WEBRTC_COMMON_SP_DIR)/resample_fractional.c \
$(WEBRTC_COMMON_SP_DIR)/spl_init.c \
$(WEBRTC_COMMON_SP_DIR)/energy.c                    $(WEBRTC_COMMON_SP_DIR)/splitting_filter.c \
$(WEBRTC_COMMON_SP_DIR)/filter_ar.c                 $(WEBRTC_COMMON_SP_DIR)/spl_sqrt.c \
$(WEBRTC_COMMON_SP_DIR)/filter_ar_fast_q12.c        $(WEBRTC_COMMON_SP_DIR)/spl_sqrt_floor.c \
$(WEBRTC_COMMON_SP_DIR)/filter_ma_fast_q12.c        $(WEBRTC_COMMON_SP_DIR)/sqrt_of_one_minus_x_squared.c \
$(WEBRTC_COMMON_SP_DIR)/get_hanning_window.c        $(WEBRTC_COMMON_SP_DIR)/vector_scaling_operations.c \
$(WEBRTC_COMMON_SP_DIR)/get_scaling_square.c       \
$(WEBRTC_COMMON_SP_DIR)/ilbc_specific_functions.c

WEBRTC_COMMON_SRCS += $(WEBRTC_COMMON_DIR)/fft4g.c \
	$(WEBRTC_COMMON_DIR)/ring_buffer.c 
40

41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
# Build the list of isac source files
ISAC_BASE_SRCS = $(ISAC_SRC_DIR)/source/fft.c \
	$(ISAC_SRC_DIR)/source/arith_routines.c \
	$(ISAC_SRC_DIR)/source/arith_routines_hist.c \
	$(ISAC_SRC_DIR)/source/arith_routines_logist.c \
	$(ISAC_SRC_DIR)/source/bandwidth_estimator.c \
	$(ISAC_SRC_DIR)/source/decode.c \
	$(ISAC_SRC_DIR)/source/decode_bwe.c \
	$(ISAC_SRC_DIR)/source/encode.c \
	$(ISAC_SRC_DIR)/source/entropy_coding.c \
	$(ISAC_SRC_DIR)/source/filterbank_tables.c \
	$(ISAC_SRC_DIR)/source/filterbanks.c \
	$(ISAC_SRC_DIR)/source/lattice.c \
	$(ISAC_SRC_DIR)/source/lpc_tables.c \
	$(ISAC_SRC_DIR)/source/pitch_estimator.c \
	$(ISAC_SRC_DIR)/source/pitch_filter.c \
	$(ISAC_SRC_DIR)/source/pitch_gain_tables.c \
	$(ISAC_SRC_DIR)/source/pitch_lag_tables.c \
	$(ISAC_SRC_DIR)/source/spectrum_ar_model_tables.c \
60 61 62
	$(ISAC_SRC_DIR)/source/transform.c \
	$(ISAC_SRC_DIR)/source/transform_tables.c \
	$(ISAC_SRC_DIR)/source/pitch_estimator_c.c
63 64 65 66 67 68

# some files are implementation specific

if ISAC_FLAVOUR_MAIN

# floating point implementation
69
ISAC_BASE_SRCS += $(ISAC_SRC_DIR)/source/initialize.c \
70 71 72 73 74 75 76 77
	$(ISAC_SRC_DIR)/source/crc.c \
	$(ISAC_SRC_DIR)/source/encode_lpc_swb.c \
	$(ISAC_SRC_DIR)/source/filter_functions.c \
	$(ISAC_SRC_DIR)/source/isac.c \
	$(ISAC_SRC_DIR)/source/lpc_analysis.c \
	$(ISAC_SRC_DIR)/source/lpc_gain_swb_tables.c \
	$(ISAC_SRC_DIR)/source/lpc_shape_swb12_tables.c \
	$(ISAC_SRC_DIR)/source/lpc_shape_swb16_tables.c \
78
	$(ISAC_SRC_DIR)/util/utility.c
79 80 81 82 83 84 85 86 87 88

else

# fixed point implementation
ISAC_BASE_SRCS += $(ISAC_SRC_DIR)/source/decode_plc.c \
	$(ISAC_SRC_DIR)/source/filters.c \
	$(ISAC_SRC_DIR)/source/initialize.c \
	$(ISAC_SRC_DIR)/source/isacfix.c \
	$(ISAC_SRC_DIR)/source/lattice_c.c \
	$(ISAC_SRC_DIR)/source/pitch_filter_c.c \
89
	$(ISAC_SRC_DIR)/source/lpc_masking_model.c
90 91 92 93 94 95

# TODO: use assembly-optimized versions when possible
#	$(ISAC_SRC_DIR)/source/filters_neon.c \
#	$(ISAC_SRC_DIR)/source/lpc_masking_model_neon.S \
#	$(ISAC_SRC_DIR)/source/pitch_filter_armv6.S \
#	$(ISAC_SRC_DIR)/source/lattice_neon.S \
96
#	$(ISAC_SRC_DIR)/source/lattice_armv7.S
97 98 99

endif

100 101 102 103 104 105
AEC_BASE_SRCS = \
	$(AEC_SRC_DIR)/echo_control_mobile.c \
	$(AEC_SRC_DIR)/aecm_core.c \
	$(AEC_SRC_DIR)/../utility/delay_estimator.c \
	$(AEC_SRC_DIR)/../utility/delay_estimator_wrapper.c

106
AEC_BASE_SRCS += $(AEC_SRC_DIR)/aecm_core_c.c
107

108 109 110 111 112
libmswebrtc_la_SOURCES= mswebrtc.c $(WEBRTC_COMMON_SRCS)
if BUILD_ISAC
libmswebrtc_la_SOURCES+= $(ISAC_BASE_SRCS) isac_dec.c isac_enc.c
endif
if BUILD_AEC
113
libmswebrtc_la_SOURCES+= $(AEC_BASE_SRCS) aec.c
114
endif
115 116


117
libmswebrtc_la_LIBADD= \
118
	$(ORTP_LIBS) \
119
	$(MEDIASTREAMER_LIBS)
120

121
libmswebrtc_la_LDFLAGS=-module -no-undefined
122

123 124
webrtc_CFLAGS = \
	-I$(webrtc_DIR) \
125
	-I$(WEBRTC_COMMON_SP_DIR)/include
126
if BUILD_ISAC
127 128 129
webrtc_CFLAGS += \
	-I$(ISAC_SRC_DIR)/source \
	-I$(ISAC_SRC_DIR)/util \
130 131
	-I$(ISAC_SRC_DIR)/interface \
	-I$(ISAC_SRC_DIR)/include
132 133
endif
if BUILD_AEC
134 135
webrtc_CFLAGS += \
	-I$(AEC_SRC_DIR)/include \
Ghislain MARY's avatar
Ghislain MARY committed
136 137 138
	-I$(top_srcdir)/webrtc/common_audio/signal_processing/include \
	-I$(top_srcdir)/webrtc/modules/audio_processing/utility \
	-I$(top_srcdir)/webrtc/system_wrappers/interface
139
endif
140

141 142
webrtc_CFLAGS += -DWEBRTC_POSIX=1

143 144 145 146
AM_CFLAGS= \
	$(webrtc_CFLAGS) \
	$(MEDIASTREAMER_CFLAGS) \
	$(STRICT_CFLAGS)
147 148 149 150 151 152

INSTALLDIR=$(shell cd $(top_builddir) && pwd)/$(PACKAGE)-install
INSTALLDIR_WITH_PREFIX=$(INSTALLDIR)/$(prefix)
ZIPFILE=$(shell cd $(top_builddir) && pwd)/$(PACKAGE)-win32-$(VERSION).zip
ZIP_EXCLUDED=include 

153
ISS_SCRIPT=mswebrtc.iss
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
ISS_SCRIPT_PATH=$(shell cd $(top_srcdir) && pwd)/$(ISS_SCRIPT)
#path to Inno Setup 5 compiler
ISCC=ISCC.exe
PACKAGE_WIN32_FILELIST=$(PACKAGE)-win32.filelist

setup.exe: zip
	cd $(INSTALLDIR_WITH_PREFIX) && \
	rm -f $(PACKAGE_WIN32_FILELIST) && \
	for file in `find` ; do \
		if ! test -d $$file ; then \
			echo "Source: $$file; Destdir: {app}\\`dirname $$file`; Flags: ignoreversion" \
			>> $(PACKAGE_WIN32_FILELIST) ;\
		fi \
	done
	cp $(ISS_SCRIPT) $(INSTALLDIR_WITH_PREFIX)/.
	cd $(INSTALLDIR_WITH_PREFIX) && \
	$(ISCC) $(ISS_SCRIPT) 
	mv $(INSTALLDIR_WITH_PREFIX)/Output/setup.exe $(PACKAGE)-$(VERSION)-setup.exe
	rm -rf $(INSTALLDIR_WITH_PREFIX)/Output
	rm -f $(INSTALLDIR_WITH_PREFIX)/$(PACKAGE_WIN32_FILELIST)
	rm -f $(INSTALLDIR_WITH_PREFIX)/$(ISS_SCRIPT)

zip:
	rm -f $(ZIPFILE)
	rm -rf $(INSTALLDIR)
	mkdir -p $(INSTALLDIR)
	make install DESTDIR=$(INSTALLDIR)
	cp -f $(top_srcdir)/README $(INSTALLDIR_WITH_PREFIX)/.
	cp -f $(top_srcdir)/COPYING $(INSTALLDIR_WITH_PREFIX)/.
	cd $(INSTALLDIR)/$(prefix) && rm -rf $(ZIP_EXCLUDED) && \
	zip -r $(ZIPFILE) *