moz.build (6753B)
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 7 with Files('*'): 8 BUG_COMPONENT = ('Core', 'Audio/Video') 9 10 include('sources.mozbuild') 11 12 if CONFIG['VPX_USE_NASM']: 13 USE_NASM = True 14 15 # Linux, Mac and Win share file lists for x86* but not configurations. 16 if CONFIG['TARGET_CPU'] == 'x86_64': 17 if CONFIG['OS_TARGET'] == 'WINNT': 18 EXPORTS.vpx += files['WIN_X64_EXPORTS'] 19 SOURCES += files['WIN_X64_SOURCES'] 20 ASFLAGS += [ '-I%s/media/libvpx/config/win/x64/' % TOPSRCDIR ] 21 LOCAL_INCLUDES += [ '/media/libvpx/config/win/x64/' ] 22 elif CONFIG['OS_TARGET'] == 'Darwin': 23 EXPORTS.vpx += files['MAC_X64_EXPORTS'] 24 SOURCES += files['MAC_X64_SOURCES'] 25 ASFLAGS += [ '-I%s/media/libvpx/config/mac/x64/' % TOPSRCDIR ] 26 LOCAL_INCLUDES += [ '/media/libvpx/config/mac/x64/' ] 27 else: # Android, Linux, BSDs, etc. 28 EXPORTS.vpx += files['LINUX_X64_EXPORTS'] 29 SOURCES += files['LINUX_X64_SOURCES'] 30 ASFLAGS += [ '-I%s/media/libvpx/config/linux/x64/' % TOPSRCDIR ] 31 LOCAL_INCLUDES += [ '/media/libvpx/config/linux/x64/' ] 32 elif CONFIG['TARGET_CPU'] == 'x86': 33 if CONFIG['OS_TARGET'] == 'WINNT': 34 EXPORTS.vpx += files['WIN_IA32_EXPORTS'] 35 SOURCES += files['WIN_IA32_SOURCES'] 36 ASFLAGS += [ '-I%s/media/libvpx/config/win/ia32/' % TOPSRCDIR ] 37 LOCAL_INCLUDES += [ '/media/libvpx/config/win/ia32/' ] 38 elif CONFIG['OS_TARGET'] == 'Darwin': 39 EXPORTS.vpx += files['MAC_IA32_EXPORTS'] 40 SOURCES += files['MAC_IA32_SOURCES'] 41 ASFLAGS += [ '-I%s/media/libvpx/config/mac/ia32/' % TOPSRCDIR ] 42 LOCAL_INCLUDES += [ '/media/libvpx/config/mac/ia32/' ] 43 else: # Android, Linux, BSDs, etc. 44 EXPORTS.vpx += files['LINUX_IA32_EXPORTS'] 45 SOURCES += files['LINUX_IA32_SOURCES'] 46 ASFLAGS += [ '-I%s/media/libvpx/config/linux/ia32/' % TOPSRCDIR ] 47 LOCAL_INCLUDES += [ '/media/libvpx/config/linux/ia32/' ] 48 elif CONFIG['TARGET_CPU'] == 'arm': 49 EXPORTS.vpx += files['LINUX_ARM_EXPORTS'] 50 ASFLAGS += [ 51 '-I%s/media/libvpx/config/linux/arm/' % TOPSRCDIR, 52 '-I%s/libvpx' % OBJDIR, 53 ] 54 LOCAL_INCLUDES += [ '/media/libvpx/config/linux/arm/' ] 55 56 arm_asm_files = files['LINUX_ARM_SOURCES'] 57 58 if CONFIG['GNU_AS']: 59 for f in arm_asm_files: 60 if not f.endswith('.asm'): 61 continue 62 GeneratedFile(f + ".S", 63 script="ads2gas.py", 64 entry_point="generate", 65 inputs=["libvpx/build/make/ads2gas.pl", f]) 66 SOURCES += sorted([ 67 "!%s.S" % f if f.endswith('.asm') else f for f in arm_asm_files 68 ]) 69 else: 70 SOURCES += sorted(arm_asm_files) 71 72 for f in SOURCES: 73 if f.endswith('.c') and 'neon' in f: 74 SOURCES[f].flags += CONFIG['VPX_ASFLAGS'] 75 76 if CONFIG['OS_TARGET'] == 'Android': 77 # For cpu-features.h 78 LOCAL_INCLUDES += [ 79 '%%%s/sources/android/cpufeatures' % CONFIG['ANDROID_NDK'], 80 ] 81 elif CONFIG['TARGET_CPU'] == 'aarch64': 82 if CONFIG['OS_TARGET'] == 'WINNT': 83 EXPORTS.vpx += files['WIN_AARCH64_EXPORTS'] 84 SOURCES += files['WIN_AARCH64_SOURCES'] 85 ASFLAGS += [ '-I%s/media/libvpx/config/win/aarch64/' % TOPSRCDIR ] 86 LOCAL_INCLUDES += [ '/media/libvpx/config/win/aarch64/' ] 87 elif CONFIG['OS_TARGET'] == 'Darwin': 88 EXPORTS.vpx += files['MAC_ARM64_EXPORTS'] 89 SOURCES += files['MAC_ARM64_SOURCES'] 90 ASFLAGS += [ '-I%s/media/libvpx/config/mac/arm64/' % TOPSRCDIR ] 91 LOCAL_INCLUDES += [ '/media/libvpx/config/mac/arm64/' ] 92 else: # Android, Linux, BSDs, etc. 93 EXPORTS.vpx += files['LINUX_ARM64_EXPORTS'] 94 SOURCES += files['LINUX_ARM64_SOURCES'] 95 ASFLAGS += [ '-I%s/media/libvpx/config/linux/arm64/' % TOPSRCDIR ] 96 LOCAL_INCLUDES += [ '/media/libvpx/config/linux/arm64/' ] 97 elif CONFIG['TARGET_CPU'] == 'loongarch64': 98 # LoongArch64 is Linux-only for now. 99 EXPORTS.vpx += files['LINUX_LOONGARCH64_EXPORTS'] 100 SOURCES += files['LINUX_LOONGARCH64_SOURCES'] 101 ASFLAGS += [ '-I%s/media/libvpx/config/linux/loongarch64/' % TOPSRCDIR ] 102 LOCAL_INCLUDES += [ '/media/libvpx/config/linux/loongarch64/' ] 103 else: 104 # Generic C-only configuration 105 EXPORTS.vpx += files['GENERIC_EXPORTS'] 106 SOURCES += files['GENERIC_SOURCES'] 107 ASFLAGS += [ '-I%s/media/libvpx/config/generic/' % TOPSRCDIR ] 108 LOCAL_INCLUDES += [ '/media/libvpx/config/generic/' ] 109 110 # We allow warnings for third-party code that can be updated from upstream. 111 AllowCompilerWarnings() 112 113 FINAL_LIBRARY = 'gkcodecs' 114 NoVisibilityFlags() 115 116 DEFINES['HAVE_CONFIG_H'] = 'vpx_config.h' 117 118 if CONFIG['OS_TARGET'] == 'Android': 119 # Older versions of the Android NDK don't pre-define anything to indicate 120 # the OS they're on, so do it for them. 121 DEFINES['__linux__'] = True 122 123 SOURCES += [ 124 '%%%s/sources/android/cpufeatures/cpu-features.c' % CONFIG['ANDROID_NDK'], 125 ] 126 127 for f in SOURCES: 128 if f.endswith('.c'): 129 if 'mmx.c' in f: 130 SOURCES[f].flags += ['-mmmx'] 131 if 'sse2.c' in f: 132 SOURCES[f].flags += CONFIG['SSE2_FLAGS'] 133 if 'ssse3.c' in f: 134 SOURCES[f].flags += ['-mssse3'] 135 if 'sse4.c' in f: 136 SOURCES[f].flags += ['-msse4.1'] 137 if 'avx.c' in f: 138 SOURCES[f].flags += ['-mavx'] 139 if 'avx2.c' in f: 140 SOURCES[f].flags += ['-mavx2'] 141 if 'neon_dotprod.c' in f: 142 SOURCES[f].flags += ['-march=armv8.2-a+dotprod'] 143 if 'neon_i8mm.c' in f: 144 SOURCES[f].flags += ['-march=armv8.2-a+dotprod+i8mm'] 145 if 'sve.c' in f: 146 SOURCES[f].flags += ['-march=armv8.2-a+dotprod+i8mm+sve'] 147 if 'sve2.c' in f: 148 SOURCES[f].flags += ['-march=armv9-a+sve2'] 149 if 'lsx.c' in f: 150 SOURCES[f].flags += ['-mlsx'] 151 152 # Suppress warnings in third-party code. 153 CFLAGS += [ 154 '-Wno-sign-compare', 155 '-Wno-unused-function', # so many of these warnings; just ignore them 156 ] 157 if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'): 158 CFLAGS += [ 159 '-Wno-unreachable-code', 160 '-Wno-unneeded-internal-declaration', 161 ] 162 163 ASFLAGS += CONFIG['VPX_ASFLAGS'] 164 ASFLAGS += [ 165 '-I./', 166 '-I%s/media/libvpx/libvpx/' % TOPSRCDIR, 167 ] 168 169 LOCAL_INCLUDES += [ 170 '/media/libvpx/config', # vpx_version.h 171 '/media/libvpx/libvpx', 172 ] 173 174 if CONFIG['OS_TARGET'] == 'Android': 175 # For LIBVPX_RAND 176 ASFLAGS += [ 177 '-D__ANDROID__' 178 ]