1233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 2233d2500723e5594f3e7c70896ffeeef32b9c950ywan## Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 4233d2500723e5594f3e7c70896ffeeef32b9c950ywan## Use of this source code is governed by a BSD-style license 5233d2500723e5594f3e7c70896ffeeef32b9c950ywan## that can be found in the LICENSE file in the root of the source 6233d2500723e5594f3e7c70896ffeeef32b9c950ywan## tree. An additional intellectual property rights grant can be found 7233d2500723e5594f3e7c70896ffeeef32b9c950ywan## in the file PATENTS. All contributing project authors may 8233d2500723e5594f3e7c70896ffeeef32b9c950ywan## be found in the AUTHORS file in the root of the source tree. 9233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 10233d2500723e5594f3e7c70896ffeeef32b9c950ywan 11233d2500723e5594f3e7c70896ffeeef32b9c950ywanLIBYUV_SRCS += third_party/libyuv/include/libyuv/basic_types.h \ 12233d2500723e5594f3e7c70896ffeeef32b9c950ywan third_party/libyuv/include/libyuv/cpu_id.h \ 13233d2500723e5594f3e7c70896ffeeef32b9c950ywan third_party/libyuv/include/libyuv/scale.h \ 14233d2500723e5594f3e7c70896ffeeef32b9c950ywan third_party/libyuv/source/row.h \ 15233d2500723e5594f3e7c70896ffeeef32b9c950ywan third_party/libyuv/source/scale.c \ 16233d2500723e5594f3e7c70896ffeeef32b9c950ywan third_party/libyuv/source/cpu_id.c 17233d2500723e5594f3e7c70896ffeeef32b9c950ywan 18233d2500723e5594f3e7c70896ffeeef32b9c950ywan# List of examples to build. UTILS are tools meant for distribution 19233d2500723e5594f3e7c70896ffeeef32b9c950ywan# while EXAMPLES demonstrate specific portions of the API. 20233d2500723e5594f3e7c70896ffeeef32b9c950ywanUTILS-$(CONFIG_DECODERS) += vpxdec.c 21233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxdec.SRCS += md5_utils.c md5_utils.h 22233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxdec.SRCS += vpx_ports/mem_ops.h 23233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxdec.SRCS += vpx_ports/mem_ops_aligned.h 24233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxdec.SRCS += vpx_ports/vpx_timer.h 25233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxdec.SRCS += vpx/vpx_integer.h 26233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxdec.SRCS += args.c args.h 27233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxdec.SRCS += ivfdec.c ivfdec.h 28233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxdec.SRCS += tools_common.c tools_common.h 29233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxdec.SRCS += y4menc.c y4menc.h 30233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxdec.SRCS += $(LIBYUV_SRCS) 31233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(CONFIG_WEBM_IO),yes) 32233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpxdec.SRCS += third_party/nestegg/halloc/halloc.h 33233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpxdec.SRCS += third_party/nestegg/halloc/src/align.h 34233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpxdec.SRCS += third_party/nestegg/halloc/src/halloc.c 35233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpxdec.SRCS += third_party/nestegg/halloc/src/hlist.h 36233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpxdec.SRCS += third_party/nestegg/halloc/src/macros.h 37233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpxdec.SRCS += third_party/nestegg/include/nestegg/nestegg.h 38233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpxdec.SRCS += third_party/nestegg/src/nestegg.c 39233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpxdec.SRCS += webmdec.c webmdec.h 40233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 41233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxdec.GUID = BA5FE66F-38DD-E034-F542-B1578C5FB950 42233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxdec.DESCRIPTION = Full featured decoder 43233d2500723e5594f3e7c70896ffeeef32b9c950ywanUTILS-$(CONFIG_ENCODERS) += vpxenc.c 44233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.SRCS += args.c args.h y4minput.c y4minput.h vpxenc.h 45233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.SRCS += ivfdec.c ivfdec.h 46233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.SRCS += ivfenc.c ivfenc.h 47233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.SRCS += rate_hist.c rate_hist.h 48233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.SRCS += tools_common.c tools_common.h 49233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.SRCS += warnings.c warnings.h 50233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.SRCS += vpx_ports/mem_ops.h 51233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.SRCS += vpx_ports/mem_ops_aligned.h 52233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.SRCS += vpx_ports/vpx_timer.h 53233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.SRCS += vpxstats.c vpxstats.h 54233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.SRCS += $(LIBYUV_SRCS) 55233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(CONFIG_WEBM_IO),yes) 56233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpxenc.SRCS += third_party/libmkv/EbmlIDs.h 57233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpxenc.SRCS += third_party/libmkv/EbmlWriter.c 58233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpxenc.SRCS += third_party/libmkv/EbmlWriter.h 59233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpxenc.SRCS += webmenc.c webmenc.h 60233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 61233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.GUID = 548DEC74-7A15-4B2B-AFC3-AA102E7C25C1 62233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpxenc.DESCRIPTION = Full featured encoder 63233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_VP9_ENCODER) += vp9_spatial_scalable_encoder.c 64233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp9_spatial_scalable_encoder.SRCS += args.c args.h 65233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp9_spatial_scalable_encoder.SRCS += ivfenc.c ivfenc.h 66233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp9_spatial_scalable_encoder.SRCS += tools_common.c tools_common.h 67233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp9_spatial_scalable_encoder.SRCS += video_common.h 68233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp9_spatial_scalable_encoder.SRCS += video_writer.h video_writer.c 69233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp9_spatial_scalable_encoder.SRCS += vpxstats.c vpxstats.h 70233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp9_spatial_scalable_encoder.GUID = 4A38598D-627D-4505-9C7B-D4020C84100D 71233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp9_spatial_scalable_encoder.DESCRIPTION = Spatial Scalable Encoder 72233d2500723e5594f3e7c70896ffeeef32b9c950ywan 73233d2500723e5594f3e7c70896ffeeef32b9c950ywanifneq ($(CONFIG_SHARED),yes) 74233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_VP9_ENCODER) += resize_util.c 75233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 76233d2500723e5594f3e7c70896ffeeef32b9c950ywan 77233d2500723e5594f3e7c70896ffeeef32b9c950ywan# XMA example disabled for now, not used in VP8 78233d2500723e5594f3e7c70896ffeeef32b9c950ywan#UTILS-$(CONFIG_DECODERS) += example_xma.c 79233d2500723e5594f3e7c70896ffeeef32b9c950ywan#example_xma.GUID = A955FC4A-73F1-44F7-135E-30D84D32F022 80233d2500723e5594f3e7c70896ffeeef32b9c950ywan#example_xma.DESCRIPTION = External Memory Allocation mode usage 81233d2500723e5594f3e7c70896ffeeef32b9c950ywan 82233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_ENCODERS) += vpx_temporal_scalable_patterns.c 83233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpx_temporal_scalable_patterns.SRCS += ivfenc.c ivfenc.h 84233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpx_temporal_scalable_patterns.SRCS += tools_common.c tools_common.h 85233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpx_temporal_scalable_patterns.SRCS += video_common.h 86233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpx_temporal_scalable_patterns.SRCS += video_writer.h video_writer.c 87233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpx_temporal_scalable_patterns.GUID = B18C08F2-A439-4502-A78E-849BE3D60947 88233d2500723e5594f3e7c70896ffeeef32b9c950ywanvpx_temporal_scalable_patterns.DESCRIPTION = Temporal Scalability Encoder 89233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_VP8_DECODER) += simple_decoder.c 90233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_decoder.GUID = D3BBF1E9-2427-450D-BBFF-B2843C1D44CC 91233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_decoder.SRCS += ivfdec.h ivfdec.c 92233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_decoder.SRCS += tools_common.h tools_common.c 93233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_decoder.SRCS += video_common.h 94233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_decoder.SRCS += video_reader.h video_reader.c 95233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_decoder.SRCS += vpx_ports/mem_ops.h 96233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_decoder.SRCS += vpx_ports/mem_ops_aligned.h 97233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_decoder.DESCRIPTION = Simplified decoder loop 98233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_VP8_DECODER) += postproc.c 99233d2500723e5594f3e7c70896ffeeef32b9c950ywanpostproc.SRCS += ivfdec.h ivfdec.c 100233d2500723e5594f3e7c70896ffeeef32b9c950ywanpostproc.SRCS += tools_common.h tools_common.c 101233d2500723e5594f3e7c70896ffeeef32b9c950ywanpostproc.SRCS += video_common.h 102233d2500723e5594f3e7c70896ffeeef32b9c950ywanpostproc.SRCS += video_reader.h video_reader.c 103233d2500723e5594f3e7c70896ffeeef32b9c950ywanpostproc.SRCS += vpx_ports/mem_ops.h 104233d2500723e5594f3e7c70896ffeeef32b9c950ywanpostproc.SRCS += vpx_ports/mem_ops_aligned.h 105233d2500723e5594f3e7c70896ffeeef32b9c950ywanpostproc.GUID = 65E33355-F35E-4088-884D-3FD4905881D7 106233d2500723e5594f3e7c70896ffeeef32b9c950ywanpostproc.DESCRIPTION = Decoder postprocessor control 107233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_VP8_DECODER) += decode_to_md5.c 108233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_to_md5.SRCS += md5_utils.h md5_utils.c 109233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_to_md5.SRCS += ivfdec.h ivfdec.c 110233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_to_md5.SRCS += tools_common.h tools_common.c 111233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_to_md5.SRCS += video_common.h 112233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_to_md5.SRCS += video_reader.h video_reader.c 113233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_to_md5.SRCS += vpx_ports/mem_ops.h 114233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_to_md5.SRCS += vpx_ports/mem_ops_aligned.h 115233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_to_md5.GUID = 59120B9B-2735-4BFE-B022-146CA340FE42 116233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_to_md5.DESCRIPTION = Frame by frame MD5 checksum 117233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_VP8_ENCODER) += simple_encoder.c 118233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_encoder.SRCS += ivfenc.h ivfenc.c 119233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_encoder.SRCS += tools_common.h tools_common.c 120233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_encoder.SRCS += video_common.h 121233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_encoder.SRCS += video_writer.h video_writer.c 122233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_encoder.GUID = 4607D299-8A71-4D2C-9B1D-071899B6FBFD 123233d2500723e5594f3e7c70896ffeeef32b9c950ywansimple_encoder.DESCRIPTION = Simplified encoder loop 124233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_VP8_ENCODER) += twopass_encoder.c 125233d2500723e5594f3e7c70896ffeeef32b9c950ywantwopass_encoder.SRCS += ivfenc.h ivfenc.c 126233d2500723e5594f3e7c70896ffeeef32b9c950ywantwopass_encoder.SRCS += tools_common.h tools_common.c 127233d2500723e5594f3e7c70896ffeeef32b9c950ywantwopass_encoder.SRCS += video_common.h 128233d2500723e5594f3e7c70896ffeeef32b9c950ywantwopass_encoder.SRCS += video_writer.h video_writer.c 129233d2500723e5594f3e7c70896ffeeef32b9c950ywantwopass_encoder.GUID = 73494FA6-4AF9-4763-8FBB-265C92402FD8 130233d2500723e5594f3e7c70896ffeeef32b9c950ywantwopass_encoder.DESCRIPTION = Two-pass encoder loop 131233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(CONFIG_DECODERS),yes) 132233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_VP8_ENCODER) += decode_with_drops.c 133233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_with_drops.SRCS += ivfdec.h ivfdec.c 134233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_with_drops.SRCS += tools_common.h tools_common.c 135233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_with_drops.SRCS += video_common.h 136233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_with_drops.SRCS += video_reader.h video_reader.c 137233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_with_drops.SRCS += vpx_ports/mem_ops.h 138233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_with_drops.SRCS += vpx_ports/mem_ops_aligned.h 139233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 140233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_with_drops.GUID = CE5C53C4-8DDA-438A-86ED-0DDD3CDB8D26 141233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_with_drops.DESCRIPTION = Drops frames while decoding 142233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(CONFIG_VP8_DECODER),yes) 143233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_ERROR_CONCEALMENT) += decode_with_partial_drops.c 144233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 145233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_with_partial_drops.GUID = 61C2D026-5754-46AC-916F-1343ECC5537E 146233d2500723e5594f3e7c70896ffeeef32b9c950ywandecode_with_partial_drops.DESCRIPTION = Drops parts of frames while decoding 147233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_ENCODERS) += set_maps.c 148233d2500723e5594f3e7c70896ffeeef32b9c950ywanset_maps.SRCS += ivfenc.h ivfenc.c 149233d2500723e5594f3e7c70896ffeeef32b9c950ywanset_maps.SRCS += tools_common.h tools_common.c 150233d2500723e5594f3e7c70896ffeeef32b9c950ywanset_maps.SRCS += video_common.h 151233d2500723e5594f3e7c70896ffeeef32b9c950ywanset_maps.SRCS += video_writer.h video_writer.c 152233d2500723e5594f3e7c70896ffeeef32b9c950ywanset_maps.GUID = ECB2D24D-98B8-4015-A465-A4AF3DCC145F 153233d2500723e5594f3e7c70896ffeeef32b9c950ywanset_maps.DESCRIPTION = Set active and ROI maps 154233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_VP8_ENCODER) += vp8cx_set_ref.c 155233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp8cx_set_ref.SRCS += ivfenc.h ivfenc.c 156233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp8cx_set_ref.SRCS += tools_common.h tools_common.c 157233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp8cx_set_ref.SRCS += video_common.h 158233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp8cx_set_ref.SRCS += video_writer.h video_writer.c 159233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp8cx_set_ref.GUID = C5E31F7F-96F6-48BD-BD3E-10EBF6E8057A 160233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp8cx_set_ref.DESCRIPTION = VP8 set encoder reference frame 161233d2500723e5594f3e7c70896ffeeef32b9c950ywan 162233d2500723e5594f3e7c70896ffeeef32b9c950ywan 163233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(CONFIG_MULTI_RES_ENCODING),yes) 164233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES-$(CONFIG_VP8_DECODER) += vp8_multi_resolution_encoder.c 165233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp8_multi_resolution_encoder.SRCS += $(LIBYUV_SRCS) 166233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp8_multi_resolution_encoder.GUID = 04f8738e-63c8-423b-90fa-7c2703a374de 167233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp8_multi_resolution_encoder.DESCRIPTION = VP8 Multiple-resolution Encoding 168233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 169233d2500723e5594f3e7c70896ffeeef32b9c950ywan 170233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Handle extra library flags depending on codec configuration 171233d2500723e5594f3e7c70896ffeeef32b9c950ywan 172233d2500723e5594f3e7c70896ffeeef32b9c950ywan# We should not link to math library (libm) on RVCT 173233d2500723e5594f3e7c70896ffeeef32b9c950ywan# when building for bare-metal targets 174233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(CONFIG_OS_SUPPORT), yes) 175233d2500723e5594f3e7c70896ffeeef32b9c950ywanCODEC_EXTRA_LIBS-$(CONFIG_VP8) += m 176233d2500723e5594f3e7c70896ffeeef32b9c950ywanCODEC_EXTRA_LIBS-$(CONFIG_VP9) += m 177233d2500723e5594f3e7c70896ffeeef32b9c950ywanelse 178233d2500723e5594f3e7c70896ffeeef32b9c950ywan ifeq ($(CONFIG_GCC), yes) 179233d2500723e5594f3e7c70896ffeeef32b9c950ywan CODEC_EXTRA_LIBS-$(CONFIG_VP8) += m 180233d2500723e5594f3e7c70896ffeeef32b9c950ywan CODEC_EXTRA_LIBS-$(CONFIG_VP9) += m 181233d2500723e5594f3e7c70896ffeeef32b9c950ywan endif 182233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 183233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 184233d2500723e5594f3e7c70896ffeeef32b9c950ywan# End of specified files. The rest of the build rules should happen 185233d2500723e5594f3e7c70896ffeeef32b9c950ywan# automagically from here. 186233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 187233d2500723e5594f3e7c70896ffeeef32b9c950ywan 188233d2500723e5594f3e7c70896ffeeef32b9c950ywan 189233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Examples need different flags based on whether we're building 190233d2500723e5594f3e7c70896ffeeef32b9c950ywan# from an installed tree or a version controlled tree. Determine 191233d2500723e5594f3e7c70896ffeeef32b9c950ywan# the proper paths. 192233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(HAVE_ALT_TREE_LAYOUT),yes) 193233d2500723e5594f3e7c70896ffeeef32b9c950ywan LIB_PATH := $(SRC_PATH_BARE)/../lib 194233d2500723e5594f3e7c70896ffeeef32b9c950ywan INC_PATH := $(SRC_PATH_BARE)/../include 195233d2500723e5594f3e7c70896ffeeef32b9c950ywanelse 196233d2500723e5594f3e7c70896ffeeef32b9c950ywan LIB_PATH-yes += $(if $(BUILD_PFX),$(BUILD_PFX),.) 197233d2500723e5594f3e7c70896ffeeef32b9c950ywan INC_PATH-$(CONFIG_VP8_DECODER) += $(SRC_PATH_BARE)/vp8 198233d2500723e5594f3e7c70896ffeeef32b9c950ywan INC_PATH-$(CONFIG_VP8_ENCODER) += $(SRC_PATH_BARE)/vp8 199233d2500723e5594f3e7c70896ffeeef32b9c950ywan INC_PATH-$(CONFIG_VP9_DECODER) += $(SRC_PATH_BARE)/vp9 200233d2500723e5594f3e7c70896ffeeef32b9c950ywan INC_PATH-$(CONFIG_VP9_ENCODER) += $(SRC_PATH_BARE)/vp9 201233d2500723e5594f3e7c70896ffeeef32b9c950ywan LIB_PATH := $(call enabled,LIB_PATH) 202233d2500723e5594f3e7c70896ffeeef32b9c950ywan INC_PATH := $(call enabled,INC_PATH) 203233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 204233d2500723e5594f3e7c70896ffeeef32b9c950ywanINTERNAL_CFLAGS = $(addprefix -I,$(INC_PATH)) 205233d2500723e5594f3e7c70896ffeeef32b9c950ywanINTERNAL_LDFLAGS += $(addprefix -L,$(LIB_PATH)) 206233d2500723e5594f3e7c70896ffeeef32b9c950ywan 207233d2500723e5594f3e7c70896ffeeef32b9c950ywan 208233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Expand list of selected examples to build (as specified above) 209233d2500723e5594f3e7c70896ffeeef32b9c950ywanUTILS = $(call enabled,UTILS) 210233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXAMPLES = $(addprefix examples/,$(call enabled,EXAMPLES)) 211233d2500723e5594f3e7c70896ffeeef32b9c950ywanALL_EXAMPLES = $(UTILS) $(EXAMPLES) 212233d2500723e5594f3e7c70896ffeeef32b9c950ywanUTIL_SRCS = $(foreach ex,$(UTILS),$($(ex:.c=).SRCS)) 213233d2500723e5594f3e7c70896ffeeef32b9c950ywanALL_SRCS = $(foreach ex,$(ALL_EXAMPLES),$($(notdir $(ex:.c=)).SRCS)) 214233d2500723e5594f3e7c70896ffeeef32b9c950ywanCODEC_EXTRA_LIBS=$(sort $(call enabled,CODEC_EXTRA_LIBS)) 215233d2500723e5594f3e7c70896ffeeef32b9c950ywan 216233d2500723e5594f3e7c70896ffeeef32b9c950ywan 217233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Expand all example sources into a variable containing all sources 218233d2500723e5594f3e7c70896ffeeef32b9c950ywan# for that example (not just them main one specified in UTILS/EXAMPLES) 219233d2500723e5594f3e7c70896ffeeef32b9c950ywan# and add this file to the list (for MSVS workspace generation) 220233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(foreach ex,$(ALL_EXAMPLES),$(eval $(notdir $(ex:.c=)).SRCS += $(ex) examples.mk)) 221233d2500723e5594f3e7c70896ffeeef32b9c950ywan 222233d2500723e5594f3e7c70896ffeeef32b9c950ywan 223233d2500723e5594f3e7c70896ffeeef32b9c950ywan# If this is a universal (fat) binary, then all the subarchitectures have 224233d2500723e5594f3e7c70896ffeeef32b9c950ywan# already been built and our job is to stitch them together. The 225233d2500723e5594f3e7c70896ffeeef32b9c950ywan# BUILD_OBJS variable indicates whether we should be building 226233d2500723e5594f3e7c70896ffeeef32b9c950ywan# (compiling, linking) the library. The LIPO_OBJS variable indicates 227233d2500723e5594f3e7c70896ffeeef32b9c950ywan# that we're stitching. 228233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(eval $(if $(filter universal%,$(TOOLCHAIN)),LIPO_OBJS,BUILD_OBJS):=yes) 229233d2500723e5594f3e7c70896ffeeef32b9c950ywan 230233d2500723e5594f3e7c70896ffeeef32b9c950ywan 231233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Create build/install dependencies for all examples. The common case 232233d2500723e5594f3e7c70896ffeeef32b9c950ywan# is handled here. The MSVS case is handled below. 233233d2500723e5594f3e7c70896ffeeef32b9c950ywanNOT_MSVS = $(if $(CONFIG_MSVS),,yes) 234233d2500723e5594f3e7c70896ffeeef32b9c950ywanDIST-BINS-$(NOT_MSVS) += $(addprefix bin/,$(ALL_EXAMPLES:.c=$(EXE_SFX))) 235233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-BINS-$(NOT_MSVS) += $(addprefix bin/,$(UTILS:.c=$(EXE_SFX))) 236233d2500723e5594f3e7c70896ffeeef32b9c950ywanDIST-SRCS-yes += $(ALL_SRCS) 237233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-SRCS-yes += $(UTIL_SRCS) 238233d2500723e5594f3e7c70896ffeeef32b9c950ywanOBJS-$(NOT_MSVS) += $(if $(BUILD_OBJS),$(call objs,$(ALL_SRCS))) 239233d2500723e5594f3e7c70896ffeeef32b9c950ywanBINS-$(NOT_MSVS) += $(addprefix $(BUILD_PFX),$(ALL_EXAMPLES:.c=$(EXE_SFX))) 240233d2500723e5594f3e7c70896ffeeef32b9c950ywan 241233d2500723e5594f3e7c70896ffeeef32b9c950ywan 242233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Instantiate linker template for all examples. 243233d2500723e5594f3e7c70896ffeeef32b9c950ywanCODEC_LIB=$(if $(CONFIG_DEBUG_LIBS),vpx_g,vpx) 244233d2500723e5594f3e7c70896ffeeef32b9c950ywanSHARED_LIB_SUF=$(if $(filter darwin%,$(TGT_OS)),.dylib,.so) 245233d2500723e5594f3e7c70896ffeeef32b9c950ywanCODEC_LIB_SUF=$(if $(CONFIG_SHARED),$(SHARED_LIB_SUF),.a) 246233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(foreach bin,$(BINS-yes),\ 247233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(BUILD_OBJS),$(eval $(bin):\ 248233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(LIB_PATH)/lib$(CODEC_LIB)$(CODEC_LIB_SUF)))\ 249233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(BUILD_OBJS),$(eval $(call linker_template,$(bin),\ 250233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(call objs,$($(notdir $(bin:$(EXE_SFX)=)).SRCS)) \ 251233d2500723e5594f3e7c70896ffeeef32b9c950ywan -l$(CODEC_LIB) $(addprefix -l,$(CODEC_EXTRA_LIBS))\ 252233d2500723e5594f3e7c70896ffeeef32b9c950ywan )))\ 253233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(LIPO_OBJS),$(eval $(call lipo_bin_template,$(bin))))\ 254233d2500723e5594f3e7c70896ffeeef32b9c950ywan ) 255233d2500723e5594f3e7c70896ffeeef32b9c950ywan 256233d2500723e5594f3e7c70896ffeeef32b9c950ywan 257233d2500723e5594f3e7c70896ffeeef32b9c950ywan# The following pairs define a mapping of locations in the distribution 258233d2500723e5594f3e7c70896ffeeef32b9c950ywan# tree to locations in the source/build trees. 259233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL_MAPS += src/%.c %.c 260233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL_MAPS += src/% $(SRC_PATH_BARE)/% 261233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL_MAPS += bin/% % 262233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL_MAPS += % % 263233d2500723e5594f3e7c70896ffeeef32b9c950ywan 264233d2500723e5594f3e7c70896ffeeef32b9c950ywan 265233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Set up additional MSVS environment 266233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(CONFIG_MSVS),yes) 267233d2500723e5594f3e7c70896ffeeef32b9c950ywanCODEC_LIB=$(if $(CONFIG_SHARED),vpx,$(if $(CONFIG_STATIC_MSVCRT),vpxmt,vpxmd)) 268233d2500723e5594f3e7c70896ffeeef32b9c950ywan# This variable uses deferred expansion intentionally, since the results of 269233d2500723e5594f3e7c70896ffeeef32b9c950ywan# $(wildcard) may change during the course of the Make. 270233d2500723e5594f3e7c70896ffeeef32b9c950ywanVS_PLATFORMS = $(foreach d,$(wildcard */Release/$(CODEC_LIB).lib),$(word 1,$(subst /, ,$(d)))) 271233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL_MAPS += $(foreach p,$(VS_PLATFORMS),bin/$(p)/% $(p)/Release/%) 272233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 273233d2500723e5594f3e7c70896ffeeef32b9c950ywan 274233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Build Visual Studio Projects. We use a template here to instantiate 275233d2500723e5594f3e7c70896ffeeef32b9c950ywan# explicit rules rather than using an implicit rule because we want to 276233d2500723e5594f3e7c70896ffeeef32b9c950ywan# leverage make's VPATH searching rather than specifying the paths on 277233d2500723e5594f3e7c70896ffeeef32b9c950ywan# each file in ALL_EXAMPLES. This has the unfortunate side effect that 278233d2500723e5594f3e7c70896ffeeef32b9c950ywan# touching the source files trigger a rebuild of the project files 279233d2500723e5594f3e7c70896ffeeef32b9c950ywan# even though there is no real dependency there (the dependency is on 280233d2500723e5594f3e7c70896ffeeef32b9c950ywan# the makefiles). We may want to revisit this. 281233d2500723e5594f3e7c70896ffeeef32b9c950ywandefine vcproj_template 282233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(1): $($(1:.$(VCPROJ_SFX)=).SRCS) vpx.$(VCPROJ_SFX) 283233d2500723e5594f3e7c70896ffeeef32b9c950ywan @echo " [vcproj] $$@" 284233d2500723e5594f3e7c70896ffeeef32b9c950ywan $$(GEN_VCPROJ)\ 285233d2500723e5594f3e7c70896ffeeef32b9c950ywan --exe\ 286233d2500723e5594f3e7c70896ffeeef32b9c950ywan --target=$$(TOOLCHAIN)\ 287233d2500723e5594f3e7c70896ffeeef32b9c950ywan --name=$$(@:.$(VCPROJ_SFX)=)\ 288233d2500723e5594f3e7c70896ffeeef32b9c950ywan --ver=$$(CONFIG_VS_VERSION)\ 289233d2500723e5594f3e7c70896ffeeef32b9c950ywan --proj-guid=$$($$(@:.$(VCPROJ_SFX)=).GUID)\ 290233d2500723e5594f3e7c70896ffeeef32b9c950ywan $$(if $$(CONFIG_STATIC_MSVCRT),--static-crt) \ 291233d2500723e5594f3e7c70896ffeeef32b9c950ywan --out=$$@ $$(INTERNAL_CFLAGS) $$(CFLAGS) \ 292233d2500723e5594f3e7c70896ffeeef32b9c950ywan $$(INTERNAL_LDFLAGS) $$(LDFLAGS) -l$$(CODEC_LIB) $$^ 293233d2500723e5594f3e7c70896ffeeef32b9c950ywanendef 294233d2500723e5594f3e7c70896ffeeef32b9c950ywanALL_EXAMPLES_BASENAME := $(notdir $(ALL_EXAMPLES)) 295233d2500723e5594f3e7c70896ffeeef32b9c950ywanPROJECTS-$(CONFIG_MSVS) += $(ALL_EXAMPLES_BASENAME:.c=.$(VCPROJ_SFX)) 296233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-BINS-$(CONFIG_MSVS) += $(foreach p,$(VS_PLATFORMS),\ 297233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(addprefix bin/$(p)/,$(ALL_EXAMPLES_BASENAME:.c=.exe))) 298233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(foreach proj,$(call enabled,PROJECTS),\ 299233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(eval $(call vcproj_template,$(proj)))) 300233d2500723e5594f3e7c70896ffeeef32b9c950ywan 301233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 302233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Documentation Rules 303233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 304233d2500723e5594f3e7c70896ffeeef32b9c950ywan%.dox: %.c 305233d2500723e5594f3e7c70896ffeeef32b9c950ywan @echo " [DOXY] $@" 306233d2500723e5594f3e7c70896ffeeef32b9c950ywan @echo "/*!\page example_$(@F:.dox=) $(@F:.dox=)" > $@ 307233d2500723e5594f3e7c70896ffeeef32b9c950ywan @echo " \includelineno $(<F)" >> $@ 308233d2500723e5594f3e7c70896ffeeef32b9c950ywan @echo "*/" >> $@ 309233d2500723e5594f3e7c70896ffeeef32b9c950ywan 310233d2500723e5594f3e7c70896ffeeef32b9c950ywansamples.dox: examples.mk 311233d2500723e5594f3e7c70896ffeeef32b9c950ywan @echo " [DOXY] $@" 312233d2500723e5594f3e7c70896ffeeef32b9c950ywan @echo "/*!\page samples Sample Code" > $@ 313233d2500723e5594f3e7c70896ffeeef32b9c950ywan @echo " This SDK includes a number of sample applications."\ 314233d2500723e5594f3e7c70896ffeeef32b9c950ywan "Each sample documents a feature of the SDK in both prose"\ 315233d2500723e5594f3e7c70896ffeeef32b9c950ywan "and the associated C code."\ 316233d2500723e5594f3e7c70896ffeeef32b9c950ywan "The following samples are included: ">>$@ 317233d2500723e5594f3e7c70896ffeeef32b9c950ywan @$(foreach ex,$(sort $(notdir $(EXAMPLES:.c=))),\ 318233d2500723e5594f3e7c70896ffeeef32b9c950ywan echo " - \subpage example_$(ex) $($(ex).DESCRIPTION)" >> $@;) 319233d2500723e5594f3e7c70896ffeeef32b9c950ywan @echo >> $@ 320233d2500723e5594f3e7c70896ffeeef32b9c950ywan @echo " In addition, the SDK contains a number of utilities."\ 321233d2500723e5594f3e7c70896ffeeef32b9c950ywan "Since these utilities are built upon the concepts described"\ 322233d2500723e5594f3e7c70896ffeeef32b9c950ywan "in the sample code listed above, they are not documented in"\ 323233d2500723e5594f3e7c70896ffeeef32b9c950ywan "pieces like the samples are. Their source is included here"\ 324233d2500723e5594f3e7c70896ffeeef32b9c950ywan "for reference. The following utilities are included:" >> $@ 325233d2500723e5594f3e7c70896ffeeef32b9c950ywan @$(foreach ex,$(sort $(UTILS:.c=)),\ 326233d2500723e5594f3e7c70896ffeeef32b9c950ywan echo " - \subpage example_$(ex) $($(ex).DESCRIPTION)" >> $@;) 327233d2500723e5594f3e7c70896ffeeef32b9c950ywan @echo "*/" >> $@ 328233d2500723e5594f3e7c70896ffeeef32b9c950ywan 329233d2500723e5594f3e7c70896ffeeef32b9c950ywanCLEAN-OBJS += examples.doxy samples.dox $(ALL_EXAMPLES:.c=.dox) 330233d2500723e5594f3e7c70896ffeeef32b9c950ywanDOCS-yes += examples.doxy samples.dox 331233d2500723e5594f3e7c70896ffeeef32b9c950ywanexamples.doxy: samples.dox $(ALL_EXAMPLES:.c=.dox) 332233d2500723e5594f3e7c70896ffeeef32b9c950ywan @echo "INPUT += $^" > $@ 333