The GNSA_ROOT environment variable can be used to indicate to the
compiler how to find the runtime directory.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* osint.ads, osint.adb (Relocate_Path): If the GNSA_ROOT
environment variable is set, we use that as the prefix, instead
of computing the prefix from the executable location.
diff --git a/gcc/ada/osint.adb b/gcc/ada/osint.adb
--- a/gcc/ada/osint.adb
+++ b/gcc/ada/osint.adb
@@ -2758,7 +2758,25 @@ package body Osint is
begin
if Std_Prefix = null then
- Std_Prefix := Executable_Prefix;
+ Std_Prefix := String_Ptr (Getenv ("GNSA_ROOT"));
+
+ if Std_Prefix.all = "" then
+ Std_Prefix := Executable_Prefix;
+
+ elsif not Is_Directory_Separator (Std_Prefix (Std_Prefix'Last)) then
+
+ -- The remainder of this function assumes that Std_Prefix
+ -- terminates with a dir separator, so we force this here.
+
+ declare
+ Old_Prefix : String_Ptr := Std_Prefix;
+ begin
+ Std_Prefix := new String (1 .. Old_Prefix'Length + 1);
+ Std_Prefix (1 .. Old_Prefix'Length) := Old_Prefix.all;
+ Std_Prefix (Old_Prefix'Length + 1) := Directory_Separator;
+ Free (Old_Prefix);
+ end;
+ end if;
if Std_Prefix.all /= "" then
diff --git a/gcc/ada/osint.ads b/gcc/ada/osint.ads
--- a/gcc/ada/osint.ads
+++ b/gcc/ada/osint.ads
@@ -237,8 +237,11 @@ package Osint is
-- replace the Prefix substring with the root installation directory.
-- By default, try to compute the root installation directory by looking
-- at the executable name as it was typed on the command line and, if
- -- needed, use the PATH environment variable. If the above computation
- -- fails, return Path. This function assumes Prefix'First = Path'First.
+ -- needed, use the PATH environment variable. If the GNSA_ROOT environment
+ -- variable is set, then the content of this variable is used as the root
+ -- installation directory.
+ -- If the above computation fails, return Path. This function assumes
+ -- Prefix'First = Path'First.
function Shared_Lib (Name : String) return String;
-- Returns the runtime shared library in the form -l<name>-<version> where