mozbuild 沙盒符号

注意

moz.build 文件的实现包含一个 Path 类。此类用作某些沙盒变量的后备类型。它表示相对于上下文的路径。支持的路径为

  • ‘/topsrcdir/relative/paths’

  • ‘srcdir/relative/paths’

  • ‘!/topobjdir/relative/paths’

  • ‘!objdir/relative/paths’

  • ‘%/filesystem/absolute/paths’

子上下文:文件

附加到文件上的元数据。

通常希望使用元数据来注释文件,例如哪些 Bugzilla 组件跟踪某些文件的问题。此子上下文是我们放置元数据的位置。

此子上下文的参数是一个文件匹配模式,该模式应用于主机文件的目录。如果模式匹配当前正在查找其信息的某个文件,则附加到此实例的元数据将应用于该文件。

模式是文件名字符的集合,其中使用 / 作为目录分隔符(UNIX 样式路径),并使用 *** 表示通配符匹配。

没有 * 字符的模式是字面匹配,最多匹配一个实体。

包含 *** 的模式是通配符匹配。 * 匹配至少在一个目录中的文件。 ** 匹配多个目录中的文件。

foo.html

仅匹配当前目录中的 foo.html 文件。

*.mjs

匹配当前目录中的所有 .mjs 文件。

**/*.cpp

匹配此目录和所有子目录中的所有 .cpp 文件。

foo/*.css

匹配 foo/ 目录中的所有 .css 文件。

bar/*

匹配 bar/ 目录及其所有子目录中的所有文件。

bar/**

这等效于上面的 bar/*

bar/**/foo

匹配 bar/ 目录及其所有子目录中的所有 foo 文件。

*** 之间行为的差异仅在模式跟随 *** 时才明显。以 * 结尾的模式是贪婪的。当您需要通配符之后的附加模式时,需要使用 **。例如 **/foo

BUG_COMPONENT

跟踪这些文件更改的 Bug 组件。

存储类型:

TypedTuple

输入类型:

tuple

值是描述 Bugzilla 产品和组件的 2 元组 unicode。例如 ('Firefox Build System', 'General')

FINAL

将变量赋值标记为已完成。

存储类型:

bool

输入类型:

bool

在正常处理过程中,来自较新 Files 上下文的 value 会覆盖先前设置的值。最后写入的获胜。这种行为并不总是想要的。 FINAL 提供了一种机制来防止进一步更新变量。

当设置 FINAL 时,此上下文中定义的所有变量的值都将标记为冻结,并且在读取元数据期间将忽略对它们的后续写入。

有关更多信息,请参阅 完成值

SCHEDULES

将源文件映射到当它们更改时应调度的 CI 任务

存储类型:

调度

输入类型:

list

