diff options
author | bosch <bosch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-17 21:19:32 +0000 |
---|---|---|
committer | bosch <bosch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-17 21:19:32 +0000 |
commit | 533360190e2e0500f37128fc38cda0f48b0f456a (patch) | |
tree | 405209476eafde3f87744b76bb4787227777129a /gcc/ada/prj-nmsc.adb | |
parent | 26bdbe289ff47a014f2bf4aa06bf3d12d54ca755 (diff) | |
download | gcc-533360190e2e0500f37128fc38cda0f48b0f456a.tar.gz |
* make.adb:
(Switches_Of): New function
(Test_If_Relative_Path): New procedure
(Add_Switches): Use new function Switches_Of
(Collect_Arguments_And_Compile): Use new function Switches_Of.
When using a project file, test if there are any relative
search path. Fail if there are any.
(Gnatmake): Only add switches for the primary directory when not using
a project file. When using a project file, change directory to the
object directory of the main project file. When using a project file,
test if there are any relative search path. Fail if there are any.
When using a project file, fail if specified executable is relative
path with directory information, and prepend executable, if not
specified as an absolute path, with the exec directory. Make sure
that only one -o switch is transmitted to the linker.
* prj-attr.adb (Initialization_Data): Add project attribute Exec_Dir
* prj-nmsc.adb:
(Ada_Check): Get Spec_Suffix_Loc and Impl_Suffix_Loc,
when using a non standard naming scheme.
(Check_Ada_Naming_Scheme): Make sure that error messages
do not raise exceptions.
(Is_Illegal_Append): Return True if there is no dot in the suffix.
(Language_Independent_Check): Check the exec directory.
* prj.adb (Project_Empty): Add new component Exec_Directory
* prj.ads:
(Default_Ada_Spec_Suffix, Default_Ada_Impl_Suffix): Add defaults.
(Project_Data): Add component Exec_Directory
* snames.adb: Updated to match snames.ads revision 1.215
* snames.ads: Added Exec_Dir
* make.adb: Minor reformatting
* prj-nmsc.adb: Minor reformatting
* snames.adb: Updated to match snames.ads
* snames.ads: Alphebetize entries for project file
* trans.c (process_freeze_entity): Do nothing if the entity is a
subprogram that was already elaborated.
* decl.c (gnat_to_gnu_entity, object): Do not back-annotate Alignment
and Esize if object is referenced via pointer.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48127 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/prj-nmsc.adb')
-rw-r--r-- | gcc/ada/prj-nmsc.adb | 98 |
1 files changed, 82 insertions, 16 deletions
diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb index 56075cf292d..9f11f6f0170 100644 --- a/gcc/ada/prj-nmsc.adb +++ b/gcc/ada/prj-nmsc.adb @@ -628,14 +628,18 @@ package body Prj.Nmsc is -- Check Specification_Suffix declare - Ada_Spec_Suffix : constant Name_Id := + Ada_Spec_Suffix : constant Variable_Value := Prj.Util.Value_Of (Index => Name_Ada, In_Array => Data.Naming.Specification_Suffix); begin - if Ada_Spec_Suffix /= No_Name then - Data.Naming.Current_Spec_Suffix := Ada_Spec_Suffix; + if Ada_Spec_Suffix.Kind = Single + and then String_Length (Ada_Spec_Suffix.Value) /= 0 + then + String_To_Name_Buffer (Ada_Spec_Suffix.Value); + Data.Naming.Current_Spec_Suffix := Name_Find; + Data.Naming.Spec_Suffix_Loc := Ada_Spec_Suffix.Location; else Data.Naming.Current_Spec_Suffix := Default_Ada_Spec_Suffix; @@ -652,14 +656,18 @@ package body Prj.Nmsc is -- Check Implementation_Suffix declare - Ada_Impl_Suffix : constant Name_Id := + Ada_Impl_Suffix : constant Variable_Value := Prj.Util.Value_Of (Index => Name_Ada, In_Array => Data.Naming.Implementation_Suffix); begin - if Ada_Impl_Suffix /= No_Name then - Data.Naming.Current_Impl_Suffix := Ada_Impl_Suffix; + if Ada_Impl_Suffix.Kind = Single + and then String_Length (Ada_Impl_Suffix.Value) /= 0 + then + String_To_Name_Buffer (Ada_Impl_Suffix.Value); + Data.Naming.Current_Impl_Suffix := Name_Find; + Data.Naming.Impl_Suffix_Loc := Ada_Impl_Suffix.Location; else Data.Naming.Current_Impl_Suffix := Default_Ada_Impl_Suffix; @@ -920,9 +928,9 @@ package body Prj.Nmsc is end if; end Check_Ada_Name; - ------------------------- - -- Check_Naming_Scheme -- - ------------------------- + ----------------------------- + -- Check_Ada_Naming_Scheme -- + ----------------------------- procedure Check_Ada_Naming_Scheme (Naming : Naming_Data) is begin @@ -982,24 +990,24 @@ package body Prj.Nmsc is -- - start with an '_' followed by an alphanumeric if Is_Illegal_Append (Specification_Suffix) then + Error_Msg_Name_1 := Naming.Current_Spec_Suffix; Error_Msg - ('"' & Specification_Suffix & - """ is illegal for Specification_Suffix.", + ("{ is illegal for Specification_Suffix", Naming.Spec_Suffix_Loc); end if; if Is_Illegal_Append (Implementation_Suffix) then + Error_Msg_Name_1 := Naming.Current_Impl_Suffix; Error_Msg - ('"' & Implementation_Suffix & - """ is illegal for Implementation_Suffix.", + ("% is illegal for Implementation_Suffix", Naming.Impl_Suffix_Loc); end if; if Implementation_Suffix /= Separate_Suffix then if Is_Illegal_Append (Separate_Suffix) then + Error_Msg_Name_1 := Naming.Separate_Suffix; Error_Msg - ('"' & Separate_Suffix & - """ is illegal for Separate_Append.", + ("{ is illegal for Separate_Append", Naming.Sep_Suffix_Loc); end if; end if; @@ -1039,6 +1047,7 @@ package body Prj.Nmsc is end if; end; end if; + end Check_Ada_Naming_Scheme; --------------- @@ -1430,6 +1439,7 @@ package body Prj.Nmsc is begin return This'Length = 0 or else Is_Alphanumeric (This (This'First)) + or else Index (This, ".") = 0 or else (This'Length >= 2 and then This (This'First) = '_' and then Is_Alphanumeric (This (This'First + 1))); @@ -1701,7 +1711,7 @@ package body Prj.Nmsc is Write_Line ("Starting to look for directories"); end if; - -- Let's check the object directory + -- Check the object directory declare Object_Dir : Variable_Value := @@ -1757,6 +1767,62 @@ package body Prj.Nmsc is end if; end if; + -- Check the exec directory + + declare + Exec_Dir : Variable_Value := + Util.Value_Of (Name_Exec_Dir, Data.Decl.Attributes); + + begin + pragma Assert (Exec_Dir.Kind = Single, + "Exec_Dir is not a single string"); + + -- We set the object directory to its default + + Data.Exec_Directory := Data.Object_Directory; + + if not String_Equal (Exec_Dir.Value, Empty_String) then + + String_To_Name_Buffer (Exec_Dir.Value); + + if Name_Len = 0 then + Error_Msg ("Exec_Dir cannot be empty", + Exec_Dir.Location); + + else + -- We check that the specified object directory + -- does exist. + + Canonical_Case_File_Name (Name_Buffer (1 .. Name_Len)); + + declare + Dir_Id : constant Name_Id := Name_Find; + + begin + Data.Exec_Directory := + Locate_Directory (Dir_Id, Data.Directory); + + if Data.Exec_Directory = No_Name then + Error_Msg_Name_1 := Dir_Id; + Error_Msg + ("the exec directory { cannot be found", + Data.Location); + end if; + end; + end if; + end if; + end; + + if Current_Verbosity = High then + if Data.Exec_Directory = No_Name then + Write_Line ("No exec directory"); + else + Write_Str ("Exec directory: """); + Write_Str (Get_Name_String (Data.Exec_Directory)); + Write_Line (""""); + end if; + end if; + -- Look for the source directories declare |