mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-30 21:55:31 +00:00
539 lines
13 KiB
Makefile
539 lines
13 KiB
Makefile
# ***** BEGIN LICENSE BLOCK *****
|
|
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
#
|
|
# The contents of this file are subject to the Mozilla Public License Version
|
|
# 1.1 (the "License"); you may not use this file except in compliance with
|
|
# the License. You may obtain a copy of the License at
|
|
# http://www.mozilla.org/MPL/
|
|
#
|
|
# Software distributed under the License is distributed on an "AS IS" basis,
|
|
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
# for the specific language governing rights and limitations under the
|
|
# License.
|
|
#
|
|
# The Original Code is Mozilla code.
|
|
#
|
|
# The Initial Developer of the Original Code is the Mozilla Foundation.
|
|
# Portions created by the Initial Developer are Copyright (C) 2010
|
|
# the Initial Developer. All Rights Reserved.
|
|
#
|
|
# Contributor(s):
|
|
# Chris Pearce <chris@pearce.org.nz>
|
|
#
|
|
# Alternatively, the contents of this file may be used under the terms of
|
|
# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
# of those above. If you wish to allow use of your version of this file only
|
|
# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
# use your version of this file under the terms of the MPL, indicate your
|
|
# decision by deleting the provisions above and replace them with the notice
|
|
# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
# the provisions above, a recipient may use your version of this file under
|
|
# the terms of any one of the MPL, the GPL or the LGPL.
|
|
#
|
|
# ***** END LICENSE BLOCK *****
|
|
|
|
|
|
DEPTH = ../..
|
|
topsrcdir = @top_srcdir@
|
|
srcdir = @srcdir@
|
|
VPATH = @srcdir@
|
|
|
|
include $(DEPTH)/config/autoconf.mk
|
|
|
|
DEFINES += -DHAVE_CONFIG_H=vpx_config.h
|
|
|
|
MODULE = vpx
|
|
LIBRARY_NAME = vpx
|
|
FORCE_STATIC_LIB= 1
|
|
ifeq (WINNT,$(OS_TARGET))
|
|
VISIBILITY_FLAGS =
|
|
endif
|
|
|
|
LOCAL_INCLUDES += \
|
|
-I. \
|
|
-I$(topsrcdir)/media/libvpx \
|
|
-I$(topsrcdir)/media/libvpx/vp8/ \
|
|
-I$(topsrcdir)/media/libvpx/vp8/common/ \
|
|
-I$(topsrcdir)/media/libvpx/vp8/common/arm \
|
|
-I$(topsrcdir)/media/libvpx/vp8/common/x86 \
|
|
-I$(topsrcdir)/media/libvpx/vp8/decoder \
|
|
-I$(topsrcdir)/media/libvpx/vp8/decoder/arm \
|
|
-I$(topsrcdir)/media/libvpx/vp8/decoder/x86 \
|
|
-I$(topsrcdir)/media/libvpx/vpx_codec \
|
|
-I$(topsrcdir)/media/libvpx/vpx_mem/ \
|
|
-I$(topsrcdir)/media/libvpx/vpx_mem/include \
|
|
-I$(topsrcdir)/media/libvpx/vpx_ports/ \
|
|
-I$(topsrcdir)/media/libvpx/vpx_scale/ \
|
|
$(NULL)
|
|
|
|
VPATH += \
|
|
$(srcdir)/build/make \
|
|
$(srcdir)/vpx \
|
|
$(srcdir)/vpx/src \
|
|
$(srcdir)/vpx_mem \
|
|
$(srcdir)/vpx_mem/include \
|
|
$(srcdir)/vpx_ports \
|
|
$(srcdir)/vpx_scale \
|
|
$(srcdir)/vpx_scale/arm \
|
|
$(srcdir)/vpx_scale/generic \
|
|
$(srcdir)/vp8 \
|
|
$(srcdir)/vp8/common \
|
|
$(srcdir)/vp8/common/arm \
|
|
$(srcdir)/vp8/common/arm/armv6 \
|
|
$(srcdir)/vp8/common/arm/neon \
|
|
$(srcdir)/vp8/common/generic \
|
|
$(srcdir)/vp8/common/x86 \
|
|
$(srcdir)/vp8/decoder \
|
|
$(srcdir)/vp8/decoder/arm \
|
|
$(srcdir)/vp8/decoder/arm/armv6 \
|
|
$(srcdir)/vp8/decoder/arm/neon \
|
|
$(srcdir)/vp8/decoder/generic \
|
|
$(srcdir)/vp8/decoder/x86 \
|
|
$(NULL)
|
|
|
|
#Setup the libvpx assembler config.
|
|
AS=$(VPX_AS)
|
|
ASFLAGS=$(VPX_ASFLAGS) -I. -I$(topsrcdir)/media/libvpx/ -I$(topsrcdir)/media/libvpx/vpx_ports/
|
|
AS_DASH_C_FLAG=$(VPX_DASH_C_FLAG)
|
|
ASM_SUFFIX=$(VPX_ASM_SUFFIX)
|
|
|
|
EXPORTS_NAMESPACES = vpx
|
|
|
|
EXPORTS_vpx = \
|
|
vp8.h \
|
|
vp8cx.h \
|
|
vp8dx.h \
|
|
vp8e.h \
|
|
vpx_codec.h \
|
|
vpx_codec_impl_bottom.h \
|
|
vpx_codec_impl_top.h \
|
|
vpx_decoder.h \
|
|
vpx_decoder_compat.h \
|
|
vpx_encoder.h\
|
|
vpx_image.h \
|
|
vpx_mem_intrnl.h \
|
|
vpx_mem.h \
|
|
config.h \
|
|
mem.h \
|
|
vpx_integer.h \
|
|
vpx_timer.h \
|
|
arm.h \
|
|
x86.h \
|
|
scale_mode.h \
|
|
vpxscale.h \
|
|
yv12config.h \
|
|
yv12extend.h \
|
|
$(NULL)
|
|
|
|
CSRCS += \
|
|
vpx_config_c.c \
|
|
systemdependent.c \
|
|
alloccommon.c \
|
|
blockd.c \
|
|
debugmodes.c \
|
|
defaultcoefcounts.c \
|
|
dsystemdependent.c \
|
|
entropy.c \
|
|
entropymode.c \
|
|
entropymv.c \
|
|
extend.c \
|
|
filter.c \
|
|
findnearmv.c \
|
|
idctllm.c \
|
|
invtrans.c \
|
|
loopfilter.c \
|
|
loopfilter_filters.c \
|
|
mbpitch.c \
|
|
modecont.c \
|
|
modecontext.c \
|
|
postproc.c \
|
|
quant_common.c \
|
|
recon.c \
|
|
reconinter.c \
|
|
reconintra.c \
|
|
reconintra4x4.c \
|
|
setupintrarecon.c \
|
|
swapyv12buffer.c \
|
|
textblit.c \
|
|
treecoder.c \
|
|
dboolhuff.c \
|
|
decodemv.c \
|
|
decodframe.c \
|
|
dequantize.c \
|
|
detokenize.c \
|
|
reconintra_mt.c \
|
|
idct_blk.c \
|
|
onyxd_if.c \
|
|
threading.c \
|
|
vp8_dx_iface.c \
|
|
vpx_codec.c \
|
|
vpx_decoder.c \
|
|
vpx_decoder_compat.c \
|
|
vpx_encoder.c \
|
|
vpx_image.c \
|
|
vpx_mem.c \
|
|
gen_scalers.c \
|
|
vpxscale.c \
|
|
scalesystemdependent.c \
|
|
yv12config.c \
|
|
yv12extend.c \
|
|
$(NULL)
|
|
|
|
ifdef MOZ_VP8_ERROR_CONCEALMENT
|
|
CSRCS += \
|
|
error_concealment.c \
|
|
$(NULL)
|
|
endif
|
|
|
|
ifdef MOZ_VP8_ENCODER
|
|
VPATH += \
|
|
$(srcdir)/vp8/encoder \
|
|
$(srcdir)/vp8/encoder/arm \
|
|
$(srcdir)/vp8/encoder/arm/armv5te \
|
|
$(srcdir)/vp8/encoder/arm/armv6 \
|
|
$(srcdir)/vp8/encoder/arm/neon \
|
|
$(srcdir)/vp8/encoder/generic \
|
|
$(srcdir)/vp8/encoder/x86 \
|
|
$(srcdir)/vpx_scale/arm \
|
|
$(srcdir)/vpx_scale/arm/neon \
|
|
$(NULL)
|
|
|
|
CSRCS += \
|
|
vp8_cx_iface.c \
|
|
bitstream.c \
|
|
boolhuff.c \
|
|
dct.c \
|
|
encodeframe.c \
|
|
encodeintra.c \
|
|
encodemb.c \
|
|
encodemv.c \
|
|
ethreading.c \
|
|
firstpass.c \
|
|
lookahead.c \
|
|
mcomp.c \
|
|
modecosts.c \
|
|
onyx_if.c \
|
|
picklpf.c \
|
|
pickinter.c \
|
|
psnr.c \
|
|
quantize.c \
|
|
ratectrl.c \
|
|
rdopt.c \
|
|
sad_c.c \
|
|
segmentation.c \
|
|
temporal_filter.c \
|
|
tokenize.c \
|
|
treewriter.c \
|
|
variance_c.c \
|
|
csystemdependent.c \
|
|
$(NULL)
|
|
endif
|
|
|
|
ifdef VPX_X86_ASM
|
|
# Building on an x86 platform with a supported assembler, include
|
|
# the optimized assembly in the build.
|
|
|
|
CSRCS += \
|
|
idct_blk_mmx.c \
|
|
idct_blk_sse2.c \
|
|
loopfilter_x86.c \
|
|
recon_wrapper_sse2.c \
|
|
vp8_asm_stubs.c \
|
|
x86_systemdependent.c \
|
|
x86_dsystemdependent.c \
|
|
$(NULL)
|
|
|
|
ASFILES += \
|
|
idctllm_mmx.asm \
|
|
idctllm_sse2.asm \
|
|
iwalsh_mmx.asm \
|
|
iwalsh_sse2.asm \
|
|
loopfilter_mmx.asm \
|
|
loopfilter_sse2.asm \
|
|
postproc_mmx.asm \
|
|
postproc_sse2.asm \
|
|
recon_mmx.asm \
|
|
recon_sse2.asm \
|
|
subpixel_mmx.asm \
|
|
subpixel_sse2.asm \
|
|
subpixel_ssse3.asm \
|
|
dequantize_mmx.asm \
|
|
emms.asm \
|
|
$(NULL)
|
|
|
|
ifdef MOZ_VP8_ENCODER
|
|
|
|
CSRCS += \
|
|
variance_mmx.c \
|
|
variance_sse2.c \
|
|
variance_ssse3.c \
|
|
x86_csystemdependent.c \
|
|
$(NULL)
|
|
|
|
ASFILES += \
|
|
dct_mmx.asm \
|
|
dct_sse2.asm \
|
|
encodeopt.asm \
|
|
fwalsh_sse2.asm \
|
|
quantize_mmx.asm \
|
|
quantize_sse2.asm \
|
|
quantize_ssse3.asm \
|
|
quantize_sse4.asm \
|
|
sad_mmx.asm \
|
|
sad_sse2.asm \
|
|
sad_sse3.asm \
|
|
sad_ssse3.asm \
|
|
sad_sse4.asm \
|
|
subtract_mmx.asm \
|
|
subtract_sse2.asm \
|
|
temporal_filter_apply_sse2.asm \
|
|
variance_impl_mmx.asm \
|
|
variance_impl_sse2.asm \
|
|
variance_impl_ssse3.asm \
|
|
$(NULL)
|
|
|
|
# Files which depend on asm_enc_offsets.asm
|
|
VPX_ASM_ENC_OFFSETS_SRCS = \
|
|
quantize_sse2.asm \
|
|
quantize_ssse3.asm \
|
|
quantize_sse4.asm \
|
|
$(NULL)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
ifdef VPX_ARM_ASM
|
|
# Building on an ARM platform with a supported assembler, include
|
|
# the optimized assembly in the build.
|
|
|
|
# The Android NDK doesn't pre-define anything to indicate the OS it's on, so
|
|
# do it for them.
|
|
ifeq ($(OS_TARGET),Android)
|
|
DEFINES += -D__linux__
|
|
endif
|
|
|
|
CSRCS += \
|
|
arm_cpudetect.c \
|
|
arm_systemdependent.c \
|
|
bilinearfilter_arm.c \
|
|
filter_arm.c \
|
|
loopfilter_arm.c \
|
|
reconintra_arm.c \
|
|
arm_dsystemdependent.c \
|
|
dequantize_arm.c \
|
|
idct_blk_v6.c \
|
|
idct_blk_neon.c \
|
|
recon_neon.c \
|
|
$(NULL)
|
|
|
|
VPX_ASFILES = \
|
|
bilinearfilter_v6.asm \
|
|
copymem8x4_v6.asm \
|
|
copymem8x8_v6.asm \
|
|
copymem16x16_v6.asm \
|
|
dc_only_idct_add_v6.asm \
|
|
iwalsh_v6.asm \
|
|
filter_v6.asm \
|
|
idct_v6.asm \
|
|
loopfilter_v6.asm \
|
|
recon_v6.asm \
|
|
simpleloopfilter_v6.asm \
|
|
sixtappredict8x4_v6.asm \
|
|
bilinearpredict4x4_neon.asm \
|
|
bilinearpredict8x4_neon.asm \
|
|
bilinearpredict8x8_neon.asm \
|
|
bilinearpredict16x16_neon.asm \
|
|
copymem8x4_neon.asm \
|
|
copymem8x8_neon.asm \
|
|
copymem16x16_neon.asm \
|
|
dc_only_idct_add_neon.asm \
|
|
iwalsh_neon.asm \
|
|
loopfilter_neon.asm \
|
|
loopfiltersimplehorizontaledge_neon.asm \
|
|
loopfiltersimpleverticaledge_neon.asm \
|
|
mbloopfilter_neon.asm \
|
|
recon2b_neon.asm \
|
|
recon4b_neon.asm \
|
|
reconb_neon.asm \
|
|
shortidct4x4llm_1_neon.asm \
|
|
shortidct4x4llm_neon.asm \
|
|
sixtappredict4x4_neon.asm \
|
|
sixtappredict8x4_neon.asm \
|
|
sixtappredict8x8_neon.asm \
|
|
sixtappredict16x16_neon.asm \
|
|
recon16x16mb_neon.asm \
|
|
buildintrapredictorsmby_neon.asm \
|
|
save_neon_reg.asm \
|
|
dequant_dc_idct_v6.asm \
|
|
dequant_idct_v6.asm \
|
|
dequantize_v6.asm \
|
|
idct_dequant_dc_full_2x_neon.asm \
|
|
idct_dequant_dc_0_2x_neon.asm \
|
|
dequant_idct_neon.asm \
|
|
idct_dequant_full_2x_neon.asm \
|
|
idct_dequant_0_2x_neon.asm \
|
|
dequantizeb_neon.asm \
|
|
$(NULL)
|
|
|
|
ifdef MOZ_VP8_ENCODER
|
|
CSRCS += \
|
|
arm_csystemdependent.c \
|
|
dct_arm.c \
|
|
picklpf_arm.c \
|
|
variance_arm.c \
|
|
$(NULL)
|
|
|
|
VPX_ASFILES += \
|
|
vp8_packtokens_armv5.asm \
|
|
vp8_packtokens_mbrow_armv5.asm \
|
|
vp8_packtokens_partitions_armv5.asm \
|
|
vp8_fast_fdct4x4_armv6.asm \
|
|
vp8_fast_quantize_b_armv6.asm \
|
|
vp8_mse16x16_armv6.asm \
|
|
vp8_sad16x16_armv6.asm \
|
|
vp8_subtract_armv6.asm \
|
|
vp8_variance16x16_armv6.asm \
|
|
vp8_variance8x8_armv6.asm \
|
|
vp8_variance_halfpixvar16x16_h_armv6.asm \
|
|
vp8_variance_halfpixvar16x16_hv_armv6.asm \
|
|
vp8_variance_halfpixvar16x16_v_armv6.asm \
|
|
walsh_v6.asm \
|
|
fastfdct4x4_neon.asm \
|
|
fastfdct8x4_neon.asm \
|
|
fastquantizeb_neon.asm \
|
|
sad16_neon.asm \
|
|
sad8_neon.asm \
|
|
shortfdct_neon.asm \
|
|
subtract_neon.asm \
|
|
variance_neon.asm \
|
|
vp8_memcpy_neon.asm \
|
|
vp8_mse16x16_neon.asm \
|
|
vp8_shortwalsh4x4_neon.asm \
|
|
vp8_subpixelvariance8x8_neon.asm \
|
|
vp8_subpixelvariance16x16_neon.asm \
|
|
vp8_subpixelvariance16x16s_neon.asm \
|
|
vp8_vpxyv12_copyframeyonly_neon.asm \
|
|
$(NULL)
|
|
|
|
# Files which depend on asm_com_offsets.asm
|
|
VPX_ASM_COM_OFFSETS_SRCS = \
|
|
vp8_vpxyv12_copyframeyonly_neon.asm \
|
|
$(NULL)
|
|
|
|
# Files which depend on asm_enc_offsets.asm
|
|
VPX_ASM_ENC_OFFSETS_SRCS = \
|
|
vp8_packtokens_armv5.asm \
|
|
vp8_packtokens_mbrow_armv5.asm \
|
|
vp8_packtokens_partitions_armv5.asm \
|
|
vp8_fast_quantize_b_armv6.asm \
|
|
vp8_subtract_armv6.asm \
|
|
fastquantizeb_neon.asm \
|
|
subtract_neon.asm \
|
|
$(NULL)
|
|
|
|
endif
|
|
|
|
ifdef VPX_AS_CONVERSION
|
|
# The ARM asm is written in ARM RVCT syntax, but we actually build it with
|
|
# gas using GNU syntax. Add some rules to perform the conversion.
|
|
VPX_CONVERTED_ASFILES = $(addsuffix .$(ASM_SUFFIX), $(VPX_ASFILES))
|
|
|
|
ASFILES += $(VPX_CONVERTED_ASFILES)
|
|
GARBAGE += $(VPX_CONVERTED_ASFILES)
|
|
|
|
%.asm.$(ASM_SUFFIX): %.asm
|
|
$(VPX_AS_CONVERSION) < $< > $@
|
|
else
|
|
ASFILES += $(VPX_ASFILES)
|
|
endif
|
|
|
|
endif
|
|
|
|
ifdef MOZ_VP8_ENCODER
|
|
ifdef VPX_NEED_OBJ_INT_EXTRACT
|
|
|
|
# We don't have a compiler that supports a compatible inline asm syntax, so we
|
|
# have to resort to extracting asm offsets from a compiled object. This only
|
|
# works if we have the appropriate system headers obj_int_extract needs to
|
|
# parse that format, and so only has limited support for cross-compilation.
|
|
|
|
ifdef VPX_ARM_ASM
|
|
VPX_OIE_FORMAT := rvds
|
|
else
|
|
VPX_OIE_FORMAT := gas
|
|
endif
|
|
|
|
HOST_CSRCS = obj_int_extract.c
|
|
HOST_PROGRAM = host_obj_int_extract$(HOST_BIN_SUFFIX)
|
|
|
|
GARBAGE += \
|
|
asm_com_offsets.$(OBJ_SUFFIX) asm_com_offsets.asm \
|
|
asm_enc_offsets.$(OBJ_SUFFIX) asm_enc_offsets.asm \
|
|
$(NULL)
|
|
|
|
else
|
|
|
|
# We can extract the asm offsets directly from generated assembly using inline
|
|
# asm. This is the preferred method.
|
|
|
|
asm_com_offsets.s: CFLAGS += -DINLINE_ASM
|
|
asm_enc_offsets.s: CFLAGS += -DINLINE_ASM
|
|
|
|
asm_com_offsets.asm: asm_com_offsets.s
|
|
grep \\\<EQU\\\> $< | sed -e 's/[$$\#]//g' \
|
|
$(if $(VPX_AS_CONVERSION),| $(VPX_AS_CONVERSION)) > $@
|
|
|
|
asm_enc_offsets.asm: asm_enc_offsets.s
|
|
grep \\\<EQU\\\> $< | sed -e 's/[$$\#]//g' \
|
|
$(if $(VPX_AS_CONVERSION),| $(VPX_AS_CONVERSION)) > $@
|
|
|
|
GARBAGE += \
|
|
asm_com_offsets.s asm_com_offsets.asm \
|
|
asm_enc_offsets.s asm_enc_offsets.asm \
|
|
$(NULL)
|
|
|
|
endif
|
|
endif
|
|
|
|
include $(topsrcdir)/config/rules.mk
|
|
|
|
# This must be after rules.mk in order to use $(OBJ_SUFFIX) outside a
|
|
# recursively-expanded variable.
|
|
ifdef MOZ_VP8_ENCODER
|
|
|
|
ifdef VPX_NEED_OBJ_INT_EXTRACT
|
|
|
|
asm_com_offsets.asm: asm_com_offsets.$(OBJ_SUFFIX) $(HOST_PROGRAM)
|
|
./$(HOST_PROGRAM) $(VPX_OIE_FORMAT) $< \
|
|
$(if $(VPX_AS_CONVERSION),| $(VPX_AS_CONVERSION)) > $@
|
|
|
|
asm_enc_offsets.asm: asm_enc_offsets.$(OBJ_SUFFIX) $(HOST_PROGRAM)
|
|
./$(HOST_PROGRAM) $(VPX_OIE_FORMAT) $< \
|
|
$(if $(VPX_AS_CONVERSION),| $(VPX_AS_CONVERSION)) > $@
|
|
|
|
endif
|
|
|
|
# These dependencies are not generated automatically, so do it manually.
|
|
ifdef VPX_AS_CONVERSION
|
|
$(addsuffix .$(OBJ_SUFFIX), $(VPX_ASM_COM_OFFSETS_SRCS)): asm_com_offsets.asm
|
|
$(addsuffix .$(OBJ_SUFFIX), $(VPX_ASM_ENC_OFFSETS_SRCS)): asm_enc_offsets.asm
|
|
else
|
|
$(patsubst %.$(ASM_SUFFIX),%.$(OBJ_SUFFIX), $(VPX_ASM_COM_OFFSETS_SRCS)): asm_com_offsets.asm
|
|
$(patsubst %.$(ASM_SUFFIX),%.$(OBJ_SUFFIX), $(VPX_ASM_ENC_OFFSETS_SRCS)): asm_enc_offsets.asm
|
|
endif
|
|
|
|
endif
|
|
|
|
# Workaround a bug of Sun Studio (CR 6963410)
|
|
ifdef SOLARIS_SUNPRO_CC
|
|
ifeq (86,$(findstring 86,$(OS_TEST)))
|
|
filter.o: filter.c Makefile.in
|
|
$(REPORT_BUILD)
|
|
@$(MAKE_DEPS_AUTO_CC)
|
|
$(CC) -o $@ -c $(patsubst -xO[45],-xO3,$(COMPILE_CFLAGS)) $<
|
|
endif
|
|
endif
|