gecko-dev/media/libvpx/Makefile.in

464 lines
11 KiB
Makefile

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DEFINES += -DHAVE_CONFIG_H=vpx_config.h
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/arm/neon \
$(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)
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 \
dct.c \
encodeframe.c \
encodeintra.c \
encodemb.c \
encodemv.c \
ethreading.c \
firstpass.c \
lookahead.c \
mcomp.c \
modecosts.c \
mr_dissim.c \
onyx_if.c \
pickinter.c \
picklpf.c \
psnr.c \
quantize.c \
ratectrl.c \
rdopt.c \
segmentation.c \
temporal_filter.c \
tokenize.c \
treewriter.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 += \
filter_x86.c \
idct_blk_mmx.c \
idct_blk_sse2.c \
loopfilter_x86.c \
postproc_x86.c \
recon_wrapper_sse2.c \
variance_mmx.c \
variance_sse2.c \
variance_ssse3.c \
vp8_asm_stubs.c \
x86_systemdependent.c \
x86_dsystemdependent.c \
$(NULL)
ASFILES += \
dequantize_mmx.asm \
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 \
sad_mmx.asm \
sad_sse2.asm \
sad_sse3.asm \
sad_sse4.asm \
sad_ssse3.asm \
subpixel_mmx.asm \
subpixel_sse2.asm \
subpixel_ssse3.asm \
variance_impl_mmx.asm \
variance_impl_sse2.asm \
variance_impl_ssse3.asm \
emms.asm \
$(NULL)
ifeq (64,$(findstring 64,$(OS_TEST)))
ASFILES += loopfilter_block_sse2.asm
endif
ifdef MOZ_VP8_ENCODER
CSRCS += \
x86_csystemdependent.c \
$(NULL)
# Files which depend on asm_enc_offsets.asm
VPX_ASM_ENC_OFFSETS_SRCS = \
quantize_sse2.asm \
quantize_sse4.asm \
quantize_ssse3.asm \
$(NULL)
ASFILES += \
dct_mmx.asm \
dct_sse2.asm \
encodeopt.asm \
fwalsh_sse2.asm \
quantize_mmx.asm \
subtract_mmx.asm \
subtract_sse2.asm \
temporal_filter_apply_sse2.asm \
$(VPX_ASM_ENC_OFFSETS_SRCS) \
$(NULL)
endif
endif
ifdef VPX_ARM_ASM
# Building on an ARM platform with a supported assembler, include
# the optimized assembly in the build.
ifeq ($(OS_TARGET),Android)
# Older versions of the Android NDK don't pre-define anything to indicate the
# OS they're on, so do it for them.
DEFINES += -D__linux__
# For cpu-features.h
LOCAL_INCLUDES += -I$(ANDROID_NDK)/sources/android/cpufeatures
ifndef MOZ_WEBRTC
# For cpu-features.c
VPATH += $(ANDROID_NDK)/sources/android/cpufeatures
CSRCS += cpu-features.c
endif
endif
CSRCS += \
arm_cpudetect.c \
arm_systemdependent.c \
bilinearfilter_arm.c \
dequantize_arm.c \
filter_arm.c \
loopfilter_arm.c \
reconintra_arm.c \
variance_arm.c \
idct_blk_v6.c \
idct_blk_neon.c \
arm_dsystemdependent.c \
arm_scalesystemdependent.c \
yv12extend_arm.c \
$(NULL)
# Files which depend on asm_com_offsets.asm
VPX_ASM_COM_OFFSETS_SRCS = \
vp8_vpxyv12_copy_y_neon.asm \
vp8_vpxyv12_copyframe_func_neon.asm \
vp8_vpxyv12_extendframeborders_neon.asm \
$(NULL)
VPX_ASFILES = \
bilinearfilter_v6.asm \
copymem16x16_v6.asm \
copymem8x4_v6.asm \
copymem8x8_v6.asm \
dc_only_idct_add_v6.asm \
dequant_idct_v6.asm \
dequantize_v6.asm \
filter_v6.asm \
idct_v6.asm \
intra4x4_predict_v6.asm \
iwalsh_v6.asm \
loopfilter_v6.asm \
simpleloopfilter_v6.asm \
sixtappredict8x4_v6.asm \
bilinearpredict16x16_neon.asm \
bilinearpredict4x4_neon.asm \
bilinearpredict8x4_neon.asm \
bilinearpredict8x8_neon.asm \
buildintrapredictorsmby_neon.asm \
copymem16x16_neon.asm \
copymem8x4_neon.asm \
copymem8x8_neon.asm \
dc_only_idct_add_neon.asm \
dequant_idct_neon.asm \
dequantizeb_neon.asm \
idct_dequant_0_2x_neon.asm \
idct_dequant_full_2x_neon.asm \
iwalsh_neon.asm \
loopfilter_neon.asm \
loopfiltersimplehorizontaledge_neon.asm \
loopfiltersimpleverticaledge_neon.asm \
mbloopfilter_neon.asm \
save_neon_reg.asm \
vp8_mse16x16_armv6.asm \
vp8_sad16x16_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 \
shortidct4x4llm_neon.asm \
sad16_neon.asm \
sad8_neon.asm \
sixtappredict16x16_neon.asm \
sixtappredict4x4_neon.asm \
sixtappredict8x4_neon.asm \
sixtappredict8x8_neon.asm \
variance_neon.asm \
vp8_mse16x16_neon.asm \
vp8_subpixelvariance8x8_neon.asm \
vp8_subpixelvariance16x16_neon.asm \
vp8_subpixelvariance16x16s_neon.asm \
$(VPX_ASM_COM_OFFSETS_SRCS) \
$(NULL)
ifdef MOZ_VP8_ENCODER
CSRCS += \
arm_csystemdependent.c \
boolhuff_arm.c \
dct_arm.c \
picklpf_arm.c \
$(NULL)
# Files which depend on asm_enc_offsets.asm
VPX_ASM_ENC_OFFSETS_SRCS = \
boolhuff_armv5te.asm \
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)
VPX_ASFILES += \
vp8_short_fdct4x4_armv6.asm \
walsh_v6.asm \
shortfdct_neon.asm \
vp8_memcpy_neon.asm \
vp8_shortwalsh4x4_neon.asm \
$(VPX_ASM_ENC_OFFSETS_SRCS) \
$(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
else
ifdef MOZ_VP8_ENCODER
# boolhuff_armv5te.asm defines the same functions as boolhuff.c instead of
# using RTCD, so we have to make sure we only add one of the two.
CSRCS += boolhuff.c
endif
endif
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_PROGRAM = host_obj_int_extract$(HOST_BIN_SUFFIX)
CSRCS += asm_com_offsets.c
GARBAGE += asm_com_offsets.$(OBJ_SUFFIX) asm_com_offsets.asm
ifdef MOZ_VP8_ENCODER
CSRCS += asm_enc_offsets.c
GARBAGE += asm_enc_offsets.$(OBJ_SUFFIX) asm_enc_offsets.asm
endif
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
OFFSET_PATTERN := '^[a-zA-Z0-9_]* EQU'
# This rule, as well as the rule for asm_enc_offsets.s further below are here
# because the generic rule in rules.mk was made to not be implicit, and we
# can't put the C files in CSRCS.
asm_com_offsets.s: asm_com_offsets.c
$(REPORT_BUILD)
$(CC) -S $(COMPILE_CFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
asm_com_offsets.asm: asm_com_offsets.s
grep $(OFFSET_PATTERN) $< | sed -e 's/[$$\#]//g' \
$(if $(VPX_AS_CONVERSION),| $(VPX_AS_CONVERSION)) > $@
GARBAGE += asm_com_offsets.s asm_com_offsets.asm
ifdef MOZ_VP8_ENCODER
asm_enc_offsets.s: CFLAGS += -DINLINE_ASM
asm_enc_offsets.s: asm_enc_offsets.c
$(REPORT_BUILD)
$(CC) -S $(COMPILE_CFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
asm_enc_offsets.asm: asm_enc_offsets.s
grep $(OFFSET_PATTERN) $< | sed -e 's/[$$\#]//g' \
$(if $(VPX_AS_CONVERSION),| $(VPX_AS_CONVERSION)) > $@
GARBAGE += asm_enc_offsets.s asm_enc_offsets.asm
endif
endif
EXTRA_MDDEPEND_FILES = asm_enc_offsets.s.pp asm_enc_offsets.$(OBJ_SUFFIX).pp asm_com_offsets.s.pp asm_com_offsets.$(OBJ_SUFFIX).pp
include $(topsrcdir)/config/rules.mk
# This must be after rules.mk in order to use $(OBJ_SUFFIX) outside a
# recursively-expanded variable.
ifdef VPX_NEED_OBJ_INT_EXTRACT
# only for MSVC
ifdef _MSC_VER
asm_com_offsets.$(OBJ_SUFFIX): CFLAGS += -GL-
endif
asm_com_offsets.asm: asm_com_offsets.$(OBJ_SUFFIX) $(HOST_PROGRAM)
./$(HOST_PROGRAM) $(VPX_OIE_FORMAT) $< \
$(if $(VPX_AS_CONVERSION),| $(VPX_AS_CONVERSION)) > $@
# Filter out this object, because we don't want to link against it.
# It was generated solely so it could be parsed by obj_int_extract.
OBJS := $(filter-out asm_com_offsets.$(OBJ_SUFFIX),$(OBJS))
ifdef MOZ_VP8_ENCODER
ifdef _MSC_VER
asm_enc_offsets.$(OBJ_SUFFIX): CFLAGS += -GL-
endif
asm_enc_offsets.asm: asm_enc_offsets.$(OBJ_SUFFIX) $(HOST_PROGRAM)
./$(HOST_PROGRAM) $(VPX_OIE_FORMAT) $< \
$(if $(VPX_AS_CONVERSION),| $(VPX_AS_CONVERSION)) > $@
# Filter out this object, because we don't want to link against it.
# It was generated solely so it could be parsed by obj_int_extract.
OBJS := $(filter-out asm_enc_offsets.$(OBJ_SUFFIX),$(OBJS))
endif
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
ifdef MOZ_VP8_ENCODER
$(addsuffix .$(OBJ_SUFFIX), $(VPX_ASM_ENC_OFFSETS_SRCS)): asm_enc_offsets.asm
endif
else
$(patsubst %.$(ASM_SUFFIX),%.$(OBJ_SUFFIX), $(VPX_ASM_COM_OFFSETS_SRCS)): asm_com_offsets.asm
ifdef MOZ_VP8_ENCODER
$(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