From 1086c39b19eed27d9fc5b53ca7c5b75143d908bf Mon Sep 17 00:00:00 2001
From: Vincent Celier <celier@adacore.com>
Date: Thu, 16 Aug 2007 14:19:13 +0200
Subject: [PATCH] make.adb (Collect_Arguments): Call Test_If_Relative_Path with
 Including_Non_Switch set to False.

2007-08-16  Vincent Celier  <celier@adacore.com>

	* make.adb (Collect_Arguments): Call Test_If_Relative_Path with
	Including_Non_Switch set to False.
	(Gnatmake): For the compiler, call Test_If_Relative_Path with
	Including_Non_Switch set to False.

	* makeutl.adb, makeutl.ads (Test_If_Relative_Path): New Boolean
	parameter Including_Non_Switch, defaulted to True. When
	Including_Non_Switch is False, options that are not switches and
	appear as relative path are not converted to absolute paths.

From-SVN: r127542
---
 gcc/ada/make.adb    | 15 +++++++++++----
 gcc/ada/makeutl.adb |  9 +++++----
 gcc/ada/makeutl.ads |  7 ++++---
 3 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb
index aa8e5f7d2f28..ee45873e8855 100644
--- a/gcc/ada/make.adb
+++ b/gcc/ada/make.adb
@@ -2372,7 +2372,8 @@ package body Make is
                                    new String'(Name_Buffer (1 .. Name_Len));
                                  Test_If_Relative_Path
                                    (New_Args (Last_New),
-                                    Parent => Data.Dir_Path);
+                                    Parent => Data.Dir_Path,
+                                    Including_Non_Switch => False);
                               end if;
 
                               Current := Element.Next;
@@ -2399,7 +2400,9 @@ package body Make is
 
                      begin
                         Test_If_Relative_Path
-                          (New_Args (1), Parent => Data.Dir_Path);
+                          (New_Args (1),
+                           Parent               => Data.Dir_Path,
+                           Including_Non_Switch => False);
                         Add_Arguments
                           (Configuration_Pragmas_Switch (Arguments_Project) &
                            New_Args & The_Saved_Gcc_Switches.all);
@@ -5315,12 +5318,16 @@ package body Make is
 
             for J in 1 .. Gcc_Switches.Last loop
                Test_If_Relative_Path
-                 (Gcc_Switches.Table (J), Parent => Dir_Path);
+                 (Gcc_Switches.Table (J),
+                  Parent => Dir_Path,
+                  Including_Non_Switch => False);
             end loop;
 
             for J in 1 .. Saved_Gcc_Switches.Last loop
                Test_If_Relative_Path
-                 (Saved_Gcc_Switches.Table (J), Parent => Current_Work_Dir);
+                 (Saved_Gcc_Switches.Table (J),
+                  Parent => Current_Work_Dir,
+                  Including_Non_Switch => False);
             end loop;
          end;
       end if;
diff --git a/gcc/ada/makeutl.adb b/gcc/ada/makeutl.adb
index af1326cc6c5f..b1aea0920e5e 100644
--- a/gcc/ada/makeutl.adb
+++ b/gcc/ada/makeutl.adb
@@ -551,9 +551,10 @@ package body Makeutl is
    ---------------------------
 
    procedure Test_If_Relative_Path
-     (Switch             : in out String_Access;
-      Parent             : String_Access;
-      Including_L_Switch : Boolean := True)
+     (Switch               : in out String_Access;
+      Parent               : String_Access;
+      Including_L_Switch   : Boolean := True;
+      Including_Non_Switch : Boolean := True)
    is
    begin
       if Switch /= null then
@@ -608,7 +609,7 @@ package body Makeutl is
                   end if;
                end if;
 
-            else
+            elsif Including_Non_Switch then
                if not Is_Absolute_Path (Sw) then
                   if Parent = null or else Parent'Length = 0 then
                      Do_Fail
diff --git a/gcc/ada/makeutl.ads b/gcc/ada/makeutl.ads
index 29a389512e01..b901bc5713ff 100644
--- a/gcc/ada/makeutl.ads
+++ b/gcc/ada/makeutl.ads
@@ -124,9 +124,10 @@ package Makeutl is
    end Mains;
 
    procedure Test_If_Relative_Path
-     (Switch             : in out String_Access;
-      Parent             : String_Access;
-      Including_L_Switch : Boolean := True);
+     (Switch               : in out String_Access;
+      Parent               : String_Access;
+      Including_L_Switch   : Boolean := True;
+      Including_Non_Switch : Boolean := True);
    --  Test if Switch is a relative search path switch.
    --  If it is, fail if Parent is null, otherwise prepend the path with
    --  Parent. This subprogram is only called when using project files.
-- 
GitLab