[BETA] macOS support
1
.gitignore
vendored
|
|
@ -32,6 +32,7 @@ ID
|
|||
|
||||
obj-x86_64-pc-mingw32/
|
||||
obj-i686-pc-mingw32/
|
||||
autom4te.cache/
|
||||
|
||||
# Empty marker file that's generated when we check out NSS
|
||||
security/manager/.nss.checkout
|
||||
|
|
|
|||
3
.vscode/settings.json
vendored
|
|
@ -4,5 +4,8 @@
|
|||
"ForEach-Object": true,
|
||||
"Get-Item": true,
|
||||
"Test-Path": true
|
||||
},
|
||||
"files.associations": {
|
||||
"limits.h": "c"
|
||||
}
|
||||
}
|
||||
0
build/unix/run-mozilla.sh
Normal file → Executable file
|
|
@ -29,6 +29,23 @@ endif
|
|||
|
||||
-include $(DEPTH)/.mozconfig.mk
|
||||
|
||||
# Darwin's ranlib errors out on archive members without symbols.
|
||||
# Avoid implicit ranlib via 'ar ... s' and pass ranlib's suppression flag.
|
||||
ifeq ($(OS_ARCH),Darwin)
|
||||
AR_FLAGS = cr $@
|
||||
HOST_AR_FLAGS = cr $@
|
||||
ifneq (,$(findstring -no_warning_for_no_symbols,$(RANLIB)))
|
||||
RANLIB := $(RANLIB)
|
||||
else
|
||||
RANLIB := $(RANLIB) -no_warning_for_no_symbols
|
||||
endif
|
||||
ifneq (,$(findstring -no_warning_for_no_symbols,$(HOST_RANLIB)))
|
||||
HOST_RANLIB := $(HOST_RANLIB)
|
||||
else
|
||||
HOST_RANLIB := $(HOST_RANLIB) -no_warning_for_no_symbols
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef EXTERNALLY_MANAGED_MAKE_FILE
|
||||
# Import the automatically generated backend file. If this file doesn't exist,
|
||||
# the backend hasn't been properly configured. We want this to be a fatal
|
||||
|
|
|
|||
|
|
@ -326,7 +326,23 @@ def main(args, proc_callback=None):
|
|||
(options, args) = parser.parse_args(args)
|
||||
|
||||
with ExpandArgsMore(args) as args:
|
||||
run_ranlib = False
|
||||
ranlib_target = None
|
||||
|
||||
if options.extract:
|
||||
# --extract mode is used for archive creation in the recursive
|
||||
# make backend. On Darwin, run ranlib with the no-symbol warning
|
||||
# suppression flag to avoid failures on object members that
|
||||
# intentionally have no symbols.
|
||||
if sys.platform == 'darwin' and len(args):
|
||||
ar_basename = os.path.basename(conf.AR)
|
||||
cmd_basename = os.path.basename(args[0])
|
||||
if cmd_basename == ar_basename:
|
||||
for a in args[1:]:
|
||||
if os.path.splitext(a)[1] == conf.LIB_SUFFIX:
|
||||
ranlib_target = a
|
||||
run_ranlib = True
|
||||
break
|
||||
args.extract()
|
||||
if options.symbol_order:
|
||||
args.orderSymbols(options.symbol_order)
|
||||
|
|
@ -349,6 +365,15 @@ def main(args, proc_callback=None):
|
|||
sys.stderr.flush()
|
||||
if proc.returncode:
|
||||
return proc.returncode
|
||||
if run_ranlib and ranlib_target:
|
||||
ranlib_cmd = ['ranlib', '-no_warning_for_no_symbols', ranlib_target]
|
||||
ranlib = subprocess.Popen(ranlib_cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
(ranlib_out, ranlib_err) = ranlib.communicate()
|
||||
if ranlib_out:
|
||||
sys.stderr.write(ranlib_out)
|
||||
sys.stderr.flush()
|
||||
if ranlib.returncode:
|
||||
return ranlib.returncode
|
||||
return 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
|||
|
|
@ -113,6 +113,12 @@ else
|
|||
AC_PROG_CC
|
||||
AC_PROG_CXX
|
||||
AC_PROG_RANLIB
|
||||
case "$target" in
|
||||
*-apple-darwin*)
|
||||
AR_FLAGS='cr $@'
|
||||
RANLIB="$RANLIB -no_warning_for_no_symbols"
|
||||
;;
|
||||
esac
|
||||
MOZ_PATH_PROGS(AS, $AS as, $CC)
|
||||
AC_CHECK_PROGS(AR, ar, :)
|
||||
AC_CHECK_PROGS(LD, ld, :)
|
||||
|
|
|
|||
0
mach
Normal file → Executable file
40
media/ffvpx/config_darwin_new.h
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
#pragma once
|
||||
|
||||
/*
|
||||
* Consolidated macOS ffvpx config.
|
||||
*
|
||||
* Include defaults first to provide 0-valued fallbacks for missing CONFIG_*
|
||||
* symbols, then include generated platform config so enabled features keep
|
||||
* their configured values.
|
||||
*/
|
||||
|
||||
#include "defaults_disabled.h"
|
||||
#include "config_darwin64.h"
|
||||
#include "config_common.h"
|
||||
|
||||
/*
|
||||
* UXP macOS build policy: keep ffvpx software-only for H.264 paths.
|
||||
* Force these toggles off even if upstream-generated headers enable them.
|
||||
*/
|
||||
#undef CONFIG_H264_D3D11VA_HWACCEL
|
||||
#define CONFIG_H264_D3D11VA_HWACCEL 0
|
||||
#undef CONFIG_H264_DXVA2_HWACCEL
|
||||
#define CONFIG_H264_DXVA2_HWACCEL 0
|
||||
#undef CONFIG_H264_VAAPI_HWACCEL
|
||||
#define CONFIG_H264_VAAPI_HWACCEL 0
|
||||
#undef CONFIG_H264_VDA_HWACCEL
|
||||
#define CONFIG_H264_VDA_HWACCEL 0
|
||||
#undef CONFIG_H264_VIDEOTOOLBOX_HWACCEL
|
||||
#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
|
||||
#undef CONFIG_H264_VDPAU_HWACCEL
|
||||
#define CONFIG_H264_VDPAU_HWACCEL 0
|
||||
#undef CONFIG_H264_VDPAU_DECODER
|
||||
#define CONFIG_H264_VDPAU_DECODER 0
|
||||
|
||||
/* Keep transform APIs enabled because avcodec.symbols exports them. */
|
||||
#undef CONFIG_DCT
|
||||
#define CONFIG_DCT 1
|
||||
#undef CONFIG_MDCT
|
||||
#define CONFIG_MDCT 1
|
||||
#undef CONFIG_RDFT
|
||||
#define CONFIG_RDFT 1
|
||||
|
|
@ -112,3 +112,10 @@ if CONFIG['CLANG_CL']:
|
|||
'-fmodules-cache-path=' + TOPOBJDIR + '/media/ffpvx',
|
||||
'-fbuiltin-module-map',
|
||||
]
|
||||
|
||||
if CONFIG['OS_TARGET'] == 'Darwin':
|
||||
LOCAL_INCLUDES += [
|
||||
'/media/ffvpx',
|
||||
]
|
||||
CFLAGS += ['-include', 'config_darwin_new.h']
|
||||
CXXFLAGS += ['-include', 'config_darwin_new.h']
|
||||
|
|
@ -59,6 +59,20 @@
|
|||
av_register_codec_parser(&ff_##x##_parser); \
|
||||
}
|
||||
|
||||
#ifdef __APPLE__
|
||||
#undef REGISTER_ENCODER
|
||||
#undef REGISTER_DECODER
|
||||
#undef REGISTER_ENCDEC
|
||||
#undef REGISTER_HWACCEL
|
||||
#undef REGISTER_PARSER
|
||||
|
||||
#define REGISTER_ENCODER(X, x) do { } while (0)
|
||||
#define REGISTER_DECODER(X, x) do { } while (0)
|
||||
#define REGISTER_ENCDEC(X, x) do { } while (0)
|
||||
#define REGISTER_HWACCEL(X, x) do { } while (0)
|
||||
#define REGISTER_PARSER(X, x) do { } while (0)
|
||||
#endif
|
||||
|
||||
static void register_all(void)
|
||||
{
|
||||
/* hardware accelerators */
|
||||
|
|
|
|||
|
|
@ -3,77 +3,82 @@
|
|||
# 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 += [
|
||||
'aacpsdsp.asm',
|
||||
'aacpsdsp_init.c',
|
||||
'bswapdsp.asm',
|
||||
'bswapdsp_init.c',
|
||||
'constants.c',
|
||||
'dct32.asm',
|
||||
'dct_init.c',
|
||||
'fdct.c',
|
||||
'fdctdsp_init.c',
|
||||
'fft.asm',
|
||||
'fft_init.c',
|
||||
'flacdsp.asm',
|
||||
'flacdsp_init.c',
|
||||
'fpel.asm',
|
||||
'h264_chromamc.asm',
|
||||
'h264_chromamc_10bit.asm',
|
||||
'h264_deblock.asm',
|
||||
'h264_deblock_10bit.asm',
|
||||
'h264_idct.asm',
|
||||
'h264_idct_10bit.asm',
|
||||
'h264_intrapred.asm',
|
||||
'h264_intrapred_10bit.asm',
|
||||
'h264_intrapred_init.c',
|
||||
'h264_qpel.c',
|
||||
'h264_qpel_10bit.asm',
|
||||
'h264_qpel_8bit.asm',
|
||||
'h264_weight.asm',
|
||||
'h264_weight_10bit.asm',
|
||||
'h264chroma_init.c',
|
||||
'h264dsp_init.c',
|
||||
'hevc_add_res.asm',
|
||||
'hevc_deblock.asm',
|
||||
'hevc_idct.asm',
|
||||
'hevc_mc.asm',
|
||||
'hevc_sao.asm',
|
||||
'hevc_sao_10bit.asm',
|
||||
'hevcdsp_init.c',
|
||||
'idctdsp.asm',
|
||||
'idctdsp_init.c',
|
||||
'imdct36.asm',
|
||||
'mdct15.asm',
|
||||
'mdct15_init.c',
|
||||
'me_cmp.asm',
|
||||
'me_cmp_init.c',
|
||||
'mpegaudiodsp.c',
|
||||
'pixblockdsp.asm',
|
||||
'pixblockdsp_init.c',
|
||||
'qpel.asm',
|
||||
'sbrdsp.asm',
|
||||
'sbrdsp_init.c',
|
||||
'simple_idct.asm',
|
||||
'simple_idct10.asm',
|
||||
'videodsp.asm',
|
||||
'videodsp_init.c',
|
||||
'vp8dsp.asm',
|
||||
'vp8dsp_init.c',
|
||||
'vp8dsp_loopfilter.asm',
|
||||
'vp9dsp_init.c',
|
||||
'vp9dsp_init_10bpp.c',
|
||||
'vp9dsp_init_12bpp.c',
|
||||
'vp9dsp_init_16bpp.c',
|
||||
'vp9intrapred.asm',
|
||||
'vp9intrapred_16bpp.asm',
|
||||
'vp9itxfm.asm',
|
||||
'vp9itxfm_16bpp.asm',
|
||||
'vp9lpf.asm',
|
||||
'vp9lpf_16bpp.asm',
|
||||
'vp9mc.asm',
|
||||
'vp9mc_16bpp.asm',
|
||||
]
|
||||
if CONFIG['OS_TARGET'] == 'Darwin':
|
||||
SOURCES += [
|
||||
'x86util_stub.c',
|
||||
]
|
||||
else:
|
||||
SOURCES += [
|
||||
'aacpsdsp.asm',
|
||||
'aacpsdsp_init.c',
|
||||
'bswapdsp.asm',
|
||||
'bswapdsp_init.c',
|
||||
'constants.c',
|
||||
'dct32.asm',
|
||||
'dct_init.c',
|
||||
'fdct.c',
|
||||
'fdctdsp_init.c',
|
||||
'fft.asm',
|
||||
'fft_init.c',
|
||||
'flacdsp.asm',
|
||||
'flacdsp_init.c',
|
||||
'fpel.asm',
|
||||
'h264_chromamc.asm',
|
||||
'h264_chromamc_10bit.asm',
|
||||
'h264_deblock.asm',
|
||||
'h264_deblock_10bit.asm',
|
||||
'h264_idct.asm',
|
||||
'h264_idct_10bit.asm',
|
||||
'h264_intrapred.asm',
|
||||
'h264_intrapred_10bit.asm',
|
||||
'h264_intrapred_init.c',
|
||||
'h264_qpel.c',
|
||||
'h264_qpel_10bit.asm',
|
||||
'h264_qpel_8bit.asm',
|
||||
'h264_weight.asm',
|
||||
'h264_weight_10bit.asm',
|
||||
'h264chroma_init.c',
|
||||
'h264dsp_init.c',
|
||||
'hevc_add_res.asm',
|
||||
'hevc_deblock.asm',
|
||||
'hevc_idct.asm',
|
||||
'hevc_mc.asm',
|
||||
'hevc_sao.asm',
|
||||
'hevc_sao_10bit.asm',
|
||||
'hevcdsp_init.c',
|
||||
'idctdsp.asm',
|
||||
'idctdsp_init.c',
|
||||
'imdct36.asm',
|
||||
'mdct15.asm',
|
||||
'mdct15_init.c',
|
||||
'me_cmp.asm',
|
||||
'me_cmp_init.c',
|
||||
'mpegaudiodsp.c',
|
||||
'pixblockdsp.asm',
|
||||
'pixblockdsp_init.c',
|
||||
'qpel.asm',
|
||||
'sbrdsp.asm',
|
||||
'sbrdsp_init.c',
|
||||
'simple_idct.asm',
|
||||
'simple_idct10.asm',
|
||||
'videodsp.asm',
|
||||
'videodsp_init.c',
|
||||
'vp8dsp.asm',
|
||||
'vp8dsp_init.c',
|
||||
'vp8dsp_loopfilter.asm',
|
||||
'vp9dsp_init.c',
|
||||
'vp9dsp_init_10bpp.c',
|
||||
'vp9dsp_init_12bpp.c',
|
||||
'vp9dsp_init_16bpp.c',
|
||||
'vp9intrapred.asm',
|
||||
'vp9intrapred_16bpp.asm',
|
||||
'vp9itxfm.asm',
|
||||
'vp9itxfm_16bpp.asm',
|
||||
'vp9lpf.asm',
|
||||
'vp9lpf_16bpp.asm',
|
||||
'vp9mc.asm',
|
||||
'vp9mc_16bpp.asm',
|
||||
]
|
||||
|
||||
FINAL_LIBRARY = 'mozavcodec'
|
||||
|
||||
|
|
|
|||
37
media/ffvpx/libavcodec/x86/x86util_stub.c
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
// Stub x86 init hooks for Darwin when x86 asm objects are disabled.
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavcodec/avcodec.h"
|
||||
#include "libavcodec/dct.h"
|
||||
#include "libavcodec/fdctdsp.h"
|
||||
#include "libavcodec/fft.h"
|
||||
#include "libavcodec/idctdsp.h"
|
||||
|
||||
void ff_dct_init_x86(DCTContext *s) {
|
||||
(void)s;
|
||||
}
|
||||
|
||||
void ff_fdctdsp_init_x86(FDCTDSPContext *c, AVCodecContext *avctx,
|
||||
unsigned high_bit_depth) {
|
||||
(void)c;
|
||||
(void)avctx;
|
||||
(void)high_bit_depth;
|
||||
}
|
||||
|
||||
void ff_fft_init_x86(FFTContext *s) {
|
||||
(void)s;
|
||||
}
|
||||
|
||||
int ff_init_scantable_permutation_x86(uint8_t *idct_permutation,
|
||||
enum idct_permutation_type perm_type) {
|
||||
(void)idct_permutation;
|
||||
(void)perm_type;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx,
|
||||
unsigned high_bit_depth) {
|
||||
(void)c;
|
||||
(void)avctx;
|
||||
(void)high_bit_depth;
|
||||
}
|
||||
|
|
@ -468,6 +468,8 @@ av_xtea_init
|
|||
av_xtea_le_crypt
|
||||
av_xtea_le_init
|
||||
avpriv_alloc_fixed_dsp
|
||||
avpriv_atomic_int_add_and_fetch
|
||||
avpriv_atomic_ptr_cas
|
||||
avpriv_cga_font
|
||||
avpriv_dict_set_timestamp
|
||||
avpriv_float_dsp_alloc
|
||||
|
|
|
|||
|
|
@ -8,9 +8,8 @@
|
|||
if CONFIG['FFVPX_ASFLAGS']:
|
||||
DIRS += ['x86']
|
||||
|
||||
# 'dummy_funcs.c',
|
||||
|
||||
SharedLibrary('mozavutil')
|
||||
|
||||
SOURCES += [
|
||||
'adler32.c',
|
||||
'aes.c',
|
||||
|
|
@ -43,7 +42,7 @@ SOURCES += [
|
|||
'hash.c',
|
||||
'hmac.c',
|
||||
'hwcontext.c',
|
||||
'hwcontext_cuda.c',
|
||||
# 'hwcontext_cuda.c', # DISABLED: macOS does not support CUDA/NVCUVID
|
||||
'imgutils.c',
|
||||
'integer.c',
|
||||
'intmath.c',
|
||||
|
|
@ -83,7 +82,7 @@ SOURCES += [
|
|||
'xtea.c',
|
||||
]
|
||||
|
||||
SYMBOLS_FILE = 'avutil.symbols'
|
||||
SYMBOLS_FILE = 'avutil.symbols'
|
||||
NO_VISIBILITY_FLAGS = True
|
||||
|
||||
OS_LIBS += CONFIG['REALTIME_LIBS']
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ typedef int x86_reg;
|
|||
#define HAVE_7REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE))
|
||||
#define HAVE_6REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE || HAVE_EBP_AVAILABLE))
|
||||
|
||||
#if ARCH_X86_64 && defined(PIC)
|
||||
#if ARCH_X86_64 && (defined(PIC) || defined(__PIC__) || defined(__pic__))
|
||||
# define BROKEN_RELOCATIONS 1
|
||||
#endif
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ typedef int x86_reg;
|
|||
#define LABEL_MANGLE(a) EXTERN_PREFIX #a
|
||||
|
||||
// Use rip-relative addressing if compiling PIC code on x86-64.
|
||||
#if ARCH_X86_64 && defined(PIC)
|
||||
#if ARCH_X86_64 && (defined(PIC) || defined(__PIC__) || defined(__pic__))
|
||||
# define LOCAL_MANGLE(a) #a "(%%rip)"
|
||||
#else
|
||||
# define LOCAL_MANGLE(a) #a
|
||||
|
|
|
|||
|
|
@ -3,19 +3,24 @@
|
|||
# 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 += [
|
||||
'cpu.c',
|
||||
'cpuid.asm',
|
||||
'emms.asm',
|
||||
'fixed_dsp.asm',
|
||||
'fixed_dsp_init.c',
|
||||
'float_dsp.asm',
|
||||
'float_dsp_init.c',
|
||||
'imgutils.asm',
|
||||
'imgutils_init.c',
|
||||
'lls.asm',
|
||||
'lls_init.c'
|
||||
]
|
||||
if CONFIG['OS_TARGET'] == 'Darwin':
|
||||
SOURCES += [
|
||||
'x86util_stub.c',
|
||||
]
|
||||
else:
|
||||
SOURCES += [
|
||||
'cpu.c',
|
||||
'cpuid.asm',
|
||||
'emms.asm',
|
||||
'fixed_dsp.asm',
|
||||
'fixed_dsp_init.c',
|
||||
'float_dsp.asm',
|
||||
'float_dsp_init.c',
|
||||
'imgutils.asm',
|
||||
'imgutils_init.c',
|
||||
'lls.asm',
|
||||
'lls_init.c',
|
||||
]
|
||||
|
||||
FINAL_LIBRARY = 'mozavutil'
|
||||
|
||||
|
|
|
|||
22
media/ffvpx/libavutil/x86/x86util_stub.c
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// Empty stub to satisfy build system on macOS
|
||||
#include <stdint.h>
|
||||
|
||||
// CPU flags: return 0 (no SIMD)
|
||||
int ff_get_cpu_flags_x86(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Fixed DSP: do nothing
|
||||
void ff_fixed_dsp_init_x86(void *dsp) {
|
||||
(void)dsp;
|
||||
}
|
||||
|
||||
// Float DSP: do nothing
|
||||
void ff_float_dsp_init_x86(void *fdsp) {
|
||||
(void)fdsp;
|
||||
}
|
||||
|
||||
// LLS init: do nothing
|
||||
void ff_init_lls_x86(void *lls) {
|
||||
(void)lls;
|
||||
}
|
||||
|
|
@ -19,33 +19,37 @@ if CONFIG['CPU_ARCH'] == 'arm':
|
|||
]
|
||||
|
||||
if CONFIG['INTEL_ARCHITECTURE']:
|
||||
DEFINES['ADLER32_SIMD_SSSE3'] = True
|
||||
DEFINES['INFLATE_CHUNK_SIMD_SSE2'] = True
|
||||
DEFINES['CRC32_SIMD_SSE42_PCLMUL'] = True
|
||||
SOURCES += [
|
||||
'adler32_simd.c',
|
||||
'crc32_simd.c',
|
||||
'crc_folding.c',
|
||||
'fill_window_sse.c',
|
||||
'inffast_chunk.c',
|
||||
'inflate_simd.c',
|
||||
'x86.c',
|
||||
]
|
||||
|
||||
if CONFIG['OS_ARCH'] == 'Darwin':
|
||||
# Keep SIMD/chunkcopy paths disabled on Darwin, but provide fallback
|
||||
# helper symbols used by crc32/deflate call sites.
|
||||
DEFINES['ADLER32_SIMD_SSSE3'] = False
|
||||
DEFINES['INFLATE_CHUNK_SIMD_SSE2'] = False
|
||||
DEFINES['CRC32_SIMD_SSE42_PCLMUL'] = False
|
||||
SOURCES += [
|
||||
'simd_darwin_stub.c',
|
||||
]
|
||||
else:
|
||||
SOURCES += [
|
||||
'adler32_simd.c',
|
||||
'crc32_simd.c',
|
||||
'crc_folding.c',
|
||||
'fill_window_sse.c',
|
||||
'inffast_chunk.c',
|
||||
'inflate_simd.c',
|
||||
]
|
||||
else:
|
||||
SOURCES += [
|
||||
'simd_stub.c',
|
||||
]
|
||||
|
||||
if CONFIG['CPU_ARCH'] != 'arm' and not CONFIG['INTEL_ARCHITECTURE']:
|
||||
SOURCES += [
|
||||
'inflate.c',
|
||||
]
|
||||
|
||||
if CONFIG['ZLIB_IN_MOZGLUE']:
|
||||
FINAL_LIBRARY = 'mozglue'
|
||||
DEFINES['IMPL_MFBT'] = True
|
||||
else:
|
||||
# The final library is in config/external/zlib
|
||||
FINAL_LIBRARY = 'zlib'
|
||||
|
||||
SOURCES += [
|
||||
|
|
@ -59,8 +63,10 @@ SOURCES += [
|
|||
'gzwrite.c',
|
||||
'infback.c',
|
||||
'inffast.c',
|
||||
'inflate.c',
|
||||
'inftrees.c',
|
||||
'trees.c',
|
||||
'uncompr.c',
|
||||
'zutil.c',
|
||||
]
|
||||
|
||||
|
|
|
|||
30
modules/zlib/src/simd_darwin_stub.c
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#include <assert.h>
|
||||
|
||||
#include "deflate.h"
|
||||
|
||||
void ZLIB_INTERNAL crc_fold_init(deflate_state *const s) {
|
||||
(void)s;
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void ZLIB_INTERNAL crc_fold_copy(deflate_state *const s,
|
||||
unsigned char *dst,
|
||||
const unsigned char *src,
|
||||
long len) {
|
||||
(void)s;
|
||||
(void)dst;
|
||||
(void)src;
|
||||
(void)len;
|
||||
assert(0);
|
||||
}
|
||||
|
||||
unsigned ZLIB_INTERNAL crc_fold_512to32(deflate_state *const s) {
|
||||
(void)s;
|
||||
assert(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ZLIB_INTERNAL fill_window_sse(deflate_state *s) {
|
||||
(void)s;
|
||||
assert(0);
|
||||
}
|
||||
43
mozconfigs/uxp-darwin-x64
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
mk_add_options MOZ_MAKE_FLAGS="-j12"
|
||||
|
||||
# Use Clang on MacOS
|
||||
export CXX="/usr/bin/clang++ -stdlib=libc++ -arch x86_64"
|
||||
export CC="/usr/bin/clang -arch x86_64"
|
||||
|
||||
# Build for MacOS 10.7 and above
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.7
|
||||
|
||||
# Standard build options for Dactyloidae
|
||||
ac_add_options --enable-application=basilisk
|
||||
ac_add_options --enable-optimize="-O2"
|
||||
ac_add_options --enable-strip
|
||||
ac_add_options --enable-devtools
|
||||
ac_add_options --enable-av1
|
||||
ac_add_options --disable-webrtc
|
||||
ac_add_options --enable-gamepad
|
||||
ac_add_options --enable-pie
|
||||
ac_add_options --enable-update-channel=release
|
||||
ac_add_options --disable-necko-wifi
|
||||
ac_add_options --enable-default-toolkit=cairo-cocoa
|
||||
ac_add_options --disable-updater
|
||||
ac_add_options --with-pthreads
|
||||
ac_add_options --enable-official-branding
|
||||
ac_add_options --disable-accessibility
|
||||
ac_add_options --disable-debug
|
||||
ac_add_options --disable-debug-js-modules
|
||||
ac_add_options --disable-debug-symbols
|
||||
ac_add_options --disable-tests
|
||||
|
||||
# Set MacOS SDK and target
|
||||
ac_add_options --with-macos-sdk=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk
|
||||
ac_add_options --host=x86_64-apple-darwin
|
||||
ac_add_options --target=x86_64-apple-darwin
|
||||
ac_add_options --with-macbundle-type=hybrid
|
||||
|
||||
export MOZILLA_OFFICIAL=1
|
||||
|
||||
# stops the compiler bitching
|
||||
CXXFLAGS="-std=c++17 -fgnu-keywords"
|
||||
ac_add_options --disable-jemalloc
|
||||
# from Dactyloidae Win64 mozconfig
|
||||
export MOZ_SOURCE_CHANGESET=iloveneedingtobodgechangesetfornoreason
|
||||
|
|
@ -120,6 +120,12 @@ else
|
|||
esac
|
||||
AC_PROG_CXX
|
||||
AC_PROG_RANLIB
|
||||
case "$target" in
|
||||
*-apple-darwin*)
|
||||
AR_FLAGS='cr $@'
|
||||
RANLIB="$RANLIB -no_warning_for_no_symbols"
|
||||
;;
|
||||
esac
|
||||
MOZ_PATH_PROGS(AS, $AS as, $CC)
|
||||
AC_CHECK_PROGS(AR, ar, :)
|
||||
AC_CHECK_PROGS(LD, ld, :)
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include <stddef.h>
|
||||
#include <string.h> /* memset(), memcpy() */
|
||||
#include <assert.h>
|
||||
#include <limits.h>
|
||||
|
||||
#define XML_BUILDING_EXPAT 1
|
||||
|
||||
|
|
|
|||
|
|
@ -7,22 +7,22 @@
|
|||
# be specified once. As a result, the source file paths are relative
|
||||
# to the location of the actual manifest.
|
||||
|
||||
#ifdef MOZ_WEBEXTENSIONS
|
||||
skin/classic/mozapps/extensions/extensionGeneric.svg (../../shared/webextensions/extensionGeneric.svg)
|
||||
skin/classic/mozapps/extensions/utilities.svg (../../shared/webextensions/utilities.svg)
|
||||
skin/classic/mozapps/extensions/navigation.png (../../shared/webextensions/navigation.png)
|
||||
skin/classic/mozapps/extensions/alerticon-warning.svg (../../shared/webextensions/alerticon-warning.svg)
|
||||
skin/classic/mozapps/extensions/alerticon-error.svg (../../shared/webextensions/alerticon-error.svg)
|
||||
skin/classic/mozapps/extensions/alerticon-info-positive.svg (../../shared/webextensions/alerticon-info-positive.svg)
|
||||
skin/classic/mozapps/extensions/alerticon-info-negative.svg (../../shared/webextensions/alerticon-info-negative.svg)
|
||||
#endif
|
||||
skin/classic/mozapps/formautofill/requestAutocomplete.css (../../shared/formautofill/requestAutocomplete.css)
|
||||
skin/classic/mozapps/plugins/pluginProblem.css (../../shared/plugins/pluginProblem.css)
|
||||
skin/classic/mozapps/aboutNetworking.css (../../shared/aboutNetworking.css)
|
||||
skin/classic/mozapps/aboutProfiles.css (../../shared/aboutProfiles.css)
|
||||
skin/classic/mozapps/aboutServiceWorkers.css (../../shared/aboutServiceWorkers.css)
|
||||
skin/classic/mozapps/plugins/contentPluginActivate.png (../../shared/plugins/contentPluginActivate.png)
|
||||
skin/classic/mozapps/plugins/contentPluginBlocked.png (../../shared/plugins/contentPluginBlocked.png)
|
||||
skin/classic/mozapps/plugins/contentPluginClose.png (../../shared/plugins/contentPluginClose.png)
|
||||
skin/classic/mozapps/plugins/contentPluginCrashed.png (../../shared/plugins/contentPluginCrashed.png)
|
||||
skin/classic/mozapps/plugins/contentPluginStripe.png (../../shared/plugins/contentPluginStripe.png)
|
||||
# Entire file disabled to prevent duplicate manifest entries during macOS builds.
|
||||
|
||||
# skin/classic/mozapps/extensions/extensionGeneric.svg (../../shared/webextensions/extensionGeneric.svg)
|
||||
# skin/classic/mozapps/extensions/navigation.png (../../shared/webextensions/navigation.png)
|
||||
# skin/classic/mozapps/extensions/alerticon-warning.svg (../../shared/webextensions/alerticon-warning.svg)
|
||||
# skin/classic/mozapps/extensions/alerticon-error.svg (../../shared/webextensions/alerticon-error.svg)
|
||||
# skin/classic/mozapps/extensions/alerticon-info-positive.svg (../../shared/webextensions/alerticon-info-positive.svg)
|
||||
# skin/classic/mozapps/extensions/alerticon-info-negative.svg (../../shared/webextensions/alerticon-info-negative.svg)
|
||||
|
||||
# skin/classic/mozapps/formautofill/requestAutocomplete.css (../../shared/formautofill/requestAutocomplete.css)
|
||||
# skin/classic/mozapps/plugins/pluginProblem.css (../../shared/plugins/pluginProblem.css)
|
||||
# skin/classic/mozapps/aboutNetworking.css (../../shared/aboutNetworking.css)
|
||||
# skin/classic/mozapps/aboutProfiles.css (../../shared/aboutProfiles.css)
|
||||
# skin/classic/mozapps/aboutServiceWorkers.css (../../shared/aboutServiceWorkers.css)
|
||||
# skin/classic/mozapps/plugins/contentPluginActivate.png (../../shared/plugins/contentPluginActivate.png)
|
||||
# skin/classic/mozapps/plugins/contentPluginBlocked.png (../../shared/plugins/contentPluginBlocked.png)
|
||||
# skin/classic/mozapps/plugins/contentPluginClose.png (../../shared/plugins/contentPluginClose.png)
|
||||
# skin/classic/mozapps/plugins/contentPluginCrashed.png (../../shared/plugins/contentPluginCrashed.png)
|
||||
# skin/classic/mozapps/plugins/contentPluginStripe.png (../../shared/plugins/contentPluginStripe.png)
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
<!-- 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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 18 18">
|
||||
<path fill="#e62117" d="M10.124,1.324l7.705,14.127c0.234,0.421,0.228,0.843-0.019,1.264c-0.114,0.193-0.271,0.347-0.467,0.461c-0.198,0.114-0.41,0.171-0.638,0.171H1.294c-0.228,0-0.44-0.057-0.636-0.171c-0.198-0.114-0.353-0.268-0.467-0.461c-0.247-0.421-0.254-0.843-0.02-1.264L7.876,1.324C7.99,1.117,8.147,0.953,8.348,0.833C8.548,0.712,8.766,0.652,9,0.652c0.234,0,0.451,0.06,0.652,0.181C9.853,0.953,10.009,1.117,10.124,1.324z M10.264,10.695l0.181-4.605c0-0.08-0.034-0.143-0.1-0.191c-0.087-0.073-0.168-0.11-0.241-0.11H7.896c-0.073,0-0.154,0.037-0.241,0.11c-0.067,0.048-0.1,0.118-0.1,0.211l0.17,4.586c0,0.067,0.034,0.122,0.1,0.165c0.067,0.044,0.147,0.065,0.241,0.065h1.856c0.094,0,0.172-0.021,0.236-0.065C10.222,10.818,10.258,10.762,10.264,10.695z M10.284,14.448v-1.907c0-0.094-0.031-0.172-0.095-0.236c-0.064-0.064-0.139-0.095-0.225-0.095H8.036c-0.087,0-0.162,0.031-0.225,0.095c-0.064,0.064-0.095,0.142-0.095,0.236v1.907c0,0.094,0.031,0.173,0.095,0.236c0.064,0.064,0.138,0.095,0.225,0.095h1.927c0.086,0,0.162-0.031,0.225-0.095C10.252,14.621,10.284,14.542,10.284,14.448z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
|
|
@ -1,6 +0,0 @@
|
|||
<!-- 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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 18 18">
|
||||
<path fill="#828282" d="M10.124,1.324l7.705,14.127c0.234,0.421,0.228,0.843-0.019,1.264c-0.114,0.193-0.271,0.347-0.467,0.461c-0.198,0.114-0.41,0.171-0.638,0.171H1.294c-0.228,0-0.44-0.057-0.636-0.171c-0.198-0.114-0.353-0.268-0.467-0.461c-0.247-0.421-0.254-0.843-0.02-1.264L7.876,1.324C7.99,1.117,8.147,0.953,8.348,0.833C8.548,0.712,8.766,0.652,9,0.652c0.234,0,0.451,0.06,0.652,0.181C9.853,0.953,10.009,1.117,10.124,1.324z M10.264,10.695l0.181-4.605c0-0.08-0.034-0.143-0.1-0.191c-0.087-0.073-0.168-0.11-0.241-0.11H7.896c-0.073,0-0.154,0.037-0.241,0.11c-0.067,0.048-0.1,0.118-0.1,0.211l0.17,4.586c0,0.067,0.034,0.122,0.1,0.165c0.067,0.044,0.147,0.065,0.241,0.065h1.856c0.094,0,0.172-0.021,0.236-0.065C10.222,10.818,10.258,10.762,10.264,10.695z M10.284,14.448v-1.907c0-0.094-0.031-0.172-0.095-0.236c-0.064-0.064-0.139-0.095-0.225-0.095H8.036c-0.087,0-0.162,0.031-0.225,0.095c-0.064,0.064-0.095,0.142-0.095,0.236v1.907c0,0.094,0.031,0.173,0.095,0.236c0.064,0.064,0.138,0.095,0.225,0.095h1.927c0.086,0,0.162-0.031,0.225-0.095C10.252,14.621,10.284,14.542,10.284,14.448z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
|
|
@ -1,6 +0,0 @@
|
|||
<!-- 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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 18 18">
|
||||
<path fill="#62c44e" d="M18,4.796c0,0.31-0.109,0.573-0.325,0.79l-8.408,8.406l-1.579,1.58c-0.217,0.217-0.48,0.325-0.789,0.325c-0.31,0-0.573-0.108-0.79-0.325l-1.579-1.58L0.325,9.79C0.108,9.573,0,9.31,0,9s0.108-0.573,0.325-0.79l1.58-1.579c0.216-0.217,0.479-0.325,0.789-0.325s0.573,0.108,0.79,0.325l3.414,3.426l7.617-7.63c0.217-0.216,0.48-0.325,0.79-0.325c0.309,0,0.572,0.109,0.789,0.325l1.58,1.58C17.891,4.224,18,4.487,18,4.796z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 733 B |
|
|
@ -1,6 +0,0 @@
|
|||
<!-- 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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 18 18">
|
||||
<path fill="#f0cd2f" d="M10.124,1.324l7.705,14.127c0.234,0.421,0.228,0.843-0.019,1.264c-0.114,0.193-0.271,0.347-0.467,0.461c-0.198,0.114-0.41,0.171-0.638,0.171H1.294c-0.228,0-0.44-0.057-0.636-0.171c-0.198-0.114-0.353-0.268-0.467-0.461c-0.247-0.421-0.254-0.843-0.02-1.264L7.876,1.324C7.99,1.117,8.147,0.953,8.348,0.833C8.548,0.712,8.766,0.652,9,0.652c0.234,0,0.451,0.06,0.652,0.181C9.853,0.953,10.009,1.117,10.124,1.324z M10.264,10.695l0.181-4.605c0-0.08-0.034-0.143-0.1-0.191c-0.087-0.073-0.168-0.11-0.241-0.11H7.896c-0.073,0-0.154,0.037-0.241,0.11c-0.067,0.048-0.1,0.118-0.1,0.211l0.17,4.586c0,0.067,0.034,0.122,0.1,0.165c0.067,0.044,0.147,0.065,0.241,0.065h1.856c0.094,0,0.172-0.021,0.236-0.065C10.222,10.818,10.258,10.762,10.264,10.695z M10.284,14.448v-1.907c0-0.094-0.031-0.172-0.095-0.236c-0.064-0.064-0.139-0.095-0.225-0.095H8.036c-0.087,0-0.162,0.031-0.225,0.095c-0.064,0.064-0.095,0.142-0.095,0.236v1.907c0,0.094,0.031,0.173,0.095,0.236c0.064,0.064,0.138,0.095,0.225,0.095h1.927c0.086,0,0.162-0.031,0.225-0.095C10.252,14.621,10.284,14.542,10.284,14.448z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
|
|
@ -1,12 +0,0 @@
|
|||
<!-- 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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 64 64">
|
||||
<defs>
|
||||
<linearGradient id="gradient-linear-puzzle-piece" x1="0%" y1="0%" x2="0%" y2="100%">
|
||||
<stop offset="0%" stop-color="#66cc52" stop-opacity="1"/>
|
||||
<stop offset="100%" stop-color="#60bf4c" stop-opacity="1"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<path fill="url('#gradient-linear-puzzle-piece')" d="M42,62c2.2,0,4-1.8,4-4l0-14.2c0,0,0.4-3.7,2.8-3.7c2.4,0,2.2,3.9,6.7,3.9c2.3,0,6.2-1.2,6.2-8.2 c0-7-3.9-7.9-6.2-7.9c-4.5,0-4.3,3.7-6.7,3.7c-2.4,0-2.8-3.8-2.8-3.8V22c0-2.2-1.8-4-4-4H31.5c0,0-3.4-0.6-3.4-3 c0-2.4,3.8-2.6,3.8-7.1c0-2.3-1.3-5.9-8.3-5.9s-8,3.6-8,5.9c0,4.5,3.4,4.7,3.4,7.1c0,2.4-3.4,3-3.4,3H6c-2.2,0-4,1.8-4,4l0,7.8 c0,0-0.4,6,4.4,6c3.1,0,3.2-4.1,7.3-4.1c2,0,4,1.9,4,6c0,4.2-2,6.3-4,6.3c-4,0-4.2-4.1-7.3-4.1c-4.8,0-4.4,5.8-4.4,5.8L2,58 c0,2.2,1.8,4,4,4H19c0,0,6.3,0.4,6.3-4.4c0-3.1-4-3.6-4-7.7c0-2,2.2-4.5,6.4-4.5c4.2,0,6.6,2.5,6.6,4.5c0,4-3.9,4.6-3.9,7.7 c0,4.9,6.3,4.4,6.3,4.4H42z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 663 B |
|
|
@ -1,114 +0,0 @@
|
|||
%if 0
|
||||
/* 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/. */
|
||||
%endif
|
||||
@import url("chrome://global/skin/in-content/common.css");
|
||||
|
||||
#addon-page {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
#addon-scrollbox {
|
||||
overflow: auto;
|
||||
-moz-box-orient: vertical;
|
||||
-moz-box-flex: 1;
|
||||
}
|
||||
|
||||
#spacer-start {
|
||||
-moz-box-flex: 1;
|
||||
}
|
||||
|
||||
#spacer-end {
|
||||
-moz-box-flex: 3;
|
||||
}
|
||||
|
||||
#addon-container {
|
||||
overflow: visible;
|
||||
max-width: 800px;
|
||||
margin: 20px;
|
||||
padding: 30px 90px;
|
||||
}
|
||||
|
||||
#addon-info {
|
||||
-moz-box-align: start;
|
||||
margin: 25px 10px;
|
||||
}
|
||||
|
||||
#icon {
|
||||
margin-top: 8px;
|
||||
margin-inline-end: 10px;
|
||||
max-width: 64px;
|
||||
max-height: 64px;
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/extensionGeneric.svg");
|
||||
}
|
||||
|
||||
.addon-info[type="theme"] #icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/themeGeneric.png");
|
||||
}
|
||||
|
||||
.addon-info[type="locale"] #icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/localeGeneric.png");
|
||||
}
|
||||
|
||||
.addon-info[type="plugin"] #icon {
|
||||
list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric.png");
|
||||
}
|
||||
|
||||
.addon-info[type="dictionary"] #icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/dictionaryGeneric.png");
|
||||
}
|
||||
|
||||
#name {
|
||||
font-size: 130%;
|
||||
}
|
||||
|
||||
#author {
|
||||
color: GrayText;
|
||||
}
|
||||
|
||||
#location {
|
||||
color: GrayText;
|
||||
}
|
||||
|
||||
#warning {
|
||||
margin-bottom: 25px;
|
||||
-moz-box-align: start;
|
||||
}
|
||||
|
||||
#warning-icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/alerticon-warning.svg");
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-top: 5px;
|
||||
margin-inline-end: 5px;
|
||||
}
|
||||
|
||||
#allow {
|
||||
margin-inline-start: 84px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#buttonDeck {
|
||||
margin-top: 25px;
|
||||
-moz-box-align: stretch;
|
||||
}
|
||||
|
||||
#continuePanel {
|
||||
-moz-box-pack: end;
|
||||
-moz-box-align: end;
|
||||
}
|
||||
|
||||
#restartPanel {
|
||||
-moz-box-pack: end;
|
||||
-moz-box-align: stretch;
|
||||
}
|
||||
|
||||
#restartPanelButtons {
|
||||
margin-top: 25px;
|
||||
-moz-box-pack: end;
|
||||
}
|
||||
|
||||
#later {
|
||||
color: GrayText;
|
||||
}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
|
||||
<style>
|
||||
use:not(:target) {
|
||||
display: none;
|
||||
}
|
||||
use {
|
||||
fill: #424f5a;
|
||||
}
|
||||
use[id$="-native"] {
|
||||
fill: GrayText;
|
||||
}
|
||||
use[id$="-grayscale"] {
|
||||
fill: #4d4d4d;
|
||||
}
|
||||
use[id$="-inverted"] {
|
||||
fill: #ddd;
|
||||
}
|
||||
</style>
|
||||
<defs>
|
||||
<path id="utilities-shape" d="m11.5,13.9l-.6-1.5c.3-.2 .5-.4 .8-.6 .2-.2 .4-.5 .6-.7l1.5,.6c.3,.1 .6,0 .7-.3l.4-1c.1-.3 0-.6-.3-.7l-1.5-.6c.1-.6 .1-1.3 0-2l1.5-.6c.3-.1 .4-.4 .3-.7l-.4-1c-.1-.3-.4-.4-.7-.3l-1.5,.6c-.2-.3-.4-.5-.6-.8-.2-.1-.5-.3-.7-.5l.6-1.5c.1-.3 0-.6-.3-.7l-.9-.4c-.3-.1-.6,0-.7,.3l-.6,1.5c-.6-.1-1.3-.1-2,0l-.6-1.5c-.1-.3-.4-.4-.7-.3l-1,.4c-.2,.1-.3,.4-.2,.6l.6,1.5c-.3,.3-.5,.5-.8,.7-.2,.3-.4,.5-.6,.8l-1.5-.7c-.3-.1-.6,0-.7,.3l-.4,.9c-.1,.3 0,.6 .3,.7l1.5,.7c-.1,.6-.1,1.3 0,1.9l-1.5,.6c-.3,.1-.4,.4-.3,.7l.4,1c.1,.3 .4,.4 .7,.3l1.5-.6c.2,.3 .4,.5 .6,.8 .2,.2 .5,.4 .7,.6l-.6,1.5c-.1,.3 0,.6 .3,.7l1,.4c.3,.1 .6,0 .7-.3l.6-1.5c.6,.1 1.3,.1 2,0l.6,1.5c.1,.3 .4,.4 .7,.3l1-.4c.1-.1 .3-.4 .1-.7zm-5.1-4.2c-.9-.9-.9-2.4 0-3.3 .9-.9 2.4-.9 3.3,0 .9,.9 .9,2.4 0,3.3-.9,.9-2.4,.9-3.3,0z"/>
|
||||
</defs>
|
||||
<use id="utilities" xlink:href="#utilities-shape"/>
|
||||
<use id="utilities-native" xlink:href="#utilities-shape"/>
|
||||
<use id="utilities-grayscale" xlink:href="#utilities-shape"/>
|
||||
<use id="utilities-inverted" xlink:href="#utilities-shape"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.7 KiB |