190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber##
2f71323e297a928af368937089d3ed71239786f86Andreas Huber##  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber##
4f71323e297a928af368937089d3ed71239786f86Andreas Huber##  Use of this source code is governed by a BSD-style license
5f71323e297a928af368937089d3ed71239786f86Andreas Huber##  that can be found in the LICENSE file in the root of the source
6f71323e297a928af368937089d3ed71239786f86Andreas Huber##  tree. An additional intellectual property rights grant can be found
7f71323e297a928af368937089d3ed71239786f86Andreas Huber##  in the file PATENTS.  All contributing project authors may
8f71323e297a928af368937089d3ed71239786f86Andreas Huber##  be found in the AUTHORS file in the root of the source tree.
990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber##
1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
11ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangLIBYUV_SRCS +=  third_party/libyuv/include/libyuv/basic_types.h  \
12ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/include/libyuv/convert.h \
13ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/include/libyuv/convert_argb.h \
14ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/include/libyuv/convert_from.h \
15ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                third_party/libyuv/include/libyuv/cpu_id.h  \
16ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/include/libyuv/planar_functions.h  \
17ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/include/libyuv/rotate.h  \
18ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/include/libyuv/row.h  \
19ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                third_party/libyuv/include/libyuv/scale.h  \
20ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/include/libyuv/scale_row.h  \
21ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/cpu_id.cc \
22ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/planar_functions.cc \
23ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/row_any.cc \
24ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/row_common.cc \
25ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/row_mips.cc \
26ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/row_neon.cc \
27ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/row_neon64.cc \
28ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/row_posix.cc \
29ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/row_win.cc \
30ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/scale.cc \
31ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/scale_common.cc \
32ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/scale_mips.cc \
33ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/scale_neon.cc \
34ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/scale_posix.cc \
35ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                third_party/libyuv/source/scale_win.cc \
36ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
37ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBWEBM_MUXER_SRCS += third_party/libwebm/mkvmuxer.cpp \
38ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                      third_party/libwebm/mkvmuxerutil.cpp \
39ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                      third_party/libwebm/mkvwriter.cpp \
40ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                      third_party/libwebm/mkvmuxer.hpp \
41ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                      third_party/libwebm/mkvmuxertypes.hpp \
42ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                      third_party/libwebm/mkvmuxerutil.hpp \
43ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                      third_party/libwebm/mkvparser.hpp \
44ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                      third_party/libwebm/mkvwriter.hpp \
45ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                      third_party/libwebm/webmids.hpp
46ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian
47ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIBWEBM_PARSER_SRCS = third_party/libwebm/mkvparser.cpp \
48ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                      third_party/libwebm/mkvreader.cpp \
49ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                      third_party/libwebm/mkvparser.hpp \
50ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian                      third_party/libwebm/mkvreader.hpp
5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
522ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# List of examples to build. UTILS are tools meant for distribution
532ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# while EXAMPLES demonstrate specific portions of the API.
54538f6170b788de7408b06efc6613dc98579aa6a6Andreas HuberUTILS-$(CONFIG_DECODERS)    += vpxdec.c
55538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubervpxdec.SRCS                 += md5_utils.c md5_utils.h
562ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvpxdec.SRCS                 += vpx_ports/mem_ops.h
572ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvpxdec.SRCS                 += vpx_ports/mem_ops_aligned.h
58538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubervpxdec.SRCS                 += vpx_ports/vpx_timer.h
59538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubervpxdec.SRCS                 += vpx/vpx_integer.h
601b362b15af34006e6a11974088a46d42b903418eJohannvpxdec.SRCS                 += args.c args.h
612ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvpxdec.SRCS                 += ivfdec.c ivfdec.h
62538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubervpxdec.SRCS                 += tools_common.c tools_common.h
632ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvpxdec.SRCS                 += y4menc.c y4menc.h
64ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianifeq ($(CONFIG_LIBYUV),yes)
65ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vpxdec.SRCS                 += $(LIBYUV_SRCS)
66ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianendif
672ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianifeq ($(CONFIG_WEBM_IO),yes)
68ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vpxdec.SRCS                 += $(LIBWEBM_PARSER_SRCS)
69ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vpxdec.SRCS                 += webmdec.cc webmdec.h
702ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianendif
71538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubervpxdec.GUID                  = BA5FE66F-38DD-E034-F542-B1578C5FB950
72538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubervpxdec.DESCRIPTION           = Full featured decoder
73538f6170b788de7408b06efc6613dc98579aa6a6Andreas HuberUTILS-$(CONFIG_ENCODERS)    += vpxenc.c
742ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvpxenc.SRCS                 += args.c args.h y4minput.c y4minput.h vpxenc.h
752ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvpxenc.SRCS                 += ivfdec.c ivfdec.h
762ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvpxenc.SRCS                 += ivfenc.c ivfenc.h
772ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvpxenc.SRCS                 += rate_hist.c rate_hist.h
78538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubervpxenc.SRCS                 += tools_common.c tools_common.h
792ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvpxenc.SRCS                 += warnings.c warnings.h
801b362b15af34006e6a11974088a46d42b903418eJohannvpxenc.SRCS                 += vpx_ports/mem_ops.h
81538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubervpxenc.SRCS                 += vpx_ports/mem_ops_aligned.h
821b362b15af34006e6a11974088a46d42b903418eJohannvpxenc.SRCS                 += vpx_ports/vpx_timer.h
839b35249446b07f40ac5fcc3205f2c048616efacchkuangvpxenc.SRCS                 += vpxstats.c vpxstats.h
84ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianifeq ($(CONFIG_LIBYUV),yes)
85ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vpxenc.SRCS                 += $(LIBYUV_SRCS)
86ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianendif
872ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianifeq ($(CONFIG_WEBM_IO),yes)
88ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vpxenc.SRCS                 += $(LIBWEBM_MUXER_SRCS)
89ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vpxenc.SRCS                 += webmenc.cc webmenc.h
902ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianendif
91538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubervpxenc.GUID                  = 548DEC74-7A15-4B2B-AFC3-AA102E7C25C1
92538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubervpxenc.DESCRIPTION           = Full featured encoder
93ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianifeq ($(CONFIG_SPATIAL_SVC),yes)
94ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  EXAMPLES-$(CONFIG_VP9_ENCODER)      += vp9_spatial_svc_encoder.c
95ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vp9_spatial_svc_encoder.SRCS        += args.c args.h
96ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vp9_spatial_svc_encoder.SRCS        += ivfenc.c ivfenc.h
97ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vp9_spatial_svc_encoder.SRCS        += tools_common.c tools_common.h
98ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vp9_spatial_svc_encoder.SRCS        += video_common.h
99ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vp9_spatial_svc_encoder.SRCS        += video_writer.h video_writer.c
100ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vp9_spatial_svc_encoder.SRCS        += vpxstats.c vpxstats.h
101ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vp9_spatial_svc_encoder.GUID        = 4A38598D-627D-4505-9C7B-D4020C84100D
102ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian  vp9_spatial_svc_encoder.DESCRIPTION = VP9 Spatial SVC Encoder
103ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianendif
104538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber
1054fb68e5dd4e93c7599dc905d861de11ac39c5585hkuangifneq ($(CONFIG_SHARED),yes)
1062ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianEXAMPLES-$(CONFIG_VP9_ENCODER)    += resize_util.c
107538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huberendif
108f71323e297a928af368937089d3ed71239786f86Andreas Huber
109ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianEXAMPLES-$(CONFIG_ENCODERS)          += vpx_temporal_svc_encoder.c
110ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianvpx_temporal_svc_encoder.SRCS        += ivfenc.c ivfenc.h
111ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianvpx_temporal_svc_encoder.SRCS        += tools_common.c tools_common.h
112ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianvpx_temporal_svc_encoder.SRCS        += video_common.h
113ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianvpx_temporal_svc_encoder.SRCS        += video_writer.h video_writer.c
114ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianvpx_temporal_svc_encoder.GUID        = B18C08F2-A439-4502-A78E-849BE3D60947
115ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianvpx_temporal_svc_encoder.DESCRIPTION = Temporal SVC Encoder
1162ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianEXAMPLES-$(CONFIG_VP8_DECODER)     += simple_decoder.c
1172ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansimple_decoder.GUID                 = D3BBF1E9-2427-450D-BBFF-B2843C1D44CC
1182ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansimple_decoder.SRCS                += ivfdec.h ivfdec.c
1192ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansimple_decoder.SRCS                += tools_common.h tools_common.c
1202ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansimple_decoder.SRCS                += video_common.h
1212ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansimple_decoder.SRCS                += video_reader.h video_reader.c
1222ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansimple_decoder.SRCS                += vpx_ports/mem_ops.h
1232ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansimple_decoder.SRCS                += vpx_ports/mem_ops_aligned.h
1242ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansimple_decoder.DESCRIPTION          = Simplified decoder loop
1252ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianEXAMPLES-$(CONFIG_VP8_DECODER)     += postproc.c
1262ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianpostproc.SRCS                      += ivfdec.h ivfdec.c
1272ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianpostproc.SRCS                      += tools_common.h tools_common.c
1282ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianpostproc.SRCS                      += video_common.h
1292ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianpostproc.SRCS                      += video_reader.h video_reader.c
1302ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianpostproc.SRCS                      += vpx_ports/mem_ops.h
1312ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianpostproc.SRCS                      += vpx_ports/mem_ops_aligned.h
1322ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianpostproc.GUID                       = 65E33355-F35E-4088-884D-3FD4905881D7
1332ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianpostproc.DESCRIPTION                = Decoder postprocessor control
1342ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianEXAMPLES-$(CONFIG_VP8_DECODER)     += decode_to_md5.c
1352ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_to_md5.SRCS                 += md5_utils.h md5_utils.c
1362ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_to_md5.SRCS                 += ivfdec.h ivfdec.c
1372ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_to_md5.SRCS                 += tools_common.h tools_common.c
1382ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_to_md5.SRCS                 += video_common.h
1392ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_to_md5.SRCS                 += video_reader.h video_reader.c
1402ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_to_md5.SRCS                 += vpx_ports/mem_ops.h
1412ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_to_md5.SRCS                 += vpx_ports/mem_ops_aligned.h
1422ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_to_md5.GUID                  = 59120B9B-2735-4BFE-B022-146CA340FE42
1432ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_to_md5.DESCRIPTION           = Frame by frame MD5 checksum
1442ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianEXAMPLES-$(CONFIG_VP8_ENCODER)  += simple_encoder.c
1452ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansimple_encoder.SRCS             += ivfenc.h ivfenc.c
1462ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansimple_encoder.SRCS             += tools_common.h tools_common.c
1472ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansimple_encoder.SRCS             += video_common.h
1482ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniansimple_encoder.SRCS             += video_writer.h video_writer.c
14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersimple_encoder.GUID              = 4607D299-8A71-4D2C-9B1D-071899B6FBFD
15090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersimple_encoder.DESCRIPTION       = Simplified encoder loop
1512ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianEXAMPLES-$(CONFIG_VP8_ENCODER)  += twopass_encoder.c
1522ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniantwopass_encoder.SRCS            += ivfenc.h ivfenc.c
1532ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniantwopass_encoder.SRCS            += tools_common.h tools_common.c
1542ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniantwopass_encoder.SRCS            += video_common.h
1552ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniantwopass_encoder.SRCS            += video_writer.h video_writer.c
15690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertwopass_encoder.GUID             = 73494FA6-4AF9-4763-8FBB-265C92402FD8
15790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertwopass_encoder.DESCRIPTION      = Two-pass encoder loop
15890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberifeq ($(CONFIG_DECODERS),yes)
1592ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianEXAMPLES-$(CONFIG_VP8_ENCODER)  += decode_with_drops.c
1602ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_with_drops.SRCS          += ivfdec.h ivfdec.c
1612ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_with_drops.SRCS          += tools_common.h tools_common.c
1622ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_with_drops.SRCS          += video_common.h
1632ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_with_drops.SRCS          += video_reader.h video_reader.c
1642ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_with_drops.SRCS          += vpx_ports/mem_ops.h
1652ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniandecode_with_drops.SRCS          += vpx_ports/mem_ops_aligned.h
16690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberendif
16790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdecode_with_drops.GUID           = CE5C53C4-8DDA-438A-86ED-0DDD3CDB8D26
16890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdecode_with_drops.DESCRIPTION    = Drops frames while decoding
1692ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianEXAMPLES-$(CONFIG_ENCODERS)        += set_maps.c
1702ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianset_maps.SRCS                      += ivfenc.h ivfenc.c
1712ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianset_maps.SRCS                      += tools_common.h tools_common.c
1722ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianset_maps.SRCS                      += video_common.h
1732ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianset_maps.SRCS                      += video_writer.h video_writer.c
1742ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianset_maps.GUID                       = ECB2D24D-98B8-4015-A465-A4AF3DCC145F
1752ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianset_maps.DESCRIPTION                = Set active and ROI maps
1762ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianEXAMPLES-$(CONFIG_VP8_ENCODER)     += vp8cx_set_ref.c
1772ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvp8cx_set_ref.SRCS                 += ivfenc.h ivfenc.c
1782ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvp8cx_set_ref.SRCS                 += tools_common.h tools_common.c
1792ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvp8cx_set_ref.SRCS                 += video_common.h
1802ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvp8cx_set_ref.SRCS                 += video_writer.h video_writer.c
18190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervp8cx_set_ref.GUID                  = C5E31F7F-96F6-48BD-BD3E-10EBF6E8057A
18290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervp8cx_set_ref.DESCRIPTION           = VP8 set encoder reference frame
18390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1842ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian
1852ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianifeq ($(CONFIG_MULTI_RES_ENCODING),yes)
186ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianifeq ($(CONFIG_LIBYUV),yes)
187ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianEXAMPLES-$(CONFIG_VP8_ENCODER)          += vp8_multi_resolution_encoder.c
188ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianvp8_multi_resolution_encoder.SRCS       += tools_common.h tools_common.c
1892ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvp8_multi_resolution_encoder.SRCS       += $(LIBYUV_SRCS)
1902ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvp8_multi_resolution_encoder.GUID        = 04f8738e-63c8-423b-90fa-7c2703a374de
1912ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianvp8_multi_resolution_encoder.DESCRIPTION = VP8 Multiple-resolution Encoding
1922ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianendif
193ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianendif
19490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
19590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Handle extra library flags depending on codec configuration
19690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
19779f15823c34ae1e423108295e416213200bb280fAndreas Huber# We should not link to math library (libm) on RVCT
19879f15823c34ae1e423108295e416213200bb280fAndreas Huber# when building for bare-metal targets
19979f15823c34ae1e423108295e416213200bb280fAndreas Huberifeq ($(CONFIG_OS_SUPPORT), yes)
20079f15823c34ae1e423108295e416213200bb280fAndreas HuberCODEC_EXTRA_LIBS-$(CONFIG_VP8)         += m
201ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangCODEC_EXTRA_LIBS-$(CONFIG_VP9)         += m
20279f15823c34ae1e423108295e416213200bb280fAndreas Huberelse
20379f15823c34ae1e423108295e416213200bb280fAndreas Huber    ifeq ($(CONFIG_GCC), yes)
20479f15823c34ae1e423108295e416213200bb280fAndreas Huber    CODEC_EXTRA_LIBS-$(CONFIG_VP8)         += m
205ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    CODEC_EXTRA_LIBS-$(CONFIG_VP9)         += m
20679f15823c34ae1e423108295e416213200bb280fAndreas Huber    endif
20779f15823c34ae1e423108295e416213200bb280fAndreas Huberendif
20890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
20990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# End of specified files. The rest of the build rules should happen
21090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# automagically from here.
21190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
21290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
21390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
21490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Examples need different flags based on whether we're building
21590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# from an installed tree or a version controlled tree. Determine
21690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# the proper paths.
21790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberifeq ($(HAVE_ALT_TREE_LAYOUT),yes)
218ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian    LIB_PATH-yes := $(SRC_PATH_BARE)/../lib
219ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian    INC_PATH-yes := $(SRC_PATH_BARE)/../include
22090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberelse
22190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    LIB_PATH-yes                     += $(if $(BUILD_PFX),$(BUILD_PFX),.)
22290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    INC_PATH-$(CONFIG_VP8_DECODER)   += $(SRC_PATH_BARE)/vp8
22390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    INC_PATH-$(CONFIG_VP8_ENCODER)   += $(SRC_PATH_BARE)/vp8
224ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    INC_PATH-$(CONFIG_VP9_DECODER)   += $(SRC_PATH_BARE)/vp9
225ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    INC_PATH-$(CONFIG_VP9_ENCODER)   += $(SRC_PATH_BARE)/vp9
22690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberendif
227ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianINC_PATH-$(CONFIG_LIBYUV) += $(SRC_PATH_BARE)/third_party/libyuv/include
228ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIB_PATH := $(call enabled,LIB_PATH)
229ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianINC_PATH := $(call enabled,INC_PATH)
2301b362b15af34006e6a11974088a46d42b903418eJohannINTERNAL_CFLAGS = $(addprefix -I,$(INC_PATH))
2311b362b15af34006e6a11974088a46d42b903418eJohannINTERNAL_LDFLAGS += $(addprefix -L,$(LIB_PATH))
23290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
23390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
23490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Expand list of selected examples to build (as specified above)
23590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberUTILS           = $(call enabled,UTILS)
2362ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianEXAMPLES        = $(addprefix examples/,$(call enabled,EXAMPLES))
2372ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianALL_EXAMPLES    = $(UTILS) $(EXAMPLES)
238f71323e297a928af368937089d3ed71239786f86Andreas HuberUTIL_SRCS       = $(foreach ex,$(UTILS),$($(ex:.c=).SRCS))
2392ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianALL_SRCS        = $(foreach ex,$(ALL_EXAMPLES),$($(notdir $(ex:.c=)).SRCS))
24090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCODEC_EXTRA_LIBS=$(sort $(call enabled,CODEC_EXTRA_LIBS))
24190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
24290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
24390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Expand all example sources into a variable containing all sources
2442ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# for that example (not just them main one specified in UTILS/EXAMPLES)
24590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# and add this file to the list (for MSVS workspace generation)
2462ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian$(foreach ex,$(ALL_EXAMPLES),$(eval $(notdir $(ex:.c=)).SRCS += $(ex) examples.mk))
24790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
24890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
24990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# If this is a universal (fat) binary, then all the subarchitectures have
25090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# already been built and our job is to stitch them together. The
25190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# BUILD_OBJS variable indicates whether we should be building
25290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# (compiling, linking) the library. The LIPO_OBJS variable indicates
25390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# that we're stitching.
25490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$(eval $(if $(filter universal%,$(TOOLCHAIN)),LIPO_OBJS,BUILD_OBJS):=yes)
25590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
25690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
25790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Create build/install dependencies for all examples. The common case
25890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# is handled here. The MSVS case is handled below.
25990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberNOT_MSVS = $(if $(CONFIG_MSVS),,yes)
2601b362b15af34006e6a11974088a46d42b903418eJohannDIST-BINS-$(NOT_MSVS)      += $(addprefix bin/,$(ALL_EXAMPLES:.c=$(EXE_SFX)))
2611b362b15af34006e6a11974088a46d42b903418eJohannINSTALL-BINS-$(NOT_MSVS)   += $(addprefix bin/,$(UTILS:.c=$(EXE_SFX)))
262f71323e297a928af368937089d3ed71239786f86Andreas HuberDIST-SRCS-yes              += $(ALL_SRCS)
263f71323e297a928af368937089d3ed71239786f86Andreas HuberINSTALL-SRCS-yes           += $(UTIL_SRCS)
26490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberOBJS-$(NOT_MSVS)           += $(if $(BUILD_OBJS),$(call objs,$(ALL_SRCS)))
2651b362b15af34006e6a11974088a46d42b903418eJohannBINS-$(NOT_MSVS)           += $(addprefix $(BUILD_PFX),$(ALL_EXAMPLES:.c=$(EXE_SFX)))
26690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
26790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
26890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Instantiate linker template for all examples.
26990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCODEC_LIB=$(if $(CONFIG_DEBUG_LIBS),vpx_g,vpx)
270ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangSHARED_LIB_SUF=$(if $(filter darwin%,$(TGT_OS)),.dylib,.so)
271ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangCODEC_LIB_SUF=$(if $(CONFIG_SHARED),$(SHARED_LIB_SUF),.a)
27290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$(foreach bin,$(BINS-yes),\
2731b362b15af34006e6a11974088a46d42b903418eJohann    $(if $(BUILD_OBJS),$(eval $(bin):\
2741b362b15af34006e6a11974088a46d42b903418eJohann        $(LIB_PATH)/lib$(CODEC_LIB)$(CODEC_LIB_SUF)))\
27590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $(if $(BUILD_OBJS),$(eval $(call linker_template,$(bin),\
2761b362b15af34006e6a11974088a46d42b903418eJohann        $(call objs,$($(notdir $(bin:$(EXE_SFX)=)).SRCS)) \
27790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        -l$(CODEC_LIB) $(addprefix -l,$(CODEC_EXTRA_LIBS))\
27890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        )))\
27990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $(if $(LIPO_OBJS),$(eval $(call lipo_bin_template,$(bin))))\
28090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    )
28190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
28290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
28390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# The following pairs define a mapping of locations in the distribution
28490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# tree to locations in the source/build trees.
28590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberINSTALL_MAPS += src/%.c   %.c
28690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberINSTALL_MAPS += src/%     $(SRC_PATH_BARE)/%
28790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberINSTALL_MAPS += bin/%     %
28890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberINSTALL_MAPS += %         %
28990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
29090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
29190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Set up additional MSVS environment
29290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberifeq ($(CONFIG_MSVS),yes)
293ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangCODEC_LIB=$(if $(CONFIG_SHARED),vpx,$(if $(CONFIG_STATIC_MSVCRT),vpxmt,vpxmd))
29490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# This variable uses deferred expansion intentionally, since the results of
29590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# $(wildcard) may change during the course of the Make.
29690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberVS_PLATFORMS = $(foreach d,$(wildcard */Release/$(CODEC_LIB).lib),$(word 1,$(subst /, ,$(d))))
29790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberINSTALL_MAPS += $(foreach p,$(VS_PLATFORMS),bin/$(p)/%  $(p)/Release/%)
29890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberendif
29990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
30090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Build Visual Studio Projects. We use a template here to instantiate
30190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# explicit rules rather than using an implicit rule because we want to
30290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# leverage make's VPATH searching rather than specifying the paths on
30390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# each file in ALL_EXAMPLES. This has the unfortunate side effect that
30490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# touching the source files trigger a rebuild of the project files
30590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# even though there is no real dependency there (the dependency is on
30690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# the makefiles). We may want to revisit this.
30790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdefine vcproj_template
308ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang$(1): $($(1:.$(VCPROJ_SFX)=).SRCS) vpx.$(VCPROJ_SFX)
30990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber	@echo "    [vcproj] $$@"
310ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang	$$(GEN_VCPROJ)\
31190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            --exe\
31290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            --target=$$(TOOLCHAIN)\
313ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang            --name=$$(@:.$(VCPROJ_SFX)=)\
31490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            --ver=$$(CONFIG_VS_VERSION)\
315ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang            --proj-guid=$$($$(@:.$(VCPROJ_SFX)=).GUID)\
316ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian            --src-path-bare="$(SRC_PATH_BARE)" \
31790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            $$(if $$(CONFIG_STATIC_MSVCRT),--static-crt) \
3181b362b15af34006e6a11974088a46d42b903418eJohann            --out=$$@ $$(INTERNAL_CFLAGS) $$(CFLAGS) \
319ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang            $$(INTERNAL_LDFLAGS) $$(LDFLAGS) -l$$(CODEC_LIB) $$^
32090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberendef
3212ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianALL_EXAMPLES_BASENAME := $(notdir $(ALL_EXAMPLES))
3222ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianPROJECTS-$(CONFIG_MSVS) += $(ALL_EXAMPLES_BASENAME:.c=.$(VCPROJ_SFX))
32390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberINSTALL-BINS-$(CONFIG_MSVS) += $(foreach p,$(VS_PLATFORMS),\
3242ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian                               $(addprefix bin/$(p)/,$(ALL_EXAMPLES_BASENAME:.c=.exe)))
32590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber$(foreach proj,$(call enabled,PROJECTS),\
32690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    $(eval $(call vcproj_template,$(proj))))
32790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
32890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
32990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Documentation Rules
33090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
33190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber%.dox: %.c
33290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber	@echo "    [DOXY] $@"
3332ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian	@echo "/*!\page example_$(@F:.dox=) $(@F:.dox=)" > $@
3342ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian	@echo "   \includelineno $(<F)" >> $@
33590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber	@echo "*/" >> $@
33690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
33790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersamples.dox: examples.mk
33890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber	@echo "    [DOXY] $@"
33990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber	@echo "/*!\page samples Sample Code" > $@
34090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber	@echo "    This SDK includes a number of sample applications."\
3412ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian	      "Each sample documents a feature of the SDK in both prose"\
3422ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian	      "and the associated C code."\
3432ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian	      "The following samples are included: ">>$@
3442ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian	@$(foreach ex,$(sort $(notdir $(EXAMPLES:.c=))),\
34590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber	   echo "     - \subpage example_$(ex) $($(ex).DESCRIPTION)" >> $@;)
34690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber	@echo >> $@
34790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber	@echo "    In addition, the SDK contains a number of utilities."\
34890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber              "Since these utilities are built upon the concepts described"\
34990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber              "in the sample code listed above, they are not documented in"\
3502ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian              "pieces like the samples are. Their source is included here"\
35190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber              "for reference. The following utilities are included:" >> $@
3522ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian	@$(foreach ex,$(sort $(UTILS:.c=)),\
35390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber	   echo "     - \subpage example_$(ex) $($(ex).DESCRIPTION)" >> $@;)
35490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber	@echo "*/" >> $@
35590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
35690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCLEAN-OBJS += examples.doxy samples.dox $(ALL_EXAMPLES:.c=.dox)
3572ec72e65689c948e92b826ae1e867bf369e72f13Vignesh VenkatasubramanianDOCS-yes += examples.doxy samples.dox
35890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberexamples.doxy: samples.dox $(ALL_EXAMPLES:.c=.dox)
35990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber	@echo "INPUT += $^" > $@
360