。任务按命名组件分组,这些名称再次出现在 taskgraph 配置 `($topsrcdir/taskgraph/) 中。

某些组件是“包含”的,这意味着大多数文件的更改不会调度它们,除了 Files 子上下文中描述的那些文件之外。例如,py-lint 任务不需要为大多数更改调度,但当任何 Python 文件更改时应调度。此类组件的命名方法是在 SCHEDULES.inclusive 后追加

with Files(’**.py’)

SCHEDULES.inclusive += [‘py-lint’]

其他组件是“独占”的,这意味着大多数文件的更改都会调度它们,但某些文件仅影响一两个组件。例如,大多数文件会调度 Android、OS X、Windows 和 Linux 上 Firefox 的构建和测试,但 mobile/android/ 下的文件仅影响 Android 构建和测试,因此不需要其他操作系统的构建。测试套件提供了另一个示例:大多数文件会调度 reftests,但 reftest 脚本的更改只需要调度 reftests 而不调度其他套件。

独占组件的命名方法是设置 SCHEDULES.exclusive

with Files(‘mobile/android/**’)

SCHEDULES.exclusive = [‘android’]

变量

A11Y_MANIFESTS

定义 a11y 测试的清单文件的列表。

存储类型:

_OrderedListWithAction

输入类型:

list

ANDROID_INSTRUMENTATION_MANIFESTS

定义 Android 检测测试的清单文件的列表。

存储类型:

_OrderedListWithAction

输入类型:

list

ASFLAGS

传递给所有汇编源文件的汇编程序的标志

存储类型:

List

输入类型:

list

在此目录中声明。

请注意,标志的顺序在此处很重要;这些标志将按照它们在 moz.build 文件中出现的顺序添加到汇编程序的命令行中。

ASM_FLAGS

此上下文的链接器标志的配方。不要

存储类型:

AsmFlags

输入类型:

dict

直接操作。

BROWSER_CHROME_MANIFESTS

定义浏览器 chrome 测试的清单文件的列表。

存储类型:

_OrderedListWithAction

输入类型:

list

CFLAGS

传递给所有 C 源文件的 C 编译器的标志

存储类型:

List

输入类型:

list

在此目录中声明。

请注意,标志的顺序在此处很重要,这些标志将按照它们在 moz.build 文件中出现的顺序添加到编译器的命令行中。

CMFLAGS

传递给所有 Objective-C 的 Objective-C 编译器的标志

存储类型:

List

输入类型:

list

在此目录中声明的源文件。

请注意,标志的顺序在此处很重要;这些标志将按照它们在 moz.build 文件中出现的顺序添加到编译器的命令行中。

CMMFLAGS

传递给所有

存储类型:

List

输入类型:

list

在此目录中声明的 Objective-C++ 源文件的 Objective-C++ 编译器的标志。

请注意,标志的顺序在此处很重要;这些标志将按照它们在 moz.build 文件中出现的顺序添加到编译器的命令行中。

COMPILE_FLAGS

此上下文的编译标志的配方。不要被操作

存储类型:

CompileFlags

输入类型:

dict

直接。

CONFIGURE_DEFINE_FILES

从 configure/config.status 生成的输出文件。

存储类型:

_TypedList

输入类型:

list

这是 autoconf 中 AC_CONFIG_HEADER 的替代品。这与 CONFIGURE_SUBST_FILES 非常相似,只是生成逻辑考虑了 AC_DEFINE 的值而不是 AC_SUBST 的值。

CONFIGURE_SUBST_FILES

将使用类似配置的替换生成的输出文件。

存储类型:

_TypedList

输入类型:

list

这是 autoconf 中 AC_OUTPUT 的替代品。对于此列表中的每个路径,我们将在 srcdir 中搜索具有名称 {path}.in 的文件。将读取此文件的内容,并且像 @foo@ 这样的变量模式将替换为在配置期间声明的 AC_SUBST 变量的值。

CPP_UNIT_TESTS

编译 C++ 单元测试名称列表。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

此变量中的每个名称都对应于从具有相同基本名称的相应源文件构建的可执行文件。

如果配置标记 BIN_SUFFIX 已设置,则其值将自动附加到每个名称。如果名称已以 BIN_SUFFIX 结尾,则名称将保持不变。此变量仅在模板中可用。

CRASHTEST_MANIFESTS

定义崩溃测试的清单文件的列表。

存储类型:

_OrderedListWithAction

输入类型:

list

这些通常命名为 crashtests.list。

CXXFLAGS

传递给所有 C++ 源文件的 C++ 编译器的标志

存储类型:

List

输入类型:

list

在此目录中声明。

请注意,标志的顺序在此处很重要;这些标志将按照它们在 moz.build 文件中出现的顺序添加到编译器的命令行中。

DEFFILE

程序 .def(模块定义)文件。

存储类型:

Path

输入类型:

str

此变量仅可在 Windows 上使用。

DEFINES

要声明的编译器定义字典。

存储类型:

InitializedDefines

输入类型:

dict

这些作为 -Dkey='value'(对于字符串值)、-Dkey=value(对于数值)或 -Dkey(如果值为 True)传递给编译器。请注意,对于字符串值,外层单引号将被 shell 消耗。如果您希望在程序中包含字符串字面量,则该值需要使用双引号。

示例

DEFINES['NS_NO_XPCOM'] = True
DEFINES['MOZ_EXTENSIONS_DB_SCHEMA'] = 15
DEFINES['DLL_SUFFIX'] = '".so"'

这将分别导致编译器标志 -DNS_NO_XPCOM-DMOZ_EXTENSIONS_DB_SCHEMA=15-DDLL_SUFFIX='".so"'

请注意,这些条目不一定传递给汇编程序。是否传递取决于汇编文件类型。或者,您可以向 ASFLAGS 中添加 -DKEY=value 条目。

DELAYLOAD_DLLS

延迟加载的 DLL。

存储类型:

List

输入类型:

list

此变量包含正在链接的模块应延迟加载的 DLL 文件列表。这仅在使用 MSVC 构建时有效。

DIRS

要向下遍历以查找构建前端文件的子目录。

存储类型:

_TypedList

输入类型:

list

这与 make 文件中的 DIRS 变量的工作方式类似。列表中的每个 str 值都是子目录的名称。完成此文件的解析后,构建读取器将向下遍历每个列出的目录并在其中读取前端文件。如果没有前端文件,则会引发错误。

值是相对路径。它们可以位于上级或下级多个目录级别。使用 .. 表示父目录,使用 / 表示路径分隔符。

DIST_INSTALL

是否将某些文件安装到 dist 目录中。

存储类型:

EnumClass

输入类型:

bool

默认情况下,某些文件类型安装在 dist 目录中,而某些文件类型则不安装。将此变量设置为 True 以强制安装默认情况下不会安装的某些文件。将此变量设置为 False 以强制不安装默认情况下会安装的某些文件。

由于历史原因,这令人困惑,但最终,行为将变得明确。

DIST_SUBDIR

要将文件安装到的备用目录的名称。

存储类型:

str

输入类型:

str

当此变量存在时,此目录的结果将最终放置在其原本放置位置的 $(DIST_SUBDIR) 子目录中。

EXPORTS

要导出的文件列表及其所在子目录。

存储类型:

_TypedListWithItems

输入类型:

list

EXPORTS 通常用于列出要导出到 dist/include 的包含文件,但它也可以用于其他文件。此变量在追加要导出到顶级目录的文件名时表现为列表。还可以将文件追加到字段以指示应将其导出到哪个子目录。例如,要将 foo.h 导出到顶级目录,并将 bar.h 导出到 mozilla/dom/,请像这样追加到 EXPORTS

EXPORTS += ['foo.h']
EXPORTS.mozilla.dom += ['bar.h']

EXPORTS 中的条目是路径,因此可以使用 objdir 路径,但从 objdir 列出的任何文件也必须在 GENERATED_FILES 中列出。

EXTRA_DSO_LDOPTS

链接共享库时传递给链接器的标志。

存储类型:

List

输入类型:

list

请注意,标志的顺序很重要,这些标志将按照其在 moz.build 文件中出现的顺序添加到链接器的命令行中。

FILES_PER_UNIFIED_FILE

要编译到每个统一源文件中的源文件数量。

存储类型:

int

输入类型:

int

FINAL_LIBRARY

将当前目录的对象链接到的库。

存储类型:

str

输入类型:

str

此变量包含库的名称,该库在其他地方使用 LIBRARY_NAME 定义,并将当前目录的对象链接到该库。

FINAL_TARGET

要将目标安装到的目录的名称。

存储类型:

FinalTargetValue

输入类型:

str

该目录相对于对象目录的顶部。默认值取决于 XPI_NAME 和 DIST_SUBDIR 的值。如果两者都不存在,则结果为 dist/bin。如果存在 XPI_NAME,则结果为 dist/xpi-stage/$(XPI_NAME)。如果存在 DIST_SUBDIR,则使用其他默认值的 $(DIST_SUBDIR) 目录。

FINAL_TARGET_FILES

要安装到应用程序目录中的文件列表。

存储类型:

_TypedListWithItems

输入类型:

list

FINAL_TARGET_FILES 将其文件的内容复制(或创建符号链接,如果平台支持)到 FINAL_TARGET 指定的目录(通常为 dist/bin)。可以通过访问字段或作为字典访问来指定要放置到子目录中的文件。例如,要将 foo.png 导出到顶级目录,并将 bar.svg 导出到 images/do-not-use 目录,请像这样追加到 FINAL_TARGET_FILES

FINAL_TARGET_FILES += ['foo.png']
FINAL_TARGET_FILES.images['do-not-use'] += ['bar.svg']

FINAL_TARGET_PP_FILES

FINAL_TARGET_FILES 类似,但具有预处理功能。

存储类型:

_TypedListWithItems

输入类型:

list

FIREFOX_UI_FUNCTIONAL_MANIFESTS

定义 firefox-ui-functional 测试的清单文件列表。

存储类型:

_OrderedListWithAction

输入类型:

list

FORCE_SHARED_LIB

此目录中的库是否为共享库。

存储类型:

bool

输入类型:

bool

此变量仅在模板中可用。

FORCE_STATIC_LIB

此目录中的库是否为静态库。

存储类型:

bool

输入类型:

bool

GENERATED_EVENTS_WEBIDL_FILES

生成的事件的 WebIDL 源文件。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

这些文件将被解析并转换为 .cpp.h 文件。

GENERATED_FILES

通用生成的文件。

存储类型:

StrictOrderingOnAppendListWithFlagsSpecialization

输入类型:

list

除非您有充分理由不这样做,否则请使用 GeneratedFile 模板而不是直接引用 GENERATED_FILES。GeneratedFile 模板具有与下面列出的属性相同的参数(scriptinputsflagsforce),以及一个额外的 entry_point 参数以指定要在给定脚本中运行的特定函数。

此变量包含构建系统在导出时要生成的文件列表。生成方法可以使用可选的 scriptinputsflagsforce 属性在单个条目上声明。如果条目上不存在可选的 script 属性,则假定相关 Makefile.in 中存在生成该文件的规则。

示例

GENERATED_FILES += ['bar.c', 'baz.c', 'foo.c']
bar = GENERATED_FILES['bar.c']
bar.script = 'generate.py'
bar.inputs = ['datafile-for-bar']
foo = GENERATED_FILES['foo.c']
foo.script = 'generate.py'
foo.inputs = ['datafile-for-foo']

此定义将通过调用 generate.py 的 main 方法来生成 bar.c,该方法带有用于 bar.c 的打开(用于写入)的文件对象和字符串 datafile-for-bar。以类似的方式,generate.py 的 main 方法也将被调用,并带有用于 foo.c 的打开(用于写入)的文件对象和字符串 datafile-for-foo。请注意,仅支持将字符串参数传递给脚本,并且提供给脚本的所有参数都应是相对于 moz.build 文件所在目录的文件名。

为了能够使用相同的脚本生成多个具有略微不同的非文件名参数的文件,可以指定 script 中的替代入口点

GENERATED_FILES += ['bar.c']
bar = GENERATED_FILES['bar.c']
bar.script = 'generate.py:make_bar'

所选的脚本入口点可以选择返回一组字符串,指示输出依赖的其他文件。

当存在 flags 属性时,给定的标志列表将作为输入后的额外参数传递。

当存在 force 属性时,无论文件是否陈旧,都会在每次构建时生成该文件。这对于 RecursiveMake 后端是特殊的,仅用于特殊情况(例如,本地化)。在使用 force 之前,请咨询构建同伴(在 https://chat.mozilla.org 上的 #build 频道)。

GENERATED_WEBIDL_FILES

生成的 WebIDL 源文件。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

这些文件将从其他一些文件生成。

GYP_DIRS

定义由 gyp 配置处理的对象目录列表。

存储类型:

StrictOrderingOnAppendListWithFlagsSpecialization

输入类型:

list

此列表的元素给出相对对象目录。对于列表中的每个元素,GYP_DIRS 可以作为字典访问(GYP_DIRS[foo])。返回的对象具有需要设置为进一步指定 gyp 处理的属性

  • input,给出该对象目录的根 gyp 配置文件的路径。

  • variables,一个包含要传递给 gyp 处理器的变量和值的字典。

  • sandbox_vars,一个包含要传递给 mozbuild 处理器的变量和值的字典,这些变量和值建立在从 gyp 配置派生的变量和值的基础上。

  • no_chromium,一个布尔值,如果设置为 True,则禁用某些模拟 gyp_chromium 的特殊处理。

  • no_unified,一个布尔值,如果设置为 True,则完全禁用源文件统一。

  • non_unified_sources,一个包含源文件的列表,相对于当前 moz.build,这些文件应从源文件统一中排除。

  • action_overrides,一个 action_name 到 script 属性值的字典,用于为指定的 action 使用 GENERATED_FILES。

典型用法如下所示

GYP_DIRS += [‘foo’, ‘bar’] GYP_DIRS[‘foo’].input = ‘foo/foo.gyp’ GYP_DIRS[‘foo’].variables = {

‘foo’: ‘bar’, (…)

} (…)

HOST_CFLAGS

传递给所有 C 源文件的宿主 C 编译器的标志

存储类型:

List

输入类型:

list

在此目录中声明。

请注意,标志的顺序在此处很重要,这些标志将按照它们在 moz.build 文件中出现的顺序添加到编译器的命令行中。

HOST_COMPILE_FLAGS

此上下文的宿主编译标志的配方。不要进行操作

存储类型:

HostCompileFlags

输入类型:

dict

直接。

HOST_CXXFLAGS

传递给所有 C++ 源文件的宿主 C++ 编译器的标志

存储类型:

List

输入类型:

list

在此目录中声明。

请注意,标志的顺序在此处很重要;这些标志将按照它们在 moz.build 文件中出现的顺序添加到编译器的命令行中。

HOST_DEFINES

要为宿主编译声明的编译器定义字典。

存储类型:

InitializedDefines

输入类型:

dict

有关详细信息,请参阅 DEFINES

HOST_LIBRARY_NAME

交叉编译时生成的 target 库的名称。

存储类型:

str

输入类型:

str

此变量仅在模板中可用。

HOST_OS_LIBS

宿主程序和库的系统库列表。

存储类型:

List

输入类型:

list

HOST_PROGRAM

已编译的宿主可执行文件名称。

存储类型:

str

输入类型:

str

如果设置了配置标记 HOST_BIN_SUFFIX,则其值将自动附加到 HOST_PROGRAM。如果 HOST_PROGRAM 已经以 HOST_BIN_SUFFIX 结尾,则 HOST_PROGRAM 将保持不变。此变量仅在模板中可用。

HOST_RUST_LIBRARY_FEATURES

为此宿主库激活的 Cargo 功能。

存储类型:

List

输入类型:

list

不应直接使用此变量;您应该改为使用 HostRustLibrary 模板。

HOST_RUST_PROGRAMS

编译 Rust 可执行文件名称列表。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

此变量中的每个名称对应于从同一目录中的 Cargo.toml 构建的可执行文件。

HOST_SIMPLE_PROGRAMS

编译主机可执行文件名称列表。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

此变量中的每个名称对应于从具有相同基本名称的相应源文件构建的主机可执行文件。

如果配置标记 HOST_BIN_SUFFIX 已设置,则其值将自动附加到每个名称。如果名称已以 HOST_BIN_SUFFIX 结尾,则名称将保持不变。此变量仅在模板中可用。

HOST_SOURCES

使用主机编译器编译的源代码文件。

存储类型:

_TypedList

输入类型:

list

此变量包含要编译的源代码文件列表,使用主机编译器。

HOST_USE_LIBS

要链接到主机程序和库的库列表。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

IPDL_SOURCES

IPDL 源文件。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

这些是 .ipdl 文件,将被解析并转换为 .cpp 文件。

IS_FRAMEWORK

是否应将要构建的库构建为 OSX 上的框架。

存储类型:

bool

输入类型:

bool

这意味着库的名称不会加前缀或后缀。暗示 FORCE_SHARED_LIB。此变量仅在模板中可用。

IS_GKRUST

此 moz.build 定义的当前库是否为 gkrust。

存储类型:

bool

输入类型:

bool

指示当前库是否包含 libxul 的 rust。此变量仅在模板中可用。

IS_RUST_LIBRARY

此 moz.build 定义的当前库是否由 Rust 构建。

存储类型:

bool

输入类型:

bool

此 moz.build 定义的库应该在存在于此 moz.build 目录中的 Cargo.toml 文件中具有构建定义。

JAR_MANIFESTS

应作为构建的一部分处理的 JAR 清单文件。

存储类型:

_TypedList

输入类型:

list

JAR 清单是树中的文件,定义如何将文件打包到 JAR 中以及如何执行 chrome 注册。有关更多信息,请参阅 JAR 清单

LDFLAGS

链接所有库时传递给链接器的标志,以及

存储类型:

List

输入类型:

list

在此目录中声明的可执行文件。

请注意,标志的顺序在此处很重要;这些标志将按照它们在 moz.build 文件中出现的顺序添加到链接器的命令行中。

LIBRARY_DEFINES

要为整个库声明的编译器定义的字典。

存储类型:

OrderedDict

输入类型:

dict

此变量的工作方式类似于 DEFINES,除了声明适用于通过 FINAL_LIBRARY 链接到此库的所有库。

LIBRARY_NAME

为目录生成的库的代码名称。

存储类型:

str

输入类型:

str

默认情况下,STATIC_LIBRARY_NAME 和 SHARED_LIBRARY_NAME 使用此名称。在 example/components/moz.build 中,

LIBRARY_NAME = 'xpcomsample'

将在 Linux 上生成 example/components/libxpcomsample.so,或在 Windows 上生成 example/components/xpcomsample.lib。此变量仅在模板中可用。

LOCALIZED_FILES

要安装到应用程序中的区域设置相关文件列表

存储类型:

_TypedListWithItems

输入类型:

list

目录。

此功能类似于 FINAL_TARGET_FILES,但文件来自区域设置目录,并且会因本地化而异。对于 en-US 构建,这在功能上等效于 FINAL_TARGET_FILES。对于使用 --enable-ui-locale 的构建,文件将取自 $LOCALE_SRCDIR,并删除开头的 en-US。对于 en-US 构建的 l10n 重新打包,文件将从其存在的第一个位置获取:* 如果存在,则合并的区域设置目录 * $LOCALE_SRCDIR,并删除开头的 en-US * 树内 en-US 位置

此处指定的源目录路径必须包含前导 en-US。允许使用通配符,并且将在区域设置打包时展开以匹配区域设置目录中的文件。

仅当路径与 LOCALIZED_GENERATED_FILES 中的条目匹配时,才允许在此处使用对象目录路径。

区域设置中缺少的文件通常会使用 en-US 版本,但对于通配符扩展,只会使用区域设置目录中的文件,即使这意味着不会复制任何文件。

示例

LOCALIZED_FILES.foo += [
  'en-US/foo.js',
  'en-US/things/*.ini',
]

如果将其放置在 toolkit/locales/moz.build 中,它将在 en-US 构建中将 toolkit/locales/en-US/foo.jstoolkit/locales/en-US/things/*.ini 复制到 $(DIST)/bin/foo,并在不同区域设置的构建(或重新打包)中,它将复制 $(LOCALE_SRCDIR)/toolkit/foo.js$(LOCALE_SRCDIR)/toolkit/things/*.ini

LOCALIZED_GENERATED_FILES

类似于 GENERATED_FILES,但用于其内容根据使用的区域设置而变化的文件。

存储类型:

StrictOrderingOnAppendListWithFlagsSpecialization

输入类型:

list

对于简单的文本替换情况,请首选 LOCALIZED_PP_FILES

请参阅 GENERATED_FILES 的文档;在大多数情况下,事情的工作方式相同。两个主要区别是:1. Python 脚本中的函数将传递一个额外的关键字参数 locale

它提供正在使用的区域设置,即 en-US

  1. inputs 列表可能包含指向将从区域设置源目录中获取的文件的路径(有关详细信息,请参阅 LOCALIZED_FILES)。以 en-US/ 开头或包含 locales/en-US/inputs 中的路径被视为本地化文件。

要将生成的输出文件放置在特定位置,请在 LOCALIZED_FILES 中列出其 objdir 路径。

此外,LOCALIZED_GENERATED_FILES 可以在其输出路径中使用特殊替换 {AB_CD}{AB_rCD}{AB_CD} 在多区域设置构建和单区域设置重新打包期间扩展为当前区域设置,而 {AB_rCD} 扩展为当前区域设置的 Android 特定编码。当当前区域设置为 en-US 时,两者都扩展为空字符串。

LOCALIZED_PP_FILES

类似于 LOCALIZED_FILES,具有预处理。

存储类型:

_TypedListWithItems

输入类型:

list

请注意, AB_CD 定义可用,并扩展为正在打包的当前区域设置,就像 jar 清单中的预处理条目一样。

LOCAL_INCLUDES

编译器要搜索的附加包含文件目录。

存储类型:

_TypedList

输入类型:

list

MARIONETTE_MANIFESTS

定义 marionette 测试的清单文件列表。

存储类型:

_OrderedListWithAction

输入类型:

list

METRO_CHROME_MANIFESTS

定义 metro 浏览器 chrome 测试的清单文件列表。

存储类型:

_OrderedListWithAction

输入类型:

list

MOCHITEST_CHROME_MANIFESTS

定义 mochitest chrome 测试的清单文件列表。

存储类型:

_OrderedListWithAction

输入类型:

list

MOCHITEST_MANIFESTS

定义 mochitest 测试的清单文件列表。

存储类型:

_OrderedListWithAction

输入类型:

list

NO_EXPAND_LIBS

强制构建真正的静态库,而不是相应的伪造

存储类型:

bool

输入类型:

bool

图书馆。

NO_PGO

是否在此目录中禁用 profile-guided 优化。

存储类型:

bool

输入类型:

bool

OBJDIR_FILES

要安装到 objdir 中任何位置的文件列表。谨慎使用。

存储类型:

_TypedListWithItems

输入类型:

list

OBJDIR_FILES 类似于 FINAL_TARGET_FILES,但它允许复制到对象目录中的任何位置。这适用于各种一次性情况,而不是用于一般用途。如果您希望向 OBJDIR_FILES 添加条目,请咨询构建同伴(在 https://chat.mozilla.org 上的 #build 频道)。

OBJDIR_PP_FILES

类似于 OBJDIR_FILES,具有预处理。谨慎使用。

存储类型:

_TypedListWithItems

输入类型:

list

OS_LIBS

系统链接库。

存储类型:

List

输入类型:

list

此变量包含要链接的系统库列表。

PERFTESTS_MANIFESTS

定义 MozPerftest 性能测试的清单文件列表。

存储类型:

_OrderedListWithAction

输入类型:

list

PREPROCESSED_IPDL_SOURCES

预处理的 IPDL 源文件。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

这些文件将被预处理,然后解析并转换为 .cpp 文件。

PREPROCESSED_TEST_WEBIDL_FILES

预处理的测试 WebIDL 源文件。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

如果启用了测试,这些文件将被预处理,然后解析并转换为 .cpp 和 .h 文件。

PREPROCESSED_WEBIDL_FILES

预处理的 WebIDL 源文件。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

在解析和转换之前,这些文件将被预处理。

PROGRAM

编译的可执行文件名称。

存储类型:

str

输入类型:

str

如果配置标记 BIN_SUFFIX 已设置,则其值将自动附加到 PROGRAM。如果 PROGRAM 已以 BIN_SUFFIX 结尾,则 PROGRAM 将保持不变。此变量仅在模板中可用。

PYTHON_UNITTEST_MANIFESTS

定义 python 单元测试的清单文件列表。

存储类型:

_OrderedListWithAction

输入类型:

list

RCFILE

程序 .rc 文件。

存储类型:

Path

输入类型:

str

此变量仅可在 Windows 上使用。

RCINCLUDE

要包含在默认 .res 文件中的资源脚本文件。

存储类型:

Path

输入类型:

str

此变量仅可在 Windows 上使用。

REFTEST_MANIFESTS

定义 reftests 的清单文件列表。

存储类型:

_OrderedListWithAction

输入类型:

list

这些通常命名为 reftest.list。

RUST_LIBRARY_FEATURES

要为此库激活的 Cargo 功能。

存储类型:

List

输入类型:

list

此变量不应直接使用;您应该使用 RustLibrary 模板。

RUST_LIBRARY_OUTPUT_CATEGORY

此上下文的 rust 库的输出类别。如果设置此项,它将

存储类型:

str

输入类型:

str

对应于将构建此 rust 库的构建命令,并且该库不会作为默认构建的一部分构建。

RUST_PROGRAMS

编译 Rust 主机可执行文件名称列表。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

此变量中的每个名称对应于从同一目录中的 Cargo.toml 构建的可执行文件。

RUST_TESTS

要通过 cargo test 构建和运行的 Rust 测试的名称。

存储类型:

_TypedList

输入类型:

list

RUST_TEST_FEATURES

要为 RUST_TESTS 激活的 Cargo 功能。

存储类型:

_TypedList

输入类型:

list

SANDBOXED_WASM_LIBRARY_NAME

为目录生成的静态沙盒化 wasm 库的名称。

存储类型:

str

输入类型:

str

SHARED_LIBRARY_NAME

为目录生成的静态库的名称,如果需要

存储类型:

str

输入类型:

str

与库代码名称不同。

暗示 FORCE_SHARED_LIB。

SHARED_LIBRARY_OUTPUT_CATEGORY

此上下文的共享库的输出类别。如果设置此项,它将

存储类型:

str

输入类型:

str

对应于将构建此共享库的构建命令,并且该库不会作为默认构建的一部分构建。

SIMPLE_PROGRAMS

编译可执行文件名称列表。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

此变量中的每个名称都对应于从具有相同基本名称的相应源文件构建的可执行文件。

如果配置标记 BIN_SUFFIX 已设置,则其值将自动附加到每个名称。如果名称已以 BIN_SUFFIX 结尾,则名称将保持不变。此变量仅在模板中可用。

SONAME

当前正在链接的共享对象的 soname

存储类型:

str

输入类型:

str

soname 是共享对象的“逻辑名称”,通常用于提供版本向后兼容性。此变量仅对共享对象有意义,并且仅在某些 unix 平台上受支持。

SOURCES

源代码文件。

存储类型:

_TypedListWithItems

输入类型:

list

此变量包含要编译的源代码文件列表。接受汇编程序、C、C++、Objective C/C++。

SPHINX_PYTHON_PACKAGE_DIRS

包含 Sphinx 文档的 Python 包的目录。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

SPHINX_TREES

描述 Sphinx 文档树的外观。

存储类型:

dict

输入类型:

dict

键是在最终 Sphinx 文档树中安装文件的相对目录。值是(相对于此文件)要复制到 Sphinx 文档树中的内容的目录。

STATIC_LIBRARY_NAME

为目录生成的静态库的名称,如果需要

存储类型:

str

输入类型:

str

与库代码名称不同。

暗示 FORCE_STATIC_LIB。

SYMBOLS_FILE

包含要从共享库导出的一系列符号的文件。

存储类型:

Path

输入类型:

str

给定文件包含要导出的符号列表,并且是预处理的。如果符号指向数据而不是代码,则必须在符号名称后添加特殊标记“@DATA@”,以便 Windows 链接器可以正确处理它们。

TELEMETRY_TESTS_CLIENT_MANIFESTS

定义遥测客户端测试的清单文件列表。

存储类型:

_OrderedListWithAction

输入类型:

list

TEST_HARNESS_FILES

要为测试工具安装的文件列表。

存储类型:

_TypedListWithItems

输入类型:

list

TEST_HARNESS_FILES 可用于将文件安装到 $objdir/_tests 下的任何目录。可以将文件附加到一个字段中,以指示它们应该导出到的子目录。例如,要将 foo.py 导出到 _tests/foo,请像这样附加到 TEST_HARNESS_FILES

TEST_HARNESS_FILES.foo += ['foo.py']

还可以通过分别在路径前添加“/”字符和“!”字符来安装来自 topsrcdir 和 objdir 的文件。

TEST_HARNESS_FILES.path += ['/build/bar.py', '!quux.py']

TEST_WEBIDL_FILES

测试 WebIDL 源文件。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

如果启用了测试,这些文件将被解析并转换为 .cpp.h 文件。

UNIFIED_SOURCES

可以一起编译的源代码文件。

存储类型:

_TypedList

输入类型:

list

此变量包含要编译的源代码文件列表,这些文件可以全部连接在一起并构建为单个源文件。这有助于加快构建速度并减小调试信息的大小。

USE_EXTENSION_MANIFEST

控制 JAR 文件清单的名称。

存储类型:

bool

输入类型:

bool

默认情况下,清单的名称为 ${JAR_MANIFEST}.manifest。将此变量设置为 True 会将清单的名称更改为 chrome.manifest。

USE_INTEGRATED_CLANGCL_AS

使用集成的 clang-cl 汇编器来汇编来自 SOURCES 的汇编文件。

存储类型:

bool

输入类型:

bool

这允许使用 clang-cl 来汇编汇编文件,这在 aarch64 等平台上很有用,在这些平台上,另一种选择是必须运行预处理器来生成具有合适语法的文件。

USE_LIBS

要链接到程序和库的库列表。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

USE_NASM

使用 nasm 汇编器来汇编来自 SOURCES 的汇编文件。

存储类型:

bool

输入类型:

bool

默认情况下,构建将使用工具链汇编器 $(AS) 来汇编汇编语言中的源文件(.s 或 .asm 文件)。将此值设置为 True 将导致它改为使用 nasm。

如果此系统上没有 nasm,或者它不支持当前的目标架构,则会引发错误。

USE_STATIC_LIBS

此目录中的代码是否针对静态

存储类型:

bool

输入类型:

bool

运行时库构建。

此变量仅在使用 MSVC 构建时有效。

WASM_CFLAGS

传递给 C 到 wasm 编译器的标志,用于所有 C

存储类型:

List

输入类型:

list

在此目录中声明的源文件。

请注意,标志的顺序在此处很重要,这些标志将按照它们在 moz.build 文件中出现的顺序添加到编译器的命令行中。

WASM_CXXFLAGS

传递给 C++ 到 wasm 编译器的标志,用于所有

存储类型:

List

输入类型:

list

在此目录中声明的 C++ 源文件。

请注意,标志的顺序在此处很重要;这些标志将按照它们在 moz.build 文件中出现的顺序添加到编译器的命令行中。

WASM_DEFINES

要为 wasm 编译声明的编译器定义字典。

存储类型:

InitializedDefines

输入类型:

dict

有关详细信息,请参阅 DEFINES

WASM_FLAGS

此上下文中 wasm 标志的配方。不要

存储类型:

WasmFlags

输入类型:

dict

直接操作。

WASM_LIBS

Wasm 系统链接库。

存储类型:

List

输入类型:

list

此变量包含要链接的 wasm 系统库列表。

WASM_SOURCES

要使用 wasm 编译器编译的源代码文件。

存储类型:

_TypedList

输入类型:

list

WEBIDL_EXAMPLE_INTERFACES

作为构建的一部分构建的示例 WebIDL 接口的名称。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

此列表中的名称对应于在构建中包含的 WebIDL 文件中定义的 WebIDL 接口名称,这些文件来自 *WEBIDL_FILES 变量之一。

WEBIDL_FILES

WebIDL 源文件。

存储类型:

StrictOrderingOnAppendList

输入类型:

list

这些文件将被解析并转换为 .cpp.h 文件。

WIN32_EXE_LDFLAGS

链接 Windows .exe 可执行文件时传递给链接器的标志

存储类型:

List

输入类型:

list

在此目录中声明。

请注意,标志的顺序很重要,这些标志将按照其在 moz.build 文件中出现的顺序添加到链接器的命令行中。

此变量仅在 Windows 上有效。

XPCOM_MANIFESTS

XPCOM 组件清单文件。

存储类型:

_TypedList

输入类型:

list

这是一个文件列表,这些文件定义要添加到组件注册表中的 XPCOM 组件。

XPCSHELL_TESTS_MANIFESTS

定义 xpcshell 测试的清单文件列表。

存储类型:

_OrderedListWithAction

输入类型:

list

XPIDL_MODULE

XPCOM 接口定义模块名称。

存储类型:

str

输入类型:

str

这是通过将 XPIDL_SOURCES 链接在一起创建的 .xpt 文件的名称。如果未指定,则默认为与 MODULE 相同。

XPIDL_SOURCES

XPCOM 接口定义文件 (xpidl)。

存储类型:

_TypedList

输入类型:

list

这是一个定义 XPCOM 接口定义的文件列表。条目必须是存在的文件。条目几乎可以肯定是 .idl 文件。

XPI_NAME

要生成的扩展 XPI 的名称。

存储类型:

str

输入类型:

str

当此变量存在时,此目录的结果将最终被打包到扩展程序中,而不是主 dist/bin 结果中。

函数

error

发出致命错误。

参数:

(str)

如果调用此函数,则处理将立即中止。

export

使指定的变量可用于所有子目录。

参数:

(str)

由参数字符串指定的变量将添加到 DIRS 和 TEST_DIRS 变量中指定的所有目录的环境中。如果这些目录本身具有子目录,则该变量将导出到所有这些目录。

用于变量的值是 moz.build 文件末尾的最终值,因此可以在变量定义之前放置导出(但不建议使用这种风格)。

此函数仅限于在 moz.build 文件中具有特殊含义的大写变量。

注意:在添加此函数的新用法之前,请咨询构建同行(在 https://chat.mozilla.org 上的 #build 频道)。

示例用法

使所有子目录都安装为给定的扩展程序

XPI_NAME = 'cool-extension'
export('XPI_NAME')

include

在当前上下文中包含另一个 mozbuild 文件。

参数:

(SourcePath)

这类似于 C 语言中的 #include。传递给函数的文件名将被读取,其内容将在调用文件的上下文中进行评估。

如果给定相对路径,则将其评估为相对于当前正在处理的文件。如果存在多个 include() 的链,则相对路径计算来自最新的/活动的文件。

如果给定绝对路径,则将其从 TOPSRCDIR 评估。换句话说,include('/foo') 引用路径 TOPSRCDIR + '/foo'

示例用法

从当前目录包含 sibling.build

include('sibling.build')

从顶层源目录中的路径包含 foo.build

include('/elsewhere/foo.build')

template

模板声明的装饰器。

参数:

(function)

模板是可以在 mozbuild 文件中声明的一种特殊类型的函数。函数作用域中分配的大写变量被认为是模板的结果。

与传统的 python 函数相反
  • 模板函数的返回值将被忽略,

  • 模板函数无法访问全局作用域。

示例模板

以下 Program 模板设置两个变量 PROGRAMUSE_LIBSPROGRAM 设置为模板调用时给定的参数,而 USE_LIBS 设置为包含“mozglue”。

@template
def Program(name):
    PROGRAM = name
    USE_LIBS += ['mozglue']

模板调用

模板以函数调用的形式调用

Program('myprog')

模板的结果(它设置的所有大写变量)将与调用模板的 mozbuild 文件中定义的现有变量集混合。

FINAL_TARGET = 'dist/other'
USE_LIBS += ['mylib']
Program('myprog')
USE_LIBS += ['otherlib']

上述 mozbuild 导致设置以下变量

  • FINAL_TARGET 为 'dist/other'

  • USE_LIBS 为 [‘mylib’, ‘mozglue’, ‘otherlib’]

  • PROGRAM 为 ‘myprog’

warning

发出警告。

参数:

(str)

警告是在执行期间打印的字符串消息。

在执行期间会忽略警告。

特殊变量

CONFIG

包含当前配置变量的字典。

类型:

dict

所有由配置系统定义的变量都可通过此对象获得。例如 ENABLE_TESTSCFLAGS 等。

此容器中的值是只读的。尝试更改值会导致运行时错误。

访问未知变量将返回 None。

CONTENT_ACCESSIBLE_FILES

可以通过 resource:// URI 由 Web 内容访问的文件列表。

类型:

list

CONTENT_ACCESSIBLE_FILES 用于列出要导出到 dist/bin/contentaccessible 的文件。还可以将文件附加到一个字段中,以指示它们应该导出到的子目录。

EXTRA_COMPONENTS

要分发的其他组件文件。

类型:

list

此变量包含要复制到 $(FINAL_TARGET)/components/ 的文件列表。

EXTRA_JS_MODULES

要分发的其他 JavaScript 文件。

类型:

list

此变量包含要复制到 ``$(FINAL_TARGET)/modules 的文件列表。

EXTRA_PP_COMPONENTS

Javascript XPCOM 文件。

类型:

list

此变量包含要预处理的文件列表。生成的文件将安装在分发的 /components 目录中。

EXTRA_PP_JS_MODULES

要分发的其他 JavaScript 文件。

类型:

list

此变量包含要复制到 $(FINAL_TARGET)/modules 的文件列表,在预处理之后。

JS_PREFERENCE_FILES

导出的 JavaScript 文件。

类型:

list

复制到 dist 目录中以进行打包和安装的文件列表。路径将根据构建内容为 gre 或应用程序首选项目录定义。

JS_PREFERENCE_PP_FILES

与 JS_PREFERENCE_FILES 类似,预处理过。

类型:

list

OBJDIR

此文件对象目录的路径。

类型:

str

它与 TOPOBJDIR + RELATIVEDIR 相同。

RELATIVEDIR

定义此文件相对路径的常量。

类型:

str

相对路径来自 TOPSRCDIR。这被定义为相对于正在执行的主文件,而不管是否使用 include() 包含了其他文件。

RESOURCE_FILES

要导出的资源列表,以及它们所在的子目录。

类型:

list

RESOURCE_FILES 用于列出要导出到 dist/bin/res 的资源文件,但它也可以用于其他文件。当为顶层目录中的资源追加文件名时,此变量的行为类似于列表。文件还可以追加到一个字段中,以指示应将其导出到哪个子目录。例如,要将 foo.res 导出到顶层目录,并将 bar.res 导出到 fonts/,请像这样追加到 RESOURCE_FILES

RESOURCE_FILES += ['foo.res']
RESOURCE_FILES.fonts += ['bar.res']

SRCDIR

定义此文件源目录的常量。

类型:

str

这是此文件在 TOPSRCDIR 内部的路径。它与 TOPSRCDIR + RELATIVEDIR 相同。

TESTING_JS_MODULES

要安装在仅测试目标中的 JavaScript 模块。

类型:

list

一些 JavaScript 模块仅用于测试,不会与 Firefox 一起分发。此变量定义了它们。

要将模块安装到子目录中,请使用此变量的属性来控制最终目标。例如:

TESTING_JS_MODULES.foo += ['module.sys.mjs'].

TEST_DIRS

类似于 DIRS,但仅用于包含仅测试代码的目录。

类型:

list

如果未启用测试,则会忽略此变量。

在完成从 Makefile 的过渡后,此变量可能会消失。

TOPOBJDIR

定义顶层对象目录的常量。

类型:

str

顶层对象目录是包含构建输出的父目录。这通常称为“对象目录”。

TOPSRCDIR

定义顶层源目录的常量。

类型:

str

顶层源目录是包含源代码和所有构建文件的父目录。它通常是克隆存储库的根目录。