Backed out changeset 2450366cf7ca (bug 1891629) for causing win msix mochitest failures
[gecko.git] / build / moz.build
blob7bf9c501db06d38f924c26372d4243d448af8d81
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/.
7 with Files("**"):
8     BUG_COMPONENT = ("Firefox Build System", "General")
10 # This cannot be named "build" because of bug 922191.
11 SPHINX_TREES["buildsystem"] = "docs"
13 with Files("docs/**"):
14     SCHEDULES.exclusive = ["docs"]
16 if CONFIG["OS_ARCH"] == "WINNT":
17     DIRS += ["win32"]
18 else:
19     DIRS += ["unix"]
21 if CONFIG["MOZ_STDCXX_COMPAT"]:
22     DIRS += ["unix/stdc++compat"]
24 if CONFIG["RUSTC"]:
25     DIRS += ["rust/mozbuild"]
27 CRAMTEST_MANIFESTS += [
28     "tests/cram/cram.toml",
31 DEFINES["ACCEPTED_MAR_CHANNEL_IDS"] = CONFIG["ACCEPTED_MAR_CHANNEL_IDS"]
33 if CONFIG["MOZ_BUILD_APP"] == "browser":
34     PYTHON_UNITTEST_MANIFESTS += [
35         "compare-mozconfig/python.toml",
36     ]
38 if CONFIG["ENABLE_TESTS"] or CONFIG["MOZ_DMD"]:
39     FINAL_TARGET_FILES += ["/tools/rb/fix_stacks.py"]
41 if CONFIG["MOZ_DMD"]:
42     FINAL_TARGET_FILES += ["/memory/replace/dmd/dmd.py"]
44 # Put a useful .gdbinit and .gdbinit.py in $objdir/build, to be picked up
45 # automatically by GDB via either libxul.so-gdb.py or js-gdb.py.
46 OBJDIR_PP_FILES.build += [".gdbinit.py.in"]
47 OBJDIR_FILES.build += [".gdbinit.loader"]
48 OBJDIR_FILES.build += [".gdbinit"]
50 # Install the clang-cl runtime library for ASAN next to the binaries we produce.
51 if CONFIG["MOZ_ASAN"] and CONFIG["CC_TYPE"] == "clang-cl":
52     FINAL_TARGET_FILES += ["%" + CONFIG["MOZ_CLANG_RT_ASAN_LIB_PATH"]]
53     FINAL_TARGET_FILES += [
54         "%" + CONFIG["MOZ_CLANG_RT_ASAN_LIB_PATH"].replace(".dll", ".pdb")
55     ]
57 # Install the clang runtime library for ASAN next to the binaries we produce.
58 if CONFIG["MOZ_WIDGET_TOOLKIT"] == "android" and CONFIG["MOZ_ASAN"]:
59     FINAL_TARGET_FILES += ["%" + CONFIG["MOZ_CLANG_RT_ASAN_LIB_PATH"]]
61 if CONFIG["MOZ_WIDGET_TOOLKIT"] != "android" and CONFIG["LLVM_SYMBOLIZER"]:
62     FINAL_TARGET_FILES += ["/" + CONFIG["LLVM_SYMBOLIZER"]]
64 if CONFIG["MOZ_APP_BASENAME"]:
65     appini_defines = {
66         "TOPOBJDIR": TOPOBJDIR,
67     }
69     for var in (
70         "GRE_MILESTONE",
71         "MOZ_APP_VERSION",
72         "MOZ_APP_BASENAME",
73         "MOZ_APP_VENDOR",
74         "MOZ_APP_ID",
75         "MAR_CHANNEL_ID",
76         "MOZ_APP_REMOTINGNAME",
77         "MOZ_CRASHREPORTER_URL",
78     ):
79         appini_defines[var] = CONFIG[var]
81     if CONFIG["MOZ_APP_DISPLAYNAME"] != CONFIG["MOZ_APP_BASENAME"]:
82         appini_defines["MOZ_APP_DISPLAYNAME"] = CONFIG["MOZ_APP_DISPLAYNAME"]
84     if CONFIG["MOZ_BUILD_APP"] == "browser":
85         appini_defines["MOZ_BUILD_APP_IS_BROWSER"] = True
87     if CONFIG["MOZ_APP_PROFILE"]:
88         appini_defines["MOZ_APP_PROFILE"] = CONFIG["MOZ_APP_PROFILE"]
90     for var in ("MOZ_CRASHREPORTER", "MOZ_PROFILE_MIGRATOR", "MOZ_UPDATER"):
91         if CONFIG[var]:
92             appini_defines[var] = True
94     appini_defines["MOZ_APPUPDATE_HOST"] = "aus5.mozilla.org"
95     if CONFIG["MOZ_APPUPDATE_HOST"]:
96         appini_defines["MOZ_APPUPDATE_HOST"] = CONFIG["MOZ_APPUPDATE_HOST"]
98     GeneratedFile(
99         "application.ini",
100         script="../python/mozbuild/mozbuild/action/preprocessor.py",
101         entry_point="generate",
102         inputs=["application.ini.in"],
103         flags=[
104             "-D%s=%s" % (k, "1" if v is True else v)
105             for k, v in sorted(appini_defines.items(), key=lambda t: t[0])
106         ],
107     )
109     FINAL_TARGET_FILES += ["!application.ini"]
110     if (
111         CONFIG["MOZ_WIDGET_TOOLKIT"] not in ("android", "cocoa")
112         and CONFIG["MOZ_UPDATER"]
113     ):
114         FINAL_TARGET_PP_FILES += ["update-settings.ini"]
116     GeneratedFile(
117         "application.ini.h", script="appini_header.py", inputs=["!application.ini"]
118     )
121 # Put a .lldbinit in the bin directory and the objdir, to be picked up
122 # automatically by LLDB when we debug executables using either of those two
123 # directories as the current working directory.  The .lldbinit file will
124 # load $(topsrcdir)/.lldbinit, which is where the actual debugging commands are.
125 DEFINES["topsrcdir"] = TOPSRCDIR
126 DEFINES["topobjdir"] = TOPOBJDIR
127 FINAL_TARGET_PP_FILES += [".lldbinit.in"]
128 OBJDIR_FILES += ["!/dist/bin/.lldbinit"]
130 # Put the .ycm_extra_conf.py file at the root of the objdir. It is used by
131 # the vim plugin YouCompleteMe.
132 OBJDIR_FILES += ["/.ycm_extra_conf.py"]
134 if CONFIG["MOZ_VALGRIND"]:
135     OBJDIR_FILES._valgrind += [
136         "valgrind/cross-architecture.sup",
137         "valgrind/i386-pc-linux-gnu.sup",
138         "valgrind/x86_64-pc-linux-gnu.sup",
139     ]