# Copyright 2017 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
{
  'targets': [
    # TODO: Eliminate cyclic dependency between Widevine, OpenSSL, and Starboard
    #       and get rid of this target in favor of 'openssl.gyp:openssl'.
    {
      'target_name': 'openssl_workaround_starboard_dependency',
      'type': '<(library)',
      'direct_dependent_settings': {
        'include_dirs': [
          '<(DEPTH)/third_party/openssl/config/starboard',
          '<(DEPTH)/third_party/openssl/openssl/include',
        ],
      },
    },
  ],
}
