xref: /aosp_15_r20/external/libvpx/libs.mk (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
1*fb1b10abSAndroid Build Coastguard Worker##
2*fb1b10abSAndroid Build Coastguard Worker##  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3*fb1b10abSAndroid Build Coastguard Worker##
4*fb1b10abSAndroid Build Coastguard Worker##  Use of this source code is governed by a BSD-style license
5*fb1b10abSAndroid Build Coastguard Worker##  that can be found in the LICENSE file in the root of the source
6*fb1b10abSAndroid Build Coastguard Worker##  tree. An additional intellectual property rights grant can be found
7*fb1b10abSAndroid Build Coastguard Worker##  in the file PATENTS.  All contributing project authors may
8*fb1b10abSAndroid Build Coastguard Worker##  be found in the AUTHORS file in the root of the source tree.
9*fb1b10abSAndroid Build Coastguard Worker##
10*fb1b10abSAndroid Build Coastguard Worker
11*fb1b10abSAndroid Build Coastguard Worker
12*fb1b10abSAndroid Build Coastguard Worker# ARM assembly files are written in RVCT-style. We use some make magic to
13*fb1b10abSAndroid Build Coastguard Worker# filter those files to allow GCC compilation
14*fb1b10abSAndroid Build Coastguard Workerifeq ($(VPX_ARCH_ARM),yes)
15*fb1b10abSAndroid Build Coastguard Worker  ASM:=$(if $(filter yes,$(CONFIG_GCC)$(CONFIG_MSVS)),.asm.S,.asm)
16*fb1b10abSAndroid Build Coastguard Workerelse
17*fb1b10abSAndroid Build Coastguard Worker  ASM:=.asm
18*fb1b10abSAndroid Build Coastguard Workerendif
19*fb1b10abSAndroid Build Coastguard Worker
20*fb1b10abSAndroid Build Coastguard Worker#
21*fb1b10abSAndroid Build Coastguard Worker# Rule to generate runtime cpu detection files
22*fb1b10abSAndroid Build Coastguard Worker#
23*fb1b10abSAndroid Build Coastguard Workerdefine rtcd_h_template
24*fb1b10abSAndroid Build Coastguard Worker$$(BUILD_PFX)$(1).h: $$(SRC_PATH_BARE)/$(2)
25*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $$@"
26*fb1b10abSAndroid Build Coastguard Worker	$$(qexec)$$(SRC_PATH_BARE)/build/make/rtcd.pl --arch=$$(TGT_ISA) \
27*fb1b10abSAndroid Build Coastguard Worker          --sym=$(1) \
28*fb1b10abSAndroid Build Coastguard Worker          --config=$$(CONFIG_DIR)$$(target)-$$(TOOLCHAIN).mk \
29*fb1b10abSAndroid Build Coastguard Worker          $$(RTCD_OPTIONS) $$^ > $$@
30*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += $$(BUILD_PFX)$(1).h
31*fb1b10abSAndroid Build Coastguard WorkerRTCD += $$(BUILD_PFX)$(1).h
32*fb1b10abSAndroid Build Coastguard Workerendef
33*fb1b10abSAndroid Build Coastguard Worker
34*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += CHANGELOG
35*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += libs.mk
36*fb1b10abSAndroid Build Coastguard Worker
37*fb1b10abSAndroid Build Coastguard Workerinclude $(SRC_PATH_BARE)/vpx/vpx_codec.mk
38*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += $(addprefix vpx/,$(call enabled,API_SRCS))
39*fb1b10abSAndroid Build Coastguard WorkerCODEC_DOC_SRCS += $(addprefix vpx/,$(call enabled,API_DOC_SRCS))
40*fb1b10abSAndroid Build Coastguard Worker
41*fb1b10abSAndroid Build Coastguard Workerinclude $(SRC_PATH_BARE)/vpx_mem/vpx_mem.mk
42*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += $(addprefix vpx_mem/,$(call enabled,MEM_SRCS))
43*fb1b10abSAndroid Build Coastguard Worker
44*fb1b10abSAndroid Build Coastguard Workerinclude $(SRC_PATH_BARE)/vpx_scale/vpx_scale.mk
45*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += $(addprefix vpx_scale/,$(call enabled,SCALE_SRCS))
46*fb1b10abSAndroid Build Coastguard Worker
47*fb1b10abSAndroid Build Coastguard Workerinclude $(SRC_PATH_BARE)/vpx_ports/vpx_ports.mk
48*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += $(addprefix vpx_ports/,$(call enabled,PORTS_SRCS))
49*fb1b10abSAndroid Build Coastguard Worker
50*fb1b10abSAndroid Build Coastguard Workerinclude $(SRC_PATH_BARE)/vpx_dsp/vpx_dsp.mk
51*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += $(addprefix vpx_dsp/,$(call enabled,DSP_SRCS))
52*fb1b10abSAndroid Build Coastguard Worker
53*fb1b10abSAndroid Build Coastguard Workerinclude $(SRC_PATH_BARE)/vpx_util/vpx_util.mk
54*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += $(addprefix vpx_util/,$(call enabled,UTIL_SRCS))
55*fb1b10abSAndroid Build Coastguard Worker
56*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_VP8),yes)
57*fb1b10abSAndroid Build Coastguard Worker  VP8_PREFIX=vp8/
58*fb1b10abSAndroid Build Coastguard Worker  include $(SRC_PATH_BARE)/$(VP8_PREFIX)vp8_common.mk
59*fb1b10abSAndroid Build Coastguard Workerendif
60*fb1b10abSAndroid Build Coastguard Worker
61*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_VP8_ENCODER),yes)
62*fb1b10abSAndroid Build Coastguard Worker  include $(SRC_PATH_BARE)/$(VP8_PREFIX)vp8cx.mk
63*fb1b10abSAndroid Build Coastguard Worker  CODEC_SRCS-yes += $(addprefix $(VP8_PREFIX),$(call enabled,VP8_CX_SRCS))
64*fb1b10abSAndroid Build Coastguard Worker  CODEC_EXPORTS-yes += $(addprefix $(VP8_PREFIX),$(VP8_CX_EXPORTS))
65*fb1b10abSAndroid Build Coastguard Worker  INSTALL-LIBS-yes += include/vpx/vp8.h include/vpx/vp8cx.h
66*fb1b10abSAndroid Build Coastguard Worker  INSTALL-LIBS-yes += include/vpx/vpx_ext_ratectrl.h
67*fb1b10abSAndroid Build Coastguard Worker  INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/$(VP8_PREFIX)/%
68*fb1b10abSAndroid Build Coastguard Worker  CODEC_DOC_SECTIONS += vp8 vp8_encoder
69*fb1b10abSAndroid Build Coastguard Workerendif
70*fb1b10abSAndroid Build Coastguard Worker
71*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_VP8_DECODER),yes)
72*fb1b10abSAndroid Build Coastguard Worker  include $(SRC_PATH_BARE)/$(VP8_PREFIX)vp8dx.mk
73*fb1b10abSAndroid Build Coastguard Worker  CODEC_SRCS-yes += $(addprefix $(VP8_PREFIX),$(call enabled,VP8_DX_SRCS))
74*fb1b10abSAndroid Build Coastguard Worker  CODEC_EXPORTS-yes += $(addprefix $(VP8_PREFIX),$(VP8_DX_EXPORTS))
75*fb1b10abSAndroid Build Coastguard Worker  INSTALL-LIBS-yes += include/vpx/vp8.h include/vpx/vp8dx.h
76*fb1b10abSAndroid Build Coastguard Worker  INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/$(VP8_PREFIX)/%
77*fb1b10abSAndroid Build Coastguard Worker  CODEC_DOC_SECTIONS += vp8 vp8_decoder
78*fb1b10abSAndroid Build Coastguard Workerendif
79*fb1b10abSAndroid Build Coastguard Worker
80*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_VP9),yes)
81*fb1b10abSAndroid Build Coastguard Worker  VP9_PREFIX=vp9/
82*fb1b10abSAndroid Build Coastguard Worker  include $(SRC_PATH_BARE)/$(VP9_PREFIX)vp9_common.mk
83*fb1b10abSAndroid Build Coastguard Workerendif
84*fb1b10abSAndroid Build Coastguard Worker
85*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_VP9_ENCODER),yes)
86*fb1b10abSAndroid Build Coastguard Worker  VP9_PREFIX=vp9/
87*fb1b10abSAndroid Build Coastguard Worker  include $(SRC_PATH_BARE)/$(VP9_PREFIX)vp9cx.mk
88*fb1b10abSAndroid Build Coastguard Worker  CODEC_SRCS-yes += $(addprefix $(VP9_PREFIX),$(call enabled,VP9_CX_SRCS))
89*fb1b10abSAndroid Build Coastguard Worker  CODEC_EXPORTS-yes += $(addprefix $(VP9_PREFIX),$(VP9_CX_EXPORTS))
90*fb1b10abSAndroid Build Coastguard Worker  CODEC_SRCS-yes += $(VP9_PREFIX)vp9cx.mk vpx/vp8.h vpx/vp8cx.h
91*fb1b10abSAndroid Build Coastguard Worker  CODEC_SRCS-yes += vpx/vpx_ext_ratectrl.h
92*fb1b10abSAndroid Build Coastguard Worker  INSTALL-LIBS-yes += include/vpx/vp8.h include/vpx/vp8cx.h
93*fb1b10abSAndroid Build Coastguard Worker  INSTALL-LIBS-yes += include/vpx/vpx_ext_ratectrl.h
94*fb1b10abSAndroid Build Coastguard Worker  INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/$(VP9_PREFIX)/%
95*fb1b10abSAndroid Build Coastguard Worker  CODEC_DOC_SRCS += vpx/vp8.h vpx/vp8cx.h vpx/vpx_ext_ratectrl.h
96*fb1b10abSAndroid Build Coastguard Worker  CODEC_DOC_SECTIONS += vp9 vp9_encoder
97*fb1b10abSAndroid Build Coastguard Workerendif
98*fb1b10abSAndroid Build Coastguard Worker
99*fb1b10abSAndroid Build Coastguard WorkerRC_RTC_SRCS := vpx/vp8.h vpx/vp8cx.h
100*fb1b10abSAndroid Build Coastguard WorkerRC_RTC_SRCS += vpx/vpx_ext_ratectrl.h
101*fb1b10abSAndroid Build Coastguard WorkerRC_RTC_SRCS += vpx/internal/vpx_ratectrl_rtc.h
102*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_VP9_ENCODER),yes)
103*fb1b10abSAndroid Build Coastguard Worker  VP9_PREFIX=vp9/
104*fb1b10abSAndroid Build Coastguard Worker  RC_RTC_SRCS += $(addprefix $(VP9_PREFIX),$(call enabled,VP9_CX_SRCS))
105*fb1b10abSAndroid Build Coastguard Worker  RC_RTC_SRCS += $(VP9_PREFIX)vp9cx.mk
106*fb1b10abSAndroid Build Coastguard Worker  RC_RTC_SRCS += $(VP9_PREFIX)ratectrl_rtc.cc
107*fb1b10abSAndroid Build Coastguard Worker  RC_RTC_SRCS += $(VP9_PREFIX)ratectrl_rtc.h
108*fb1b10abSAndroid Build Coastguard Worker  INSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(VP9_PREFIX)ratectrl_rtc.cc
109*fb1b10abSAndroid Build Coastguard Worker  INSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(VP9_PREFIX)ratectrl_rtc.h
110*fb1b10abSAndroid Build Coastguard Workerendif
111*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_VP8_ENCODER),yes)
112*fb1b10abSAndroid Build Coastguard Worker  VP8_PREFIX=vp8/
113*fb1b10abSAndroid Build Coastguard Worker  RC_RTC_SRCS += $(addprefix $(VP8_PREFIX),$(call enabled,VP8_CX_SRCS))
114*fb1b10abSAndroid Build Coastguard Worker  RC_RTC_SRCS += $(VP8_PREFIX)vp8_ratectrl_rtc.cc
115*fb1b10abSAndroid Build Coastguard Worker  RC_RTC_SRCS += $(VP8_PREFIX)vp8_ratectrl_rtc.h
116*fb1b10abSAndroid Build Coastguard Worker  INSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(VP8_PREFIX)vp8_ratectrl_rtc.cc
117*fb1b10abSAndroid Build Coastguard Worker  INSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(VP8_PREFIX)vp8_ratectrl_rtc.h
118*fb1b10abSAndroid Build Coastguard Workerendif
119*fb1b10abSAndroid Build Coastguard Worker
120*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_VP9_DECODER),yes)
121*fb1b10abSAndroid Build Coastguard Worker  VP9_PREFIX=vp9/
122*fb1b10abSAndroid Build Coastguard Worker  include $(SRC_PATH_BARE)/$(VP9_PREFIX)vp9dx.mk
123*fb1b10abSAndroid Build Coastguard Worker  CODEC_SRCS-yes += $(addprefix $(VP9_PREFIX),$(call enabled,VP9_DX_SRCS))
124*fb1b10abSAndroid Build Coastguard Worker  CODEC_EXPORTS-yes += $(addprefix $(VP9_PREFIX),$(VP9_DX_EXPORTS))
125*fb1b10abSAndroid Build Coastguard Worker  CODEC_SRCS-yes += $(VP9_PREFIX)vp9dx.mk vpx/vp8.h vpx/vp8dx.h
126*fb1b10abSAndroid Build Coastguard Worker  INSTALL-LIBS-yes += include/vpx/vp8.h include/vpx/vp8dx.h
127*fb1b10abSAndroid Build Coastguard Worker  INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/$(VP9_PREFIX)/%
128*fb1b10abSAndroid Build Coastguard Worker  CODEC_DOC_SRCS += vpx/vp8.h vpx/vp8dx.h
129*fb1b10abSAndroid Build Coastguard Worker  CODEC_DOC_SECTIONS += vp9 vp9_decoder
130*fb1b10abSAndroid Build Coastguard Workerendif
131*fb1b10abSAndroid Build Coastguard Worker
132*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_ENCODERS),yes)
133*fb1b10abSAndroid Build Coastguard Worker  CODEC_DOC_SECTIONS += encoder
134*fb1b10abSAndroid Build Coastguard Workerendif
135*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_DECODERS),yes)
136*fb1b10abSAndroid Build Coastguard Worker  CODEC_DOC_SECTIONS += decoder
137*fb1b10abSAndroid Build Coastguard Workerendif
138*fb1b10abSAndroid Build Coastguard Worker
139*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_MSVS),yes)
140*fb1b10abSAndroid Build Coastguard WorkerCODEC_LIB=$(if $(CONFIG_STATIC_MSVCRT),vpxmt,vpxmd)
141*fb1b10abSAndroid Build Coastguard WorkerGTEST_LIB=$(if $(CONFIG_STATIC_MSVCRT),gtestmt,gtestmd)
142*fb1b10abSAndroid Build Coastguard WorkerRC_RTC_LIB=$(if $(CONFIG_STATIC_MSVCRT),vpxrcmt,vpxrcmd)
143*fb1b10abSAndroid Build Coastguard Worker# This variable uses deferred expansion intentionally, since the results of
144*fb1b10abSAndroid Build Coastguard Worker# $(wildcard) may change during the course of the Make.
145*fb1b10abSAndroid Build Coastguard WorkerVS_PLATFORMS = $(foreach d,$(wildcard */Release/$(CODEC_LIB).lib),$(word 1,$(subst /, ,$(d))))
146*fb1b10abSAndroid Build Coastguard Workerendif
147*fb1b10abSAndroid Build Coastguard Worker
148*fb1b10abSAndroid Build Coastguard Worker# The following pairs define a mapping of locations in the distribution
149*fb1b10abSAndroid Build Coastguard Worker# tree to locations in the source/build trees.
150*fb1b10abSAndroid Build Coastguard WorkerINSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/vpx/%
151*fb1b10abSAndroid Build Coastguard WorkerINSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/vpx_ports/%
152*fb1b10abSAndroid Build Coastguard WorkerINSTALL_MAPS += $(LIBSUBDIR)/%     %
153*fb1b10abSAndroid Build Coastguard WorkerINSTALL_MAPS += src/%     $(SRC_PATH_BARE)/%
154*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_MSVS),yes)
155*fb1b10abSAndroid Build Coastguard WorkerINSTALL_MAPS += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/%  $(p)/Release/%)
156*fb1b10abSAndroid Build Coastguard WorkerINSTALL_MAPS += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/%  $(p)/Debug/%)
157*fb1b10abSAndroid Build Coastguard Workerendif
158*fb1b10abSAndroid Build Coastguard Worker
159*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += build/make/version.sh
160*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += build/make/rtcd.pl
161*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += vpx_ports/emmintrin_compat.h
162*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += vpx_ports/mem_ops.h
163*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += vpx_ports/mem_ops_aligned.h
164*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += vpx_ports/vpx_once.h
165*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS-yes += $(BUILD_PFX)vpx_config.c
166*fb1b10abSAndroid Build Coastguard WorkerINSTALL-SRCS-no += $(BUILD_PFX)vpx_config.c
167*fb1b10abSAndroid Build Coastguard Workerifeq ($(VPX_ARCH_X86)$(VPX_ARCH_X86_64),yes)
168*fb1b10abSAndroid Build Coastguard WorkerINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += third_party/x86inc/x86inc.asm
169*fb1b10abSAndroid Build Coastguard WorkerINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += vpx_dsp/x86/bitdepth_conversion_sse2.asm
170*fb1b10abSAndroid Build Coastguard Workerendif
171*fb1b10abSAndroid Build Coastguard WorkerCODEC_EXPORTS-yes += vpx/exports_com
172*fb1b10abSAndroid Build Coastguard WorkerCODEC_EXPORTS-$(CONFIG_ENCODERS) += vpx/exports_enc
173*fb1b10abSAndroid Build Coastguard WorkerCODEC_EXPORTS-$(CONFIG_DECODERS) += vpx/exports_dec
174*fb1b10abSAndroid Build Coastguard Worker
175*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-yes += include/vpx/vpx_codec.h
176*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-yes += include/vpx/vpx_frame_buffer.h
177*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-yes += include/vpx/vpx_image.h
178*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-yes += include/vpx/vpx_integer.h
179*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-$(CONFIG_DECODERS) += include/vpx/vpx_decoder.h
180*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-$(CONFIG_ENCODERS) += include/vpx/vpx_encoder.h
181*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-$(CONFIG_ENCODERS) += include/vpx/vpx_tpl.h
182*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_EXTERNAL_BUILD),yes)
183*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_MSVS),yes)
184*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-yes                  += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/$(CODEC_LIB).lib)
185*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-$(CONFIG_DEBUG_LIBS) += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/$(CODEC_LIB)d.lib)
186*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-$(CONFIG_SHARED) += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/vpx.dll)
187*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-$(CONFIG_SHARED) += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/vpx.exp)
188*fb1b10abSAndroid Build Coastguard Workerendif
189*fb1b10abSAndroid Build Coastguard Workerelse
190*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-$(CONFIG_STATIC) += $(LIBSUBDIR)/libvpx.a
191*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-$(CONFIG_DEBUG_LIBS) += $(LIBSUBDIR)/libvpx_g.a
192*fb1b10abSAndroid Build Coastguard Workerendif
193*fb1b10abSAndroid Build Coastguard Worker
194*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_VP9_ENCODER)$(CONFIG_RATE_CTRL),yesyes)
195*fb1b10abSAndroid Build Coastguard Worker  SIMPLE_ENCODE_SRCS := $(call enabled,CODEC_SRCS)
196*fb1b10abSAndroid Build Coastguard Worker  SIMPLE_ENCODE_SRCS += $(VP9_PREFIX)simple_encode.cc
197*fb1b10abSAndroid Build Coastguard Worker  SIMPLE_ENCODE_SRCS += $(VP9_PREFIX)simple_encode.h
198*fb1b10abSAndroid Build Coastguard Worker  SIMPLE_ENCODE_SRCS += ivfenc.h
199*fb1b10abSAndroid Build Coastguard Worker  SIMPLE_ENCODE_SRCS += ivfenc.c
200*fb1b10abSAndroid Build Coastguard Worker  INSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(VP9_PREFIX)simple_encode.cc
201*fb1b10abSAndroid Build Coastguard Worker  INSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(VP9_PREFIX)simple_encode.h
202*fb1b10abSAndroid Build Coastguard Workerendif
203*fb1b10abSAndroid Build Coastguard Worker
204*fb1b10abSAndroid Build Coastguard WorkerCODEC_SRCS=$(call enabled,CODEC_SRCS)
205*fb1b10abSAndroid Build Coastguard Worker
206*fb1b10abSAndroid Build Coastguard WorkerINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(CODEC_SRCS)
207*fb1b10abSAndroid Build Coastguard WorkerINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(call enabled,CODEC_EXPORTS)
208*fb1b10abSAndroid Build Coastguard Worker
209*fb1b10abSAndroid Build Coastguard Worker
210*fb1b10abSAndroid Build Coastguard Worker# Generate a list of all enabled sources, in particular for exporting to gyp
211*fb1b10abSAndroid Build Coastguard Worker# based build systems.
212*fb1b10abSAndroid Build Coastguard Workerlibvpx_srcs.txt:
213*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
214*fb1b10abSAndroid Build Coastguard Worker	@echo $(CODEC_SRCS) | xargs -n1 echo | LC_ALL=C sort -u > $@
215*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += libvpx_srcs.txt
216*fb1b10abSAndroid Build Coastguard Worker
217*fb1b10abSAndroid Build Coastguard Workerlibvpxrc_srcs.txt:
218*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
219*fb1b10abSAndroid Build Coastguard Worker	@echo $(RC_RTC_SRCS) | xargs -n1 echo | LC_ALL=C sort -u > $@
220*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += libvpxrc_srcs.txt
221*fb1b10abSAndroid Build Coastguard Worker
222*fb1b10abSAndroid Build Coastguard Worker# Assembly files that are included, but don't define symbols themselves.
223*fb1b10abSAndroid Build Coastguard Worker# Filtered out to avoid Windows build warnings.
224*fb1b10abSAndroid Build Coastguard WorkerASM_INCLUDES := \
225*fb1b10abSAndroid Build Coastguard Worker    third_party/x86inc/x86inc.asm \
226*fb1b10abSAndroid Build Coastguard Worker    vpx_config.asm \
227*fb1b10abSAndroid Build Coastguard Worker    vpx_ports/x86_abi_support.asm \
228*fb1b10abSAndroid Build Coastguard Worker    vpx_dsp/x86/bitdepth_conversion_sse2.asm \
229*fb1b10abSAndroid Build Coastguard Worker
230*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_EXTERNAL_BUILD),yes)
231*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_MSVS),yes)
232*fb1b10abSAndroid Build Coastguard Worker
233*fb1b10abSAndroid Build Coastguard Workervpx.def: $(call enabled,CODEC_EXPORTS)
234*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
235*fb1b10abSAndroid Build Coastguard Worker	$(qexec)$(SRC_PATH_BARE)/build/make/gen_msvs_def.sh\
236*fb1b10abSAndroid Build Coastguard Worker            --name=vpx\
237*fb1b10abSAndroid Build Coastguard Worker            --out=$@ $^
238*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += vpx.def
239*fb1b10abSAndroid Build Coastguard Worker
240*fb1b10abSAndroid Build Coastguard Workervpx.$(VCPROJ_SFX): VCPROJ_SRCS=$(filter-out $(addprefix %, $(ASM_INCLUDES)), $^)
241*fb1b10abSAndroid Build Coastguard Worker
242*fb1b10abSAndroid Build Coastguard Workervpx.$(VCPROJ_SFX): $(CODEC_SRCS) vpx.def
243*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
244*fb1b10abSAndroid Build Coastguard Worker	$(qexec)$(GEN_VCPROJ) \
245*fb1b10abSAndroid Build Coastguard Worker            $(if $(CONFIG_SHARED),--dll,--lib) \
246*fb1b10abSAndroid Build Coastguard Worker            --target=$(TOOLCHAIN) \
247*fb1b10abSAndroid Build Coastguard Worker            $(if $(CONFIG_STATIC_MSVCRT),--static-crt) \
248*fb1b10abSAndroid Build Coastguard Worker            --name=vpx \
249*fb1b10abSAndroid Build Coastguard Worker            --proj-guid=DCE19DAF-69AC-46DB-B14A-39F0FAA5DB74 \
250*fb1b10abSAndroid Build Coastguard Worker            --module-def=vpx.def \
251*fb1b10abSAndroid Build Coastguard Worker            --ver=$(CONFIG_VS_VERSION) \
252*fb1b10abSAndroid Build Coastguard Worker            --src-path-bare="$(SRC_PATH_BARE)" \
253*fb1b10abSAndroid Build Coastguard Worker            --out=$@ $(CFLAGS) \
254*fb1b10abSAndroid Build Coastguard Worker            --as=$(AS) \
255*fb1b10abSAndroid Build Coastguard Worker            $(filter $(SRC_PATH_BARE)/vp8/%.c, $(VCPROJ_SRCS)) \
256*fb1b10abSAndroid Build Coastguard Worker            $(filter $(SRC_PATH_BARE)/vp8/%.h, $(VCPROJ_SRCS)) \
257*fb1b10abSAndroid Build Coastguard Worker            $(filter $(SRC_PATH_BARE)/vp9/%.c, $(VCPROJ_SRCS)) \
258*fb1b10abSAndroid Build Coastguard Worker            $(filter $(SRC_PATH_BARE)/vp9/%.h, $(VCPROJ_SRCS)) \
259*fb1b10abSAndroid Build Coastguard Worker            $(filter $(SRC_PATH_BARE)/vpx/%, $(VCPROJ_SRCS)) \
260*fb1b10abSAndroid Build Coastguard Worker            $(filter $(SRC_PATH_BARE)/vpx_dsp/%, $(VCPROJ_SRCS)) \
261*fb1b10abSAndroid Build Coastguard Worker            $(filter-out $(addprefix $(SRC_PATH_BARE)/, \
262*fb1b10abSAndroid Build Coastguard Worker                           vp8/%.c vp8/%.h vp9/%.c vp9/%.h vpx/% vpx_dsp/%), \
263*fb1b10abSAndroid Build Coastguard Worker              $(VCPROJ_SRCS)) \
264*fb1b10abSAndroid Build Coastguard Worker            --src-path-bare="$(SRC_PATH_BARE)" \
265*fb1b10abSAndroid Build Coastguard Worker
266*fb1b10abSAndroid Build Coastguard WorkerPROJECTS-yes += vpx.$(VCPROJ_SFX)
267*fb1b10abSAndroid Build Coastguard Worker
268*fb1b10abSAndroid Build Coastguard Workervpx.$(VCPROJ_SFX): vpx_config.asm
269*fb1b10abSAndroid Build Coastguard Workervpx.$(VCPROJ_SFX): $(RTCD)
270*fb1b10abSAndroid Build Coastguard Worker
271*fb1b10abSAndroid Build Coastguard Workervpxrc.$(VCPROJ_SFX): \
272*fb1b10abSAndroid Build Coastguard Worker    VCPROJ_SRCS=$(filter-out $(addprefix %, $(ASM_INCLUDES)), $^)
273*fb1b10abSAndroid Build Coastguard Worker
274*fb1b10abSAndroid Build Coastguard Workervpxrc.$(VCPROJ_SFX): $(RC_RTC_SRCS)
275*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
276*fb1b10abSAndroid Build Coastguard Worker	$(qexec)$(GEN_VCPROJ) \
277*fb1b10abSAndroid Build Coastguard Worker            $(if $(CONFIG_SHARED),--dll,--lib) \
278*fb1b10abSAndroid Build Coastguard Worker            --target=$(TOOLCHAIN) \
279*fb1b10abSAndroid Build Coastguard Worker            $(if $(CONFIG_STATIC_MSVCRT),--static-crt) \
280*fb1b10abSAndroid Build Coastguard Worker            --name=vpxrc \
281*fb1b10abSAndroid Build Coastguard Worker            --proj-guid=C26FF952-9494-4838-9A3F-7F3D4F613385 \
282*fb1b10abSAndroid Build Coastguard Worker            --ver=$(CONFIG_VS_VERSION) \
283*fb1b10abSAndroid Build Coastguard Worker            --src-path-bare="$(SRC_PATH_BARE)" \
284*fb1b10abSAndroid Build Coastguard Worker            --out=$@ $(CFLAGS) \
285*fb1b10abSAndroid Build Coastguard Worker            --as=$(AS) \
286*fb1b10abSAndroid Build Coastguard Worker            $(filter $(SRC_PATH_BARE)/vp9/%.c, $(VCPROJ_SRCS)) \
287*fb1b10abSAndroid Build Coastguard Worker            $(filter $(SRC_PATH_BARE)/vp9/%.cc, $(VCPROJ_SRCS)) \
288*fb1b10abSAndroid Build Coastguard Worker            $(filter $(SRC_PATH_BARE)/vp9/%.h, $(VCPROJ_SRCS)) \
289*fb1b10abSAndroid Build Coastguard Worker            $(filter $(SRC_PATH_BARE)/vpx/%, $(VCPROJ_SRCS)) \
290*fb1b10abSAndroid Build Coastguard Worker            $(filter $(SRC_PATH_BARE)/vpx_dsp/%, $(VCPROJ_SRCS)) \
291*fb1b10abSAndroid Build Coastguard Worker            $(filter-out $(addprefix $(SRC_PATH_BARE)/, \
292*fb1b10abSAndroid Build Coastguard Worker                           vp8/%.c vp8/%.h vp9/%.c vp9/%.cc vp9/%.h vpx/% \
293*fb1b10abSAndroid Build Coastguard Worker                           vpx_dsp/%), \
294*fb1b10abSAndroid Build Coastguard Worker              $(VCPROJ_SRCS)) \
295*fb1b10abSAndroid Build Coastguard Worker            --src-path-bare="$(SRC_PATH_BARE)" \
296*fb1b10abSAndroid Build Coastguard Worker
297*fb1b10abSAndroid Build Coastguard WorkerPROJECTS-yes += vpxrc.$(VCPROJ_SFX)
298*fb1b10abSAndroid Build Coastguard Worker
299*fb1b10abSAndroid Build Coastguard Workervpxrc.$(VCPROJ_SFX): vpx_config.asm
300*fb1b10abSAndroid Build Coastguard Workervpxrc.$(VCPROJ_SFX): $(RTCD)
301*fb1b10abSAndroid Build Coastguard Worker
302*fb1b10abSAndroid Build Coastguard Workerendif # ifeq ($(CONFIG_MSVS),yes)
303*fb1b10abSAndroid Build Coastguard Workerelse # ifeq ($(CONFIG_EXTERNAL_BUILD),yes)
304*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_OBJS=$(call objs, $(filter-out $(ASM_INCLUDES), $(CODEC_SRCS)))
305*fb1b10abSAndroid Build Coastguard WorkerOBJS-yes += $(LIBVPX_OBJS)
306*fb1b10abSAndroid Build Coastguard WorkerLIBS-$(if yes,$(CONFIG_STATIC)) += $(BUILD_PFX)libvpx.a $(BUILD_PFX)libvpx_g.a
307*fb1b10abSAndroid Build Coastguard Worker$(BUILD_PFX)libvpx_g.a: $(LIBVPX_OBJS)
308*fb1b10abSAndroid Build Coastguard Worker
309*fb1b10abSAndroid Build Coastguard Worker# Updating version info.
310*fb1b10abSAndroid Build Coastguard Worker# https://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
311*fb1b10abSAndroid Build Coastguard Worker# For libtool: c=<current>, a=<age>, r=<revision>
312*fb1b10abSAndroid Build Coastguard Worker# libtool generates .so file as .so.[c-a].a.r, while -version-info c:r:a is
313*fb1b10abSAndroid Build Coastguard Worker# passed to libtool.
314*fb1b10abSAndroid Build Coastguard Worker#
315*fb1b10abSAndroid Build Coastguard Worker# libvpx library file is generated as libvpx.so.<MAJOR>.<MINOR>.<PATCH>
316*fb1b10abSAndroid Build Coastguard Worker# MAJOR = c-a, MINOR = a, PATCH = r
317*fb1b10abSAndroid Build Coastguard Worker#
318*fb1b10abSAndroid Build Coastguard Worker# To determine SO_VERSION_{MAJOR,MINOR,PATCH}, calculate c,a,r with current
319*fb1b10abSAndroid Build Coastguard Worker# SO_VERSION_* then follow the rules in the link to detemine the new version
320*fb1b10abSAndroid Build Coastguard Worker# (c1, a1, r1) and set MAJOR to [c1-a1], MINOR to a1 and PATCH to r1
321*fb1b10abSAndroid Build Coastguard WorkerSO_VERSION_MAJOR := 9
322*fb1b10abSAndroid Build Coastguard WorkerSO_VERSION_MINOR := 1
323*fb1b10abSAndroid Build Coastguard WorkerSO_VERSION_PATCH := 0
324*fb1b10abSAndroid Build Coastguard Workerifeq ($(filter darwin%,$(TGT_OS)),$(TGT_OS))
325*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_SO               := libvpx.$(SO_VERSION_MAJOR).dylib
326*fb1b10abSAndroid Build Coastguard WorkerSHARED_LIB_SUF          := .dylib
327*fb1b10abSAndroid Build Coastguard WorkerEXPORT_FILE             := libvpx.syms
328*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, \
329*fb1b10abSAndroid Build Coastguard Worker                             libvpx.dylib  )
330*fb1b10abSAndroid Build Coastguard Workerelse
331*fb1b10abSAndroid Build Coastguard Workerifeq ($(filter iphonesimulator%,$(TGT_OS)),$(TGT_OS))
332*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_SO               := libvpx.$(SO_VERSION_MAJOR).dylib
333*fb1b10abSAndroid Build Coastguard WorkerSHARED_LIB_SUF          := .dylib
334*fb1b10abSAndroid Build Coastguard WorkerEXPORT_FILE             := libvpx.syms
335*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, libvpx.dylib)
336*fb1b10abSAndroid Build Coastguard Workerelse
337*fb1b10abSAndroid Build Coastguard Workerifeq ($(filter os2%,$(TGT_OS)),$(TGT_OS))
338*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_SO               := libvpx$(SO_VERSION_MAJOR).dll
339*fb1b10abSAndroid Build Coastguard WorkerSHARED_LIB_SUF          := _dll.a
340*fb1b10abSAndroid Build Coastguard WorkerEXPORT_FILE             := libvpx.def
341*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_SO_SYMLINKS      :=
342*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_SO_IMPLIB        := libvpx_dll.a
343*fb1b10abSAndroid Build Coastguard Workerelse
344*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_SO               := libvpx.so.$(SO_VERSION_MAJOR).$(SO_VERSION_MINOR).$(SO_VERSION_PATCH)
345*fb1b10abSAndroid Build Coastguard WorkerSHARED_LIB_SUF          := .so
346*fb1b10abSAndroid Build Coastguard WorkerEXPORT_FILE             := libvpx.ver
347*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, \
348*fb1b10abSAndroid Build Coastguard Worker                             libvpx.so libvpx.so.$(SO_VERSION_MAJOR) \
349*fb1b10abSAndroid Build Coastguard Worker                             libvpx.so.$(SO_VERSION_MAJOR).$(SO_VERSION_MINOR))
350*fb1b10abSAndroid Build Coastguard Workerendif
351*fb1b10abSAndroid Build Coastguard Workerendif
352*fb1b10abSAndroid Build Coastguard Workerendif
353*fb1b10abSAndroid Build Coastguard Worker
354*fb1b10abSAndroid Build Coastguard WorkerLIBS-$(CONFIG_SHARED) += $(BUILD_PFX)$(LIBVPX_SO)\
355*fb1b10abSAndroid Build Coastguard Worker                           $(notdir $(LIBVPX_SO_SYMLINKS)) \
356*fb1b10abSAndroid Build Coastguard Worker                           $(if $(LIBVPX_SO_IMPLIB), $(BUILD_PFX)$(LIBVPX_SO_IMPLIB))
357*fb1b10abSAndroid Build Coastguard Worker$(BUILD_PFX)$(LIBVPX_SO): $(LIBVPX_OBJS) $(EXPORT_FILE)
358*fb1b10abSAndroid Build Coastguard Worker$(BUILD_PFX)$(LIBVPX_SO): extralibs += -lm
359*fb1b10abSAndroid Build Coastguard Worker$(BUILD_PFX)$(LIBVPX_SO): SONAME = libvpx.so.$(SO_VERSION_MAJOR)
360*fb1b10abSAndroid Build Coastguard Worker$(BUILD_PFX)$(LIBVPX_SO): EXPORTS_FILE = $(EXPORT_FILE)
361*fb1b10abSAndroid Build Coastguard Worker
362*fb1b10abSAndroid Build Coastguard Workerlibvpx.def: $(call enabled,CODEC_EXPORTS)
363*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
364*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo LIBRARY $(LIBVPX_SO:.dll=) INITINSTANCE TERMINSTANCE > $@
365*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo "DATA MULTIPLE NONSHARED" >> $@
366*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo "EXPORTS" >> $@
367*fb1b10abSAndroid Build Coastguard Worker	$(qexec)awk '!/vpx_svc_*/ {print "_"$$2}' $^ >>$@
368*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += libvpx.def
369*fb1b10abSAndroid Build Coastguard Worker
370*fb1b10abSAndroid Build Coastguard Workerlibvpx_dll.a: $(LIBVPX_SO)
371*fb1b10abSAndroid Build Coastguard Worker	@echo "    [IMPLIB] $@"
372*fb1b10abSAndroid Build Coastguard Worker	$(qexec)emximp -o $@ $<
373*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += libvpx_dll.a
374*fb1b10abSAndroid Build Coastguard Worker
375*fb1b10abSAndroid Build Coastguard Workerdefine libvpx_symlink_template
376*fb1b10abSAndroid Build Coastguard Worker$(1): $(2)
377*fb1b10abSAndroid Build Coastguard Worker	@echo "    [LN]     $(2) $$@"
378*fb1b10abSAndroid Build Coastguard Worker	$(qexec)mkdir -p $$(dir $$@)
379*fb1b10abSAndroid Build Coastguard Worker	$(qexec)ln -sf $(2) $$@
380*fb1b10abSAndroid Build Coastguard Workerendef
381*fb1b10abSAndroid Build Coastguard Worker
382*fb1b10abSAndroid Build Coastguard Worker$(eval $(call libvpx_symlink_template,\
383*fb1b10abSAndroid Build Coastguard Worker    $(addprefix $(BUILD_PFX),$(notdir $(LIBVPX_SO_SYMLINKS))),\
384*fb1b10abSAndroid Build Coastguard Worker    $(BUILD_PFX)$(LIBVPX_SO)))
385*fb1b10abSAndroid Build Coastguard Worker$(eval $(call libvpx_symlink_template,\
386*fb1b10abSAndroid Build Coastguard Worker    $(addprefix $(DIST_DIR)/,$(LIBVPX_SO_SYMLINKS)),\
387*fb1b10abSAndroid Build Coastguard Worker    $(LIBVPX_SO)))
388*fb1b10abSAndroid Build Coastguard Worker
389*fb1b10abSAndroid Build Coastguard Worker
390*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-$(CONFIG_SHARED) += $(LIBVPX_SO_SYMLINKS)
391*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-$(CONFIG_SHARED) += $(LIBSUBDIR)/$(LIBVPX_SO)
392*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-$(CONFIG_SHARED) += $(if $(LIBVPX_SO_IMPLIB),$(LIBSUBDIR)/$(LIBVPX_SO_IMPLIB))
393*fb1b10abSAndroid Build Coastguard Worker
394*fb1b10abSAndroid Build Coastguard Worker
395*fb1b10abSAndroid Build Coastguard WorkerLIBS-yes += vpx.pc
396*fb1b10abSAndroid Build Coastguard Workervpx.pc: config.mk libs.mk
397*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
398*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo '# pkg-config file from libvpx $(VERSION_STRING)' > $@
399*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'prefix=$(PREFIX)' >> $@
400*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'exec_prefix=$${prefix}' >> $@
401*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'libdir=$${prefix}/$(LIBSUBDIR)' >> $@
402*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'includedir=$${prefix}/include' >> $@
403*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo '' >> $@
404*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'Name: vpx' >> $@
405*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'Description: WebM Project VPx codec implementation' >> $@
406*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'Version: $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)' >> $@
407*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'Requires:' >> $@
408*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'Conflicts:' >> $@
409*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'Libs: -L$${libdir} -lvpx -lm' >> $@
410*fb1b10abSAndroid Build Coastguard Workerifeq ($(HAVE_PTHREAD_H),yes)
411*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'Libs.private: -lm -lpthread' >> $@
412*fb1b10abSAndroid Build Coastguard Workerelse
413*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'Libs.private: -lm' >> $@
414*fb1b10abSAndroid Build Coastguard Workerendif
415*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo 'Cflags: -I$${includedir}' >> $@
416*fb1b10abSAndroid Build Coastguard WorkerINSTALL-LIBS-yes += $(LIBSUBDIR)/pkgconfig/vpx.pc
417*fb1b10abSAndroid Build Coastguard WorkerINSTALL_MAPS += $(LIBSUBDIR)/pkgconfig/%.pc %.pc
418*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += vpx.pc
419*fb1b10abSAndroid Build Coastguard Worker
420*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_ENCODERS),yes)
421*fb1b10abSAndroid Build Coastguard Worker  RC_RTC_OBJS=$(call objs,$(RC_RTC_SRCS))
422*fb1b10abSAndroid Build Coastguard Worker  OBJS-yes += $(RC_RTC_OBJS)
423*fb1b10abSAndroid Build Coastguard Worker  LIBS-yes += $(BUILD_PFX)libvpxrc.a $(BUILD_PFX)libvpxrc_g.a
424*fb1b10abSAndroid Build Coastguard Worker  $(BUILD_PFX)libvpxrc_g.a: $(RC_RTC_OBJS)
425*fb1b10abSAndroid Build Coastguard Workerendif
426*fb1b10abSAndroid Build Coastguard Worker
427*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_VP9_ENCODER)$(CONFIG_RATE_CTRL),yesyes)
428*fb1b10abSAndroid Build Coastguard Worker  SIMPLE_ENCODE_OBJS=$(call objs,$(SIMPLE_ENCODE_SRCS))
429*fb1b10abSAndroid Build Coastguard Worker  OBJS-yes += $(SIMPLE_ENCODE_OBJS)
430*fb1b10abSAndroid Build Coastguard Worker  LIBS-yes += $(BUILD_PFX)libsimple_encode.a $(BUILD_PFX)libsimple_encode_g.a
431*fb1b10abSAndroid Build Coastguard Worker  $(BUILD_PFX)libsimple_encode_g.a: $(SIMPLE_ENCODE_OBJS)
432*fb1b10abSAndroid Build Coastguard Workerendif
433*fb1b10abSAndroid Build Coastguard Worker
434*fb1b10abSAndroid Build Coastguard Workerendif # ifeq ($(CONFIG_EXTERNAL_BUILD),yes)
435*fb1b10abSAndroid Build Coastguard Worker
436*fb1b10abSAndroid Build Coastguard Workerlibvpx.ver: $(call enabled,CODEC_EXPORTS)
437*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
438*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo "{ global:" > $@
439*fb1b10abSAndroid Build Coastguard Worker	$(qexec)for f in $?; do awk '{print $$2";"}' < $$f >>$@; done
440*fb1b10abSAndroid Build Coastguard Worker	$(qexec)echo "local: *; };" >> $@
441*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += libvpx.ver
442*fb1b10abSAndroid Build Coastguard Worker
443*fb1b10abSAndroid Build Coastguard Workerlibvpx.syms: $(call enabled,CODEC_EXPORTS)
444*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
445*fb1b10abSAndroid Build Coastguard Worker	$(qexec)awk '{print "_"$$2}' $^ >$@
446*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += libvpx.syms
447*fb1b10abSAndroid Build Coastguard Worker
448*fb1b10abSAndroid Build Coastguard Worker#
449*fb1b10abSAndroid Build Coastguard Worker# Rule to make assembler configuration file from C configuration file
450*fb1b10abSAndroid Build Coastguard Worker#
451*fb1b10abSAndroid Build Coastguard Workerifeq ($(VPX_ARCH_X86)$(VPX_ARCH_X86_64),yes)
452*fb1b10abSAndroid Build Coastguard Worker# YASM
453*fb1b10abSAndroid Build Coastguard Worker$(BUILD_PFX)vpx_config.asm: $(BUILD_PFX)vpx_config.h
454*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
455*fb1b10abSAndroid Build Coastguard Worker	@LC_ALL=C grep -E "#define [A-Z0-9_]+ [01]" $< \
456*fb1b10abSAndroid Build Coastguard Worker	    | awk '{print $$2 " equ " $$3}' > $@
457*fb1b10abSAndroid Build Coastguard Workerelse
458*fb1b10abSAndroid Build Coastguard WorkerADS2GAS=$(if $(filter yes,$(CONFIG_GCC)),| $(ASM_CONVERSION))
459*fb1b10abSAndroid Build Coastguard Worker$(BUILD_PFX)vpx_config.asm: $(BUILD_PFX)vpx_config.h
460*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
461*fb1b10abSAndroid Build Coastguard Worker	@LC_ALL=C grep -E "#define [A-Z0-9_]+ [01]" $< \
462*fb1b10abSAndroid Build Coastguard Worker	    | awk '{print $$2 " EQU " $$3}' $(ADS2GAS) > $@
463*fb1b10abSAndroid Build Coastguard Worker	@echo "        END" $(ADS2GAS) >> $@
464*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += $(BUILD_PFX)vpx_config.asm
465*fb1b10abSAndroid Build Coastguard Workerendif
466*fb1b10abSAndroid Build Coastguard Worker
467*fb1b10abSAndroid Build Coastguard Worker#
468*fb1b10abSAndroid Build Coastguard Worker# Add assembler dependencies for configuration.
469*fb1b10abSAndroid Build Coastguard Worker#
470*fb1b10abSAndroid Build Coastguard Worker$(filter %.S.o,$(OBJS-yes)):     $(BUILD_PFX)vpx_config.asm
471*fb1b10abSAndroid Build Coastguard Worker$(filter %$(ASM).o,$(OBJS-yes)): $(BUILD_PFX)vpx_config.asm
472*fb1b10abSAndroid Build Coastguard Worker
473*fb1b10abSAndroid Build Coastguard Worker
474*fb1b10abSAndroid Build Coastguard Worker$(shell $(SRC_PATH_BARE)/build/make/version.sh "$(SRC_PATH_BARE)" $(BUILD_PFX)vpx_version.h)
475*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += $(BUILD_PFX)vpx_version.h
476*fb1b10abSAndroid Build Coastguard Worker
477*fb1b10abSAndroid Build Coastguard Worker#
478*fb1b10abSAndroid Build Coastguard Worker# Add include path for libwebm sources.
479*fb1b10abSAndroid Build Coastguard Worker#
480*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_WEBM_IO),yes)
481*fb1b10abSAndroid Build Coastguard Worker  CXXFLAGS += -I$(SRC_PATH_BARE)/third_party/libwebm
482*fb1b10abSAndroid Build Coastguard Workerendif
483*fb1b10abSAndroid Build Coastguard Worker
484*fb1b10abSAndroid Build Coastguard Worker##
485*fb1b10abSAndroid Build Coastguard Worker## libvpx test directives
486*fb1b10abSAndroid Build Coastguard Worker##
487*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_UNIT_TESTS),yes)
488*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_TEST_DATA_PATH ?= .
489*fb1b10abSAndroid Build Coastguard Worker
490*fb1b10abSAndroid Build Coastguard Workerinclude $(SRC_PATH_BARE)/test/test.mk
491*fb1b10abSAndroid Build Coastguard Worker
492*fb1b10abSAndroid Build Coastguard Worker# addprefix_clean behaves like addprefix if the target doesn't start with "../"
493*fb1b10abSAndroid Build Coastguard Worker# However, if the target starts with "../", instead of adding prefix,
494*fb1b10abSAndroid Build Coastguard Worker# it will remove "../".
495*fb1b10abSAndroid Build Coastguard Worker# Using addprefix_clean, we can avoid two different targets building the
496*fb1b10abSAndroid Build Coastguard Worker# same file, i.e.
497*fb1b10abSAndroid Build Coastguard Worker# test/../ivfenc.c.d: ivfenc.o
498*fb1b10abSAndroid Build Coastguard Worker# ivfenc.c.d: ivfenc.o
499*fb1b10abSAndroid Build Coastguard Worker# Note that the other way to solve this problem is using "realpath".
500*fb1b10abSAndroid Build Coastguard Worker# The "realpath" is supported by make 3.81 or later.
501*fb1b10abSAndroid Build Coastguard Workeraddprefix_clean=$(patsubst $(1)../%,%,$(addprefix $(1), $(2)))
502*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_TEST_SRCS=$(call addprefix_clean,test/,$(call enabled,LIBVPX_TEST_SRCS))
503*fb1b10abSAndroid Build Coastguard Worker
504*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_TEST_BIN=./test_libvpx$(EXE_SFX)
505*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_TEST_DATA=$(addprefix $(LIBVPX_TEST_DATA_PATH)/,\
506*fb1b10abSAndroid Build Coastguard Worker                     $(call enabled,LIBVPX_TEST_DATA))
507*fb1b10abSAndroid Build Coastguard Workerlibvpx_test_data_url=https://storage.googleapis.com/downloads.webmproject.org/test_data/libvpx/$(1)
508*fb1b10abSAndroid Build Coastguard Worker
509*fb1b10abSAndroid Build Coastguard WorkerTEST_INTRA_PRED_SPEED_BIN=./test_intra_pred_speed$(EXE_SFX)
510*fb1b10abSAndroid Build Coastguard WorkerTEST_INTRA_PRED_SPEED_SRCS=$(call addprefix_clean,test/,\
511*fb1b10abSAndroid Build Coastguard Worker                           $(call enabled,TEST_INTRA_PRED_SPEED_SRCS))
512*fb1b10abSAndroid Build Coastguard WorkerTEST_INTRA_PRED_SPEED_OBJS := $(sort $(call objs,$(TEST_INTRA_PRED_SPEED_SRCS)))
513*fb1b10abSAndroid Build Coastguard Worker
514*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_ENCODERS),yes)
515*fb1b10abSAndroid Build Coastguard WorkerRC_INTERFACE_TEST_BIN=./test_rc_interface$(EXE_SFX)
516*fb1b10abSAndroid Build Coastguard WorkerRC_INTERFACE_TEST_SRCS=$(call addprefix_clean,test/,\
517*fb1b10abSAndroid Build Coastguard Worker                       $(call enabled,RC_INTERFACE_TEST_SRCS))
518*fb1b10abSAndroid Build Coastguard WorkerRC_INTERFACE_TEST_OBJS := $(sort $(call objs,$(RC_INTERFACE_TEST_SRCS)))
519*fb1b10abSAndroid Build Coastguard Workerendif
520*fb1b10abSAndroid Build Coastguard Worker
521*fb1b10abSAndroid Build Coastguard WorkerSIMPLE_ENCODE_TEST_BIN=./test_simple_encode$(EXE_SFX)
522*fb1b10abSAndroid Build Coastguard WorkerSIMPLE_ENCODE_TEST_SRCS=$(call addprefix_clean,test/,\
523*fb1b10abSAndroid Build Coastguard Worker                        $(call enabled,SIMPLE_ENCODE_TEST_SRCS))
524*fb1b10abSAndroid Build Coastguard WorkerSIMPLE_ENCODE_TEST_OBJS := $(sort $(call objs,$(SIMPLE_ENCODE_TEST_SRCS)))
525*fb1b10abSAndroid Build Coastguard Worker
526*fb1b10abSAndroid Build Coastguard Workerlibvpx_test_srcs.txt:
527*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
528*fb1b10abSAndroid Build Coastguard Worker	@echo $(LIBVPX_TEST_SRCS) | xargs -n1 echo | LC_ALL=C sort -u > $@
529*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += libvpx_test_srcs.txt
530*fb1b10abSAndroid Build Coastguard Worker
531*fb1b10abSAndroid Build Coastguard Worker# Attempt to download the file using curl, retrying once if it fails for a
532*fb1b10abSAndroid Build Coastguard Worker# partial file (18).
533*fb1b10abSAndroid Build Coastguard Worker$(LIBVPX_TEST_DATA): $(SRC_PATH_BARE)/test/test-data.sha1
534*fb1b10abSAndroid Build Coastguard Worker	@echo "    [DOWNLOAD] $@"
535*fb1b10abSAndroid Build Coastguard Worker	$(qexec)( \
536*fb1b10abSAndroid Build Coastguard Worker	  trap 'rm -f $@' INT TERM; \
537*fb1b10abSAndroid Build Coastguard Worker	  curl="curl -S -s --retry 1 -L -o $@ $(call libvpx_test_data_url,$(@F))"; \
538*fb1b10abSAndroid Build Coastguard Worker	  $$curl; ret=$$?; \
539*fb1b10abSAndroid Build Coastguard Worker	  case "$$ret" in \
540*fb1b10abSAndroid Build Coastguard Worker	    18) $$curl -C - ;; \
541*fb1b10abSAndroid Build Coastguard Worker	    *) exit $$ret ;; \
542*fb1b10abSAndroid Build Coastguard Worker	  esac \
543*fb1b10abSAndroid Build Coastguard Worker	)
544*fb1b10abSAndroid Build Coastguard Worker
545*fb1b10abSAndroid Build Coastguard Workertestdata: $(LIBVPX_TEST_DATA)
546*fb1b10abSAndroid Build Coastguard Worker	$(qexec)[ -x "$$(which sha1sum)" ] && sha1sum=sha1sum;\
547*fb1b10abSAndroid Build Coastguard Worker          [ -x "$$(which shasum)" ] && sha1sum=shasum;\
548*fb1b10abSAndroid Build Coastguard Worker          [ -x "$$(which sha1)" ] && sha1sum=sha1;\
549*fb1b10abSAndroid Build Coastguard Worker          if [ -n "$${sha1sum}" ]; then\
550*fb1b10abSAndroid Build Coastguard Worker            set -e;\
551*fb1b10abSAndroid Build Coastguard Worker            echo "Checking test data:";\
552*fb1b10abSAndroid Build Coastguard Worker            for f in $(call enabled,LIBVPX_TEST_DATA); do\
553*fb1b10abSAndroid Build Coastguard Worker                grep $$f $(SRC_PATH_BARE)/test/test-data.sha1 |\
554*fb1b10abSAndroid Build Coastguard Worker                    (cd "$(LIBVPX_TEST_DATA_PATH)"; $${sha1sum} -c);\
555*fb1b10abSAndroid Build Coastguard Worker            done; \
556*fb1b10abSAndroid Build Coastguard Worker        else\
557*fb1b10abSAndroid Build Coastguard Worker            echo "Skipping test data integrity check, sha1sum not found.";\
558*fb1b10abSAndroid Build Coastguard Worker        fi
559*fb1b10abSAndroid Build Coastguard Worker
560*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_EXTERNAL_BUILD),yes)
561*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_MSVS),yes)
562*fb1b10abSAndroid Build Coastguard Worker
563*fb1b10abSAndroid Build Coastguard Workergtest.$(VCPROJ_SFX): $(SRC_PATH_BARE)/third_party/googletest/src/src/gtest-all.cc
564*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
565*fb1b10abSAndroid Build Coastguard Worker	$(qexec)$(GEN_VCPROJ) \
566*fb1b10abSAndroid Build Coastguard Worker            --lib \
567*fb1b10abSAndroid Build Coastguard Worker            --target=$(TOOLCHAIN) \
568*fb1b10abSAndroid Build Coastguard Worker            $(if $(CONFIG_STATIC_MSVCRT),--static-crt) \
569*fb1b10abSAndroid Build Coastguard Worker            --name=gtest \
570*fb1b10abSAndroid Build Coastguard Worker            --proj-guid=EC00E1EC-AF68-4D92-A255-181690D1C9B1 \
571*fb1b10abSAndroid Build Coastguard Worker            --ver=$(CONFIG_VS_VERSION) \
572*fb1b10abSAndroid Build Coastguard Worker            --src-path-bare="$(SRC_PATH_BARE)" \
573*fb1b10abSAndroid Build Coastguard Worker            --as=$(AS) \
574*fb1b10abSAndroid Build Coastguard Worker            -D_VARIADIC_MAX=10 \
575*fb1b10abSAndroid Build Coastguard Worker            --out=gtest.$(VCPROJ_SFX) $(SRC_PATH_BARE)/third_party/googletest/src/src/gtest-all.cc \
576*fb1b10abSAndroid Build Coastguard Worker            -I. -I"$(SRC_PATH_BARE)/third_party/googletest/src/include" -I"$(SRC_PATH_BARE)/third_party/googletest/src"
577*fb1b10abSAndroid Build Coastguard Worker
578*fb1b10abSAndroid Build Coastguard WorkerPROJECTS-$(CONFIG_MSVS) += gtest.$(VCPROJ_SFX)
579*fb1b10abSAndroid Build Coastguard Worker
580*fb1b10abSAndroid Build Coastguard Workertest_libvpx.$(VCPROJ_SFX): $(LIBVPX_TEST_SRCS) vpx.$(VCPROJ_SFX) gtest.$(VCPROJ_SFX)
581*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
582*fb1b10abSAndroid Build Coastguard Worker	$(qexec)$(GEN_VCPROJ) \
583*fb1b10abSAndroid Build Coastguard Worker            --exe \
584*fb1b10abSAndroid Build Coastguard Worker            --target=$(TOOLCHAIN) \
585*fb1b10abSAndroid Build Coastguard Worker            --name=test_libvpx \
586*fb1b10abSAndroid Build Coastguard Worker            -D_VARIADIC_MAX=10 \
587*fb1b10abSAndroid Build Coastguard Worker            --proj-guid=CD837F5F-52D8-4314-A370-895D614166A7 \
588*fb1b10abSAndroid Build Coastguard Worker            --ver=$(CONFIG_VS_VERSION) \
589*fb1b10abSAndroid Build Coastguard Worker            --src-path-bare="$(SRC_PATH_BARE)" \
590*fb1b10abSAndroid Build Coastguard Worker            --as=$(AS) \
591*fb1b10abSAndroid Build Coastguard Worker            $(if $(CONFIG_STATIC_MSVCRT),--static-crt) \
592*fb1b10abSAndroid Build Coastguard Worker            --out=$@ $(INTERNAL_CFLAGS) $(CFLAGS) \
593*fb1b10abSAndroid Build Coastguard Worker            -I. -I"$(SRC_PATH_BARE)/third_party/googletest/src/include" \
594*fb1b10abSAndroid Build Coastguard Worker            $(if $(CONFIG_WEBM_IO),-I"$(SRC_PATH_BARE)/third_party/libwebm") \
595*fb1b10abSAndroid Build Coastguard Worker            -L. -l$(CODEC_LIB) -l$(GTEST_LIB) $^
596*fb1b10abSAndroid Build Coastguard Worker
597*fb1b10abSAndroid Build Coastguard WorkerPROJECTS-$(CONFIG_MSVS) += test_libvpx.$(VCPROJ_SFX)
598*fb1b10abSAndroid Build Coastguard Worker
599*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_TEST_BIN := $(addprefix $(TGT_OS:win64=x64)/Release/,$(notdir $(LIBVPX_TEST_BIN)))
600*fb1b10abSAndroid Build Coastguard Worker
601*fb1b10abSAndroid Build Coastguard Workerifneq ($(strip $(TEST_INTRA_PRED_SPEED_OBJS)),)
602*fb1b10abSAndroid Build Coastguard WorkerPROJECTS-$(CONFIG_MSVS) += test_intra_pred_speed.$(VCPROJ_SFX)
603*fb1b10abSAndroid Build Coastguard Workertest_intra_pred_speed.$(VCPROJ_SFX): $(TEST_INTRA_PRED_SPEED_SRCS) vpx.$(VCPROJ_SFX) gtest.$(VCPROJ_SFX)
604*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
605*fb1b10abSAndroid Build Coastguard Worker	$(qexec)$(GEN_VCPROJ) \
606*fb1b10abSAndroid Build Coastguard Worker            --exe \
607*fb1b10abSAndroid Build Coastguard Worker            --target=$(TOOLCHAIN) \
608*fb1b10abSAndroid Build Coastguard Worker            --name=test_intra_pred_speed \
609*fb1b10abSAndroid Build Coastguard Worker            -D_VARIADIC_MAX=10 \
610*fb1b10abSAndroid Build Coastguard Worker            --proj-guid=CD837F5F-52D8-4314-A370-895D614166A7 \
611*fb1b10abSAndroid Build Coastguard Worker            --ver=$(CONFIG_VS_VERSION) \
612*fb1b10abSAndroid Build Coastguard Worker            --src-path-bare="$(SRC_PATH_BARE)" \
613*fb1b10abSAndroid Build Coastguard Worker            --as=$(AS) \
614*fb1b10abSAndroid Build Coastguard Worker            $(if $(CONFIG_STATIC_MSVCRT),--static-crt) \
615*fb1b10abSAndroid Build Coastguard Worker            --out=$@ $(INTERNAL_CFLAGS) $(CFLAGS) \
616*fb1b10abSAndroid Build Coastguard Worker            -I. -I"$(SRC_PATH_BARE)/third_party/googletest/src/include" \
617*fb1b10abSAndroid Build Coastguard Worker            -L. -l$(CODEC_LIB) -l$(GTEST_LIB) $^
618*fb1b10abSAndroid Build Coastguard Workerendif  # TEST_INTRA_PRED_SPEED
619*fb1b10abSAndroid Build Coastguard Worker
620*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_ENCODERS),yes)
621*fb1b10abSAndroid Build Coastguard Workerifneq ($(strip $(RC_INTERFACE_TEST_OBJS)),)
622*fb1b10abSAndroid Build Coastguard WorkerPROJECTS-$(CONFIG_MSVS) += test_rc_interface.$(VCPROJ_SFX)
623*fb1b10abSAndroid Build Coastguard Workertest_rc_interface.$(VCPROJ_SFX): $(RC_INTERFACE_TEST_SRCS) vpx.$(VCPROJ_SFX) \
624*fb1b10abSAndroid Build Coastguard Worker	vpxrc.$(VCPROJ_SFX) gtest.$(VCPROJ_SFX)
625*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
626*fb1b10abSAndroid Build Coastguard Worker	$(qexec)$(GEN_VCPROJ) \
627*fb1b10abSAndroid Build Coastguard Worker            --exe \
628*fb1b10abSAndroid Build Coastguard Worker            --target=$(TOOLCHAIN) \
629*fb1b10abSAndroid Build Coastguard Worker            --name=test_rc_interface \
630*fb1b10abSAndroid Build Coastguard Worker            -D_VARIADIC_MAX=10 \
631*fb1b10abSAndroid Build Coastguard Worker            --proj-guid=30458F88-1BC6-4689-B41C-50F3737AAB27 \
632*fb1b10abSAndroid Build Coastguard Worker            --ver=$(CONFIG_VS_VERSION) \
633*fb1b10abSAndroid Build Coastguard Worker            --as=$(AS) \
634*fb1b10abSAndroid Build Coastguard Worker            --src-path-bare="$(SRC_PATH_BARE)" \
635*fb1b10abSAndroid Build Coastguard Worker            $(if $(CONFIG_STATIC_MSVCRT),--static-crt) \
636*fb1b10abSAndroid Build Coastguard Worker            --out=$@ $(INTERNAL_CFLAGS) $(CFLAGS) \
637*fb1b10abSAndroid Build Coastguard Worker            -I. -I"$(SRC_PATH_BARE)/third_party/googletest/src/include" \
638*fb1b10abSAndroid Build Coastguard Worker            -L. -l$(CODEC_LIB) -l$(RC_RTC_LIB) -l$(GTEST_LIB) $^
639*fb1b10abSAndroid Build Coastguard Workerendif  # RC_INTERFACE_TEST
640*fb1b10abSAndroid Build Coastguard Workerendif  # CONFIG_ENCODERS
641*fb1b10abSAndroid Build Coastguard Workerendif  # CONFIG_MSVS
642*fb1b10abSAndroid Build Coastguard Workerelse
643*fb1b10abSAndroid Build Coastguard Worker
644*fb1b10abSAndroid Build Coastguard Workerinclude $(SRC_PATH_BARE)/third_party/googletest/gtest.mk
645*fb1b10abSAndroid Build Coastguard WorkerGTEST_SRCS := $(addprefix third_party/googletest/src/,$(call enabled,GTEST_SRCS))
646*fb1b10abSAndroid Build Coastguard WorkerGTEST_OBJS=$(call objs,$(GTEST_SRCS))
647*fb1b10abSAndroid Build Coastguard Workerifeq ($(filter win%,$(TGT_OS)),$(TGT_OS))
648*fb1b10abSAndroid Build Coastguard Worker# Disabling pthreads globally will cause issues on darwin and possibly elsewhere
649*fb1b10abSAndroid Build Coastguard Worker$(GTEST_OBJS) $(GTEST_OBJS:.o=.d): CXXFLAGS += -DGTEST_HAS_PTHREAD=0
650*fb1b10abSAndroid Build Coastguard Workerendif
651*fb1b10abSAndroid Build Coastguard WorkerGTEST_INCLUDES := -I$(SRC_PATH_BARE)/third_party/googletest/src
652*fb1b10abSAndroid Build Coastguard WorkerGTEST_INCLUDES += -I$(SRC_PATH_BARE)/third_party/googletest/src/include
653*fb1b10abSAndroid Build Coastguard Worker$(GTEST_OBJS) $(GTEST_OBJS:.o=.d): CXXFLAGS += $(GTEST_INCLUDES)
654*fb1b10abSAndroid Build Coastguard WorkerOBJS-yes += $(GTEST_OBJS)
655*fb1b10abSAndroid Build Coastguard WorkerLIBS-yes += $(BUILD_PFX)libgtest.a $(BUILD_PFX)libgtest_g.a
656*fb1b10abSAndroid Build Coastguard Worker$(BUILD_PFX)libgtest_g.a: $(GTEST_OBJS)
657*fb1b10abSAndroid Build Coastguard Worker
658*fb1b10abSAndroid Build Coastguard WorkerLIBVPX_TEST_OBJS=$(sort $(call objs,$(LIBVPX_TEST_SRCS)))
659*fb1b10abSAndroid Build Coastguard Worker$(LIBVPX_TEST_OBJS) $(LIBVPX_TEST_OBJS:.o=.d): CXXFLAGS += $(GTEST_INCLUDES)
660*fb1b10abSAndroid Build Coastguard WorkerOBJS-yes += $(LIBVPX_TEST_OBJS)
661*fb1b10abSAndroid Build Coastguard WorkerBINS-yes += $(LIBVPX_TEST_BIN)
662*fb1b10abSAndroid Build Coastguard Worker
663*fb1b10abSAndroid Build Coastguard WorkerCODEC_LIB=$(if $(CONFIG_DEBUG_LIBS),vpx_g,vpx)
664*fb1b10abSAndroid Build Coastguard WorkerCODEC_LIB_SUF=$(if $(CONFIG_SHARED),$(SHARED_LIB_SUF),.a)
665*fb1b10abSAndroid Build Coastguard WorkerTEST_LIBS := lib$(CODEC_LIB)$(CODEC_LIB_SUF) libgtest.a
666*fb1b10abSAndroid Build Coastguard Worker$(LIBVPX_TEST_BIN): $(TEST_LIBS)
667*fb1b10abSAndroid Build Coastguard Worker$(eval $(call linkerxx_template,$(LIBVPX_TEST_BIN), \
668*fb1b10abSAndroid Build Coastguard Worker              $(LIBVPX_TEST_OBJS) \
669*fb1b10abSAndroid Build Coastguard Worker              -L. -lvpx -lgtest $(extralibs) -lm))
670*fb1b10abSAndroid Build Coastguard Worker
671*fb1b10abSAndroid Build Coastguard Workerifneq ($(strip $(TEST_INTRA_PRED_SPEED_OBJS)),)
672*fb1b10abSAndroid Build Coastguard Worker$(TEST_INTRA_PRED_SPEED_OBJS) $(TEST_INTRA_PRED_SPEED_OBJS:.o=.d): CXXFLAGS += $(GTEST_INCLUDES)
673*fb1b10abSAndroid Build Coastguard WorkerOBJS-yes += $(TEST_INTRA_PRED_SPEED_OBJS)
674*fb1b10abSAndroid Build Coastguard WorkerBINS-yes += $(TEST_INTRA_PRED_SPEED_BIN)
675*fb1b10abSAndroid Build Coastguard Worker
676*fb1b10abSAndroid Build Coastguard Worker$(TEST_INTRA_PRED_SPEED_BIN): $(TEST_LIBS)
677*fb1b10abSAndroid Build Coastguard Worker$(eval $(call linkerxx_template,$(TEST_INTRA_PRED_SPEED_BIN), \
678*fb1b10abSAndroid Build Coastguard Worker              $(TEST_INTRA_PRED_SPEED_OBJS) \
679*fb1b10abSAndroid Build Coastguard Worker              -L. -lvpx -lgtest $(extralibs) -lm))
680*fb1b10abSAndroid Build Coastguard Workerendif  # TEST_INTRA_PRED_SPEED
681*fb1b10abSAndroid Build Coastguard Worker
682*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_ENCODERS),yes)
683*fb1b10abSAndroid Build Coastguard Workerifneq ($(strip $(RC_INTERFACE_TEST_OBJS)),)
684*fb1b10abSAndroid Build Coastguard Worker$(RC_INTERFACE_TEST_OBJS) $(RC_INTERFACE_TEST_OBJS:.o=.d): \
685*fb1b10abSAndroid Build Coastguard Worker  CXXFLAGS += $(GTEST_INCLUDES)
686*fb1b10abSAndroid Build Coastguard WorkerOBJS-yes += $(RC_INTERFACE_TEST_OBJS)
687*fb1b10abSAndroid Build Coastguard WorkerBINS-yes += $(RC_INTERFACE_TEST_BIN)
688*fb1b10abSAndroid Build Coastguard Worker
689*fb1b10abSAndroid Build Coastguard Worker$(RC_INTERFACE_TEST_BIN): $(TEST_LIBS) libvpxrc.a
690*fb1b10abSAndroid Build Coastguard Worker$(eval $(call linkerxx_template,$(RC_INTERFACE_TEST_BIN), \
691*fb1b10abSAndroid Build Coastguard Worker              $(RC_INTERFACE_TEST_OBJS) \
692*fb1b10abSAndroid Build Coastguard Worker              -L. -lvpx -lgtest -lvpxrc $(extralibs) -lm))
693*fb1b10abSAndroid Build Coastguard Workerendif  # RC_INTERFACE_TEST
694*fb1b10abSAndroid Build Coastguard Workerendif  # CONFIG_ENCODERS
695*fb1b10abSAndroid Build Coastguard Worker
696*fb1b10abSAndroid Build Coastguard Workerifneq ($(strip $(SIMPLE_ENCODE_TEST_OBJS)),)
697*fb1b10abSAndroid Build Coastguard Worker$(SIMPLE_ENCODE_TEST_OBJS) $(SIMPLE_ENCODE_TEST_OBJS:.o=.d): \
698*fb1b10abSAndroid Build Coastguard Worker  CXXFLAGS += $(GTEST_INCLUDES)
699*fb1b10abSAndroid Build Coastguard WorkerOBJS-yes += $(SIMPLE_ENCODE_TEST_OBJS)
700*fb1b10abSAndroid Build Coastguard WorkerBINS-yes += $(SIMPLE_ENCODE_TEST_BIN)
701*fb1b10abSAndroid Build Coastguard Worker
702*fb1b10abSAndroid Build Coastguard Worker$(SIMPLE_ENCODE_TEST_BIN): $(TEST_LIBS) libsimple_encode.a
703*fb1b10abSAndroid Build Coastguard Worker$(eval $(call linkerxx_template,$(SIMPLE_ENCODE_TEST_BIN), \
704*fb1b10abSAndroid Build Coastguard Worker              $(SIMPLE_ENCODE_TEST_OBJS) \
705*fb1b10abSAndroid Build Coastguard Worker              -L. -lsimple_encode -lvpx -lgtest $(extralibs) -lm))
706*fb1b10abSAndroid Build Coastguard Workerendif  # SIMPLE_ENCODE_TEST
707*fb1b10abSAndroid Build Coastguard Worker
708*fb1b10abSAndroid Build Coastguard Workerendif  # CONFIG_EXTERNAL_BUILD
709*fb1b10abSAndroid Build Coastguard Worker
710*fb1b10abSAndroid Build Coastguard Worker# Install test sources only if codec source is included
711*fb1b10abSAndroid Build Coastguard WorkerINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(patsubst $(SRC_PATH_BARE)/%,%,\
712*fb1b10abSAndroid Build Coastguard Worker    $(shell find $(SRC_PATH_BARE)/third_party/googletest -type f))
713*fb1b10abSAndroid Build Coastguard WorkerINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(LIBVPX_TEST_SRCS)
714*fb1b10abSAndroid Build Coastguard WorkerINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(TEST_INTRA_PRED_SPEED_SRCS)
715*fb1b10abSAndroid Build Coastguard WorkerINSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(RC_INTERFACE_TEST_SRCS)
716*fb1b10abSAndroid Build Coastguard Worker
717*fb1b10abSAndroid Build Coastguard Workerdefine test_shard_template
718*fb1b10abSAndroid Build Coastguard Workertest: test_shard.$(1)
719*fb1b10abSAndroid Build Coastguard Workertest-no-data-check: test_shard_ndc.$(1)
720*fb1b10abSAndroid Build Coastguard Workertest_shard.$(1) test_shard_ndc.$(1): $(LIBVPX_TEST_BIN)
721*fb1b10abSAndroid Build Coastguard Worker	@set -e; \
722*fb1b10abSAndroid Build Coastguard Worker	 export GTEST_SHARD_INDEX=$(1); \
723*fb1b10abSAndroid Build Coastguard Worker	 export GTEST_TOTAL_SHARDS=$(2); \
724*fb1b10abSAndroid Build Coastguard Worker	 $(LIBVPX_TEST_BIN)
725*fb1b10abSAndroid Build Coastguard Workertest_shard.$(1): testdata
726*fb1b10abSAndroid Build Coastguard Worker.PHONY: test_shard.$(1) test_shard_ndc.$(1)
727*fb1b10abSAndroid Build Coastguard Workerendef
728*fb1b10abSAndroid Build Coastguard Worker
729*fb1b10abSAndroid Build Coastguard WorkerNUM_SHARDS := 10
730*fb1b10abSAndroid Build Coastguard WorkerSHARDS := 0 1 2 3 4 5 6 7 8 9
731*fb1b10abSAndroid Build Coastguard Worker$(foreach s,$(SHARDS),$(eval $(call test_shard_template,$(s),$(NUM_SHARDS))))
732*fb1b10abSAndroid Build Coastguard Worker
733*fb1b10abSAndroid Build Coastguard Workerendif  # CONFIG_UNIT_TESTS
734*fb1b10abSAndroid Build Coastguard Worker
735*fb1b10abSAndroid Build Coastguard Worker##
736*fb1b10abSAndroid Build Coastguard Worker## documentation directives
737*fb1b10abSAndroid Build Coastguard Worker##
738*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += libs.doxy
739*fb1b10abSAndroid Build Coastguard WorkerDOCS-yes += libs.doxy
740*fb1b10abSAndroid Build Coastguard Workerlibs.doxy: $(CODEC_DOC_SRCS)
741*fb1b10abSAndroid Build Coastguard Worker	@echo "    [CREATE] $@"
742*fb1b10abSAndroid Build Coastguard Worker	@rm -f $@
743*fb1b10abSAndroid Build Coastguard Worker	@echo "INPUT += $^" >> $@
744*fb1b10abSAndroid Build Coastguard Worker	@echo "INCLUDE_PATH += ." >> $@;
745*fb1b10abSAndroid Build Coastguard Worker	@echo "ENABLED_SECTIONS += $(sort $(CODEC_DOC_SECTIONS))" >> $@
746*fb1b10abSAndroid Build Coastguard Worker
747*fb1b10abSAndroid Build Coastguard Worker## Generate rtcd.h for all objects
748*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_DEPENDENCY_TRACKING),yes)
749*fb1b10abSAndroid Build Coastguard Worker$(OBJS-yes:.o=.d): $(RTCD)
750*fb1b10abSAndroid Build Coastguard Workerelse
751*fb1b10abSAndroid Build Coastguard Worker$(OBJS-yes): $(RTCD)
752*fb1b10abSAndroid Build Coastguard Workerendif
753*fb1b10abSAndroid Build Coastguard Worker
754*fb1b10abSAndroid Build Coastguard Worker## Update the global src list
755*fb1b10abSAndroid Build Coastguard WorkerSRCS += $(CODEC_SRCS) $(LIBVPX_TEST_SRCS) $(GTEST_SRCS)
756*fb1b10abSAndroid Build Coastguard WorkerSRCS += $(RC_INTERFACE_TEST_SRCS)
757*fb1b10abSAndroid Build Coastguard Worker
758*fb1b10abSAndroid Build Coastguard Worker##
759*fb1b10abSAndroid Build Coastguard Worker## vpxdec/vpxenc tests.
760*fb1b10abSAndroid Build Coastguard Worker##
761*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_UNIT_TESTS),yes)
762*fb1b10abSAndroid Build Coastguard WorkerTEST_BIN_PATH = .
763*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_MSVS),yes)
764*fb1b10abSAndroid Build Coastguard Worker# MSVC will build both Debug and Release configurations of tools in a
765*fb1b10abSAndroid Build Coastguard Worker# sub directory named for the current target. Assume the user wants to
766*fb1b10abSAndroid Build Coastguard Worker# run the Release tools, and assign TEST_BIN_PATH accordingly.
767*fb1b10abSAndroid Build Coastguard Worker# TODO(tomfinegan): Is this adequate for ARM?
768*fb1b10abSAndroid Build Coastguard Worker# TODO(tomfinegan): Support running the debug versions of tools?
769*fb1b10abSAndroid Build Coastguard WorkerTEST_BIN_PATH := $(addsuffix /$(TGT_OS:win64=x64)/Release, $(TEST_BIN_PATH))
770*fb1b10abSAndroid Build Coastguard Workerendif
771*fb1b10abSAndroid Build Coastguard Workerutiltest utiltest-no-data-check:
772*fb1b10abSAndroid Build Coastguard Worker	$(qexec)$(SRC_PATH_BARE)/test/vpxdec.sh \
773*fb1b10abSAndroid Build Coastguard Worker		--test-data-path "$(LIBVPX_TEST_DATA_PATH)" \
774*fb1b10abSAndroid Build Coastguard Worker		--bin-path $(TEST_BIN_PATH)
775*fb1b10abSAndroid Build Coastguard Worker	$(qexec)$(SRC_PATH_BARE)/test/vpxenc.sh \
776*fb1b10abSAndroid Build Coastguard Worker		--test-data-path "$(LIBVPX_TEST_DATA_PATH)" \
777*fb1b10abSAndroid Build Coastguard Worker		--bin-path $(TEST_BIN_PATH)
778*fb1b10abSAndroid Build Coastguard Workerutiltest: testdata
779*fb1b10abSAndroid Build Coastguard Workerelse
780*fb1b10abSAndroid Build Coastguard Workerutiltest utiltest-no-data-check:
781*fb1b10abSAndroid Build Coastguard Worker	@echo Unit tests must be enabled to make the utiltest target.
782*fb1b10abSAndroid Build Coastguard Workerendif
783*fb1b10abSAndroid Build Coastguard Worker
784*fb1b10abSAndroid Build Coastguard Worker##
785*fb1b10abSAndroid Build Coastguard Worker## Example tests.
786*fb1b10abSAndroid Build Coastguard Worker##
787*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_UNIT_TESTS),yes)
788*fb1b10abSAndroid Build Coastguard Worker# All non-MSVC targets output example targets in a sub dir named examples.
789*fb1b10abSAndroid Build Coastguard WorkerEXAMPLES_BIN_PATH = examples
790*fb1b10abSAndroid Build Coastguard Workerifeq ($(CONFIG_MSVS),yes)
791*fb1b10abSAndroid Build Coastguard Worker# MSVC will build both Debug and Release configurations of the examples in a
792*fb1b10abSAndroid Build Coastguard Worker# sub directory named for the current target. Assume the user wants to
793*fb1b10abSAndroid Build Coastguard Worker# run the Release tools, and assign EXAMPLES_BIN_PATH accordingly.
794*fb1b10abSAndroid Build Coastguard Worker# TODO(tomfinegan): Is this adequate for ARM?
795*fb1b10abSAndroid Build Coastguard Worker# TODO(tomfinegan): Support running the debug versions of tools?
796*fb1b10abSAndroid Build Coastguard WorkerEXAMPLES_BIN_PATH := $(TGT_OS:win64=x64)/Release
797*fb1b10abSAndroid Build Coastguard Workerendif
798*fb1b10abSAndroid Build Coastguard Workerexampletest exampletest-no-data-check: examples
799*fb1b10abSAndroid Build Coastguard Worker	$(qexec)$(SRC_PATH_BARE)/test/examples.sh \
800*fb1b10abSAndroid Build Coastguard Worker		--test-data-path "$(LIBVPX_TEST_DATA_PATH)" \
801*fb1b10abSAndroid Build Coastguard Worker		--bin-path $(EXAMPLES_BIN_PATH)
802*fb1b10abSAndroid Build Coastguard Workerexampletest: testdata
803*fb1b10abSAndroid Build Coastguard Workerelse
804*fb1b10abSAndroid Build Coastguard Workerexampletest exampletest-no-data-check:
805*fb1b10abSAndroid Build Coastguard Worker	@echo Unit tests must be enabled to make the exampletest target.
806*fb1b10abSAndroid Build Coastguard Workerendif
807