1# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- 2# vim: set filetype=python: 3# This Source Code Form is subject to the terms of the Mozilla Public 4# License, v. 2.0. If a copy of the MPL was not distributed with this 5# file, You can obtain one at http://mozilla.org/MPL/2.0/. 6 7with Files('*'): 8 BUG_COMPONENT = ('Core', 'Audio/Video') 9 10include('sources.mozbuild') 11 12# Linux, Mac and Win share file lists for x86* but not configurations. 13if CONFIG['CPU_ARCH'] == 'x86_64': 14 EXPORTS.aom += files['X64_EXPORTS'] 15 SOURCES += files['X64_SOURCES'] 16 USE_YASM = True 17 if CONFIG['OS_TARGET'] == 'WINNT': 18 if CONFIG['CC_TYPE'] == 'gcc': 19 ASFLAGS += [ '-I%s/media/libaom/config/win/mingw64/' % TOPSRCDIR ] 20 LOCAL_INCLUDES += [ '/media/libaom/config/win/mingw64/' ] 21 EXPORTS.aom += [ 'config/win/mingw64/aom_config.h' ] 22 else: 23 ASFLAGS += [ '-I%s/media/libaom/config/win/x64/' % TOPSRCDIR ] 24 LOCAL_INCLUDES += [ '/media/libaom/config/win/x64/' ] 25 EXPORTS.aom += [ 'config/win/x64/aom_config.h' ] 26 elif CONFIG['OS_TARGET'] == 'Darwin': 27 ASFLAGS += [ '-I%s/media/libaom/config/mac/x64/' % TOPSRCDIR ] 28 LOCAL_INCLUDES += [ '/media/libaom/config/mac/x64/' ] 29 EXPORTS.aom += [ 'config/mac/x64/aom_config.h' ] 30 else: # Android, Linux, BSDs, etc. 31 ASFLAGS += [ '-I%s/media/libaom/config/linux/x64/' % TOPSRCDIR ] 32 LOCAL_INCLUDES += [ '/media/libaom/config/linux/x64/' ] 33 EXPORTS.aom += [ 'config/linux/x64/aom_config.h' ] 34elif CONFIG['CPU_ARCH'] == 'x86': 35 EXPORTS.aom += files['IA32_EXPORTS'] 36 SOURCES += files['IA32_SOURCES'] 37 USE_YASM = True 38 if CONFIG['OS_TARGET'] == 'WINNT': 39 if CONFIG['CC_TYPE'] == 'gcc': 40 ASFLAGS += [ '-I%s/media/libaom/config/win/mingw32/' % TOPSRCDIR ] 41 LOCAL_INCLUDES += [ '/media/libaom/config/win/mingw32/' ] 42 EXPORTS.aom += [ 'config/win/mingw32/aom_config.h' ] 43 else: 44 ASFLAGS += [ '-I%s/media/libaom/config/win/ia32/' % TOPSRCDIR ] 45 LOCAL_INCLUDES += [ '/media/libaom/config/win/ia32/' ] 46 EXPORTS.aom += [ 'config/win/ia32/aom_config.h' ] 47 else: # Android, Linux, BSDs, etc. 48 ASFLAGS += [ '-I%s/media/libaom/config/linux/ia32/' % TOPSRCDIR ] 49 LOCAL_INCLUDES += [ '/media/libaom/config/linux/ia32/' ] 50 EXPORTS.aom += [ 'config/linux/ia32/aom_config.h' ] 51elif CONFIG['CPU_ARCH'] == 'arm': 52 EXPORTS.aom += files['ARM_EXPORTS'] 53 ASFLAGS += [ 54 '-I%s/media/libaom/config/linux/arm/' % TOPSRCDIR, 55 '-I%s/libaom' % OBJDIR, 56 ] 57 LOCAL_INCLUDES += [ '/media/libaom/config/linux/arm/' ] 58 EXPORTS.aom += [ 'config/linux/arm/aom_config.h' ] 59 60 arm_asm_files = files['ARM_SOURCES'] 61 62 if CONFIG['VPX_AS_CONVERSION']: 63 SOURCES += sorted([ 64 "!%s.S" % f if f.endswith('.asm') else f for f in arm_asm_files 65 ]) 66 else: 67 SOURCES += sorted(arm_asm_files) 68 69 for f in SOURCES: 70 if f.endswith('neon.c'): 71 SOURCES[f].flags += CONFIG['VPX_ASFLAGS'] 72 73 if CONFIG['OS_TARGET'] == 'Android': 74 # For cpu-features.h 75 LOCAL_INCLUDES += [ 76 '%%%s/sources/android/cpufeatures' % CONFIG['ANDROID_NDK'], 77 ] 78 if CONFIG['CC_TYPE'] == 'clang': 79 ASFLAGS += [ 80 '-no-integrated-as', 81 ] 82else: 83 # Generic C-only configuration 84 EXPORTS.aom += files['GENERIC_EXPORTS'] 85 SOURCES += files['GENERIC_SOURCES'] 86 ASFLAGS += [ '-I%s/media/libaom/config/generic/' % TOPSRCDIR ] 87 LOCAL_INCLUDES += [ '/media/libaom/config/generic/' ] 88 EXPORTS.aom += [ 'config/generic/aom_config.h' ] 89 90# We allow warnings for third-party code that can be updated from upstream. 91AllowCompilerWarnings() 92 93FINAL_LIBRARY = 'gkmedias' 94 95if CONFIG['OS_TARGET'] == 'Android': 96 # Older versions of the Android NDK don't pre-define anything to indicate 97 # the OS they're on, so do it for them. 98 DEFINES['__linux__'] = True 99 100 if not CONFIG['MOZ_WEBRTC']: 101 SOURCES += [ 102 '%%%s/sources/android/cpufeatures/cpu-features.c' % CONFIG['ANDROID_NDK'], 103 ] 104 105if CONFIG['CC_TYPE'] != 'msvc': 106 for f in SOURCES: 107 if f.endswith('sse2.c'): 108 SOURCES[f].flags += CONFIG['SSE2_FLAGS'] 109 elif f.endswith('ssse3.c'): 110 SOURCES[f].flags += ['-mssse3'] 111 elif f.endswith('sse4.c'): 112 SOURCES[f].flags += ['-msse4.1'] 113 elif f.endswith('avx.c'): 114 SOURCES[f].flags += ['-mavx'] 115 elif f.endswith('avx2.c'): 116 SOURCES[f].flags += ['-mavx2'] 117 118if CONFIG['CC_TYPE'] == 'msvc': 119 for f in SOURCES: 120 if f.endswith('avx.c'): 121 SOURCES[f].flags += ['-arch:AVX'] 122 if f.endswith('avx2.c'): 123 SOURCES[f].flags += ['-arch:AVX2'] 124 125# Suppress warnings in third-party code. 126if CONFIG['CC_TYPE'] in ('clang', 'clang-cl', 'gcc'): 127 CFLAGS += [ 128 '-Wno-sign-compare', 129 '-Wno-unused-function', # so many of these warnings; just ignore them 130 ] 131if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'): 132 CFLAGS += [ 133 '-Wno-unreachable-code', 134 '-Wno-unneeded-internal-declaration', 135 ] 136 137ASFLAGS += CONFIG['VPX_ASFLAGS'] 138ASFLAGS += [ 139 '-I.', 140 '-I%s/third_party/aom' % TOPSRCDIR, 141] 142 143LOCAL_INCLUDES += [ 144 '/media/libaom/config', # aom_version.h 145 '/third_party/aom', 146] 147