module gccbuild.build.glibc;

import scriptlike, gccbuild;

void buildGlibc()
{
    //DIR_MULTILIB, MULTILIB_ARGS
    auto comp = build.glibc;
    if (!comp.mainBuildCommand.matchesBuildType)
        return;

    startSection("Building glibc");
    auto oldPath = updatePathVar(binDirStage1);

    if (comp.mainBuildCommand.multiCommands.empty)
    {
        foreach (multilib; build.multilibs)
        {
            writeBulletPoint(
                "Multilib variant: " ~ (multilib.isDefaultLib ? "default" : multilib.args));
            auto saveCWD = comp.prepareBuildDir();

            auto mlibDir = Path("/") ~ Path(build.relativeSysrootPrefix) ~ Path("lib") ~ Path(
                multilib.osFolder);
            string[string] extraVars;
            extraVars["DIR_MULTILIB"] = mlibDir.toString();
            extraVars["MULTILIB_ARGS"] = multilib.args;

            extraVars["CONFIGURE"] = comp.configureFile.toString();
            runBuildCommands(comp.mainBuildCommand.commands, extraVars);
            endBulletPoint();
        }
    }
    else
    {
        foreach (i, commands; comp.mainBuildCommand.multiCommands)
        {
            writeBulletPoint("Custom multilib command run: " ~ to!string(i));
            auto saveCWD = comp.prepareBuildDir();

            runBuildCommands(commands, ["CONFIGURE" : comp.configureFile.toString()]);
            endBulletPoint();
        }
    }

    restorePathVar(oldPath);

    if (!keepBuildFiles)
        rmdirRecurse(comp.buildFolder);
    endSection();
}