Commit 25692516 authored by Michael Froman's avatar Michael Froman Committed by mfroman@mozilla.com
Browse files

Bug 1967834 - move writing individual moz.build file to separate function for...

Bug 1967834 - move writing individual moz.build file to separate function for clarity. r=ng DONTBUILD

Differential Revision: https://phabricator.services.mozilla.com/D250517
parent 38ef7101
Loading
Loading
Loading
Loading
+108 −112
Original line number Diff line number Diff line
@@ -514,43 +514,11 @@ def find_common_attrs(config_attributes):
    return common_attrs


def write_mozbuild(
    topsrcdir,
    srcdir,
    non_unified_sources,
    gn_configs,
    mozilla_flags,
    write_mozbuild_variables,
):
    all_mozbuild_results = []

    for gn_config in gn_configs:
        mozbuild_attrs = process_gn_config(
            gn_config,
            topsrcdir,
            srcdir,
            non_unified_sources,
            gn_config["sandbox_vars"],
            mozilla_flags,
        )
        all_mozbuild_results.append(mozbuild_attrs)

    # Translate {config -> {dirs -> build info}} into
    #           {dirs -> [(config, build_info)]}
    configs_by_dir = defaultdict(list)
    for config_attrs in all_mozbuild_results:
        mozbuild_args = config_attrs["mozbuild_args"]
        dirs = config_attrs["dirs"]
        for d, build_data in dirs.items():
            configs_by_dir[d].append((mozbuild_args, build_data))

    mozbuilds = set()
    for relsrcdir, configs in sorted(configs_by_dir.items()):
def write_mozbuild(topsrcdir, write_mozbuild_variables, relsrcdir, configs):
    target_srcdir = mozpath.join(topsrcdir, relsrcdir)
    mkdir(target_srcdir)

    target_mozbuild = mozpath.join(target_srcdir, "moz.build")
        mozbuilds.add(target_mozbuild)
    with open(target_mozbuild, "w") as fh:
        mb = MozbuildWriter(fh)
        mb.write(license_header)
@@ -571,16 +539,11 @@ def write_mozbuild(
        except KeyError:
            pass
        try:
                if (
                    relsrcdir
                    in write_mozbuild_variables["INCLUDE_SYSTEM_LIBDRM_HANDLING"]
                ):
            if relsrcdir in write_mozbuild_variables["INCLUDE_SYSTEM_LIBDRM_HANDLING"]:
                mb.write('CXXFLAGS += CONFIG["MOZ_LIBDRM_CFLAGS"]\n')
                mb.write('if not CONFIG["MOZ_SYSTEM_LIBDRM"]:\n')
                mb.write('    LOCAL_INCLUDES += [ "/third_party/drm/drm/",\n')
                    mb.write(
                        '                        "/third_party/drm/drm/include/",\n'
                    )
                mb.write('                        "/third_party/drm/drm/include/",\n')
                mb.write(
                    '                        "/third_party/drm/drm/include/libdrm" ]\n'
                )
@@ -597,20 +560,14 @@ def write_mozbuild(
        except KeyError:
            pass
        try:
                if (
                    relsrcdir
                    in write_mozbuild_variables["INCLUDE_SYSTEM_LIBVPX_HANDLING"]
                ):
            if relsrcdir in write_mozbuild_variables["INCLUDE_SYSTEM_LIBVPX_HANDLING"]:
                mb.write('if not CONFIG["MOZ_SYSTEM_LIBVPX"]:\n')
                mb.write('    LOCAL_INCLUDES += [ "/media/libvpx/libvpx/" ]\n')
                mb.write('    CXXFLAGS += CONFIG["MOZ_LIBVPX_CFLAGS"]\n')
        except KeyError:
            pass
        try:
                if (
                    relsrcdir
                    in write_mozbuild_variables["INCLUDE_SYSTEM_DAV1D_HANDLING"]
                ):
            if relsrcdir in write_mozbuild_variables["INCLUDE_SYSTEM_DAV1D_HANDLING"]:
                mb.write('if CONFIG["MOZ_SYSTEM_AV1"]:\n')
                mb.write('    CXXFLAGS += CONFIG["MOZ_SYSTEM_DAV1D_CFLAGS"]\n')
                mb.write('    CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"]\n')
@@ -656,6 +613,45 @@ def write_mozbuild(
                        mb.terminate_condition()

        mb.finalize()
    return target_mozbuild


def write_mozbuild_files(
    topsrcdir,
    srcdir,
    non_unified_sources,
    gn_configs,
    mozilla_flags,
    write_mozbuild_variables,
):
    all_mozbuild_results = []

    for gn_config in gn_configs:
        mozbuild_attrs = process_gn_config(
            gn_config,
            topsrcdir,
            srcdir,
            non_unified_sources,
            gn_config["sandbox_vars"],
            mozilla_flags,
        )
        all_mozbuild_results.append(mozbuild_attrs)

    # Translate {config -> {dirs -> build info}} into
    #           {dirs -> [(config, build_info)]}
    configs_by_dir = defaultdict(list)
    for config_attrs in all_mozbuild_results:
        mozbuild_args = config_attrs["mozbuild_args"]
        dirs = config_attrs["dirs"]
        for d, build_data in dirs.items():
            configs_by_dir[d].append((mozbuild_args, build_data))

    mozbuilds = set()
    # threading this section did not produce noticeable speed gains
    for relsrcdir, configs in sorted(configs_by_dir.items()):
        mozbuilds.add(
            write_mozbuild(topsrcdir, write_mozbuild_variables, relsrcdir, configs)
        )

    # write the project moz.build file
    dirs_mozbuild = mozpath.join(srcdir, "moz.build")
@@ -847,7 +843,7 @@ def main():
        )

    print("Writing moz.build files")
    write_mozbuild(
    write_mozbuild_files(
        topsrcdir,
        topsrcdir / config["build_root_dir"] / config["target_dir"],
        config["non_unified_sources"],