1# Copyright 2014 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  'includes': [
7    '../native_client/build/untrusted.gypi',
8    'remoting_srcs.gypi',
9  ],
10
11  'variables': {
12    'protoc': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)',
13    'proto_out_base': '<(SHARED_INTERMEDIATE_DIR)/protoc_out',
14    'proto_out_dir': '<(proto_out_base)/remoting/proto',
15    'use_nss': 0,
16    'nacl_untrusted_build': 1,
17    'chromium_code': 1,
18  },
19
20  'targets': [
21    {
22      'target_name': 'remoting_webrtc_nacl',
23      'type': 'none',
24      'variables': {
25        'nacl_untrusted_build': 1,
26        'nlib_target': 'libremoting_webrtc_nacl.a',
27        'build_glibc': 0,
28        'build_newlib': 0,
29        'build_pnacl_newlib': 1,
30      },
31      'include_dirs': [
32        '../third_party',
33        '../third_party/webrtc',
34      ],
35      'sources': [
36        '../third_party/webrtc/modules/desktop_capture/desktop_frame.cc',
37        '../third_party/webrtc/modules/desktop_capture/desktop_frame.h',
38        '../third_party/webrtc/modules/desktop_capture/desktop_geometry.cc',
39        '../third_party/webrtc/modules/desktop_capture/desktop_geometry.h',
40        '../third_party/webrtc/modules/desktop_capture/desktop_region.cc',
41        '../third_party/webrtc/modules/desktop_capture/desktop_region.h',
42        '../third_party/webrtc/modules/desktop_capture/shared_desktop_frame.cc',
43        '../third_party/webrtc/modules/desktop_capture/shared_desktop_frame.h',
44      ],
45      'direct_dependent_settings': {
46        'include_dirs': [
47          '../third_party',
48          '../third_party/webrtc',
49        ],
50      }
51    },  # end of target 'remoting_webrtc_nacl'
52
53    {
54      'target_name': 'remoting_proto_nacl',
55      'type': 'none',
56      'variables': {
57        'nacl_untrusted_build': 1,
58        'nlib_target': 'libremoting_proto_nacl.a',
59        'build_glibc': 0,
60        'build_newlib': 0,
61        'build_pnacl_newlib': 1,
62        'files_list': [
63          '<(proto_out_dir)/audio.pb.cc',
64          '<(proto_out_dir)/control.pb.cc',
65          '<(proto_out_dir)/event.pb.cc',
66          '<(proto_out_dir)/internal.pb.cc',
67          '<(proto_out_dir)/video.pb.cc',
68          '<(proto_out_dir)/mux.pb.cc',
69        ],
70        'extra_deps': [ '<@(files_list)' ],
71        'extra_args': [ '<@(files_list)' ],
72      },
73      'defines': [
74        'GOOGLE_PROTOBUF_HOST_ARCH_64_BIT=1'
75      ],
76      'dependencies': [
77        '../native_client/tools.gyp:prep_toolchain',
78        '../third_party/protobuf/protobuf_nacl.gyp:protobuf_lite_nacl',
79        'proto/chromotocol.gyp:chromotocol_proto_lib',
80      ],
81      'export_dependent_settings': [
82        '../third_party/protobuf/protobuf_nacl.gyp:protobuf_lite_nacl',
83      ],
84      'direct_dependent_settings': {
85        'include_dirs': [
86          '<(proto_out_base)',
87        ],
88      },
89    },  # end of target 'remoting_proto_nacl'
90
91    {
92      'target_name': 'remoting_client_plugin_lib_nacl',
93      'type': 'none',
94      'variables': {
95        'nacl_untrusted_build': 1,
96        'nlib_target': 'libremoting_client_plugin_lib_nacl.a',
97        'build_glibc': 0,
98        'build_newlib': 0,
99        'build_pnacl_newlib': 1,
100      },
101      'dependencies': [
102        '../base/base_nacl.gyp:base_nacl',
103        '../jingle/jingle_nacl.gyp:jingle_glue_nacl',
104        '../native_client/tools.gyp:prep_toolchain',
105        '../native_client_sdk/native_client_sdk_untrusted.gyp:nacl_io_untrusted',
106        '../net/net_nacl.gyp:net_nacl',
107        '../third_party/libjingle/libjingle_nacl.gyp:libjingle_nacl',
108        '../third_party/libvpx/libvpx_nacl.gyp:libvpx_nacl',
109        '../third_party/libwebm/libwebm_nacl.gyp:libwebm_nacl',
110        '../third_party/libyuv/libyuv_nacl.gyp:libyuv_nacl',
111        '../third_party/boringssl/boringssl_nacl.gyp:boringssl_nacl',
112        '../third_party/opus/opus_nacl.gyp:opus_nacl',
113        'remoting_proto_nacl',
114        'remoting_webrtc_nacl',
115      ],
116      'sources': [
117        '../ui/events/keycodes/dom4/keycode_converter.cc',
118        '<@(remoting_base_sources)',
119        '<@(remoting_client_plugin_sources)',
120        '<@(remoting_client_sources)',
121        '<@(remoting_protocol_sources)',
122      ],
123      'sources!': [
124        'base/url_request_context_getter.cc',
125        'protocol/chromium_socket_factory.cc',
126      ],
127
128      # Include normalizing_input_filter_mac.cc excluded by the filename
129      # exclusion rules. Must be in target_conditions to make sure it's
130      # evaluated after the filename rules.
131      'target_conditions': [
132        ['1==1', {
133          'sources/': [
134            [ 'include', 'client/plugin/normalizing_input_filter_mac.cc' ],
135          ],
136        }],
137      ],
138    },  # end of target 'remoting_client_plugin_lib_nacl'
139
140    {
141      'target_name': 'remoting_client_plugin_nacl',
142      'type': 'none',
143      'variables': {
144        'nacl_untrusted_build': 1,
145        'nexe_target': 'remoting_client_plugin',
146        'build_glibc': 0,
147        'build_newlib': 0,
148        'build_pnacl_newlib': 1,
149        'extra_deps_pnacl_newlib': [
150          '>(tc_lib_dir_pnacl_newlib)/libbase_i18n_nacl.a',
151          '>(tc_lib_dir_pnacl_newlib)/libbase_nacl.a',
152          '>(tc_lib_dir_pnacl_newlib)/libexpat_nacl.a',
153          '>(tc_lib_dir_pnacl_newlib)/libicudata_nacl.a',
154          '>(tc_lib_dir_pnacl_newlib)/libcrypto_nacl.a',
155          '>(tc_lib_dir_pnacl_newlib)/libicui18n_nacl.a',
156          '>(tc_lib_dir_pnacl_newlib)/libicuuc_nacl.a',
157          '>(tc_lib_dir_pnacl_newlib)/libjingle_nacl.a',
158          '>(tc_lib_dir_pnacl_newlib)/libjingle_p2p_constants_nacl.a',
159          '>(tc_lib_dir_pnacl_newlib)/libmedia_yuv_nacl.a',
160          '>(tc_lib_dir_pnacl_newlib)/libmodp_b64_nacl.a',
161          '>(tc_lib_dir_pnacl_newlib)/libboringssl_nacl.a',
162          '>(tc_lib_dir_pnacl_newlib)/libopus_nacl.a',
163          '>(tc_lib_dir_pnacl_newlib)/libppapi.a',
164          '>(tc_lib_dir_pnacl_newlib)/libppapi_cpp.a',
165          '>(tc_lib_dir_pnacl_newlib)/libprotobuf_lite_nacl.a',
166          '>(tc_lib_dir_pnacl_newlib)/libjingle_glue_nacl.a',
167          '>(tc_lib_dir_pnacl_newlib)/libnet_nacl.a',
168          '>(tc_lib_dir_pnacl_newlib)/libremoting_client_plugin_lib_nacl.a',
169          '>(tc_lib_dir_pnacl_newlib)/libremoting_proto_nacl.a',
170          '>(tc_lib_dir_pnacl_newlib)/libremoting_webrtc_nacl.a',
171          '>(tc_lib_dir_pnacl_newlib)/liburl_nacl.a',
172          '>(tc_lib_dir_pnacl_newlib)/libvpx_nacl.a',
173          '>(tc_lib_dir_pnacl_newlib)/libwebm_nacl.a',
174          '>(tc_lib_dir_pnacl_newlib)/libyuv_nacl.a',
175        ],
176      },
177      'dependencies': [
178        '../base/base_nacl.gyp:base_i18n_nacl',
179        '../base/base_nacl.gyp:base_nacl',
180        '../crypto/crypto_nacl.gyp:crypto_nacl',
181        '../jingle/jingle_nacl.gyp:jingle_glue_nacl',
182        '../media/media_nacl.gyp:media_yuv_nacl',
183        '../native_client/tools.gyp:prep_toolchain',
184        '../native_client_sdk/native_client_sdk_untrusted.gyp:nacl_io_untrusted',
185        '../net/net_nacl.gyp:net_nacl',
186        '../ppapi/native_client/native_client.gyp:nacl_irt',
187        '../ppapi/native_client/native_client.gyp:ppapi_lib',
188        '../ppapi/ppapi_nacl.gyp:ppapi_cpp_lib',
189        '../third_party/expat/expat_nacl.gyp:expat_nacl',
190        '../third_party/icu/icu_nacl.gyp:icudata_nacl',
191        '../third_party/icu/icu_nacl.gyp:icui18n_nacl',
192        '../third_party/icu/icu_nacl.gyp:icuuc_nacl',
193        '../third_party/libjingle/libjingle_nacl.gyp:libjingle_nacl',
194        '../third_party/libwebm/libwebm_nacl.gyp:libwebm_nacl',
195        '../third_party/libyuv/libyuv_nacl.gyp:libyuv_nacl',
196        '../third_party/modp_b64/modp_b64_nacl.gyp:modp_b64_nacl',
197        '../third_party/boringssl/boringssl_nacl.gyp:boringssl_nacl',
198        '../url/url_nacl.gyp:url_nacl',
199        'remoting_client_plugin_lib_nacl',
200        'remoting_proto_nacl',
201        'remoting_webrtc_nacl',
202      ],
203      'link_flags': [
204        '-lppapi_stub',
205
206        # Plugin code.
207        '-lremoting_client_plugin_lib_nacl',
208        '-lremoting_proto_nacl',
209
210        # Chromium libraries.
211        '-ljingle_glue_nacl',
212        '-lmedia_yuv_nacl',
213        '-lnet_nacl',
214        '-lcrypto_nacl',
215        '-lbase_i18n_nacl',
216        '-lbase_nacl',
217        '-lurl_nacl',
218
219        # Third-party libraries.
220        '-lremoting_webrtc_nacl',
221        '-lyuv_nacl',
222        '-lvpx_nacl',
223        '-ljingle_p2p_constants_nacl',
224        '-ljingle_nacl',
225        '-lexpat_nacl',
226        '-lmodp_b64_nacl',
227        '-lopus_nacl',
228        '-lboringssl_nacl',
229        '-licui18n_nacl',
230        '-licuuc_nacl',
231        '-licudata_nacl',
232        '-lprotobuf_lite_nacl',
233        '-lwebm_nacl',
234
235        # Base NaCl libraries.
236        '-lppapi_cpp',
237        '-lpthread',
238        '-lnacl_io',
239      ],
240      'sources': [
241        'client/plugin/pepper_module.cc',
242      ],
243    },  # end of target 'remoting_client_plugin_nacl'
244  ]
245}
246