Commit 35d4d899 by Vincent Celier Committed by Arnaud Charlet

clean.adb (Gnatclean): Fail if main project is an aggregate project or if...

2014-01-29  Vincent Celier  <celier@adacore.com>

	* clean.adb (Gnatclean): Fail if main project is an aggregate
	project or if there is an aggregate library project in the
	project tree.
	* gnatcmd.adb: Fail if the main project is an aggregate project
	or if there is an aggegate library project in the project tree.
	* make.adb (Initialize): : Fail if main project is an aggregate
	project or if there is an aggregate library project in the
	project tree.
	* makeutl.ads (Aggregate_Libraries_In): New Boolean function.
	* prj-makr.adb (Initialize): Fail if the main project is an
	aggregate project or an aggregate library project.

From-SVN: r207255
parent 88de755d
2014-01-29 Vincent Celier <celier@adacore.com> 2014-01-29 Vincent Celier <celier@adacore.com>
* clean.adb (Gnatclean): Fail if main project is an aggregate
project or if there is an aggregate library project in the
project tree.
* gnatcmd.adb: Fail if the main project is an aggregate project
or if there is an aggegate library project in the project tree.
* make.adb (Initialize): : Fail if main project is an aggregate
project or if there is an aggregate library project in the
project tree.
* makeutl.ads (Aggregate_Libraries_In): New Boolean function.
* prj-makr.adb (Initialize): Fail if the main project is an
aggregate project or an aggregate library project.
2014-01-29 Vincent Celier <celier@adacore.com>
* prj-part.adb (Check_Import_Aggregate): New procedure * prj-part.adb (Check_Import_Aggregate): New procedure
to check if an imported project is an aggregate project. to check if an imported project is an aggregate project.
(Parse_Single_Project): Call Check_Import_Aggregate (Parse_Single_Project): Call Check_Import_Aggregate
......
...@@ -1416,6 +1416,12 @@ package body Clean is ...@@ -1416,6 +1416,12 @@ package body Clean is
if Main_Project = No_Project then if Main_Project = No_Project then
Fail ("""" & Project_File_Name.all & """ processing failed"); Fail ("""" & Project_File_Name.all & """ processing failed");
elsif Main_Project.Qualifier = Aggregate then
Fail ("aggregate projects are not supported");
elsif Aggregate_Libraries_In (Project_Tree) then
Fail ("aggregate library projects are not supported");
end if; end if;
if Opt.Verbose_Mode then if Opt.Verbose_Mode then
......
...@@ -1939,6 +1939,12 @@ begin ...@@ -1939,6 +1939,12 @@ begin
if Project = Prj.No_Project then if Project = Prj.No_Project then
Fail ("""" & Project_File.all & """ processing failed"); Fail ("""" & Project_File.all & """ processing failed");
elsif Project.Qualifier = Aggregate then
Fail ("aggregate projects are not supported");
elsif Aggregate_Libraries_In (Project_Tree) then
Fail ("aggregate library projects are not supported");
end if; end if;
-- Check if a package with the name of the tool is in the project -- Check if a package with the name of the tool is in the project
......
...@@ -6617,6 +6617,13 @@ package body Make is ...@@ -6617,6 +6617,13 @@ package body Make is
("""" & Project_File_Name.all & """ processing failed"); ("""" & Project_File_Name.all & """ processing failed");
end if; end if;
if Main_Project.Qualifier = Aggregate then
Make_Failed ("aggregate projects are not supported");
elsif Aggregate_Libraries_In (Project_Tree) then
Make_Failed ("aggregate library projects are not supported");
end if;
Create_Mapping_File := True; Create_Mapping_File := True;
if Verbose_Mode then if Verbose_Mode then
......
...@@ -171,6 +171,26 @@ package body Makeutl is ...@@ -171,6 +171,26 @@ package body Makeutl is
end; end;
end Absolute_Path; end Absolute_Path;
----------------------------
-- Aggregate_Libraries_In --
----------------------------
function Aggregate_Libraries_In (Tree : Project_Tree_Ref) return Boolean is
List : Project_List;
begin
List := Tree.Projects;
while List /= null loop
if List.Project.Qualifier = Aggregate_Library then
return True;
end if;
List := List.Next;
end loop;
return False;
end Aggregate_Libraries_In;
------------------------- -------------------------
-- Base_Name_Index_For -- -- Base_Name_Index_For --
------------------------- -------------------------
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2012, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2013, Free Software Foundation, Inc. --
-- -- -- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -216,6 +216,10 @@ package Makeutl is ...@@ -216,6 +216,10 @@ package Makeutl is
-- The source directories of imported projects are only included if one -- The source directories of imported projects are only included if one
-- of the declared languages is in the list Languages. -- of the declared languages is in the list Languages.
function Aggregate_Libraries_In (Tree : Project_Tree_Ref) return Boolean;
-- Return True iff there is one or more aggregate library projects in
-- the project tree Tree.
procedure Write_Path_File (FD : File_Descriptor); procedure Write_Path_File (FD : File_Descriptor);
-- Write in the specified open path file the directories in table -- Write in the specified open path file the directories in table
-- Directories, then closed the path file. -- Directories, then closed the path file.
......
...@@ -889,6 +889,14 @@ package body Prj.Makr is ...@@ -889,6 +889,14 @@ package body Prj.Makr is
if No (Project_Node) then if No (Project_Node) then
Prj.Com.Fail ("parsing of existing project file failed"); Prj.Com.Fail ("parsing of existing project file failed");
elsif Project_Qualifier_Of (Project_Node, Tree) = Aggregate then
Prj.Com.Fail ("aggregate projects are not supported");
elsif Project_Qualifier_Of (Project_Node, Tree) =
Aggregate_Library
then
Prj.Com.Fail ("aggregate library projects are not supported");
else else
-- If parsing was successful, remove the components that are -- If parsing was successful, remove the components that are
-- automatically generated, if any, so that they will be -- automatically generated, if any, so that they will be
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment