~ubuntu-branches/ubuntu/vivid/gstreamer-vaapi/vivid

« back to all changes in this revision

Viewing changes to ext/libvpx/upstream/examples.mk

  • Committer: Package Import Robot
  • Author(s): Vincent Cheng
  • Date: 2014-08-06 23:56:00 UTC
  • mfrom: (0.1.4 sid) (1.1.3)
  • Revision ID: package-import@ubuntu.com-20140806235600-fg1kcmiu67k315q5
Tags: 0.5.9-2
* Remove spurious build-deps: libva-drm1, libavcodec-dev. (Closes: #757283)
* Drop Build-Depends-Indep and build docs unconditionally on all archs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
##
 
2
##  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
 
3
##
 
4
##  Use of this source code is governed by a BSD-style license
 
5
##  that can be found in the LICENSE file in the root of the source
 
6
##  tree. An additional intellectual property rights grant can be found
 
7
##  in the file PATENTS.  All contributing project authors may
 
8
##  be found in the AUTHORS file in the root of the source tree.
 
9
##
 
10
 
 
11
LIBYUV_SRCS +=  third_party/libyuv/include/libyuv/basic_types.h  \
 
12
                third_party/libyuv/include/libyuv/cpu_id.h  \
 
13
                third_party/libyuv/include/libyuv/scale.h  \
 
14
                third_party/libyuv/source/row.h \
 
15
                third_party/libyuv/source/scale.c  \
 
16
                third_party/libyuv/source/cpu_id.c
 
17
 
 
18
# List of examples to build. UTILS are files that are taken from the source
 
19
# tree directly, and GEN_EXAMPLES are files that are created from the
 
20
# examples folder.
 
21
UTILS-$(CONFIG_DECODERS)    += vpxdec.c
 
22
vpxdec.SRCS                 += md5_utils.c md5_utils.h
 
23
vpxdec.SRCS                 += vpx_ports/vpx_timer.h
 
24
vpxdec.SRCS                 += vpx/vpx_integer.h
 
25
vpxdec.SRCS                 += args.c args.h
 
26
vpxdec.SRCS                 += tools_common.c tools_common.h
 
27
vpxdec.SRCS                 += nestegg/halloc/halloc.h
 
28
vpxdec.SRCS                 += nestegg/halloc/src/align.h
 
29
vpxdec.SRCS                 += nestegg/halloc/src/halloc.c
 
30
vpxdec.SRCS                 += nestegg/halloc/src/hlist.h
 
31
vpxdec.SRCS                 += nestegg/halloc/src/macros.h
 
32
vpxdec.SRCS                 += nestegg/include/nestegg/nestegg.h
 
33
vpxdec.SRCS                 += nestegg/src/nestegg.c
 
34
vpxdec.SRCS                 += $(LIBYUV_SRCS)
 
35
vpxdec.GUID                  = BA5FE66F-38DD-E034-F542-B1578C5FB950
 
36
vpxdec.DESCRIPTION           = Full featured decoder
 
37
UTILS-$(CONFIG_ENCODERS)    += vpxenc.c
 
38
vpxenc.SRCS                 += args.c args.h y4minput.c y4minput.h
 
39
vpxenc.SRCS                 += tools_common.c tools_common.h
 
40
vpxenc.SRCS                 += webmenc.c webmenc.h
 
41
vpxenc.SRCS                 += vpx_ports/mem_ops.h
 
42
vpxenc.SRCS                 += vpx_ports/mem_ops_aligned.h
 
43
vpxenc.SRCS                 += vpx_ports/vpx_timer.h
 
44
vpxenc.SRCS                 += vpxstats.c vpxstats.h
 
45
vpxenc.SRCS                 += third_party/libmkv/EbmlIDs.h
 
46
vpxenc.SRCS                 += third_party/libmkv/EbmlWriter.c
 
47
vpxenc.SRCS                 += third_party/libmkv/EbmlWriter.h
 
48
vpxenc.SRCS                 += $(LIBYUV_SRCS)
 
49
vpxenc.GUID                  = 548DEC74-7A15-4B2B-AFC3-AA102E7C25C1
 
50
vpxenc.DESCRIPTION           = Full featured encoder
 
51
UTILS-$(CONFIG_VP8_ENCODER)    += vp8_scalable_patterns.c
 
52
vp8_scalable_patterns.GUID   = 0D6A210B-F482-4D6F-8570-4A9C01ACC88C
 
53
vp8_scalable_patterns.DESCRIPTION = Temporal Scalability Encoder
 
54
UTILS-$(CONFIG_VP9_ENCODER)    += vp9_spatial_scalable_encoder.c
 
55
vp9_spatial_scalable_encoder.SRCS += args.c args.h
 
56
vp9_spatial_scalable_encoder.GUID   = 4A38598D-627D-4505-9C7B-D4020C84100D
 
57
vp9_spatial_scalable_encoder.DESCRIPTION = Spatial Scalable Encoder
 
58
 
 
59
# Clean up old ivfenc, ivfdec binaries.
 
60
ifeq ($(CONFIG_MSVS),yes)
 
61
CLEAN-OBJS += $(foreach p,$(VS_PLATFORMS),$(p)/Release/ivfenc.exe)
 
62
CLEAN-OBJS += $(foreach p,$(VS_PLATFORMS),$(p)/Release/ivfdec.exe)
 
63
else
 
64
CLEAN-OBJS += ivfenc{.c.o,.c.d,.dox,.exe,}
 
65
CLEAN-OBJS += ivfdec{.c.o,.c.d,.dox,.exe,}
 
66
endif
 
67
 
 
68
# XMA example disabled for now, not used in VP8
 
69
#UTILS-$(CONFIG_DECODERS)    += example_xma.c
 
70
#example_xma.GUID             = A955FC4A-73F1-44F7-135E-30D84D32F022
 
71
#example_xma.DESCRIPTION      = External Memory Allocation mode usage
 
72
 
 
73
GEN_EXAMPLES-$(CONFIG_VP8_DECODER) += simple_decoder.c
 
74
simple_decoder.GUID              = D3BBF1E9-2427-450D-BBFF-B2843C1D44CC
 
75
simple_decoder.DESCRIPTION       = Simplified decoder loop
 
76
GEN_EXAMPLES-$(CONFIG_VP8_DECODER) += postproc.c
 
77
postproc.GUID                    = 65E33355-F35E-4088-884D-3FD4905881D7
 
78
postproc.DESCRIPTION             = Decoder postprocessor control
 
79
GEN_EXAMPLES-$(CONFIG_VP8_DECODER) += decode_to_md5.c
 
80
decode_to_md5.SRCS              += md5_utils.h md5_utils.c
 
81
decode_to_md5.GUID               = 59120B9B-2735-4BFE-B022-146CA340FE42
 
82
decode_to_md5.DESCRIPTION        = Frame by frame MD5 checksum
 
83
 
 
84
GEN_EXAMPLES-$(CONFIG_VP8_ENCODER) += simple_encoder.c
 
85
simple_encoder.GUID              = 4607D299-8A71-4D2C-9B1D-071899B6FBFD
 
86
simple_encoder.DESCRIPTION       = Simplified encoder loop
 
87
GEN_EXAMPLES-$(CONFIG_VP8_ENCODER) += twopass_encoder.c
 
88
twopass_encoder.GUID             = 73494FA6-4AF9-4763-8FBB-265C92402FD8
 
89
twopass_encoder.DESCRIPTION      = Two-pass encoder loop
 
90
GEN_EXAMPLES-$(CONFIG_VP8_ENCODER) += force_keyframe.c
 
91
force_keyframe.GUID              = 3C67CADF-029F-4C86-81F5-D6D4F51177F0
 
92
force_keyframe.DESCRIPTION       = Force generation of keyframes
 
93
ifeq ($(CONFIG_DECODERS),yes)
 
94
GEN_EXAMPLES-$(CONFIG_VP8_ENCODER) += decode_with_drops.c
 
95
endif
 
96
decode_with_drops.GUID           = CE5C53C4-8DDA-438A-86ED-0DDD3CDB8D26
 
97
decode_with_drops.DESCRIPTION    = Drops frames while decoding
 
98
ifeq ($(CONFIG_VP8_DECODER),yes)
 
99
GEN_EXAMPLES-$(CONFIG_ERROR_CONCEALMENT) += decode_with_partial_drops.c
 
100
endif
 
101
decode_with_partial_drops.GUID           = 61C2D026-5754-46AC-916F-1343ECC5537E
 
102
decode_with_partial_drops.DESCRIPTION    = Drops parts of frames while decoding
 
103
GEN_EXAMPLES-$(CONFIG_VP8_ENCODER) += error_resilient.c
 
104
error_resilient.GUID             = DF5837B9-4145-4F92-A031-44E4F832E00C
 
105
error_resilient.DESCRIPTION      = Error Resiliency Feature
 
106
 
 
107
GEN_EXAMPLES-$(CONFIG_VP8_ENCODER) += vp8_set_maps.c
 
108
vp8_set_maps.GUID                   = ECB2D24D-98B8-4015-A465-A4AF3DCC145F
 
109
vp8_set_maps.DESCRIPTION            = VP8 set active and ROI maps
 
110
GEN_EXAMPLES-$(CONFIG_VP8_ENCODER) += vp8cx_set_ref.c
 
111
vp8cx_set_ref.GUID                  = C5E31F7F-96F6-48BD-BD3E-10EBF6E8057A
 
112
vp8cx_set_ref.DESCRIPTION           = VP8 set encoder reference frame
 
113
 
 
114
# C file is provided, not generated automatically.
 
115
UTILS-$(CONFIG_MULTI_RES_ENCODING) += vp8_multi_resolution_encoder.c
 
116
vp8_multi_resolution_encoder.SRCS         += $(LIBYUV_SRCS)
 
117
vp8_multi_resolution_encoder.GUID         = 04f8738e-63c8-423b-90fa-7c2703a374de
 
118
vp8_multi_resolution_encoder.DESCRIPTION  = VP8 Multiple-resolution Encoding
 
119
 
 
120
# Handle extra library flags depending on codec configuration
 
121
 
 
122
# We should not link to math library (libm) on RVCT
 
123
# when building for bare-metal targets
 
124
ifeq ($(CONFIG_OS_SUPPORT), yes)
 
125
CODEC_EXTRA_LIBS-$(CONFIG_VP8)         += m
 
126
CODEC_EXTRA_LIBS-$(CONFIG_VP9)         += m
 
127
else
 
128
    ifeq ($(CONFIG_GCC), yes)
 
129
    CODEC_EXTRA_LIBS-$(CONFIG_VP8)         += m
 
130
    CODEC_EXTRA_LIBS-$(CONFIG_VP9)         += m
 
131
    endif
 
132
endif
 
133
#
 
134
# End of specified files. The rest of the build rules should happen
 
135
# automagically from here.
 
136
#
 
137
 
 
138
 
 
139
# Examples need different flags based on whether we're building
 
140
# from an installed tree or a version controlled tree. Determine
 
141
# the proper paths.
 
142
ifeq ($(HAVE_ALT_TREE_LAYOUT),yes)
 
143
    LIB_PATH := $(SRC_PATH_BARE)/../lib
 
144
    INC_PATH := $(SRC_PATH_BARE)/../include
 
145
else
 
146
    LIB_PATH-yes                     += $(if $(BUILD_PFX),$(BUILD_PFX),.)
 
147
    INC_PATH-$(CONFIG_VP8_DECODER)   += $(SRC_PATH_BARE)/vp8
 
148
    INC_PATH-$(CONFIG_VP8_ENCODER)   += $(SRC_PATH_BARE)/vp8
 
149
    INC_PATH-$(CONFIG_VP9_DECODER)   += $(SRC_PATH_BARE)/vp9
 
150
    INC_PATH-$(CONFIG_VP9_ENCODER)   += $(SRC_PATH_BARE)/vp9
 
151
    LIB_PATH := $(call enabled,LIB_PATH)
 
152
    INC_PATH := $(call enabled,INC_PATH)
 
153
endif
 
154
INTERNAL_CFLAGS = $(addprefix -I,$(INC_PATH))
 
155
INTERNAL_LDFLAGS += $(addprefix -L,$(LIB_PATH))
 
156
 
 
157
 
 
158
# Expand list of selected examples to build (as specified above)
 
159
UTILS           = $(call enabled,UTILS)
 
160
GEN_EXAMPLES    = $(call enabled,GEN_EXAMPLES)
 
161
ALL_EXAMPLES    = $(UTILS) $(GEN_EXAMPLES)
 
162
UTIL_SRCS       = $(foreach ex,$(UTILS),$($(ex:.c=).SRCS))
 
163
ALL_SRCS        = $(foreach ex,$(ALL_EXAMPLES),$($(ex:.c=).SRCS))
 
164
CODEC_EXTRA_LIBS=$(sort $(call enabled,CODEC_EXTRA_LIBS))
 
165
 
 
166
 
 
167
# Expand all example sources into a variable containing all sources
 
168
# for that example (not just them main one specified in UTILS/GEN_EXAMPLES)
 
169
# and add this file to the list (for MSVS workspace generation)
 
170
$(foreach ex,$(ALL_EXAMPLES),$(eval $(ex:.c=).SRCS += $(ex) examples.mk))
 
171
 
 
172
 
 
173
# If this is a universal (fat) binary, then all the subarchitectures have
 
174
# already been built and our job is to stitch them together. The
 
175
# BUILD_OBJS variable indicates whether we should be building
 
176
# (compiling, linking) the library. The LIPO_OBJS variable indicates
 
177
# that we're stitching.
 
178
$(eval $(if $(filter universal%,$(TOOLCHAIN)),LIPO_OBJS,BUILD_OBJS):=yes)
 
179
 
 
180
 
 
181
# Create build/install dependencies for all examples. The common case
 
182
# is handled here. The MSVS case is handled below.
 
183
NOT_MSVS = $(if $(CONFIG_MSVS),,yes)
 
184
DIST-BINS-$(NOT_MSVS)      += $(addprefix bin/,$(ALL_EXAMPLES:.c=$(EXE_SFX)))
 
185
INSTALL-BINS-$(NOT_MSVS)   += $(addprefix bin/,$(UTILS:.c=$(EXE_SFX)))
 
186
DIST-SRCS-yes              += $(ALL_SRCS)
 
187
INSTALL-SRCS-yes           += $(UTIL_SRCS)
 
188
OBJS-$(NOT_MSVS)           += $(if $(BUILD_OBJS),$(call objs,$(ALL_SRCS)))
 
189
BINS-$(NOT_MSVS)           += $(addprefix $(BUILD_PFX),$(ALL_EXAMPLES:.c=$(EXE_SFX)))
 
190
 
 
191
 
 
192
# Instantiate linker template for all examples.
 
193
CODEC_LIB=$(if $(CONFIG_DEBUG_LIBS),vpx_g,vpx)
 
194
SHARED_LIB_SUF=$(if $(filter darwin%,$(TGT_OS)),.dylib,.so)
 
195
CODEC_LIB_SUF=$(if $(CONFIG_SHARED),$(SHARED_LIB_SUF),.a)
 
196
$(foreach bin,$(BINS-yes),\
 
197
    $(if $(BUILD_OBJS),$(eval $(bin):\
 
198
        $(LIB_PATH)/lib$(CODEC_LIB)$(CODEC_LIB_SUF)))\
 
199
    $(if $(BUILD_OBJS),$(eval $(call linker_template,$(bin),\
 
200
        $(call objs,$($(notdir $(bin:$(EXE_SFX)=)).SRCS)) \
 
201
        -l$(CODEC_LIB) $(addprefix -l,$(CODEC_EXTRA_LIBS))\
 
202
        )))\
 
203
    $(if $(LIPO_OBJS),$(eval $(call lipo_bin_template,$(bin))))\
 
204
    )
 
205
 
 
206
 
 
207
# Rules to generate the GEN_EXAMPLES sources
 
208
.PRECIOUS: %.c
 
209
CLEAN-OBJS += $(GEN_EXAMPLES)
 
210
%.c: examples/%.txt
 
211
        @echo "    [EXAMPLE] $@"
 
212
        @$(SRC_PATH_BARE)/examples/gen_example_code.sh $< > $@
 
213
 
 
214
 
 
215
# The following pairs define a mapping of locations in the distribution
 
216
# tree to locations in the source/build trees.
 
217
INSTALL_MAPS += src/%.c   %.c
 
218
INSTALL_MAPS += src/%     $(SRC_PATH_BARE)/%
 
219
INSTALL_MAPS += bin/%     %
 
220
INSTALL_MAPS += %         %
 
221
 
 
222
 
 
223
# Set up additional MSVS environment
 
224
ifeq ($(CONFIG_MSVS),yes)
 
225
CODEC_LIB=$(if $(CONFIG_SHARED),vpx,$(if $(CONFIG_STATIC_MSVCRT),vpxmt,vpxmd))
 
226
# This variable uses deferred expansion intentionally, since the results of
 
227
# $(wildcard) may change during the course of the Make.
 
228
VS_PLATFORMS = $(foreach d,$(wildcard */Release/$(CODEC_LIB).lib),$(word 1,$(subst /, ,$(d))))
 
229
INSTALL_MAPS += $(foreach p,$(VS_PLATFORMS),bin/$(p)/%  $(p)/Release/%)
 
230
endif
 
231
 
 
232
# Build Visual Studio Projects. We use a template here to instantiate
 
233
# explicit rules rather than using an implicit rule because we want to
 
234
# leverage make's VPATH searching rather than specifying the paths on
 
235
# each file in ALL_EXAMPLES. This has the unfortunate side effect that
 
236
# touching the source files trigger a rebuild of the project files
 
237
# even though there is no real dependency there (the dependency is on
 
238
# the makefiles). We may want to revisit this.
 
239
define vcproj_template
 
240
$(1): $($(1:.$(VCPROJ_SFX)=).SRCS) vpx.$(VCPROJ_SFX)
 
241
        @echo "    [vcproj] $$@"
 
242
        $$(GEN_VCPROJ)\
 
243
            --exe\
 
244
            --target=$$(TOOLCHAIN)\
 
245
            --name=$$(@:.$(VCPROJ_SFX)=)\
 
246
            --ver=$$(CONFIG_VS_VERSION)\
 
247
            --proj-guid=$$($$(@:.$(VCPROJ_SFX)=).GUID)\
 
248
            $$(if $$(CONFIG_STATIC_MSVCRT),--static-crt) \
 
249
            --out=$$@ $$(INTERNAL_CFLAGS) $$(CFLAGS) \
 
250
            $$(INTERNAL_LDFLAGS) $$(LDFLAGS) -l$$(CODEC_LIB) $$^
 
251
endef
 
252
PROJECTS-$(CONFIG_MSVS) += $(ALL_EXAMPLES:.c=.$(VCPROJ_SFX))
 
253
INSTALL-BINS-$(CONFIG_MSVS) += $(foreach p,$(VS_PLATFORMS),\
 
254
                               $(addprefix bin/$(p)/,$(ALL_EXAMPLES:.c=.exe)))
 
255
$(foreach proj,$(call enabled,PROJECTS),\
 
256
    $(eval $(call vcproj_template,$(proj))))
 
257
 
 
258
 
 
259
 
 
260
#
 
261
# Documentation Rules
 
262
#
 
263
%.dox: examples/%.txt
 
264
        @echo "    [DOXY] $@"
 
265
        @$(SRC_PATH_BARE)/examples/gen_example_text.sh $< | \
 
266
         $(SRC_PATH_BARE)/examples/gen_example_doxy.php \
 
267
             example_$(@:.dox=)  $(@:.dox=.c) > $@
 
268
 
 
269
%.dox: %.c
 
270
        @echo "    [DOXY] $@"
 
271
        @echo "/*!\page example_$(@:.dox=) $(@:.dox=)" > $@
 
272
        @echo "   \includelineno $(notdir $<)" >> $@
 
273
        @echo "*/" >> $@
 
274
 
 
275
samples.dox: examples.mk
 
276
        @echo "    [DOXY] $@"
 
277
        @echo "/*!\page samples Sample Code" > $@
 
278
        @echo "    This SDK includes a number of sample applications."\
 
279
              "each sample documents a feature of the SDK in both prose"\
 
280
              "and the associated C code. In general, later samples"\
 
281
              "build upon prior samples, so it is best to work through the"\
 
282
              "list in order. The following samples are included: ">>$@
 
283
        @$(foreach ex,$(GEN_EXAMPLES:.c=),\
 
284
           echo "     - \subpage example_$(ex) $($(ex).DESCRIPTION)" >> $@;)
 
285
        @echo >> $@
 
286
        @echo "    In addition, the SDK contains a number of utilities."\
 
287
              "Since these utilities are built upon the concepts described"\
 
288
              "in the sample code listed above, they are not documented in"\
 
289
              "pieces like the samples are. Thir sourcre is included here"\
 
290
              "for reference. The following utilities are included:" >> $@
 
291
        @$(foreach ex,$(UTILS:.c=),\
 
292
           echo "     - \subpage example_$(ex) $($(ex).DESCRIPTION)" >> $@;)
 
293
        @echo "*/" >> $@
 
294
 
 
295
CLEAN-OBJS += examples.doxy samples.dox $(ALL_EXAMPLES:.c=.dox)
 
296
DOCS-yes += examples.doxy samples.dox $(ALL_EXAMPLES:.c=.dox)
 
297
examples.doxy: samples.dox $(ALL_EXAMPLES:.c=.dox)
 
298
        @echo "INPUT += $^" > $@