libyuv.gyp 4.25 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
    # 'chromium_code' treats libyuv as internal and increases warning level.
    'chromium_code': 1,
24 25
    # Link-Time Optimizations.
    'use_lto%': 0,
26 27
    'build_neon': 0,
    'conditions': [
28
       ['(target_arch == "armv7" or target_arch == "armv7s" or \
29
       (target_arch == "arm" and arm_version >= 7) or target_arch == "arm64")\
30
       and (arm_neon == 1 or arm_neon_optional == 1)',
31
       {
32 33 34
         'build_neon': 1,
       }],
    ],
35
  },
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

  'targets': [
    {
      'target_name': 'libyuv',
      # Change type to 'shared_library' to build .so or .dll files.
      'type': 'static_library',
      'variables': {
        'optimize': 'max',  # enable O2 and ltcg.
      },
      # Allows libyuv.a redistributable library without external dependencies.
      'standalone_static_library': 1,
      'conditions': [
        ['build_neon != 0', {
          'defines': [
            'LIBYUV_NEON',
          ],
52 53 54 55 56
          'cflags!': [
            '-mfpu=vfp',
            '-mfpu=vfpv3',
            '-mfpu=vfpv3-d16',
          ],
57
          'conditions': [
58
            # Disable LTO in libyuv_neon target due to gcc 4.9 compiler bug.
59
            ['clang == 0 and use_lto == 1', {
60 61 62 63 64
              'cflags!': [
                '-flto',
                '-ffat-lto-objects',
              ],
            }],
65 66 67
            # arm64 does not need -mfpu=neon option as neon is not optional
            ['target_arch != "arm64"', {
              'cflags': [
68
                '-mfpu=neon',
69 70
              ],
            }],
71
          ],
72
        }],
73
        ['OS != "ios" and libyuv_disable_jpeg != 1', {
74 75 76 77
          'defines': [
            'HAVE_JPEG'
          ],
          'conditions': [
78 79
            # Caveat system jpeg support may not support motion jpeg
            [ 'use_system_libjpeg == 1', {
80
              'dependencies': [
81
                 '<(DEPTH)/third_party/libjpeg/libjpeg.gyp:libjpeg',
82 83
              ],
            }, {
84 85 86 87 88
              'dependencies': [
                 '<(DEPTH)/third_party/libjpeg_turbo/libjpeg.gyp:libjpeg',
              ],
            }],
            [ 'use_system_libjpeg == 1', {
89 90 91 92
              'link_settings': {
                'libraries': [
                  '-ljpeg',
                ],
93
              }
94
            }],
95 96
          ],
        }],
97 98 99 100 101 102 103
        # MemorySanitizer does not support assembly code yet.
        # http://crbug.com/344505
        [ 'msan == 1', {
          'defines': [
            'LIBYUV_DISABLE_X86',
          ],
        }],
104
      ], #conditions
105
      'defines': [
106
        # Enable the following 3 macros to turn off assembly for specified CPU.
107 108 109
        # 'LIBYUV_DISABLE_X86',
        # 'LIBYUV_DISABLE_NEON',
        # 'LIBYUV_DISABLE_MIPS',
110 111
        # Enable the following macro to build libyuv as a shared library (dll).
        # 'LIBYUV_USING_SHARED_LIBRARY',
112
        # TODO(fbarchard): Make these into gyp defines.
113
      ],
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
114
      'include_dirs': [
115
        'include',
116
        '.',
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
117
      ],
118 119 120
      'direct_dependent_settings': {
        'include_dirs': [
          'include',
121
          '.',
122
        ],
123 124 125 126 127 128 129 130 131 132 133 134
        'conditions': [
          ['OS == "android" and target_arch == "arm64"', {
            'ldflags': [
              '-Wl,--dynamic-linker,/system/bin/linker64',
            ],
          }],
          ['OS == "android" and target_arch != "arm64"', {
            'ldflags': [
              '-Wl,--dynamic-linker,/system/bin/linker',
            ],
          }],
        ], #conditions
135
      },
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
136
      'sources': [
137
        '<@(libyuv_sources)',
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
138 139
      ],
    },
140
  ], # targets.
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
141 142 143 144 145 146 147
}

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