diff options
Diffstat (limited to 'build/moz.build')
-rw-r--r-- | build/moz.build | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/build/moz.build b/build/moz.build new file mode 100644 index 0000000000..a5f4144b0c --- /dev/null +++ b/build/moz.build @@ -0,0 +1,136 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# 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/. + +with Files("**"): + BUG_COMPONENT = ("Firefox Build System", "General") + +# This cannot be named "build" because of bug 922191. +SPHINX_TREES["buildsystem"] = "docs" + +with Files("docs/**"): + SCHEDULES.exclusive = ["docs"] + +if CONFIG["OS_ARCH"] == "WINNT": + DIRS += ["win32"] +else: + DIRS += ["unix"] + +if CONFIG["MOZ_STDCXX_COMPAT"]: + DIRS += ["unix/stdc++compat"] + +if CONFIG["RUSTC"]: + DIRS += ["rust/mozbuild"] + +CRAMTEST_MANIFESTS += [ + "tests/cram/cram.toml", +] + +DEFINES["ACCEPTED_MAR_CHANNEL_IDS"] = CONFIG["ACCEPTED_MAR_CHANNEL_IDS"] + +if CONFIG["MOZ_BUILD_APP"] == "browser": + PYTHON_UNITTEST_MANIFESTS += [ + "compare-mozconfig/python.toml", + ] + +if CONFIG["ENABLE_TESTS"] or CONFIG["MOZ_DMD"]: + FINAL_TARGET_FILES += ["/tools/rb/fix_stacks.py"] + +if CONFIG["MOZ_DMD"]: + FINAL_TARGET_FILES += ["/memory/replace/dmd/dmd.py"] + +# Put a useful .gdbinit and .gdbinit.py in $objdir/build, to be picked up +# automatically by GDB via either libxul.so-gdb.py or js-gdb.py. +OBJDIR_PP_FILES.build += [".gdbinit.py.in"] +OBJDIR_FILES.build += [".gdbinit.loader"] +OBJDIR_FILES.build += [".gdbinit"] + +# Install the clang-cl runtime library for ASAN next to the binaries we produce. +if CONFIG["MOZ_ASAN"] and CONFIG["CC_TYPE"] == "clang-cl": + FINAL_TARGET_FILES += ["%" + CONFIG["MOZ_CLANG_RT_ASAN_LIB_PATH"]] + FINAL_TARGET_FILES += [ + "%" + CONFIG["MOZ_CLANG_RT_ASAN_LIB_PATH"].replace(".dll", ".pdb") + ] + +# Install the clang runtime library for ASAN next to the binaries we produce. +if CONFIG["MOZ_WIDGET_TOOLKIT"] == "android" and CONFIG["MOZ_ASAN"]: + FINAL_TARGET_FILES += ["%" + CONFIG["MOZ_CLANG_RT_ASAN_LIB_PATH"]] + +if CONFIG["MOZ_WIDGET_TOOLKIT"] != "android" and CONFIG["LLVM_SYMBOLIZER"]: + FINAL_TARGET_FILES += ["/" + CONFIG["LLVM_SYMBOLIZER"]] + +if CONFIG["MOZ_APP_BASENAME"]: + appini_defines = { + "TOPOBJDIR": TOPOBJDIR, + } + + for var in ( + "GRE_MILESTONE", + "MOZ_APP_VERSION", + "MOZ_APP_BASENAME", + "MOZ_APP_VENDOR", + "MOZ_APP_ID", + "MAR_CHANNEL_ID", + "MOZ_APP_REMOTINGNAME", + "MOZ_CRASHREPORTER_URL", + ): + appini_defines[var] = CONFIG[var] + + if CONFIG["MOZ_APP_DISPLAYNAME"] != CONFIG["MOZ_APP_BASENAME"]: + appini_defines["MOZ_APP_DISPLAYNAME"] = CONFIG["MOZ_APP_DISPLAYNAME"] + + if CONFIG["MOZ_BUILD_APP"] == "browser": + appini_defines["MOZ_BUILD_APP_IS_BROWSER"] = True + + if CONFIG["MOZ_APP_PROFILE"]: + appini_defines["MOZ_APP_PROFILE"] = CONFIG["MOZ_APP_PROFILE"] + + for var in ("MOZ_CRASHREPORTER", "MOZ_PROFILE_MIGRATOR", "MOZ_UPDATER"): + if CONFIG[var]: + appini_defines[var] = True + + appini_defines["MOZ_APPUPDATE_HOST"] = "aus5.mozilla.org" + if CONFIG["MOZ_APPUPDATE_HOST"]: + appini_defines["MOZ_APPUPDATE_HOST"] = CONFIG["MOZ_APPUPDATE_HOST"] + + GeneratedFile( + "application.ini", + script="../python/mozbuild/mozbuild/action/preprocessor.py", + entry_point="generate", + inputs=["application.ini.in"], + flags=[ + "-D%s=%s" % (k, "1" if v is True else v) + for k, v in sorted(appini_defines.items(), key=lambda t: t[0]) + ], + ) + + FINAL_TARGET_FILES += ["!application.ini"] + if CONFIG["MOZ_WIDGET_TOOLKIT"] != "android" and CONFIG["MOZ_UPDATER"]: + FINAL_TARGET_PP_FILES += ["update-settings.ini"] + + GeneratedFile( + "application.ini.h", script="appini_header.py", inputs=["!application.ini"] + ) + + +# Put a .lldbinit in the bin directory and the objdir, to be picked up +# automatically by LLDB when we debug executables using either of those two +# directories as the current working directory. The .lldbinit file will +# load $(topsrcdir)/.lldbinit, which is where the actual debugging commands are. +DEFINES["topsrcdir"] = TOPSRCDIR +DEFINES["topobjdir"] = TOPOBJDIR +FINAL_TARGET_PP_FILES += [".lldbinit.in"] +OBJDIR_FILES += ["!/dist/bin/.lldbinit"] + +# Put the .ycm_extra_conf.py file at the root of the objdir. It is used by +# the vim plugin YouCompleteMe. +OBJDIR_FILES += ["/.ycm_extra_conf.py"] + +if CONFIG["MOZ_VALGRIND"]: + OBJDIR_FILES._valgrind += [ + "valgrind/cross-architecture.sup", + "valgrind/i386-pc-linux-gnu.sup", + "valgrind/x86_64-pc-linux-gnu.sup", + ] |