xref: /aosp_15_r20/external/libyuv/libyuv.gyp (revision 4e366538070a3a6c5c163c31b791eab742e1657a)
1*4e366538SXin Li# Copyright 2011 The LibYuv Project Authors. All rights reserved.
2*4e366538SXin Li#
3*4e366538SXin Li# Use of this source code is governed by a BSD-style license
4*4e366538SXin Li# that can be found in the LICENSE file in the root of the source
5*4e366538SXin Li# tree. An additional intellectual property rights grant can be found
6*4e366538SXin Li# in the file PATENTS. All contributing project authors may
7*4e366538SXin Li# be found in the AUTHORS file in the root of the source tree.
8*4e366538SXin Li
9*4e366538SXin Li{
10*4e366538SXin Li  'includes': [
11*4e366538SXin Li    'libyuv.gypi',
12*4e366538SXin Li  ],
13*4e366538SXin Li  # Make sure that if we are being compiled to an xcodeproj, nothing tries to
14*4e366538SXin Li  # include a .pch.
15*4e366538SXin Li  'xcode_settings': {
16*4e366538SXin Li    'GCC_PREFIX_HEADER': '',
17*4e366538SXin Li    'GCC_PRECOMPILE_PREFIX_HEADER': 'NO',
18*4e366538SXin Li  },
19*4e366538SXin Li  'variables': {
20*4e366538SXin Li    'use_system_libjpeg%': 0,
21*4e366538SXin Li    # Can be enabled if your jpeg has GYP support.
22*4e366538SXin Li    'libyuv_disable_jpeg%': 1,
23*4e366538SXin Li    # 'chromium_code' treats libyuv as internal and increases warning level.
24*4e366538SXin Li    'chromium_code': 1,
25*4e366538SXin Li    # clang compiler default variable usable by other apps that include libyuv.
26*4e366538SXin Li    'clang%': 0,
27*4e366538SXin Li    # Link-Time Optimizations.
28*4e366538SXin Li    'use_lto%': 0,
29*4e366538SXin Li    'mips_msa%': 0,  # Default to msa off.
30*4e366538SXin Li    'build_neon': 0,
31*4e366538SXin Li    'build_msa': 0,
32*4e366538SXin Li    'conditions': [
33*4e366538SXin Li       ['(target_arch == "armv7" or target_arch == "armv7s" or \
34*4e366538SXin Li       (target_arch == "arm" and arm_version >= 7) or target_arch == "arm64")\
35*4e366538SXin Li       and (arm_neon == 1 or arm_neon_optional == 1)', {
36*4e366538SXin Li         'build_neon': 1,
37*4e366538SXin Li       }],
38*4e366538SXin Li       ['(target_arch == "mipsel" or target_arch == "mips64el")\
39*4e366538SXin Li       and (mips_msa == 1)',
40*4e366538SXin Li       {
41*4e366538SXin Li         'build_msa': 1,
42*4e366538SXin Li       }],
43*4e366538SXin Li    ],
44*4e366538SXin Li  },
45*4e366538SXin Li
46*4e366538SXin Li  'targets': [
47*4e366538SXin Li    {
48*4e366538SXin Li      'target_name': 'libyuv',
49*4e366538SXin Li      # Change type to 'shared_library' to build .so or .dll files.
50*4e366538SXin Li      'type': 'static_library',
51*4e366538SXin Li      'variables': {
52*4e366538SXin Li        'optimize': 'max',  # enable O2 and ltcg.
53*4e366538SXin Li      },
54*4e366538SXin Li      # Allows libyuv.a redistributable library without external dependencies.
55*4e366538SXin Li      'standalone_static_library': 1,
56*4e366538SXin Li      'conditions': [
57*4e366538SXin Li       # Disable -Wunused-parameter
58*4e366538SXin Li        ['clang == 1', {
59*4e366538SXin Li          'cflags': [
60*4e366538SXin Li            '-Wno-unused-parameter',
61*4e366538SXin Li         ],
62*4e366538SXin Li        }],
63*4e366538SXin Li        ['build_neon != 0', {
64*4e366538SXin Li          'defines': [
65*4e366538SXin Li            'LIBYUV_NEON',
66*4e366538SXin Li          ],
67*4e366538SXin Li          'cflags!': [
68*4e366538SXin Li            '-mfpu=vfp',
69*4e366538SXin Li            '-mfpu=vfpv3',
70*4e366538SXin Li            '-mfpu=vfpv3-d16',
71*4e366538SXin Li            # '-mthumb',  # arm32 not thumb
72*4e366538SXin Li          ],
73*4e366538SXin Li          'conditions': [
74*4e366538SXin Li            # Disable LTO in libyuv_neon target due to gcc 4.9 compiler bug.
75*4e366538SXin Li            ['clang == 0 and use_lto == 1', {
76*4e366538SXin Li              'cflags!': [
77*4e366538SXin Li                '-flto',
78*4e366538SXin Li                '-ffat-lto-objects',
79*4e366538SXin Li              ],
80*4e366538SXin Li            }],
81*4e366538SXin Li            # arm64 does not need -mfpu=neon option as neon is not optional
82*4e366538SXin Li            ['target_arch != "arm64"', {
83*4e366538SXin Li              'cflags': [
84*4e366538SXin Li                '-mfpu=neon',
85*4e366538SXin Li                # '-marm',  # arm32 not thumb
86*4e366538SXin Li              ],
87*4e366538SXin Li            }],
88*4e366538SXin Li          ],
89*4e366538SXin Li        }],
90*4e366538SXin Li        ['build_msa != 0', {
91*4e366538SXin Li          'defines': [
92*4e366538SXin Li            'LIBYUV_MSA',
93*4e366538SXin Li          ],
94*4e366538SXin Li        }],
95*4e366538SXin Li        ['OS != "ios" and libyuv_disable_jpeg != 1', {
96*4e366538SXin Li          'defines': [
97*4e366538SXin Li            'HAVE_JPEG'
98*4e366538SXin Li          ],
99*4e366538SXin Li          'conditions': [
100*4e366538SXin Li            # Caveat system jpeg support may not support motion jpeg
101*4e366538SXin Li            [ 'use_system_libjpeg == 1', {
102*4e366538SXin Li              'dependencies': [
103*4e366538SXin Li                 '<(DEPTH)/third_party/libjpeg/libjpeg.gyp:libjpeg',
104*4e366538SXin Li              ],
105*4e366538SXin Li            }, {
106*4e366538SXin Li              'dependencies': [
107*4e366538SXin Li                 '<(DEPTH)/third_party/libjpeg_turbo/libjpeg.gyp:libjpeg',
108*4e366538SXin Li              ],
109*4e366538SXin Li            }],
110*4e366538SXin Li            [ 'use_system_libjpeg == 1', {
111*4e366538SXin Li              'link_settings': {
112*4e366538SXin Li                'libraries': [
113*4e366538SXin Li                  '-ljpeg',
114*4e366538SXin Li                ],
115*4e366538SXin Li              }
116*4e366538SXin Li            }],
117*4e366538SXin Li          ],
118*4e366538SXin Li        }],
119*4e366538SXin Li      ], #conditions
120*4e366538SXin Li      'defines': [
121*4e366538SXin Li        # Enable the following 3 macros to turn off assembly for specified CPU.
122*4e366538SXin Li        # 'LIBYUV_DISABLE_X86',
123*4e366538SXin Li        # 'LIBYUV_DISABLE_NEON',
124*4e366538SXin Li        # 'LIBYUV_DISABLE_DSPR2',
125*4e366538SXin Li        # Enable the following macro to build libyuv as a shared library (dll).
126*4e366538SXin Li        # 'LIBYUV_USING_SHARED_LIBRARY',
127*4e366538SXin Li        # TODO(fbarchard): Make these into gyp defines.
128*4e366538SXin Li      ],
129*4e366538SXin Li      'include_dirs': [
130*4e366538SXin Li        'include',
131*4e366538SXin Li        '.',
132*4e366538SXin Li      ],
133*4e366538SXin Li      'direct_dependent_settings': {
134*4e366538SXin Li        'include_dirs': [
135*4e366538SXin Li          'include',
136*4e366538SXin Li          '.',
137*4e366538SXin Li        ],
138*4e366538SXin Li        'conditions': [
139*4e366538SXin Li          ['OS == "android" and target_arch == "arm64"', {
140*4e366538SXin Li            'ldflags': [
141*4e366538SXin Li              '-Wl,--dynamic-linker,/system/bin/linker64',
142*4e366538SXin Li            ],
143*4e366538SXin Li          }],
144*4e366538SXin Li          ['OS == "android" and target_arch != "arm64"', {
145*4e366538SXin Li            'ldflags': [
146*4e366538SXin Li              '-Wl,--dynamic-linker,/system/bin/linker',
147*4e366538SXin Li            ],
148*4e366538SXin Li          }],
149*4e366538SXin Li        ], #conditions
150*4e366538SXin Li      },
151*4e366538SXin Li      'sources': [
152*4e366538SXin Li        '<@(libyuv_sources)',
153*4e366538SXin Li      ],
154*4e366538SXin Li    },
155*4e366538SXin Li  ], # targets.
156*4e366538SXin Li}
157*4e366538SXin Li
158*4e366538SXin Li# Local Variables:
159*4e366538SXin Li# tab-width:2
160*4e366538SXin Li# indent-tabs-mode:nil
161*4e366538SXin Li# End:
162*4e366538SXin Li# vim: set expandtab tabstop=2 shiftwidth=2:
163