1# Copyright 2013 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5{
6  'variables': {
7    'conditions': [
8      ['OS == "android" or OS == "ios"', {
9        # Android and iOS don't use ffmpeg.
10        'use_ffmpeg%': 0,
11      }, {  # 'OS != "android" and OS != "ios"'
12        'use_ffmpeg%': 1,
13      }],
14    ],
15    # Set |use_fake_video_decoder| to 1 to ignore input frames in |clearkeycdm|,
16    # and produce video frames filled with a solid color instead.
17    'use_fake_video_decoder%': 0,
18    # Set |use_libvpx| to 1 to use libvpx for VP8 decoding in |clearkeycdm|.
19    'use_libvpx%': 0,
20  },
21  'targets': [
22    {
23      'target_name': 'clearkeycdm',
24      'type': 'none',
25      # TODO(tomfinegan): Simplify this by unconditionally including all the
26      # decoders, and changing clearkeycdm to select which decoder to use
27      # based on environment variables.
28      'conditions': [
29        ['use_fake_video_decoder == 1' , {
30          'defines': ['CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER'],
31          'sources': [
32            'cdm/ppapi/fake_cdm_video_decoder.cc',
33            'cdm/ppapi/fake_cdm_video_decoder.h',
34          ],
35        }],
36        ['use_ffmpeg == 1'  , {
37          'defines': ['CLEAR_KEY_CDM_USE_FFMPEG_DECODER'],
38          'dependencies': [
39            '<(DEPTH)/third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
40          ],
41          'sources': [
42            'cdm/ppapi/ffmpeg_cdm_audio_decoder.cc',
43            'cdm/ppapi/ffmpeg_cdm_audio_decoder.h',
44          ],
45        }],
46        ['use_ffmpeg == 1 and use_fake_video_decoder == 0'  , {
47          'sources': [
48            'cdm/ppapi/ffmpeg_cdm_video_decoder.cc',
49            'cdm/ppapi/ffmpeg_cdm_video_decoder.h',
50          ],
51        }],
52        ['use_libvpx == 1 and use_fake_video_decoder == 0' , {
53          'defines': ['CLEAR_KEY_CDM_USE_LIBVPX_DECODER'],
54          'dependencies': [
55            '<(DEPTH)/third_party/libvpx/libvpx.gyp:libvpx',
56          ],
57          'sources': [
58            'cdm/ppapi/libvpx_cdm_video_decoder.cc',
59            'cdm/ppapi/libvpx_cdm_video_decoder.h',
60          ],
61        }],
62        ['os_posix == 1 and OS != "mac" and enable_pepper_cdms==1', {
63          'type': 'loadable_module',  # Must be in PRODUCT_DIR for ASAN bots.
64        }],
65        ['(OS == "mac" or OS == "win") and enable_pepper_cdms==1', {
66          'type': 'shared_library',
67        }],
68        ['OS == "mac"', {
69          'xcode_settings': {
70            'DYLIB_INSTALL_NAME_BASE': '@loader_path',
71          },
72        }]
73      ],
74      'defines': ['CDM_IMPLEMENTATION'],
75      'dependencies': [
76        'media',
77        # Include the following for media::AudioBus.
78        'shared_memory_support',
79        '<(DEPTH)/base/base.gyp:base',
80      ],
81      'sources': [
82        'cdm/ppapi/cdm_video_decoder.cc',
83        'cdm/ppapi/cdm_video_decoder.h',
84        'cdm/ppapi/clear_key_cdm.cc',
85        'cdm/ppapi/clear_key_cdm.h',
86      ],
87      # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
88      'msvs_disabled_warnings': [ 4267, ],
89    },
90    {
91      'target_name': 'clearkeycdmadapter',
92      'type': 'none',
93      # Check whether the plugin's origin URL is valid.
94      'defines': ['CHECK_DOCUMENT_URL'],
95      'dependencies': [
96        '<(DEPTH)/ppapi/ppapi.gyp:ppapi_cpp',
97        'clearkeycdm',
98      ],
99      'sources': [
100        'cdm/ppapi/api/content_decryption_module.h',
101        'cdm/ppapi/cdm_wrapper.cc',
102        'cdm/ppapi/linked_ptr.h',
103      ],
104      'conditions': [
105        ['os_posix == 1 and OS != "mac" and enable_pepper_cdms==1', {
106          'cflags': ['-fvisibility=hidden'],
107          'type': 'loadable_module',
108          # Allow the plugin wrapper to find the CDM in the same directory.
109          'ldflags': ['-Wl,-rpath=\$$ORIGIN'],
110          'libraries': [
111            # Built by clearkeycdm.
112            '<(PRODUCT_DIR)/libclearkeycdm.so',
113          ],
114        }],
115        ['OS == "win" and enable_pepper_cdms==1', {
116          'type': 'shared_library',
117          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
118          'msvs_disabled_warnings': [ 4267, ],
119        }],
120        ['OS == "mac" and enable_pepper_cdms==1', {
121          'type': 'loadable_module',
122          'product_extension': 'plugin',
123          'xcode_settings': {
124            'OTHER_LDFLAGS': [
125              # Not to strip important symbols by -Wl,-dead_strip.
126              '-Wl,-exported_symbol,_PPP_GetInterface',
127              '-Wl,-exported_symbol,_PPP_InitializeModule',
128              '-Wl,-exported_symbol,_PPP_ShutdownModule'
129            ],
130            'DYLIB_INSTALL_NAME_BASE': '@loader_path',
131          },
132        }],
133      ],
134    }
135  ],
136}
137