1167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##
2167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##
4167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##  Use of this source code is governed by a BSD-style license
5167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##  that can be found in the LICENSE file in the root of the source
6167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##  tree. An additional intellectual property rights grant can be found
7167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##  in the file PATENTS.  All contributing project authors may
8167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##  be found in the AUTHORS file in the root of the source tree.
9167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##
10167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
11167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
12167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org# ARM assembly files are written in RVCT-style. We use some make magic to
13167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org# filter those files to allow GCC compilation
14167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(ARCH_ARM),yes)
1510a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org  ASM:=$(if $(filter yes,$(CONFIG_GCC)$(CONFIG_MSVS)),.asm.s,.asm)
16167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgelse
17167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  ASM:=.asm
18167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
19167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
206fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#
216fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org# Calculate platform- and compiler-specific offsets for hand coded assembly
226fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#
236fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgifeq ($(filter icc gcc,$(TGT_CC)), $(TGT_CC))
246fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgOFFSET_PATTERN:='^[a-zA-Z0-9_]* EQU'
256fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgdefine asm_offsets_template
266fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org$$(BUILD_PFX)$(1): $$(BUILD_PFX)$(2).S
276fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org	@echo "    [CREATE] $$@"
286fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org	$$(qexec)LC_ALL=C grep $$(OFFSET_PATTERN) $$< | tr -d '$$$$\#' $$(ADS2GAS) > $$@
296fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org$$(BUILD_PFX)$(2).S: $(2)
306fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgCLEAN-OBJS += $$(BUILD_PFX)$(1) $(2).S
316fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgendef
326fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgelse
336fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  ifeq ($(filter rvct,$(TGT_CC)), $(TGT_CC))
346fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgdefine asm_offsets_template
356fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org$$(BUILD_PFX)$(1): obj_int_extract
366fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org$$(BUILD_PFX)$(1): $$(BUILD_PFX)$(2).o
376fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org	@echo "    [CREATE] $$@"
386fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org	$$(qexec)./obj_int_extract rvds $$< $$(ADS2GAS) > $$@
396fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgOBJS-yes += $$(BUILD_PFX)$(2).o
406fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgCLEAN-OBJS += $$(BUILD_PFX)$(1)
416fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org$$(filter %$$(ASM).o,$$(OBJS-yes)): $$(BUILD_PFX)$(1)
426fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgendef
436fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgendif # rvct
446fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgendif # !gcc
456fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
466fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#
476fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org# Rule to generate runtime cpu detection files
486fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#
496fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgdefine rtcd_h_template
506fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org$$(BUILD_PFX)$(1).h: $$(SRC_PATH_BARE)/$(2)
516fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org	@echo "    [CREATE] $$@"
5293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org	$$(qexec)$$(SRC_PATH_BARE)/build/make/rtcd.pl --arch=$$(TGT_ISA) \
536fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org          --sym=$(1) \
54923acb6a717b7f2719ed21184c1bc533b0a14888johannkoenig@chromium.org          --config=$$(CONFIG_DIR)$$(target)$$(if $$(FAT_ARCHS),,-$$(TOOLCHAIN)).mk \
556fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org          $$(RTCD_OPTIONS) $$^ > $$@
566fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgCLEAN-OBJS += $$(BUILD_PFX)$(1).h
576fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgRTCD += $$(BUILD_PFX)$(1).h
586fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgendef
596fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
605c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgCODEC_SRCS-yes += CHANGELOG
61167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCODEC_SRCS-yes += libs.mk
62167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
63d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org# If this is a universal (fat) binary, then all the subarchitectures have
64d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org# already been built and our job is to stitch them together. The
65d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org# BUILD_LIBVPX variable indicates whether we should be building
66d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org# (compiling, linking) the library. The LIPO_LIBVPX variable indicates
67d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org# that we're stitching.
68d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org$(eval $(if $(filter universal%,$(TOOLCHAIN)),LIPO_LIBVPX,BUILD_LIBVPX):=yes)
69d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org
70167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orginclude $(SRC_PATH_BARE)/vpx/vpx_codec.mk
71167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCODEC_SRCS-yes += $(addprefix vpx/,$(call enabled,API_SRCS))
72d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.orgCODEC_DOC_SRCS += $(addprefix vpx/,$(call enabled,API_DOC_SRCS))
73167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
74167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orginclude $(SRC_PATH_BARE)/vpx_mem/vpx_mem.mk
75167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCODEC_SRCS-yes += $(addprefix vpx_mem/,$(call enabled,MEM_SRCS))
76167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
77167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orginclude $(SRC_PATH_BARE)/vpx_scale/vpx_scale.mk
78167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCODEC_SRCS-yes += $(addprefix vpx_scale/,$(call enabled,SCALE_SRCS))
79167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
80d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.orginclude $(SRC_PATH_BARE)/vpx_ports/vpx_ports.mk
81d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.orgCODEC_SRCS-yes += $(addprefix vpx_ports/,$(call enabled,PORTS_SRCS))
82d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org
836fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgifneq ($(CONFIG_VP8_ENCODER)$(CONFIG_VP8_DECODER),)
846fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  VP8_PREFIX=vp8/
856fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  include $(SRC_PATH_BARE)/$(VP8_PREFIX)vp8_common.mk
866fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgendif
87167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
88167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(CONFIG_VP8_ENCODER),yes)
89167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  include $(SRC_PATH_BARE)/$(VP8_PREFIX)vp8cx.mk
90167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  CODEC_SRCS-yes += $(addprefix $(VP8_PREFIX),$(call enabled,VP8_CX_SRCS))
91167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  CODEC_EXPORTS-yes += $(addprefix $(VP8_PREFIX),$(VP8_CX_EXPORTS))
925c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org  INSTALL-LIBS-yes += include/vpx/vp8.h include/vpx/vp8cx.h
93167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/$(VP8_PREFIX)/%
94167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  CODEC_DOC_SECTIONS += vp8 vp8_encoder
95167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
96167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
97167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(CONFIG_VP8_DECODER),yes)
98167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  include $(SRC_PATH_BARE)/$(VP8_PREFIX)vp8dx.mk
99167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  CODEC_SRCS-yes += $(addprefix $(VP8_PREFIX),$(call enabled,VP8_DX_SRCS))
100167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  CODEC_EXPORTS-yes += $(addprefix $(VP8_PREFIX),$(VP8_DX_EXPORTS))
101167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  INSTALL-LIBS-yes += include/vpx/vp8.h include/vpx/vp8dx.h
102167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/$(VP8_PREFIX)/%
103167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  CODEC_DOC_SECTIONS += vp8 vp8_decoder
104167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
105167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
1066fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgifneq ($(CONFIG_VP9_ENCODER)$(CONFIG_VP9_DECODER),)
1076fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  VP9_PREFIX=vp9/
1086fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  include $(SRC_PATH_BARE)/$(VP9_PREFIX)vp9_common.mk
1096fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgendif
1106fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
1116fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgifeq ($(CONFIG_VP9_ENCODER),yes)
1126fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  VP9_PREFIX=vp9/
1136fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  include $(SRC_PATH_BARE)/$(VP9_PREFIX)vp9cx.mk
1146fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  CODEC_SRCS-yes += $(addprefix $(VP9_PREFIX),$(call enabled,VP9_CX_SRCS))
1156fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  CODEC_EXPORTS-yes += $(addprefix $(VP9_PREFIX),$(VP9_CX_EXPORTS))
1166fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  CODEC_SRCS-yes += $(VP9_PREFIX)vp9cx.mk vpx/vp8.h vpx/vp8cx.h
1176fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  INSTALL-LIBS-yes += include/vpx/vp8.h include/vpx/vp8cx.h
11888b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org  INSTALL-LIBS-$(CONFIG_SPATIAL_SVC) += include/vpx/svc_context.h
1196fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/$(VP9_PREFIX)/%
1206fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  CODEC_DOC_SRCS += vpx/vp8.h vpx/vp8cx.h
1216fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  CODEC_DOC_SECTIONS += vp9 vp9_encoder
1226fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgendif
1236fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
1246fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgifeq ($(CONFIG_VP9_DECODER),yes)
1256fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  VP9_PREFIX=vp9/
1266fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  include $(SRC_PATH_BARE)/$(VP9_PREFIX)vp9dx.mk
1276fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  CODEC_SRCS-yes += $(addprefix $(VP9_PREFIX),$(call enabled,VP9_DX_SRCS))
1286fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  CODEC_EXPORTS-yes += $(addprefix $(VP9_PREFIX),$(VP9_DX_EXPORTS))
1296fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  CODEC_SRCS-yes += $(VP9_PREFIX)vp9dx.mk vpx/vp8.h vpx/vp8dx.h
1306fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  INSTALL-LIBS-yes += include/vpx/vp8.h include/vpx/vp8dx.h
1316fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/$(VP9_PREFIX)/%
1326fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  CODEC_DOC_SRCS += vpx/vp8.h vpx/vp8dx.h
1336fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  CODEC_DOC_SECTIONS += vp9 vp9_decoder
1346fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgendif
1356fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
136d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgVP9_PREFIX=vp9/
137d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org$(BUILD_PFX)$(VP9_PREFIX)%.c.o: CFLAGS += -Wextra
138167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
139167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(CONFIG_ENCODERS),yes)
140167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  CODEC_DOC_SECTIONS += encoder
141167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
142167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(CONFIG_DECODERS),yes)
143167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org  CODEC_DOC_SECTIONS += decoder
144167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
145167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
146167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
147167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(CONFIG_MSVS),yes)
148167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCODEC_LIB=$(if $(CONFIG_STATIC_MSVCRT),vpxmt,vpxmd)
149ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgGTEST_LIB=$(if $(CONFIG_STATIC_MSVCRT),gtestmt,gtestmd)
150167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org# This variable uses deferred expansion intentionally, since the results of
151167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org# $(wildcard) may change during the course of the Make.
152167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgVS_PLATFORMS = $(foreach d,$(wildcard */Release/$(CODEC_LIB).lib),$(word 1,$(subst /, ,$(d))))
153167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
154167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
155167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org# The following pairs define a mapping of locations in the distribution
156167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org# tree to locations in the source/build trees.
157167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/vpx/%
158167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/vpx_ports/%
159167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL_MAPS += $(LIBSUBDIR)/%     %
160167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL_MAPS += src/%     $(SRC_PATH_BARE)/%
161167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(CONFIG_MSVS),yes)
162167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL_MAPS += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/%  $(p)/Release/%)
163167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL_MAPS += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/%  $(p)/Debug/%)
164167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
165167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
166167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCODEC_SRCS-$(BUILD_LIBVPX) += build/make/version.sh
16793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgCODEC_SRCS-$(BUILD_LIBVPX) += build/make/rtcd.pl
168d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.orgCODEC_SRCS-$(BUILD_LIBVPX) += vpx_ports/emmintrin_compat.h
169411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.orgCODEC_SRCS-$(BUILD_LIBVPX) += vpx_ports/mem_ops.h
170411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.orgCODEC_SRCS-$(BUILD_LIBVPX) += vpx_ports/mem_ops_aligned.h
171d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.orgCODEC_SRCS-$(BUILD_LIBVPX) += vpx_ports/vpx_once.h
172167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCODEC_SRCS-$(BUILD_LIBVPX) += $(BUILD_PFX)vpx_config.c
173167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-SRCS-no += $(BUILD_PFX)vpx_config.c
174cb10580dc19be9dfddf6b0616f101996c333c8c4tomfinegan@chromium.orgifeq ($(ARCH_X86)$(ARCH_X86_64),yes)
175e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.orgINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += third_party/x86inc/x86inc.asm
176cb10580dc19be9dfddf6b0616f101996c333c8c4tomfinegan@chromium.orgendif
177167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCODEC_EXPORTS-$(BUILD_LIBVPX) += vpx/exports_com
178167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCODEC_EXPORTS-$(CONFIG_ENCODERS) += vpx/exports_enc
179167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCODEC_EXPORTS-$(CONFIG_DECODERS) += vpx/exports_dec
180167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
181167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-LIBS-yes += include/vpx/vpx_codec.h
18276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgINSTALL-LIBS-yes += include/vpx/vpx_frame_buffer.h
183167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-LIBS-yes += include/vpx/vpx_image.h
184167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-LIBS-yes += include/vpx/vpx_integer.h
185167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-LIBS-$(CONFIG_DECODERS) += include/vpx/vpx_decoder.h
186167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-LIBS-$(CONFIG_ENCODERS) += include/vpx/vpx_encoder.h
187167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(CONFIG_EXTERNAL_BUILD),yes)
188167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(CONFIG_MSVS),yes)
189167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-LIBS-yes                  += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/$(CODEC_LIB).lib)
190167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-LIBS-$(CONFIG_DEBUG_LIBS) += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/$(CODEC_LIB)d.lib)
191167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-LIBS-$(CONFIG_SHARED) += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/vpx.dll)
192167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-LIBS-$(CONFIG_SHARED) += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/vpx.exp)
193167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
194167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgelse
195167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-LIBS-$(CONFIG_STATIC) += $(LIBSUBDIR)/libvpx.a
196167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-LIBS-$(CONFIG_DEBUG_LIBS) += $(LIBSUBDIR)/libvpx_g.a
197167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
198167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
199d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.orgCODEC_SRCS=$(call enabled,CODEC_SRCS)
200167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(CODEC_SRCS)
201167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(call enabled,CODEC_EXPORTS)
202167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
203167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
204167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org# Generate a list of all enabled sources, in particular for exporting to gyp
205167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org# based build systems.
206167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orglibvpx_srcs.txt:
207167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "    [CREATE] $@"
208167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo $(CODEC_SRCS) | xargs -n1 echo | sort -u > $@
209d0351deb5037171ecec154298d37e3a74d992b0dfgalligan@chromium.orgCLEAN-OBJS += libvpx_srcs.txt
210167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
211167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
212167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(CONFIG_EXTERNAL_BUILD),yes)
213167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(CONFIG_MSVS),yes)
214167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
21576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgobj_int_extract.bat: $(SRC_PATH_BARE)/build/$(MSVS_ARCH_DIR)/obj_int_extract.bat
21676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org	@cp $^ $@
21776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org
21876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgobj_int_extract.$(VCPROJ_SFX): obj_int_extract.bat
21910a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgobj_int_extract.$(VCPROJ_SFX): $(SRC_PATH_BARE)/build/make/obj_int_extract.c
220167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "    [CREATE] $@"
22110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org	$(qexec)$(GEN_VCPROJ) \
222167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    --exe \
223167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    --target=$(TOOLCHAIN) \
224167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    --name=obj_int_extract \
225167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    --ver=$(CONFIG_VS_VERSION) \
226167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    --proj-guid=E1360C65-D375-4335-8057-7ED99CC3F9B2 \
22788b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org    --src-path-bare="$(SRC_PATH_BARE)" \
228167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    $(if $(CONFIG_STATIC_MSVCRT),--static-crt) \
229167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    --out=$@ $^ \
230167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    -I. \
231167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    -I"$(SRC_PATH_BARE)" \
232167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
23310a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgPROJECTS-$(BUILD_LIBVPX) += obj_int_extract.$(VCPROJ_SFX)
234167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
235167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgvpx.def: $(call enabled,CODEC_EXPORTS)
236167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "    [CREATE] $@"
237ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org	$(qexec)$(SRC_PATH_BARE)/build/make/gen_msvs_def.sh\
238167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --name=vpx\
239167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --out=$@ $^
240167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCLEAN-OBJS += vpx.def
241167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
24293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Assembly files that are included, but don't define symbols themselves.
24393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Filtered out to avoid Visual Studio build warnings.
24493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgASM_INCLUDES := \
24593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    third_party/x86inc/x86inc.asm \
24693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    vpx_config.asm \
24793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    vpx_ports/x86_abi_support.asm \
24893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
24910a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgvpx.$(VCPROJ_SFX): $(CODEC_SRCS) vpx.def obj_int_extract.$(VCPROJ_SFX)
250167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "    [CREATE] $@"
25110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org	$(qexec)$(GEN_VCPROJ) \
2526fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org            $(if $(CONFIG_SHARED),--dll,--lib) \
2536fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org            --target=$(TOOLCHAIN) \
254167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            $(if $(CONFIG_STATIC_MSVCRT),--static-crt) \
255167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --name=vpx \
256167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --proj-guid=DCE19DAF-69AC-46DB-B14A-39F0FAA5DB74 \
257167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --module-def=vpx.def \
258167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --ver=$(CONFIG_VS_VERSION) \
25988b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org            --src-path-bare="$(SRC_PATH_BARE)" \
26093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org            --out=$@ $(CFLAGS) \
26193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org            $(filter-out $(addprefix %, $(ASM_INCLUDES)), $^) \
262167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --src-path-bare="$(SRC_PATH_BARE)" \
263167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
26410a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgPROJECTS-$(BUILD_LIBVPX) += vpx.$(VCPROJ_SFX)
265167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
26610a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgvpx.$(VCPROJ_SFX): vpx_config.asm
26710a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgvpx.$(VCPROJ_SFX): $(RTCD)
268167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
269167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
270167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgelse
271167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgLIBVPX_OBJS=$(call objs,$(CODEC_SRCS))
272167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgOBJS-$(BUILD_LIBVPX) += $(LIBVPX_OBJS)
273167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgLIBS-$(if $(BUILD_LIBVPX),$(CONFIG_STATIC)) += $(BUILD_PFX)libvpx.a $(BUILD_PFX)libvpx_g.a
274167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(BUILD_PFX)libvpx_g.a: $(LIBVPX_OBJS)
275167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
2766fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
277167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgBUILD_LIBVPX_SO         := $(if $(BUILD_LIBVPX),$(CONFIG_SHARED))
2786fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
2796fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgifeq ($(filter darwin%,$(TGT_OS)),$(TGT_OS))
2806fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgLIBVPX_SO               := libvpx.$(VERSION_MAJOR).dylib
2816fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgEXPORT_FILE             := libvpx.syms
2826fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgLIBVPX_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, \
2836fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                             libvpx.dylib  )
2846fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgelse
285167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgLIBVPX_SO               := libvpx.so.$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
2866fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgEXPORT_FILE             := libvpx.ver
2876fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgSYM_LINK                := libvpx.so
2886fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgLIBVPX_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, \
2896fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                             libvpx.so libvpx.so.$(VERSION_MAJOR) \
2906fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org                             libvpx.so.$(VERSION_MAJOR).$(VERSION_MINOR))
2916fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgendif
2926fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
293167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgLIBS-$(BUILD_LIBVPX_SO) += $(BUILD_PFX)$(LIBVPX_SO)\
294167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                           $(notdir $(LIBVPX_SO_SYMLINKS))
2956fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org$(BUILD_PFX)$(LIBVPX_SO): $(LIBVPX_OBJS) $(EXPORT_FILE)
296167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(BUILD_PFX)$(LIBVPX_SO): extralibs += -lm
297167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(BUILD_PFX)$(LIBVPX_SO): SONAME = libvpx.so.$(VERSION_MAJOR)
2986fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org$(BUILD_PFX)$(LIBVPX_SO): EXPORTS_FILE = $(EXPORT_FILE)
299167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
300167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orglibvpx.ver: $(call enabled,CODEC_EXPORTS)
301167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "    [CREATE] $@"
302167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo "{ global:" > $@
303167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)for f in $?; do awk '{print $$2";"}' < $$f >>$@; done
304167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo "local: *; };" >> $@
305167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCLEAN-OBJS += libvpx.ver
306167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
3076fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orglibvpx.syms: $(call enabled,CODEC_EXPORTS)
3086fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org	@echo "    [CREATE] $@"
3096fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org	$(qexec)awk '{print "_"$$2}' $^ >$@
3106fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgCLEAN-OBJS += libvpx.syms
3116fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
312167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgdefine libvpx_symlink_template
313167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(1): $(2)
3146fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org	@echo "    [LN]     $(2) $$@"
315d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org	$(qexec)mkdir -p $$(dir $$@)
3166fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org	$(qexec)ln -sf $(2) $$@
317167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendef
318167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
319167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(eval $(call libvpx_symlink_template,\
320167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    $(addprefix $(BUILD_PFX),$(notdir $(LIBVPX_SO_SYMLINKS))),\
321167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    $(BUILD_PFX)$(LIBVPX_SO)))
322167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(eval $(call libvpx_symlink_template,\
323167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    $(addprefix $(DIST_DIR)/,$(LIBVPX_SO_SYMLINKS)),\
324d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org    $(LIBVPX_SO)))
325167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
3266fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
3276fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgINSTALL-LIBS-$(BUILD_LIBVPX_SO) += $(LIBVPX_SO_SYMLINKS)
3286fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgINSTALL-LIBS-$(BUILD_LIBVPX_SO) += $(LIBSUBDIR)/$(LIBVPX_SO)
3296fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
330167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
331167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgLIBS-$(BUILD_LIBVPX) += vpx.pc
332167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgvpx.pc: config.mk libs.mk
333167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "    [CREATE] $@"
334167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo '# pkg-config file from libvpx $(VERSION_STRING)' > $@
335167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo 'prefix=$(PREFIX)' >> $@
336167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo 'exec_prefix=$${prefix}' >> $@
3375c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org	$(qexec)echo 'libdir=$${prefix}/$(LIBSUBDIR)' >> $@
338167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo 'includedir=$${prefix}/include' >> $@
339167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo '' >> $@
340167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo 'Name: vpx' >> $@
341167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo 'Description: WebM Project VPx codec implementation' >> $@
342167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo 'Version: $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)' >> $@
343167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo 'Requires:' >> $@
344167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo 'Conflicts:' >> $@
3456fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org	$(qexec)echo 'Libs: -L$${libdir} -lvpx -lm' >> $@
346da24c9017693dec11c2925131958a7e0e0b9f1cffgalligan@chromium.orgifeq ($(HAVE_PTHREAD_H),yes)
347ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org	$(qexec)echo 'Libs.private: -lm -lpthread' >> $@
348da24c9017693dec11c2925131958a7e0e0b9f1cffgalligan@chromium.orgelse
349da24c9017693dec11c2925131958a7e0e0b9f1cffgalligan@chromium.org	$(qexec)echo 'Libs.private: -lm' >> $@
350da24c9017693dec11c2925131958a7e0e0b9f1cffgalligan@chromium.orgendif
351167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	$(qexec)echo 'Cflags: -I$${includedir}' >> $@
352167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL-LIBS-yes += $(LIBSUBDIR)/pkgconfig/vpx.pc
353167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgINSTALL_MAPS += $(LIBSUBDIR)/pkgconfig/%.pc %.pc
354167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCLEAN-OBJS += vpx.pc
355167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
356167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
357167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgLIBS-$(LIPO_LIBVPX) += libvpx.a
358167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(eval $(if $(LIPO_LIBVPX),$(call lipo_lib_template,libvpx.a)))
359167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
360167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#
361167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org# Rule to make assembler configuration file from C configuration file
362167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#
363167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(ARCH_X86)$(ARCH_X86_64),yes)
364167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org# YASM
365167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(BUILD_PFX)vpx_config.asm: $(BUILD_PFX)vpx_config.h
366167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "    [CREATE] $@"
367167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@egrep "#define [A-Z0-9_]+ [01]" $< \
368167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	    | awk '{print $$2 " equ " $$3}' > $@
369167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgelse
370167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgADS2GAS=$(if $(filter yes,$(CONFIG_GCC)),| $(ASM_CONVERSION))
371167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(BUILD_PFX)vpx_config.asm: $(BUILD_PFX)vpx_config.h
372167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "    [CREATE] $@"
373167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@egrep "#define [A-Z0-9_]+ [01]" $< \
374167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	    | awk '{print $$2 " EQU " $$3}' $(ADS2GAS) > $@
375167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "        END" $(ADS2GAS) >> $@
376167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCLEAN-OBJS += $(BUILD_PFX)vpx_config.asm
377167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
378167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
379167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#
380167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org# Add assembler dependencies for configuration and offsets
381167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#
382167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(filter %.s.o,$(OBJS-yes)):     $(BUILD_PFX)vpx_config.asm
383167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(filter %$(ASM).o,$(OBJS-yes)): $(BUILD_PFX)vpx_config.asm
384167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
385167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
386167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(shell $(SRC_PATH_BARE)/build/make/version.sh "$(SRC_PATH_BARE)" $(BUILD_PFX)vpx_version.h)
387167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCLEAN-OBJS += $(BUILD_PFX)vpx_version.h
388167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
3895c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org
390167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##
391167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org## libvpx test directives
392167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##
393c1e5cf4c65bbfa134110b17fba3246ad3d7323b0hclam@chromium.orgifeq ($(CONFIG_UNIT_TESTS),yes)
394ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgLIBVPX_TEST_DATA_PATH ?= .
395ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
396ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orginclude $(SRC_PATH_BARE)/test/test.mk
397ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgLIBVPX_TEST_SRCS=$(addprefix test/,$(call enabled,LIBVPX_TEST_SRCS))
3984b95526e5c4eb4fecde1cd642cf991a82c51b9f2johannkoenig@chromium.orgLIBVPX_TEST_BINS=./test_libvpx$(EXE_SFX)
399ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgLIBVPX_TEST_DATA=$(addprefix $(LIBVPX_TEST_DATA_PATH)/,\
400ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                     $(call enabled,LIBVPX_TEST_DATA))
401ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orglibvpx_test_data_url=http://downloads.webmproject.org/test_data/libvpx/$(1)
402ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
40347265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orglibvpx_test_srcs.txt:
40447265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org	@echo "    [CREATE] $@"
40547265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org	@echo $(LIBVPX_TEST_SRCS) | xargs -n1 echo | sort -u > $@
40647265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orgCLEAN-OBJS += libvpx_test_srcs.txt
40747265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org
4089c920af5cd2f78ab30bb06f01f4a4d9d30d5c92bfgalligan@chromium.org$(LIBVPX_TEST_DATA): $(SRC_PATH_BARE)/test/test-data.sha1
409ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org	@echo "    [DOWNLOAD] $@"
410ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org	$(qexec)trap 'rm -f $@' INT TERM &&\
411ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            curl -L -o $@ $(call libvpx_test_data_url,$(@F))
412ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
413ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgtestdata:: $(LIBVPX_TEST_DATA)
41441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org	$(qexec)[ -x "$$(which sha1sum)" ] && sha1sum=sha1sum;\
41541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org          [ -x "$$(which shasum)" ] && sha1sum=shasum;\
41641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org          [ -x "$$(which sha1)" ] && sha1sum=sha1;\
41741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org          if [ -n "$${sha1sum}" ]; then\
41841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org            set -e;\
419ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            echo "Checking test data:";\
420ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            if [ -n "$(LIBVPX_TEST_DATA)" ]; then\
421ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                for f in $(call enabled,LIBVPX_TEST_DATA); do\
422ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                    grep $$f $(SRC_PATH_BARE)/test/test-data.sha1 |\
42341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                        (cd $(LIBVPX_TEST_DATA_PATH); $${sha1sum} -c);\
424ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                done; \
425ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            fi; \
426ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        else\
427ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            echo "Skipping test data integrity check, sha1sum not found.";\
428ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        fi
429ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
430167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(CONFIG_EXTERNAL_BUILD),yes)
431167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgifeq ($(CONFIG_MSVS),yes)
432167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
43310a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orggtest.$(VCPROJ_SFX): $(SRC_PATH_BARE)/third_party/googletest/src/src/gtest-all.cc
434167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "    [CREATE] $@"
43510a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org	$(qexec)$(GEN_VCPROJ) \
436167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --lib \
437167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --target=$(TOOLCHAIN) \
438167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            $(if $(CONFIG_STATIC_MSVCRT),--static-crt) \
439167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --name=gtest \
440167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --proj-guid=EC00E1EC-AF68-4D92-A255-181690D1C9B1 \
441167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --ver=$(CONFIG_VS_VERSION) \
442167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            --src-path-bare="$(SRC_PATH_BARE)" \
4436fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org            -D_VARIADIC_MAX=10 \
44410a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org            --out=gtest.$(VCPROJ_SFX) $(SRC_PATH_BARE)/third_party/googletest/src/src/gtest-all.cc \
445167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            -I. -I"$(SRC_PATH_BARE)/third_party/googletest/src/include" -I"$(SRC_PATH_BARE)/third_party/googletest/src"
446167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
44710a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgPROJECTS-$(CONFIG_MSVS) += gtest.$(VCPROJ_SFX)
448167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
44910a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgtest_libvpx.$(VCPROJ_SFX): $(LIBVPX_TEST_SRCS) vpx.$(VCPROJ_SFX) gtest.$(VCPROJ_SFX)
450ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org	@echo "    [CREATE] $@"
45110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org	$(qexec)$(GEN_VCPROJ) \
452ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            --exe \
453ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            --target=$(TOOLCHAIN) \
454ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            --name=test_libvpx \
4556fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org            -D_VARIADIC_MAX=10 \
456ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            --proj-guid=CD837F5F-52D8-4314-A370-895D614166A7 \
457ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            --ver=$(CONFIG_VS_VERSION) \
45888b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org            --src-path-bare="$(SRC_PATH_BARE)" \
459ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            $(if $(CONFIG_STATIC_MSVCRT),--static-crt) \
460ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            --out=$@ $(INTERNAL_CFLAGS) $(CFLAGS) \
461167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            -I. -I"$(SRC_PATH_BARE)/third_party/googletest/src/include" \
46210a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org            -L. -l$(CODEC_LIB) -l$(GTEST_LIB) $^
463167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
46410a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgPROJECTS-$(CONFIG_MSVS) += test_libvpx.$(VCPROJ_SFX)
465167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
466b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.orgLIBVPX_TEST_BINS := $(addprefix $(TGT_OS:win64=x64)/Release/,$(notdir $(LIBVPX_TEST_BINS)))
467167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
468167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgelse
469167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
470167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orginclude $(SRC_PATH_BARE)/third_party/googletest/gtest.mk
471167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgGTEST_SRCS := $(addprefix third_party/googletest/src/,$(call enabled,GTEST_SRCS))
472167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgGTEST_OBJS=$(call objs,$(GTEST_SRCS))
47347265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orgifeq ($(filter win%,$(TGT_OS)),$(TGT_OS))
47447265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org# Disabling pthreads globally will cause issues on darwin and possibly elsewhere
47547265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org$(GTEST_OBJS) $(GTEST_OBJS:.o=.d): CXXFLAGS += -DGTEST_HAS_PTHREAD=0
47647265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orgendif
477ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org$(GTEST_OBJS) $(GTEST_OBJS:.o=.d): CXXFLAGS += -I$(SRC_PATH_BARE)/third_party/googletest/src
478ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org$(GTEST_OBJS) $(GTEST_OBJS:.o=.d): CXXFLAGS += -I$(SRC_PATH_BARE)/third_party/googletest/src/include
479167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgOBJS-$(BUILD_LIBVPX) += $(GTEST_OBJS)
480167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgLIBS-$(BUILD_LIBVPX) += $(BUILD_PFX)libgtest.a $(BUILD_PFX)libgtest_g.a
481167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(BUILD_PFX)libgtest_g.a: $(GTEST_OBJS)
482167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
483ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgLIBVPX_TEST_OBJS=$(sort $(call objs,$(LIBVPX_TEST_SRCS)))
484ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org$(LIBVPX_TEST_OBJS) $(LIBVPX_TEST_OBJS:.o=.d): CXXFLAGS += -I$(SRC_PATH_BARE)/third_party/googletest/src
485ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org$(LIBVPX_TEST_OBJS) $(LIBVPX_TEST_OBJS:.o=.d): CXXFLAGS += -I$(SRC_PATH_BARE)/third_party/googletest/src/include
486167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgOBJS-$(BUILD_LIBVPX) += $(LIBVPX_TEST_OBJS)
487ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgBINS-$(BUILD_LIBVPX) += $(LIBVPX_TEST_BINS)
488ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
489ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgCODEC_LIB=$(if $(CONFIG_DEBUG_LIBS),vpx_g,vpx)
490ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgCODEC_LIB_SUF=$(if $(CONFIG_SHARED),.so,.a)
491167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org$(foreach bin,$(LIBVPX_TEST_BINS),\
492ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    $(if $(BUILD_LIBVPX),$(eval $(bin): \
493ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        lib$(CODEC_LIB)$(CODEC_LIB_SUF) libgtest.a ))\
494167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    $(if $(BUILD_LIBVPX),$(eval $(call linkerxx_template,$(bin),\
495ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        $(LIBVPX_TEST_OBJS) \
49647265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org        -L. -lvpx -lgtest $(extralibs) -lm)\
497167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org        )))\
498167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    $(if $(LIPO_LIBS),$(eval $(call lipo_bin_template,$(bin))))\
499167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
500167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
501b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.org
502dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org# Install test sources only if codec source is included
503dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(patsubst $(SRC_PATH_BARE)/%,%,\
504dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org    $(shell find $(SRC_PATH_BARE)/third_party/googletest -type f))
505dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(LIBVPX_TEST_SRCS)
506dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org
507b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.orgdefine test_shard_template
508b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.orgtest:: test_shard.$(1)
509b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.orgtest_shard.$(1): $(LIBVPX_TEST_BINS) testdata
510b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.org	@set -e; \
511b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.org	 for t in $(LIBVPX_TEST_BINS); do \
512b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.org	   export GTEST_SHARD_INDEX=$(1); \
513b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.org	   export GTEST_TOTAL_SHARDS=$(2); \
514b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.org	   $$$$t; \
515b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.org	 done
516b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.org.PHONY: test_shard.$(1)
517b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.orgendef
518b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.org
519b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.orgNUM_SHARDS := 10
520b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.orgSHARDS := 0 1 2 3 4 5 6 7 8 9
521b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.org$(foreach s,$(SHARDS),$(eval $(call test_shard_template,$(s),$(NUM_SHARDS))))
522b93ff41d796a0f4d675f4f4f8cba5926306b1859fgalligan@chromium.org
523167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgendif
524167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
525167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##
526167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org## documentation directives
527167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org##
528167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgCLEAN-OBJS += libs.doxy
529167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgDOCS-yes += libs.doxy
530167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orglibs.doxy: $(CODEC_DOC_SRCS)
531167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "    [CREATE] $@"
532167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@rm -f $@
533167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "INPUT += $^" >> $@
534167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "INCLUDE_PATH += ." >> $@;
535167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org	@echo "ENABLED_SECTIONS += $(sort $(CODEC_DOC_SECTIONS))" >> $@
536ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
5376fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org## Generate rtcd.h for all objects
5386fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org$(OBJS-yes:.o=.d): $(RTCD)
5396fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
5406fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org## Update the global src list
5416fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgSRCS += $(CODEC_SRCS) $(LIBVPX_TEST_SRCS) $(GTEST_SRCS)
542693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com
543693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com##
544693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com## vpxdec/vpxenc tests.
545693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com##
546693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comifeq ($(CONFIG_UNIT_TESTS),yes)
547693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comTEST_BIN_PATH = .
548693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comifeq ($(CONFIG_MSVS),yes)
549693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com# MSVC will build both Debug and Release configurations of tools in a
550693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com# sub directory named for the current target. Assume the user wants to
551693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com# run the Release tools, and assign TEST_BIN_PATH accordingly.
552693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com# TODO(tomfinegan): Is this adequate for ARM?
553693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com# TODO(tomfinegan): Support running the debug versions of tools?
554693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comTEST_BIN_PATH := $(addsuffix /$(TGT_OS:win64=x64)/Release, $(TEST_BIN_PATH))
555693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comendif
556693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comutiltest: testdata
557693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com	$(qexec)$(SRC_PATH_BARE)/test/vpxdec.sh \
558693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com		--test-data-path $(LIBVPX_TEST_DATA_PATH) \
559693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com		--bin-path $(TEST_BIN_PATH)
560693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com	$(qexec)$(SRC_PATH_BARE)/test/vpxenc.sh \
561693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com		--test-data-path $(LIBVPX_TEST_DATA_PATH) \
562693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com		--bin-path $(TEST_BIN_PATH)
563693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comelse
564693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comutiltest:
565693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com	@echo Unit tests must be enabled to make the utiltest target.
566693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comendif
56788b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org
56888b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org##
56988b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org## Example tests.
57088b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org##
57188b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgifeq ($(CONFIG_UNIT_TESTS),yes)
57288b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org# All non-MSVC targets output example targets in a sub dir named examples.
57388b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgEXAMPLES_BIN_PATH = examples
57488b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgifeq ($(CONFIG_MSVS),yes)
57588b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org# MSVC will build both Debug and Release configurations of the examples in a
57688b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org# sub directory named for the current target. Assume the user wants to
57788b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org# run the Release tools, and assign EXAMPLES_BIN_PATH accordingly.
57888b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org# TODO(tomfinegan): Is this adequate for ARM?
57988b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org# TODO(tomfinegan): Support running the debug versions of tools?
58088b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgEXAMPLES_BIN_PATH := $(TGT_OS:win64=x64)/Release
58188b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgendif
58288b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgexampletest: examples testdata
58388b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org	$(qexec)$(SRC_PATH_BARE)/test/examples.sh \
58488b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org		--test-data-path $(LIBVPX_TEST_DATA_PATH) \
58588b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org		--bin-path $(EXAMPLES_BIN_PATH)
58688b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgelse
58788b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgexampletest:
58888b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org	@echo Unit tests must be enabled to make the exampletest target.
58988b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgendif
590