libyuv.gyp 4.52 KB
Newer Older
1
# Copyright 2011 The LibYuv Project Authors. All rights reserved.
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
2 3 4 5
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
6
# in the file PATENTS. All contributing project authors may
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
7 8 9
# be found in the AUTHORS file in the root of the source tree.

{
10 11 12
  'includes': [
    'libyuv.gypi',
  ],
13 14 15 16 17 18
  # Make sure that if we are being compiled to an xcodeproj, nothing tries to
  # include a .pch.
  'xcode_settings': {
    'GCC_PREFIX_HEADER': '',
    'GCC_PRECOMPILE_PREFIX_HEADER': 'NO',
  },
19
  'variables': {
20
    'use_system_libjpeg%': 0,
21
    'libyuv_disable_jpeg%': 0,
22 23
    'build_neon': 0,
    'conditions': [
24 25 26 27
       [ '(target_arch == "armv7" or target_arch == "armv7s" or \
       (target_arch == "arm" and arm_version >= 7) or target_arch == "arm64")\
       and target_subarch != 64 and (arm_neon == 1 or arm_neon_optional == 1)',
       {
28 29 30
         'build_neon': 1,
       }],
    ],
31
  },
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
  'conditions': [
    [ 'build_neon != 0', {
      'targets': [
        # The NEON-specific components.
        {
          'target_name': 'libyuv_neon',
          'type': 'static_library',
          'standalone_static_library': 1,
          # TODO(noahric): This should remove whatever mfpu is set, not
          # just vfpv3-d16.
          'cflags!': [
            '-mfpu=vfp',
            '-mfpu=vfpv3',
            '-mfpu=vfpv3-d16',
          ],
47 48 49
          'conditions': [
          ['target_arch != "arm64"', {
           'cflags': [
50
            '-mfpu=neon',
51 52
            ],
           }],
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
          ],
          'include_dirs': [
            'include',
            '.',
          ],
          'direct_dependent_settings': {
            'include_dirs': [
              'include',
              '.',
            ],
          },
          'sources': [
            # sources.
            'source/compare_neon.cc',
            'source/rotate_neon.cc',
            'source/row_neon.cc',
69
            'source/row_neon64.cc',
70
            'source/scale_neon.cc',
71
            'source/scale_neon64.cc',
72 73 74 75 76
          ],
        },
      ],
    }],
  ],
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
77 78 79
  'targets': [
    {
      'target_name': 'libyuv',
80
      # Change type to 'shared_library' to build .so or .dll files.
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
81
      'type': 'static_library',
82 83
      # Allows libyuv.a redistributable library without external dependencies.
      'standalone_static_library': 1,
84
      'conditions': [
85 86 87 88 89
        [ 'OS == "ios" and target_subarch == 64', {
          'defines': [
            'LIBYUV_DISABLE_NEON'
          ],
        }],
90
        [ 'OS != "ios" and libyuv_disable_jpeg != 1', {
91 92 93 94
          'defines': [
            'HAVE_JPEG'
          ],
          'conditions': [
95 96
            # Caveat system jpeg support may not support motion jpeg
            [ 'use_system_libjpeg == 1', {
97
              'dependencies': [
98
                 '<(DEPTH)/third_party/libjpeg/libjpeg.gyp:libjpeg',
99 100
              ],
            }, {
101 102 103 104 105
              'dependencies': [
                 '<(DEPTH)/third_party/libjpeg_turbo/libjpeg.gyp:libjpeg',
              ],
            }],
            [ 'use_system_libjpeg == 1', {
106 107 108 109
              'link_settings': {
                'libraries': [
                  '-ljpeg',
                ],
110
              }
111
            }],
112 113
          ],
        }],
114 115 116 117
        [ 'build_neon != 0', {
          'dependencies': [
            'libyuv_neon',
          ],
118 119 120 121
          'conditions': [
          #TODO LIBYUV_NEON is temporary disabled. When all arm64 port has
          # been done, enable it.
          ['target_arch !="arm64"', {
122 123 124
          'defines': [
            'LIBYUV_NEON',
          ]
125 126
          }],
          ],
127
        }],
128 129 130 131 132 133 134
        # MemorySanitizer does not support assembly code yet.
        # http://crbug.com/344505
        [ 'msan == 1', {
          'defines': [
            'LIBYUV_DISABLE_X86',
          ],
        }],
135
      ],
136
      'defines': [
137
        # Enable the following 3 macros to turn off assembly for specified CPU.
138 139 140
        # 'LIBYUV_DISABLE_X86',
        # 'LIBYUV_DISABLE_NEON',
        # 'LIBYUV_DISABLE_MIPS',
141 142
        # Enable the following macro to build libyuv as a shared library (dll).
        # 'LIBYUV_USING_SHARED_LIBRARY',
143
      ],
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
144
      'include_dirs': [
145
        'include',
146
        '.',
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
147
      ],
148 149 150
      'direct_dependent_settings': {
        'include_dirs': [
          'include',
151
          '.',
152 153
        ],
      },
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
154
      'sources': [
155
        '<@(libyuv_sources)',
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
156 157
      ],
    },
158
  ], # targets.
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
159 160 161 162 163 164 165
}

# Local Variables:
# tab-width:2
# indent-tabs-mode:nil
# End:
# vim: set expandtab tabstop=2 shiftwidth=2: