gfx/cairo/libpixman/src/moz.build
author Nathan Froyd <froydnj@gmail.com>
Tue, 28 Jun 2016 23:48:49 -0400
changeset 303012 0f7edd43d27ecc27622c08c03d1229cdef729339
parent 302511 9c245b0c0aaf91fda68d421ed7c74f4ea968f70a
child 306106 3ec6380fca8207fa199693206a3ca24975bf9833
permissions -rw-r--r--
Bug 1195477 - part 1 - use -no-integrated-as for clang builds on ARM, moz.build changes; r=glandium We have a lot of assembly written assuming gas's conventions, which clang's integrated assembler doesn't support. Disable the integrated assembler for those pieces of code.

# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

EXPORTS += [
    'pixman-version.h',
    'pixman.h',
]

# Apple's arm assembler doesn't support the same syntax as
# the standard GNU assembler, so use the C fallback paths for now.
# This may be fixable if clang's ARM/iOS assembler improves into a
# viable solution in the future.
if CONFIG['OS_ARCH'] != 'Darwin' and CONFIG['GNU_CC']:
    if CONFIG['HAVE_ARM_NEON']:
        SOURCES += [
            'pixman-arm-neon-asm-bilinear.S',
            'pixman-arm-neon-asm.S',
        ]
    if CONFIG['HAVE_ARM_SIMD']:
        SOURCES += [
            'pixman-arm-simd-asm-scaled.S',
            'pixman-arm-simd-asm.S',
        ]
    if CONFIG['CLANG_CXX']:
        ASFLAGS += [
            '-no-integrated-as',
        ]

SOURCES += [
    'pixman-access-accessors.c',
    'pixman-access.c',
    'pixman-arm.c',
    'pixman-bits-image.c',
    'pixman-combine-float.c',
    'pixman-combine16.c',
    'pixman-combine32.c',
    'pixman-conical-gradient.c',
    'pixman-edge-accessors.c',
    'pixman-edge.c',
    'pixman-fast-path.c',
    'pixman-filter.c',
    'pixman-general.c',
    'pixman-glyph.c',
    'pixman-gradient-walker.c',
    'pixman-image.c',
    'pixman-implementation.c',
    'pixman-linear-gradient.c',
    'pixman-matrix.c',
    'pixman-mips.c',
    'pixman-noop.c',
    'pixman-ppc.c',
    'pixman-radial-gradient.c',
    'pixman-region16.c',
    'pixman-region32.c',
    'pixman-solid-fill.c',
    'pixman-trap.c',
    'pixman-utils.c',
    'pixman-x86.c',
    'pixman.c',
]

# We allow warnings for third-party code that can be updated from upstream.
ALLOW_COMPILER_WARNINGS = True

FINAL_LIBRARY = 'gkmedias'
LOCAL_INCLUDES += [
    '../../cairo/src',
]

if CONFIG['MOZ_USE_PTHREADS']:
    DEFINES['HAVE_PTHREAD_SETSPECIFIC'] = True

if CONFIG['_MSC_VER']:
    DEFINES['PIXMAN_USE_XP_DLL_TLS_WORKAROUND'] = True

DEFINES['PACKAGE'] = 'mozpixman'

DEFINES['_USE_MATH_DEFINES'] = True

use_mmx = False
use_sse2 = False
use_vmx = False
use_arm_simd_gcc = False
use_arm_neon_gcc = False
if '86' in CONFIG['OS_TEST']:
    use_sse2 = True
    if '64' not in CONFIG['OS_TEST']:
        if CONFIG['_MSC_VER']:
            use_mmx = True
    if CONFIG['GNU_CC']:
        use_mmx = True
elif 'ppc' in CONFIG['OS_TEST']:
    if CONFIG['GNU_CC']:
        use_vmx = True
# Apple's arm assembler doesn't support the same syntax as
# the standard GNU assembler, so use the C fallback paths for now.
# This may be fixable if clang's ARM/iOS assembler improves into a
# viable solution in the future.
elif 'arm' in CONFIG['OS_TEST']:
    if CONFIG['OS_ARCH'] != 'Darwin':
        if CONFIG['HAVE_ARM_SIMD']:
            use_arm_simd_gcc = True
        if CONFIG['HAVE_ARM_NEON']:
            use_arm_neon_gcc = True

if use_mmx:
    DEFINES['USE_MMX'] = True
    SOURCES += ['pixman-mmx.c']
    SOURCES['pixman-mmx.c'].flags += CONFIG['MMX_FLAGS']
    if CONFIG['GNU_CC']:
        SOURCES['pixman-mmx.c'].flags += [
            '-Winline',
            '--param inline-unit-growth=10000',
            '--param large-function-growth=10000',
        ]

if use_sse2:
    DEFINES['USE_SSE'] = True
    DEFINES['USE_SSE2'] = True
    SOURCES += ['pixman-sse2.c']
    SOURCES['pixman-sse2.c'].flags += CONFIG['SSE_FLAGS'] + CONFIG['SSE2_FLAGS']
    if CONFIG['GNU_CC']:
        SOURCES['pixman-sse2.c'].flags += ['-Winline']

if use_vmx:
    DEFINES['USE_VMX'] = True
    SOURCES += ['pixman-vmx.c']
    SOURCES['pixman-vmx.c'].flags += ['-maltivec']

if use_arm_simd_gcc:
    DEFINES['USE_ARM_SIMD'] = True
    SOURCES += ['pixman-arm-simd.c']

if use_arm_neon_gcc:
    DEFINES['USE_ARM_NEON'] = True
    SOURCES += ['pixman-arm-neon.c']
    SOURCES['pixman-arm-neon.c'].flags += ['-mfpu=neon']

# Suppress warnings in third-party code.
if CONFIG['GNU_CC'] or CONFIG['CLANG_CL']:
    CFLAGS += [
        '-Wno-address',
        '-Wno-missing-field-initializers',
        '-Wno-sign-compare',
        '-Wno-unused',                      # too many unused warnings; ignore
    ]
if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL']:
    CFLAGS += [
        '-Wno-incompatible-pointer-types',
        '-Wno-tautological-compare',
        '-Wno-tautological-constant-out-of-range-compare',
    ]
if CONFIG['CLANG_CL']:
    CFLAGS += [
        '-Wno-unused-variable',
    ]

# See bug 386897.
if CONFIG['OS_TARGET'] == 'Android' and CONFIG['MOZ_OPTIMIZE']:
    CFLAGS += ['-O2']