aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVincent Celier <celier@adacore.com>2014-01-29 15:36:37 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2014-01-29 16:36:37 +0100
commit35d4d8995a18522fc25763457e7b2efbc2d05089 (patch)
treec8797cf22d659bfb642c674053662622d6e7965a /gcc
parent88de755d13ad0360efb041a1ddbefdde04f2b6a8 (diff)
downloadgcc-35d4d8995a18522fc25763457e7b2efbc2d05089.zip
gcc-35d4d8995a18522fc25763457e7b2efbc2d05089.tar.gz
gcc-35d4d8995a18522fc25763457e7b2efbc2d05089.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog14
-rw-r--r--gcc/ada/clean.adb6
-rw-r--r--gcc/ada/gnatcmd.adb6
-rw-r--r--gcc/ada/make.adb7
-rw-r--r--gcc/ada/makeutl.adb20
-rw-r--r--gcc/ada/makeutl.ads6
-rw-r--r--gcc/ada/prj-makr.adb8
7 files changed, 66 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 24d4801..57624ea 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,19 @@
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
to check if an imported project is an aggregate project.
(Parse_Single_Project): Call Check_Import_Aggregate
diff --git a/gcc/ada/clean.adb b/gcc/ada/clean.adb
index cbaaa61..83e81cb 100644
--- a/gcc/ada/clean.adb
+++ b/gcc/ada/clean.adb
@@ -1416,6 +1416,12 @@ package body Clean is
if Main_Project = No_Project then
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;
if Opt.Verbose_Mode then
diff --git a/gcc/ada/gnatcmd.adb b/gcc/ada/gnatcmd.adb
index d879cb7..1bca7d8 100644
--- a/gcc/ada/gnatcmd.adb
+++ b/gcc/ada/gnatcmd.adb
@@ -1939,6 +1939,12 @@ begin
if Project = Prj.No_Project then
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;
-- Check if a package with the name of the tool is in the project
diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb
index c8c6053..5078f0e 100644
--- a/gcc/ada/make.adb
+++ b/gcc/ada/make.adb
@@ -6617,6 +6617,13 @@ package body Make is
("""" & Project_File_Name.all & """ processing failed");
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;
if Verbose_Mode then
diff --git a/gcc/ada/makeutl.adb b/gcc/ada/makeutl.adb
index c546931..a220cbe 100644
--- a/gcc/ada/makeutl.adb
+++ b/gcc/ada/makeutl.adb
@@ -171,6 +171,26 @@ package body Makeutl is
end;
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 --
-------------------------
diff --git a/gcc/ada/makeutl.ads b/gcc/ada/makeutl.ads
index e5f4304..88c9c98 100644
--- a/gcc/ada/makeutl.ads
+++ b/gcc/ada/makeutl.ads
@@ -6,7 +6,7 @@
-- --
-- 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 --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -216,6 +216,10 @@ package Makeutl is
-- The source directories of imported projects are only included if one
-- 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);
-- Write in the specified open path file the directories in table
-- Directories, then closed the path file.
diff --git a/gcc/ada/prj-makr.adb b/gcc/ada/prj-makr.adb
index 7de4369..f6d71f4 100644
--- a/gcc/ada/prj-makr.adb
+++ b/gcc/ada/prj-makr.adb
@@ -889,6 +889,14 @@ package body Prj.Makr is
if No (Project_Node) then
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
-- If parsing was successful, remove the components that are
-- automatically generated, if any, so that they will be