libyuv.gyp 4.72 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 22
    # Can be enabled if your jpeg has GYP support.
    'libyuv_disable_jpeg%': 1,
23 24
    # 'chromium_code' treats libyuv as internal and increases warning level.
    'chromium_code': 1,
25 26
    # clang compiler default variable usable by other apps that include libyuv.
    'clang%': 0,
27 28
    # Link-Time Optimizations.
    'use_lto%': 0,
29
    'mips_msa%': 0,  # Default to msa off.
30
    'build_neon': 0,
31
    'build_msa': 0,
32
    'conditions': [
33
       ['(target_arch == "armv7" or target_arch == "armv7s" or \
34
       (target_arch == "arm" and arm_version >= 7) or target_arch == "arm64")\
35
       and (arm_neon == 1 or arm_neon_optional == 1)', {
36 37
         'build_neon': 1,
       }],
38 39 40 41 42
       ['(target_arch == "mipsel" or target_arch == "mips64el")\
       and (mips_msa == 1)',
       {
         'build_msa': 1,
       }],
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': {
52
        'optimize': 'max',  # enable O2 and ltcg.
53 54 55 56
      },
      # Allows libyuv.a redistributable library without external dependencies.
      'standalone_static_library': 1,
      'conditions': [
57 58 59 60 61 62
       # Disable -Wunused-parameter
        ['clang == 1', {
          'cflags': [
            '-Wno-unused-parameter',
         ],
        }],
63 64 65 66
        ['build_neon != 0', {
          'defines': [
            'LIBYUV_NEON',
          ],
67 68 69 70
          'cflags!': [
            '-mfpu=vfp',
            '-mfpu=vfpv3',
            '-mfpu=vfpv3-d16',
71
            # '-mthumb',  # arm32 not thumb
72
          ],
73
          'conditions': [
74
            # Disable LTO in libyuv_neon target due to gcc 4.9 compiler bug.
75
            ['clang == 0 and use_lto == 1', {
76 77 78 79 80
              'cflags!': [
                '-flto',
                '-ffat-lto-objects',
              ],
            }],
81 82 83
            # arm64 does not need -mfpu=neon option as neon is not optional
            ['target_arch != "arm64"', {
              'cflags': [
84
                '-mfpu=neon',
85
                # '-marm',  # arm32 not thumb
86 87
              ],
            }],
88
          ],
89
        }],
90 91 92 93 94
        ['build_msa != 0', {
          'defines': [
            'LIBYUV_MSA',
          ],
        }],
95
        ['OS != "ios" and libyuv_disable_jpeg != 1', {
96 97 98 99
          'defines': [
            'HAVE_JPEG'
          ],
          'conditions': [
100 101
            # Caveat system jpeg support may not support motion jpeg
            [ 'use_system_libjpeg == 1', {
102
              'dependencies': [
103
                 '<(DEPTH)/third_party/libjpeg/libjpeg.gyp:libjpeg',
104 105
              ],
            }, {
106 107 108 109 110
              'dependencies': [
                 '<(DEPTH)/third_party/libjpeg_turbo/libjpeg.gyp:libjpeg',
              ],
            }],
            [ 'use_system_libjpeg == 1', {
111 112 113 114
              'link_settings': {
                'libraries': [
                  '-ljpeg',
                ],
115
              }
116
            }],
117 118
          ],
        }],
119
      ], #conditions
120
      'defines': [
121
        # Enable the following 3 macros to turn off assembly for specified CPU.
122 123
        # 'LIBYUV_DISABLE_X86',
        # 'LIBYUV_DISABLE_NEON',
124
        # 'LIBYUV_DISABLE_DSPR2',
125 126
        # Enable the following macro to build libyuv as a shared library (dll).
        # 'LIBYUV_USING_SHARED_LIBRARY',
127
        # TODO(fbarchard): Make these into gyp defines.
128
      ],
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
129
      'include_dirs': [
130
        'include',
131
        '.',
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
132
      ],
133 134 135
      'direct_dependent_settings': {
        'include_dirs': [
          'include',
136
          '.',
137
        ],
138 139 140 141 142 143 144 145 146 147 148 149
        '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
150
      },
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
151
      'sources': [
152
        '<@(libyuv_sources)',
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
153 154
      ],
    },
155
  ], # targets.
mikhal@webrtc.org's avatar
mikhal@webrtc.org committed
156 157 158 159 160 161 162
}

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