diff options
Diffstat (limited to 'config/moz.build')
-rw-r--r-- | config/moz.build | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/config/moz.build b/config/moz.build new file mode 100644 index 0000000000..493f348260 --- /dev/null +++ b/config/moz.build @@ -0,0 +1,116 @@ +# -*- 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") + +with Files("mozunit/**"): + BUG_COMPONENT = ("Testing", "Python Test") + +DIST_INSTALL = False +# For sanity's sake, we compile nsinstall without the wrapped system +# headers, so that we can use it to set up the wrapped system headers. +NoVisibilityFlags() + +CONFIGURE_SUBST_FILES += [ + "tests/src-simple/Makefile", +] + +if CONFIG["HOST_OS_ARCH"] != "WINNT": + HOST_SOURCES += [ + "nsinstall.c", + "pathsub.c", + ] + HostProgram("nsinstall_real") + +PYTHON_UNITTEST_MANIFESTS += [ + "tests/python.ini", +] + +if CONFIG["CC_TYPE"] in ("clang", "gcc") and CONFIG["MOZ_OPTIMIZE"]: + CFLAGS += ["-O3"] + +HOST_DEFINES["UNICODE"] = True +HOST_DEFINES["_UNICODE"] = True + +include("stl-headers.mozbuild") +if CONFIG["WRAP_STL_INCLUDES"]: + stl_compiler = None + if CONFIG["OS_TARGET"] == "WINNT": + stl_compiler = "msvc" + else: + stl_compiler = "gcc" + + if stl_compiler: + # Note that the 'stl_wrappers' folder is known to the build system as + # containing generated files; if this is changed here then the code in + # GeneratedFile.__init__ in python/mozbuild/mozbuild/frontend/data.py + # might need to be updated accordingly as well. + template_file = "%s-stl-wrapper.template.h" % stl_compiler + output_dir = "/dist/stl_wrappers" + # We have to use a sentinel file as the first file because the + # file_generate action will create it for us, but we want to create all + # the files in gen_wrappers() + outputs = tuple( + ["stl.sentinel"] + ["%s/%s" % (output_dir, h) for h in stl_headers] + ) + GeneratedFile( + *outputs, + script="make-stl-wrappers.py", + entry_point="gen_wrappers", + inputs=[template_file], + flags=[TOPOBJDIR + output_dir, stl_compiler] + stl_headers + ) + + # Wrap <windows.h> to make it easier to use correctly + # NOTE: If we aren't wrapping STL includes, we're building part of the browser + # which won't need this wrapper, such as L10N. Just don't try to generate the + # wrapper in that case. + if CONFIG["OS_TARGET"] == "WINNT": + GeneratedFile( + "/dist/stl_wrappers/windows.h", + script="make-windows-h-wrapper.py", + entry_point="generate", + inputs=[ + "windows-h-constant.decls.h", + "windows-h-unicode.decls.h", + "windows-h-wrapper.template.h", + ], + flags=[stl_compiler], + ) + GeneratedFile( + "/dist/stl_wrappers/shlwapi.h", + script="make-windows-h-wrapper.py", + entry_point="generate", + inputs=[ + "shlwapi-h-constant.decls.h", + "shlwapi-h-unicode.decls.h", + "shlwapi-h-wrapper.template.h", + ], + flags=[stl_compiler], + ) + +if CONFIG["WRAP_SYSTEM_INCLUDES"]: + include("system-headers.mozbuild") + output_dir = "/dist/system_wrappers" + outputs = tuple( + ["system-header.sentinel"] + + ["%s/%s" % (output_dir, h) for h in stl_headers + system_headers] + ) + GeneratedFile( + *outputs, + script="make-system-wrappers.py", + entry_point="gen_wrappers", + flags=[TOPOBJDIR + output_dir] + stl_headers + system_headers + ) + +if CONFIG["COMPILE_ENVIRONMENT"] and CONFIG["CBINDGEN"]: + GeneratedFile( + "cbindgen-metadata.json", + script="/build/RunCbindgen.py", + entry_point="generate_metadata", + inputs=["!/.cargo/config"], + ) |