2009-04-24 Emmanuel Briot <briot@adacore.com>

* make.adb, prj.adb, prj.ads, makeutl.adb, makeutl.ads:
	(Project_Data.Dir_Path): field removed, since it can be computed
	directly from .Directory, and is needed only once when processing the
	project is buildgpr.adb or make.adb

From-SVN: r146719
This commit is contained in:
Emmanuel Briot 2009-04-24 13:25:35 +00:00 committed by Arnaud Charlet
parent 74744c7bda
commit 2324b3fd38
6 changed files with 38 additions and 57 deletions

View File

@ -1,3 +1,10 @@
2009-04-24 Emmanuel Briot <briot@adacore.com>
* make.adb, prj.adb, prj.ads, makeutl.adb, makeutl.ads:
(Project_Data.Dir_Path): field removed, since it can be computed
directly from .Directory, and is needed only once when processing the
project is buildgpr.adb or make.adb
2009-04-24 Robert Dewar <dewar@adacore.com>
* prj-env.adb, prj-proc.adb, prj.adb, prj.ads,

View File

@ -2351,16 +2351,10 @@ package body Make is
-- We get the project directory for the relative path
-- switches and arguments.
Arguments_Project := Ultimate_Extending_Project_Of
(Arguments_Project, Project_Tree);
Data := Project_Tree.Projects.Table (Arguments_Project);
-- If the source is in an extended project, we go to
-- the ultimate extending project.
while Data.Extended_By /= No_Project loop
Arguments_Project := Data.Extended_By;
Data := Project_Tree.Projects.Table (Arguments_Project);
end loop;
-- If building a dynamic or relocatable library, compile with
-- PIC option, if it exists.
@ -2375,13 +2369,6 @@ package body Make is
end;
end if;
if Data.Dir_Path = null then
Data.Dir_Path :=
new String'(Get_Name_String (Data.Directory.Display_Name));
Project_Tree.Projects.Table (Arguments_Project) :=
Data;
end if;
-- We now look for package Compiler and get the switches from
-- this package.
@ -2431,6 +2418,8 @@ package body Make is
declare
New_Args : Argument_List (1 .. Number);
Last_New : Natural := 0;
Dir_Path : constant String :=
Get_Name_String (Data.Directory.Name);
begin
Current := Switches.Values;
@ -2446,7 +2435,7 @@ package body Make is
new String'(Name_Buffer (1 .. Name_Len));
Test_If_Relative_Path
(New_Args (Last_New),
Parent => Data.Dir_Path,
Parent => Dir_Path,
Including_Non_Switch => False);
end if;
@ -2471,11 +2460,13 @@ package body Make is
New_Args : Argument_List :=
(1 => new String'
(Name_Buffer (1 .. Name_Len)));
Dir_Path : constant String :=
Get_Name_String (Data.Directory.Name);
begin
Test_If_Relative_Path
(New_Args (1),
Parent => Data.Dir_Path,
Parent => Dir_Path,
Including_Non_Switch => False);
Add_Arguments
(Configuration_Pragmas_Switch (Arguments_Project) &
@ -5411,10 +5402,10 @@ package body Make is
-- project file.
declare
Dir_Path : constant String_Access :=
new String'(Get_Name_String
Dir_Path : constant String :=
Get_Name_String
(Project_Tree.Projects.Table
(Main_Project).Directory.Name));
(Main_Project).Directory.Name);
begin
for J in 1 .. Binder_Switches.Last loop
Test_If_Relative_Path
@ -5425,7 +5416,7 @@ package body Make is
for J in 1 .. Saved_Binder_Switches.Last loop
Test_If_Relative_Path
(Saved_Binder_Switches.Table (J),
Parent => Current_Work_Dir, Including_L_Switch => False);
Parent => Current_Work_Dir.all, Including_L_Switch => False);
end loop;
for J in 1 .. Linker_Switches.Last loop
@ -5435,7 +5426,8 @@ package body Make is
for J in 1 .. Saved_Linker_Switches.Last loop
Test_If_Relative_Path
(Saved_Linker_Switches.Table (J), Parent => Current_Work_Dir);
(Saved_Linker_Switches.Table (J),
Parent => Current_Work_Dir.all);
end loop;
for J in 1 .. Gcc_Switches.Last loop
@ -5448,7 +5440,7 @@ package body Make is
for J in 1 .. Saved_Gcc_Switches.Last loop
Test_If_Relative_Path
(Saved_Gcc_Switches.Table (J),
Parent => Current_Work_Dir,
Parent => Current_Work_Dir.all,
Including_Non_Switch => False);
end loop;
end;
@ -6581,10 +6573,10 @@ package body Make is
-- relative path in the project file.
declare
Dir_Path : constant String_Access :=
new String'(Get_Name_String
(Project_Tree.Projects.Table
(Main_Project).Directory.Name));
Dir_Path : constant String :=
Get_Name_String
(Project_Tree.Projects.Table
(Main_Project).Directory.Name);
begin
for
J in Last_Binder_Switch + 1 .. Binder_Switches.Last

View File

@ -422,17 +422,10 @@ package body Makeutl is
Proj : constant Project_Id :=
Linker_Opts.Table (Index).Project;
Option : Name_Id;
Dir_Path : constant String :=
Get_Name_String (In_Tree.Projects.Table (Proj).Directory.Name);
begin
-- If Dir_Path has not been computed for this project, do it now
if In_Tree.Projects.Table (Proj).Dir_Path = null then
In_Tree.Projects.Table (Proj).Dir_Path :=
new String'
(Get_Name_String
(In_Tree.Projects.Table (Proj).Directory.Name));
end if;
while Options /= Nil_String loop
Option := In_Tree.String_Elements.Table (Options).Value;
Get_Name_String (Option);
@ -447,7 +440,7 @@ package body Makeutl is
Test_If_Relative_Path
(Switch => Linker_Options_Buffer (Last_Linker_Option),
Parent => In_Tree.Projects.Table (Proj).Dir_Path,
Parent => Dir_Path,
Including_L_Switch => True);
end if;
@ -604,7 +597,7 @@ package body Makeutl is
procedure Test_If_Relative_Path
(Switch : in out String_Access;
Parent : String_Access;
Parent : String;
Including_L_Switch : Boolean := True;
Including_Non_Switch : Boolean := True)
is
@ -645,7 +638,7 @@ package body Makeutl is
-- arguments are not converted.
if not Is_Absolute_Path (Sw (Start .. Sw'Last)) then
if Parent = null or else Parent'Length = 0 then
if Parent'Length = 0 then
Do_Fail
("relative search path switches ("""
& Sw
@ -655,7 +648,7 @@ package body Makeutl is
Switch :=
new String'
(Sw (1 .. Start - 1) &
Parent.all &
Parent &
Directory_Separator &
Sw (Start .. Sw'Last));
end if;
@ -663,12 +656,11 @@ package body Makeutl is
elsif Including_Non_Switch then
if not Is_Absolute_Path (Sw) then
if Parent = null or else Parent'Length = 0 then
if Parent'Length = 0 then
Do_Fail
("relative paths (""" & Sw & """) are not allowed");
else
Switch :=
new String'(Parent.all & Directory_Separator & Sw);
Switch := new String'(Parent & Directory_Separator & Sw);
end if;
end if;
end if;

View File

@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
-- Copyright (C) 2004-2008, Free Software Foundation, Inc. --
-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -128,12 +128,12 @@ package Makeutl is
procedure Test_If_Relative_Path
(Switch : in out String_Access;
Parent : String_Access;
Parent : String;
Including_L_Switch : Boolean := True;
Including_Non_Switch : Boolean := True);
-- Test if Switch is a relative search path switch.
-- If it is, fail if Parent is null, otherwise prepend the path with
-- Parent. This subprogram is only called when using project files.
-- If it is, fail if Parent is the empty string, otherwise prepend the path
-- with Parent. This subprogram is only called when using project files.
-- For gnatbind switches, Including_L_Switch is False, because the
-- argument of the -L switch is not a path.

View File

@ -93,7 +93,6 @@ package body Prj is
Location => No_Location,
Mains => Nil_String,
Directory => No_Path_Information,
Dir_Path => null,
Library => False,
Library_Dir => No_Path_Information,
Library_Src_Dir => No_Path_Information,
@ -108,7 +107,6 @@ package body Prj is
Symbol_Data => No_Symbols,
Ada_Sources => Nil_String,
Interfaces_Defined => False,
Imported_Directories_Switches => null,
Include_Path => null,
Include_Data_Set => False,
Source_Dirs => Nil_String,
@ -826,7 +824,6 @@ package body Prj is
procedure Free (Project : in out Project_Data) is
begin
Free (Project.Dir_Path);
Free (Project.Include_Path);
Free (Project.Ada_Include_Path);
Free (Project.Objects_Path);

View File

@ -1194,9 +1194,6 @@ package Prj is
Directory : Path_Information := No_Path_Information;
-- Path name of the directory where the project file resides
Dir_Path : String_Access;
-- Same as Directory.Name, but as an access to String
Object_Directory : Path_Information := No_Path_Information;
-- The path name of the object directory of this project file
@ -1269,10 +1266,6 @@ package Prj is
-- True if attribute Interfaces is declared for the project or any
-- project it extends.
Imported_Directories_Switches : Argument_List_Access := null;
-- List of the source search switches (-I<source dir>) to be used when
-- compiling.
Include_Path : String_Access := null;
-- The search source path for the project. Used as the value for an
-- environment variable, specified by attribute Include_Path