* [Ada]: Small cleanup in make.adb
@ 2009-08-17 13:29 Arnaud Charlet
0 siblings, 0 replies; only message in thread
From: Arnaud Charlet @ 2009-08-17 13:29 UTC (permalink / raw)
To: gcc-patches; +Cc: Vincent Celier
[-- Attachment #1: Type: text/plain, Size: 409 bytes --]
No functionality change.
Tested on x86_64-pc-linux-gnu, committed on trunk
2009-08-17 Vincent Celier <celier@adacore.com>
* make.adb (Arguments_Collected): Unneeded, removed
(Change_To_Object_Directory): Use Project directly. Add pragma Assert to
ensure caller does not pass in No_Project.
(Compile): Add new parameter Project. Let procedure
Collect_Arguments_And_Compile provide the proper value.
[-- Attachment #2: difs --]
[-- Type: text/plain, Size: 7364 bytes --]
Index: make.adb
===================================================================
--- make.adb (revision 150831)
+++ make.adb (working copy)
@@ -519,10 +519,6 @@ package body Make is
Last_Argument : Natural := 0;
-- Last index of arguments in Arguments above
- Arguments_Collected : Boolean := False;
- -- Set to True when the arguments for the next invocation of the compiler
- -- have been collected.
-
Arguments_Project : Project_Id;
-- Project id, if any, of the source to be compiled
@@ -1359,32 +1355,24 @@ package body Make is
--------------------------------
procedure Change_To_Object_Directory (Project : Project_Id) is
- Actual_Project : Project_Id;
Object_Directory : Path_Name_Type;
begin
- -- For sources outside of any project, compilation occurs in the object
- -- directory of the main project, otherwise we use the project given.
-
- if Project = No_Project then
- Actual_Project := Main_Project;
- else
- Actual_Project := Project;
- end if;
+ pragma Assert (Project /= No_Project);
-- Nothing to do if the current working directory is already the correct
-- object directory.
- if Project_Of_Current_Object_Directory /= Actual_Project then
- Project_Of_Current_Object_Directory := Actual_Project;
- Object_Directory := Actual_Project.Object_Directory.Name;
+ if Project_Of_Current_Object_Directory /= Project then
+ Project_Of_Current_Object_Directory := Project;
+ Object_Directory := Project.Object_Directory.Name;
-- Set the working directory to the object directory of the actual
-- project.
if Verbose_Mode then
Write_Str ("Changing to object directory of """);
- Write_Name (Actual_Project.Display_Name);
+ Write_Name (Project.Display_Name);
Write_Str (""": """);
Write_Name (Object_Directory);
Write_Line ("""");
@@ -1399,9 +1387,9 @@ package body Make is
when Directory_Error =>
Make_Failed ("unable to change to object directory """ &
Path_Or_File_Name
- (Actual_Project.Object_Directory.Name) &
+ (Project.Object_Directory.Name) &
""" of project " &
- Get_Name_String (Actual_Project.Display_Name));
+ Get_Name_String (Project.Display_Name));
end Change_To_Object_Directory;
-----------
@@ -2201,7 +2189,6 @@ package body Make is
Args : Argument_List)
is
begin
- Arguments_Collected := True;
Arguments_Project := No_Project;
Last_Argument := 0;
Add_Arguments (Args);
@@ -2502,13 +2489,12 @@ package body Make is
procedure Check_Standard_Library;
-- Check if s-stalib.adb needs to be compiled
- procedure Collect_Arguments_And_Compile
- (Source_File : File_Name_Type;
- Source_Index : Int);
+ procedure Collect_Arguments_And_Compile (Source_Index : Int);
-- Collect arguments from project file (if any) and compile
function Compile
- (S : File_Name_Type;
+ (Project : Project_Id;
+ S : File_Name_Type;
L : File_Name_Type;
Source_Index : Int;
Args : Argument_List) return Process_Id;
@@ -2709,23 +2695,13 @@ package body Make is
-- Collect_Arguments_And_Compile --
-----------------------------------
- procedure Collect_Arguments_And_Compile
- (Source_File : File_Name_Type;
- Source_Index : Int)
- is
+ procedure Collect_Arguments_And_Compile (Source_Index : Int) is
begin
-- Process_Created will be set True if an attempt is made to compile
-- the source, that is if it is not in an externally built project.
Process_Created := False;
- -- If arguments not yet collected (in Check), collect them now
-
- if not Arguments_Collected then
- Collect_Arguments
- (Source_File, Source_Index, Source_File = Main_Source, Args);
- end if;
-
-- If we use mapping file (-P or -C switches), then get one
if Create_Mapping_File then
@@ -2769,13 +2745,10 @@ package body Make is
end;
end if;
- -- Change to object directory of the project file, if necessary
-
- Change_To_Object_Directory (Arguments_Project);
-
Pid :=
Compile
- (File_Name_Type (Arguments_Path_Name),
+ (Arguments_Project,
+ File_Name_Type (Arguments_Path_Name),
Lib_File,
Source_Index,
Arguments (1 .. Last_Argument));
@@ -2786,12 +2759,13 @@ package body Make is
-- If this is a source outside of any project file, make sure it
-- will be compiled in object directory of the main project file.
- if Main_Project /= No_Project then
- Change_To_Object_Directory (Arguments_Project);
- end if;
-
- Pid := Compile (Full_Source_File, Lib_File, Source_Index,
- Arguments (1 .. Last_Argument));
+ Pid :=
+ Compile
+ (Main_Project,
+ Full_Source_File,
+ Lib_File,
+ Source_Index,
+ Arguments (1 .. Last_Argument));
Process_Created := True;
end if;
end Collect_Arguments_And_Compile;
@@ -2801,7 +2775,8 @@ package body Make is
-------------
function Compile
- (S : File_Name_Type;
+ (Project : Project_Id;
+ S : File_Name_Type;
L : File_Name_Type;
Source_Index : Int;
Args : Argument_List) return Process_Id
@@ -2985,6 +2960,12 @@ package body Make is
Comp_Last := Comp_Last + 1;
Comp_Args (Comp_Last) := new String'(Name_Buffer (1 .. Name_Len));
+ -- Change to object directory of the project file, if necessary
+
+ if Project /= No_Project then
+ Change_To_Object_Directory (Project);
+ end if;
+
GNAT.OS_Lib.Normalize_Arguments (Comp_Args (Args'First .. Comp_Last));
Comp_Last := Comp_Last + 1;
@@ -3225,8 +3206,6 @@ package body Make is
-- The source file that we are checking can be located
else
- Arguments_Collected := False;
-
Collect_Arguments (Source_File, Source_Index,
Source_File = Main_Source, Args);
@@ -3314,8 +3293,7 @@ package body Make is
-- Start the compilation and record it. We can do
-- this because there is at least one free process.
- Collect_Arguments_And_Compile
- (Source_File, Source_Index);
+ Collect_Arguments_And_Compile (Source_Index);
-- Make sure we could successfully start
-- the Compilation.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-08-17 10:35 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-08-17 13:29 [Ada]: Small cleanup in make.adb Arnaud Charlet
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).