separate (Build_Release)
procedure Generate_Load_Proc_For (This_Version : in Full_Name) is
    --
    The_Parse_File_Name : constant Full_Name :=
       Pathnames.Parse_File_Name_For (This_Version);
    --
    The_Main_Procedure_Name : constant Full_Name :=
       Pathnames.Main_Procedure_Name_For (This_Version);
    --
    The_Load_Proc_Name : constant String :=
       Pathnames.Load_Proc_Name_For (This_Version);
    --
    procedure Generate_Parse_File is
        --
        The_Parse_File : Io.File_Type;
        --
        The_Main_Procedure_Name_Simple : constant Simple_Name :=
           Pathnames.Simple_Main_Procedure_Name;
        --
        The_Load_Proc_Browser_Package_Name : constant Full_Name :=  
           Pathnames.Load_Proc_Browser_Package_Name_For (This_Version);
        The_Load_Proc_Browser_Package_Name_Simple : constant Simple_Name :=
           Pathnames.Simple_Load_Proc_Browser_Package_Name;
        --
        The_Load_Proc_Browser_Procedure_Name : constant Simple_Name :=
           Pathnames.Simple_Load_Proc_Browser_Procedure_Name;
        --
    begin
        Log.Put_Line ("Creating parse file");
        The_Parse_File := Low_Level_File_Operations.Open_To_Write
                             (The_Parse_File_Name);
        Io.Put_Line (The_Parse_File, "procedure " &
                                        The_Main_Procedure_Name_Simple);
        Io.Put_Line (The_Parse_File,
                     "    (Located_In : in String := ""<DEFAULT_LIBRARY>"";");
        Io.Put_Line (The_Parse_File,
                     "     Response : in String := ""<PROFILE>"");");
        Io.New_Line (The_Parse_File);
        Io.Put_Line (The_Parse_File,
                     "with " & The_Load_Proc_Browser_Package_Name_Simple & ";");
        Io.Put_Line (The_Parse_File, "procedure " &
                                        The_Main_Procedure_Name_Simple);
        Io.Put_Line (The_Parse_File,
                     "    (Located_In : in String := ""<DEFAULT_LIBRARY>"";");
        Io.Put_Line (The_Parse_File,
                     "     Response : in String := ""<PROFILE>"") is");
        Io.Put_Line (The_Parse_File, "begin");
        Io.Put_Line (The_Parse_File,
                     "    " & The_Load_Proc_Browser_Package_Name_Simple &
                        "." & The_Load_Proc_Browser_Procedure_Name);
        Io.Put_Line (The_Parse_File, "        (This_Library => Located_In,");
        Io.Put_Line (The_Parse_File,
                     "         Default_Version => """ & This_Version & """, ");
        Io.Put_Line (The_Parse_File, "         Response => Response);");
        Io.Put_Line (The_Parse_File,
                     "end " & The_Main_Procedure_Name_Simple & ";");
        Io.Put_Line (The_Parse_File, "pragma Main;");
        Low_Level_File_Operations.Close (The_Parse_File);
        Log.Put_Line ("Parse file created", Profile.Positive_Msg);
        --
    exception
        when Low_Level_File_Operations.Io_Failure =>
            Error.Report ("Unable to open parse file """ &
                          The_Parse_File_Name & """",
                          Nested => True);
            --
    end Generate_Parse_File;
    --
begin
    Log.Put_Line ("Creating browser load-proc");
    Generate_Parse_File;
    begin
        Compilation.Parse (File_Name => The_Parse_File_Name,
                           Directory => Pathnames.Workspace_For (This_Version),
                           Response => "PROPAGATE,<PROFILE>");
        --
    exception
        when others =>
            Error.Report ("Unable to parse file", Nested => True);
            --
    end;
    begin
        Log.Put_Line ("Adding link to browser package");
        Links.Add (Source => Pathnames.Load_Proc_Browser_Package_Name_For
                                (This_Version),
                   World => Pathnames.Workspace_For (This_Version),
                   Response => "PROPAGATE,<PROFILE>");
        Log.Put_Line ("Link added successfully", Profile.Positive_Msg);
        --
    exception
        when others =>
            Error.Report ("Unable to add link", Nested => True);
            --
    end;
    begin
        Compilation.Make (Unit => The_Main_Procedure_Name,
                          Limit => "<WORLDS>",
                          Response => "PROPAGATE,<PROFILE>");
        --
    exception
        when others =>
            Error.Report ("Unable to compile main procedure", Nested => True);
            --
    end;
    begin
        Compilation.Load (From => The_Main_Procedure_Name,
                          To => The_Load_Proc_Name,
                          Response => "PROPAGATE,<PROFILE>");
        --
    exception
        when others =>
            Error.Report ("Unable to generate load-proc", Nested => True);
            --
    end;
    Log.Put_Line ("Browser load-proc created successfully",
                  Profile.Positive_Msg);
end Generate_Load_Proc_For;