From patchwork Fri Feb 17 13:59:46 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnaud Charlet X-Patchwork-Id: 141825 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id C3FB7B6FA1 for ; Sat, 18 Feb 2012 01:00:20 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1330092021; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Received:Date:From:To:Cc:Subject:Message-ID: MIME-Version:Content-Type:Content-Disposition:User-Agent: Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:Sender:Delivered-To; bh=n/Fz5rx+FAN0qea/3Zz5 sk/Y/Js=; b=d+uj95nWOG+237lHBqCGRof6NwSZ0HvM1aQzoViyt3U46oJ0iFr6 uhW29xRddZVVY3NnabUneOskMVVpcDd4IBhCyZwqNIbLyNURMsSOTZG21c6aNApr LDsLHF0rIi9mTdsPQqME/n9j+fqhvTIdv9XocObsYf/BfYwM1dozpwo= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Received:Received:Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type:Content-Disposition:User-Agent:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=HnGKIwTW8Pzmx+2igAo+FxobWNyqxMUTnVbddPJwAx8Cp38YU2XFI3bNKUMHtG IPw9aiSpdBYWHl+q3zBot2GlQSRoxjJe76FF7TGjCt/w4vGVa6C/d0VGBhLsxfg3 PwQ5QVGRT62LpJrjSdfFKAON9a0pJTqeA4xZ4DbfwXDVQ=; Received: (qmail 8429 invoked by alias); 17 Feb 2012 14:00:12 -0000 Received: (qmail 8391 invoked by uid 22791); 17 Feb 2012 14:00:04 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,TW_PR X-Spam-Check-By: sourceware.org Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 17 Feb 2012 13:59:47 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id DC8511C620C; Fri, 17 Feb 2012 08:59:46 -0500 (EST) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id Q0pnCTIOCTnG; Fri, 17 Feb 2012 08:59:46 -0500 (EST) Received: from kwai.gnat.com (kwai.gnat.com [205.232.38.4]) by rock.gnat.com (Postfix) with ESMTP id C24731C6223; Fri, 17 Feb 2012 08:59:46 -0500 (EST) Received: by kwai.gnat.com (Postfix, from userid 4192) id B892C92BF6; Fri, 17 Feb 2012 08:59:46 -0500 (EST) Date: Fri, 17 Feb 2012 08:59:46 -0500 From: Arnaud Charlet To: gcc-patches@gcc.gnu.org Cc: Pascal Obry Subject: [Ada] Check that an aggregate is not Externally_Built Message-ID: <20120217135946.GA30834@adacore.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-06-14) Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Add missing check for aggregate libraries consistency. Tested on x86_64-pc-linux-gnu, committed on trunk 2012-02-17 Pascal Obry * prj-nmsc.adb: prj-nmsc.adb (Check_Aggregated): Check that an aggregate is not Externally_Built. Index: prj-nmsc.adb =================================================================== --- prj-nmsc.adb (revision 184330) +++ prj-nmsc.adb (working copy) @@ -8172,6 +8172,14 @@ -- Check the aggregate project attributes, reject any not supported -- attributes. + procedure Check_Aggregated + (Project : Project_Id; + Data : in out Tree_Processing_Data); + -- Check aggregated projets which should not be externally built. + -- What is Data??? if same as outer Data, why passed??? + -- What exact check is performed here??? Seems a bad idea to have + -- two procedures with such close names ??? + --------------------- -- Check_Aggregate -- --------------------- @@ -8180,7 +8188,6 @@ (Project : Project_Id; Data : in out Tree_Processing_Data) is - procedure Check_Not_Defined (Name : Name_Id); -- Report an error if Var is defined @@ -8203,6 +8210,8 @@ end if; end Check_Not_Defined; + -- Start of processing for Check_Aggregate + begin Check_Not_Defined (Snames.Name_Library_Dir); Check_Not_Defined (Snames.Name_Library_Interface); @@ -8216,6 +8225,43 @@ Check_Not_Defined (Snames.Name_Library_Version); end Check_Aggregate; + ---------------------- + -- Check_Aggregated -- + ---------------------- + + procedure Check_Aggregated + (Project : Project_Id; + Data : in out Tree_Processing_Data) + is + L : Aggregated_Project_List; + + begin + -- Check that aggregated projects are not externally built + + L := Project.Aggregated_Projects; + while L /= null loop + declare + Var : constant Prj.Variable_Value := + Prj.Util.Value_Of + (Snames.Name_Externally_Built, + L.Project.Decl.Attributes, + Data.Tree.Shared); + begin + if not Var.Default then + Error_Msg_Name_1 := L.Project.Display_Name; + Error_Msg + (Data.Flags, + "cannot aggregate externally build library %%", + Var.Location, Project); + end if; + end; + + L := L.Next; + end loop; + end Check_Aggregated; + + -- Local Variables + Shared : constant Shared_Project_Tree_Data_Access := Data.Tree.Shared; Prj_Data : Project_Processing_Data; @@ -8231,9 +8277,11 @@ case Project.Qualifier is when Aggregate => - null; + Check_Aggregated (Project, Data); when Aggregate_Library => + Check_Aggregated (Project, Data); + if Project.Object_Directory = No_Path_Information then Project.Object_Directory := Project.Directory; end if; @@ -8251,10 +8299,9 @@ end if; end case; - -- Check configuration. This must be done even for gnatmake (even - -- though no user configuration file was provided) since the default - -- config we generate indicates whether libraries are supported for - -- instance. + -- Check configuration. Must be done for gnatmake (even though no + -- user configuration file was provided) since the default config we + -- generate indicates whether libraries are supported for instance. Check_Configuration (Project, Data); @@ -8318,7 +8365,10 @@ procedure Check_All_Projects is new For_Every_Project_Imported_Context (Tree_Processing_Data, Recursive_Check); + -- Comment required??? + -- Local Variables + Data : Tree_Processing_Data; -- Start of processing for Process_Naming_Scheme @@ -8342,6 +8392,7 @@ List := Tree.Projects; while List /= null loop Proj := List.Project; + Exte := Proj; while Exte.Extended_By /= No_Project loop Exte := Exte.Extended_By;