2

I recently updated to a new version of the GNAT compiler.. I am trying to compile the GNADE source (http://gnade.sourceforge.net/)

Is there some sort of flag that I need to set or some way to debug this?

I am seeing this error (When it used to compile fine under GNATPro 6.22):

gnatmake -g -O0 -fstack-check -pipe -gnatE -gnatU -gnatwl -gnatf -gnatE -gnat05 -p -PLibBuildGNADE.gpr gcc -c -fPIC -g -O0 -fstack-check -pipe -gnatE -gnatU -gnatwl -gnatf -gnatE -gnat05 -I- -gnatA /home/user1/GNADE/src/gnu-db-sqlcli-generic_attr-boolean_attribute.adb cannot generate code for file gnu-db-sqlcli-generic_attr-boolean_attribute.adb (missing subunits) 

Here is the spec source (gnu-db-sqlcli-generic_attr-boolean_attribute.ads)

------------------------------------------------------------------------------- -- -- -- GNADE : GNu Ada Database Environment -- -- -- -- Author : Juergen Pfeifer <[email protected]> -- -- Copyright (C) 2000-2001 Juergen Pfeifer -- -- -- GNADE 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- -- -- ware Foundation; either version 2, or (at your option) any later ver- -- -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- -- for more details. You should have received a copy of the GNU General -- -- Public License distributed with GNAT; see file COPYING. If not, write -- -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- -- MA 02111-1307, USA. -- -- -- -- As a special exception, if other files instantiate generics from this -- -- unit, or you link this unit with other files to produce an executable, -- -- this unit does not by itself cause the resulting executable to be -- -- covered by the GNU General Public License. This exception does not -- -- however invalidate any other reasons why the executable file might be -- -- covered by the GNU Public License. -- -- -- -- GNADE is implemented to work with GNAT, the GNU Ada compiler. -- -- -- ------------------------------------------------------------------------------- generic type Bool_Type is mod <>; package GNU.DB.SQLCLI.Generic_Attr.Boolean_Attribute is type Attribute_Value_Pair_Boolean_Scalar is new Attribute_Value_Pair with record Value : Boolean; end record; function To_String (Object : Attribute_Value_Pair_Boolean_Scalar) return String; function GetAttr (Handle : Context; Attribute : T; Data : Aux; MaxLength : SQLSMALLINT := 0; ErrorCode : access SQLRETURN) return Attribute_Value_Pair_Boolean_Scalar; procedure SetAttr (Handle : in Context; AV_Pair : in Attribute_Value_Pair_Boolean_Scalar; Data : in Aux; ErrorCode : out SQLRETURN); private Default_Len : constant Base := Base (Length_Indicator (Bool_Type'Size)); end GNU.DB.SQLCLI.Generic_Attr.Boolean_Attribute; 

Here is the body source (gnu-db-sqlcli-generic_attr-boolean_attribute.adb)

------------------------------------------------------------------------------- -- -- -- GNADE : GNu Ada Database Environment -- -- -- -- Author : Juergen Pfeifer <[email protected]> -- -- Copyright (C) 2000-2003 Juergen Pfeifer -- -- -- GNADE 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- -- -- ware Foundation; either version 2, or (at your option) any later ver- -- -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- -- for more details. You should have received a copy of the GNU General -- -- Public License distributed with GNAT; see file COPYING. If not, write -- -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- -- MA 02111-1307, USA. -- -- -- -- As a special exception, if other files instantiate generics from this -- -- unit, or you link this unit with other files to produce an executable, -- -- this unit does not by itself cause the resulting executable to be -- -- covered by the GNU General Public License. This exception does not -- -- however invalidate any other reasons why the executable file might be -- -- covered by the GNU Public License. -- -- -- -- GNADE is implemented to work with GNAT, the GNU Ada compiler. -- -- -- ------------------------------------------------------------------------------- with Ada.Unchecked_Conversion; with System.Address_To_Access_Conversions; package body GNU.DB.SQLCLI.Generic_Attr.Boolean_Attribute is function To_String (Object : Attribute_Value_Pair_Boolean_Scalar) return String is begin return Boolean'Image (Object.Value); end To_String; function GetAttr (Handle : Context; Attribute : T; Data : Aux; MaxLength : SQLSMALLINT := 0; ErrorCode : access SQLRETURN) return Attribute_Value_Pair_Boolean_Scalar is pragma Unreferenced (MaxLength); package P is new System.Address_To_Access_Conversions (Bool_Type); Value : aliased Bool_Type; Len : Base := Default_Len; Res : Boolean := False; begin Get (Handle, Attribute, To_SQLPOINTER (P.To_Address (P.Object_Pointer'(Value'Access))), Len, Data, ErrorCode); if Value /= 0 then Res := True; end if; return Attribute_Value_Pair_Boolean_Scalar' (Attribute => Attribute, Value => Res); end GetAttr; procedure SetAttr (Handle : in Context; AV_Pair : in Attribute_Value_Pair_Boolean_Scalar; Data : in Aux; ErrorCode : out SQLRETURN) is function Cvt is new Ada.Unchecked_Conversion (SQLINTEGER, SQLPOINTER); Len : constant Base := Default_Len; Val : aliased Bool_Type := 0; begin if AV_Pair.Value then Val := 1; end if; Set (Handle, AV_Pair.Attribute, Cvt (SQLINTEGER (Val)), Len, Data, ErrorCode); end SetAttr; end GNU.DB.SQLCLI.Generic_Attr.Boolean_Attribute; 

2 Answers 2

1

The -x flag you mentioned in your self-answer is described thusly:

Indicate that sources that are not part of any Project File may be compiled. Normally, when using Project Files, only sources that are part of a Project File may be compile. When this switch is used, a source outside of all Project Files may be compiled. The ALI file and the object file will be put in the object directory of the main Project. The compilation switches used will only be those specified on the command line. Even when `-x' is used, mains specified on the command line need to be sources of a project file.

So it looks like what was happening was that you are using project files, and had some units that you were using that you hadn't bothered to put into any of your project files. I'm guessing everything in GNU.DB?

I suppose the solution would be to either go ahead and put those extra sources in a project file somewhere, or continue to build with that -x flag.

Sign up to request clarification or add additional context in comments.

Comments

1

On a whim, I passed in the '-x' flag to the compiler and it seemed to fix the issue.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.