# 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/. SOURCES += [ 'alpha_processing.c', 'cost.c', 'dec.c', 'dec_clip_tables.c', 'enc.c', 'filters.c', 'lossless.c', 'lossless_enc.c', 'rescaler.c', 'ssim.c', 'upsampling.c', 'yuv.c', ] LOCAL_INCLUDES += [ '/media/libwebp', ] # Note the defines in this file for cpu instruction sets are mostly overridden # and enabled by what src/dsp/cpu.h does. So just removing the defines here may do # nothing. if CONFIG['TARGET_CPU'] == 'arm' and CONFIG['BUILD_ARM_NEON']: SOURCES += [ 'alpha_processing_neon.c', 'cost_neon.c', 'dec_neon.c', 'enc_neon.c', 'filters_neon.c', 'lossless_enc_neon.c', 'lossless_neon.c', 'rescaler_neon.c', 'upsampling_neon.c', 'yuv_neon.c', ] DEFINES['WEBP_HAVE_NEON'] = 1; for f in SOURCES: if f.endswith('neon.c'): SOURCES[f].flags += CONFIG['NEON_FLAGS'] elif CONFIG['TARGET_CPU'] == 'aarch64': SOURCES += [ 'alpha_processing_neon.c', 'cost_neon.c', 'dec_neon.c', 'enc_neon.c', 'filters_neon.c', 'lossless_enc_neon.c', 'lossless_neon.c', 'rescaler_neon.c', 'upsampling_neon.c', 'yuv_neon.c', ] DEFINES['WEBP_HAVE_NEON'] = 1; elif CONFIG['INTEL_ARCHITECTURE']: SOURCES += [ 'alpha_processing_sse2.c', 'alpha_processing_sse41.c', 'cost_sse2.c', 'dec_sse2.c', 'dec_sse41.c', 'enc_sse2.c', 'enc_sse41.c', 'filters_sse2.c', 'lossless_enc_sse2.c', 'lossless_enc_sse41.c', 'lossless_sse2.c', 'lossless_sse41.c', 'rescaler_sse2.c', 'ssim_sse2.c', 'upsampling_sse2.c', 'upsampling_sse41.c', 'yuv_sse2.c', 'yuv_sse41.c', ] DEFINES['WEBP_HAVE_SSE2'] = 1; DEFINES['WEBP_HAVE_SSE41'] = 1; # The avx intrinsics that libwebp uses are only available in gcc 11 or newer. if CONFIG["CC_TYPE"] != "gcc" or int(CONFIG["CC_VERSION"].split(".")[0]) >= 11: # disable avx2 until this bug is fixed # https://bugzilla.mozilla.org/show_bug.cgi?id=1980010 # https://issues.chromium.org/u/1/issues/435213378 # DEFINES['WEBP_HAVE_AVX2'] = 1; SOURCES += [ 'lossless_avx2.c', 'lossless_enc_avx2.c', ] for f in SOURCES: if f.endswith('sse2.c'): SOURCES[f].flags += CONFIG['SSE2_FLAGS'] elif f.endswith('sse41.c'): SOURCES[f].flags += ['-msse4.1'] elif f.endswith('avx2.c'): SOURCES[f].flags += ['-mavx2'] elif CONFIG['TARGET_CPU'].startswith('mips'): SOURCES += [ 'alpha_processing_mips_dsp_r2.c', 'cost_mips32.c', 'cost_mips_dsp_r2.c', 'dec_mips32.c', 'dec_mips_dsp_r2.c', 'enc_mips32.c', 'enc_mips_dsp_r2.c', 'filters_mips_dsp_r2.c', 'lossless_enc_mips32.c', 'lossless_enc_mips_dsp_r2.c', 'lossless_mips_dsp_r2.c', 'lossless_msa.c', 'rescaler_mips32.c', 'rescaler_mips_dsp_r2.c', 'rescaler_msa.c', 'upsampling_mips_dsp_r2.c', 'upsampling_msa.c', 'yuv_mips32.c', 'yuv_mips_dsp_r2.c', ] if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'): CFLAGS += ['-Wno-unreachable-code'] # Add libFuzzer configuration directives include('/tools/fuzzing/libfuzzer-config.mozbuild') FINAL_LIBRARY = 'xul' # We allow warnings for third-party code that can be updated from upstream. AllowCompilerWarnings()