media/libvpx/Makefile.in
author Joey Armstrong <joey@mozilla.com>
Fri, 06 Apr 2012 14:07:46 -0400
changeset 91537 b23771ca17fd1362243886e1beeab45ce5dc87e5
parent 82625 9123d35faa6cb445bf6f10eb38f57b0d6c76d0f7
child 93062 731c4bc9dd37ac8c1f9794d33cbcfa562affd4e8
permissions -rw-r--r--
Bug 741839 - Consolidate wildcard calls in client.mk. r=ted

# ***** 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