package Target renames MLib.Tgt;
+ ---------------
+ -- Append_To --
+ ---------------
+
+ function Append_To
+ (Filename : String;
+ Ext : String) return String
+ is
+ begin
+ if Ext'Length = 0 then
+ return Filename;
+
+ elsif Filename (Filename'Last) = '.' then
+ if Ext (Ext'First) = '.' then
+ return Filename & Ext (Ext'First + 1 .. Ext'Last);
+
+ else
+ return Filename & Ext;
+ end if;
+
+ else
+ if Ext (Ext'First) = '.' then
+ return Filename & Ext;
+
+ else
+ return Filename & '.' & Ext;
+ end if;
+ end if;
+ end Append_To;
+
------------
-- Ext_To --
------------
function Ext_To
(Filename : String;
- New_Ext : String := "")
- return String
+ New_Ext : String := "") return String
is
use Strings.Fixed;
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2005, AdaCore --
+-- Copyright (C) 2001-2006, AdaCore --
-- --
-- GNAT 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- --
function Ext_To
(Filename : String;
- New_Ext : String := "")
- return String;
- -- Return Filename with the extension change to New_Ext
+ New_Ext : String := "") return String;
+ -- Return Filename with the extension changed to New_Ext
+
+ function Append_To
+ (Filename : String;
+ Ext : String) return String;
+ -- Return Filename with the extension Ext
function Get_Ext (Filename : String) return String;
-- Return extension of filename
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2005, AdaCore --
+-- Copyright (C) 2003-2006, AdaCore --
-- --
-- GNAT 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- --
Lib_File : constant String :=
Lib_Dir & Directory_Separator & "lib" &
- MLib.Fil.Ext_To (Lib_Filename, DLL_Ext);
+ MLib.Fil.Append_To (Lib_Filename, DLL_Ext);
-- The file name of the library
Thread_Opts : Argument_List_Access := Empty_Argument_List;
------------------------
function Library_Exists_For
- (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean
+ (Project : Project_Id;
+ In_Tree : Project_Tree_Ref) return Boolean
is
begin
if not In_Tree.Projects.Table (Project).Library then
else
declare
Lib_Dir : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Dir);
-
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Dir);
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
- if In_Tree.Projects.Table (Project).Library_Kind =
- Static
- then
+ if In_Tree.Projects.Table (Project).Library_Kind = Static then
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, Archive_Ext));
+ Fil.Append_To (Lib_Name, Archive_Ext));
else
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, DLL_Ext));
+ Fil.Append_To (Lib_Name, DLL_Ext));
end if;
end;
end if;
else
declare
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
Name_Len := 3;
if In_Tree.Projects.Table (Project).Library_Kind =
Static
then
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, Archive_Ext));
-
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, Archive_Ext));
else
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, DLL_Ext));
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, DLL_Ext));
end if;
return Name_Find;
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2005, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2006, Free Software Foundation, Inc. --
-- --
-- GNAT 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- --
-- This is the Darwin version of the body
+with MLib; use MLib;
with MLib.Fil;
with MLib.Utl;
-with Namet; use Namet;
-with Opt;
-with Output; use Output;
+with Namet; use Namet;
+with Opt; use Opt;
+with Output; use Output;
with Prj.Com;
+
with System;
package body MLib.Tgt is
- use GNAT;
- use MLib;
+ Flat_Namespace : aliased String := "-Wl,-flat_namespace";
+ -- Instruct the linker to build the shared library as a flat
+ -- namespace image. The default is a two-level namespace image.
+
+ Shared_Libgcc : aliased String := "-shared-libgcc";
+
+ No_Shared_Libgcc_Options : aliased Argument_List :=
+ (1 => Flat_Namespace'Access);
+ With_Shared_Libgcc_Options : aliased Argument_List :=
+ (1 => Flat_Namespace'Access,
+ 2 => Shared_Libgcc'Access);
---------------------
-- Archive_Builder --
Lib_File : constant String :=
Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Filename, DLL_Ext);
+ Fil.Append_To (Lib_Filename, DLL_Ext);
+
+ Shared_Options : Argument_List_Access;
- Version_Arg : String_Access;
Symbolic_Link_Needed : Boolean := False;
begin
Write_Line (Lib_File);
end if;
+ -- Invoke gcc with -shared-libgcc, but only for GCC 4 or higher
+
+ if GCC_Version >= 4 then
+ Shared_Options := With_Shared_Libgcc_Options'Access;
+ else
+ Shared_Options := No_Shared_Libgcc_Options'Access;
+ end if;
+
-- If specified, add automatic elaboration/finalization
if Lib_Version = "" then
Utl.Gcc
(Output_File => Lib_File,
Objects => Ofiles,
- Options => Options,
+ Options => Options & Shared_Options.all,
Driver_Name => Driver_Name,
Options_2 => Options_2);
else
- -- Instruct the linker to build the shared library as a flat
- -- namespace image, which is not the default. The default is a two
- -- level namespace image.
-
- Version_Arg := new String'("-Wl,-flat_namespace");
if Is_Absolute_Path (Lib_Version) then
Utl.Gcc
(Output_File => Lib_Version,
Objects => Ofiles,
- Options => Options & Version_Arg,
+ Options => Options & Shared_Options.all,
Driver_Name => Driver_Name,
Options_2 => Options_2);
Symbolic_Link_Needed := Lib_Version /= Lib_File;
Utl.Gcc
(Output_File => Lib_Dir & Directory_Separator & Lib_Version,
Objects => Ofiles,
- Options => Options & Version_Arg,
+ Options => Options & Shared_Options.all,
Driver_Name => Driver_Name,
Options_2 => Options_2);
Symbolic_Link_Needed :=
------------------------
function Library_Exists_For
- (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean
+ (Project : Project_Id;
+ In_Tree : Project_Tree_Ref) return Boolean
is
begin
if not In_Tree.Projects.Table (Project).Library then
else
declare
- Lib_Dir : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Dir);
+ Lib_Dir : constant String :=
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Dir);
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
- if In_Tree.Projects.Table (Project).Library_Kind =
- Static
- then
+ if In_Tree.Projects.Table (Project).Library_Kind = Static then
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, Archive_Ext));
+ Fil.Append_To (Lib_Name, Archive_Ext));
else
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, DLL_Ext));
+ Fil.Append_To (Lib_Name, DLL_Ext));
end if;
end;
end if;
else
declare
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
Name_Len := 3;
if In_Tree.Projects.Table (Project).Library_Kind =
Static then
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, Archive_Ext));
-
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, Archive_Ext));
else
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, DLL_Ext));
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, DLL_Ext));
end if;
return Name_Find;
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2005, AdaCore --
+-- Copyright (C) 2003-2006, AdaCore --
-- --
-- GNAT 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- --
Lib_File : constant String :=
Lib_Dir & Directory_Separator & "lib" &
- MLib.Fil.Ext_To (Lib_Filename, DLL_Ext);
+ MLib.Fil.Append_To (Lib_Filename, DLL_Ext);
Version_Arg : String_Access;
Symbolic_Link_Needed : Boolean := False;
------------------------
function Library_Exists_For
- (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean
+ (Project : Project_Id;
+ In_Tree : Project_Tree_Ref) return Boolean
is
begin
if not In_Tree.Projects.Table (Project).Library then
else
declare
- Lib_Dir : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Dir);
+ Lib_Dir : constant String :=
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Dir);
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
- if In_Tree.Projects.Table (Project).Library_Kind =
- Static
- then
+ if In_Tree.Projects.Table (Project).Library_Kind = Static then
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, Archive_Ext));
+ Fil.Append_To (Lib_Name, Archive_Ext));
else
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, DLL_Ext));
+ Fil.Append_To (Lib_Name, DLL_Ext));
end if;
end;
end if;
else
declare
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
Name_Len := 3;
if In_Tree.Projects.Table (Project).Library_Kind =
Static
then
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, Archive_Ext));
-
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, Archive_Ext));
else
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, DLL_Ext));
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, DLL_Ext));
end if;
return Name_Find;
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2005, AdaCore --
+-- Copyright (C) 2003-2006, AdaCore --
-- --
-- GNAT 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- --
Lib_File : constant String :=
Lib_Dir & Directory_Separator & "lib" &
- MLib.Fil.Ext_To (Lib_Filename, DLL_Ext);
+ MLib.Fil.Append_To (Lib_Filename, DLL_Ext);
Version_Arg : String_Access;
Symbolic_Link_Needed : Boolean := False;
------------------------
function Library_Exists_For
- (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean
+ (Project : Project_Id;
+ In_Tree : Project_Tree_Ref) return Boolean
is
begin
if not In_Tree.Projects.Table (Project).Library then
else
declare
- Lib_Dir : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Dir);
+ Lib_Dir : constant String :=
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Dir);
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
- if In_Tree.Projects.Table (Project).Library_Kind =
- Static
- then
+ if In_Tree.Projects.Table (Project).Library_Kind = Static then
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, Archive_Ext));
+ Fil.Append_To (Lib_Name, Archive_Ext));
else
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, DLL_Ext));
+ Fil.Append_To (Lib_Name, DLL_Ext));
end if;
end;
end if;
else
declare
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
Name_Len := 3;
if In_Tree.Projects.Table (Project).Library_Kind =
Static
then
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, Archive_Ext));
-
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, Archive_Ext));
else
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, DLL_Ext));
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, DLL_Ext));
end if;
return Name_Find;
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2005, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2006, Free Software Foundation, Inc. --
-- --
-- GNAT 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- --
Lib_File : constant String :=
Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Filename, DLL_Ext);
+ Fil.Append_To (Lib_Filename, DLL_Ext);
Version_Arg : String_Access;
Symbolic_Link_Needed : Boolean := False;
Options_2 => Options_2);
else
- Version_Arg := new String'("-Wl,-soname," & Lib_Version);
-
- if Is_Absolute_Path (Lib_Version) then
- Utl.Gcc
- (Output_File => Lib_Version,
- Objects => Ofiles,
- Options => Options & Version_Arg,
- Driver_Name => Driver_Name,
- Options_2 => Options_2);
- Symbolic_Link_Needed := Lib_Version /= Lib_File;
-
- else
- Utl.Gcc
- (Output_File => Lib_Dir & Directory_Separator & Lib_Version,
- Objects => Ofiles,
- Options => Options & Version_Arg,
- Driver_Name => Driver_Name,
- Options_2 => Options_2);
- Symbolic_Link_Needed :=
- Lib_Dir & Directory_Separator & Lib_Version /= Lib_File;
- end if;
-
- if Symbolic_Link_Needed then
- declare
- Success : Boolean;
- Oldpath : String (1 .. Lib_Version'Length + 1);
- Newpath : String (1 .. Lib_File'Length + 1);
-
- Result : Integer;
- pragma Unreferenced (Result);
-
- function Symlink
- (Oldpath : System.Address;
- Newpath : System.Address) return Integer;
- pragma Import (C, Symlink, "__gnat_symlink");
-
- begin
- Oldpath (1 .. Lib_Version'Length) := Lib_Version;
- Oldpath (Oldpath'Last) := ASCII.NUL;
- Newpath (1 .. Lib_File'Length) := Lib_File;
- Newpath (Newpath'Last) := ASCII.NUL;
-
- Delete_File (Lib_File, Success);
-
- Result := Symlink (Oldpath'Address, Newpath'Address);
- end;
- end if;
+ declare
+ Maj_Version : constant String := Lib_Version;
+ Last_Maj : Positive := Maj_Version'Last;
+ Last : Positive;
+ Ok_Maj : Boolean := False;
+ begin
+ while Last_Maj > Maj_Version'First loop
+ if Maj_Version (Last_Maj) in '0' .. '9' then
+ Last_Maj := Last_Maj - 1;
+
+ else
+ Ok_Maj := Last_Maj /= Maj_Version'Last and then
+ Maj_Version (Last_Maj) = '.';
+
+ if Ok_Maj then
+ Last_Maj := Last_Maj - 1;
+ end if;
+
+ exit;
+ end if;
+ end loop;
+
+ if Ok_Maj then
+ Last := Last_Maj;
+
+ while Last > Maj_Version'First loop
+ if Maj_Version (Last) in '0' .. '9' then
+ Last := Last - 1;
+
+ else
+ Ok_Maj := Last /= Last_Maj and then
+ Maj_Version (Last) = '.';
+
+ if Ok_Maj then
+ Last := Last - 1;
+
+ Ok_Maj := Maj_Version (1 .. Last) = Lib_File;
+ end if;
+
+ exit;
+ end if;
+ end loop;
+ end if;
+
+ if Ok_Maj then
+ Version_Arg := new String'("-Wl,-soname," &
+ Maj_Version (1 .. Last_Maj));
+
+ else
+ Version_Arg := new String'("-Wl,-soname," & Lib_Version);
+ end if;
+
+ if Is_Absolute_Path (Lib_Version) then
+ Utl.Gcc
+ (Output_File => Lib_Version,
+ Objects => Ofiles,
+ Options => Options & Version_Arg,
+ Driver_Name => Driver_Name,
+ Options_2 => Options_2);
+ Symbolic_Link_Needed := Lib_Version /= Lib_File;
+
+ else
+ Utl.Gcc
+ (Output_File => Lib_Dir & Directory_Separator & Lib_Version,
+ Objects => Ofiles,
+ Options => Options & Version_Arg,
+ Driver_Name => Driver_Name,
+ Options_2 => Options_2);
+ Symbolic_Link_Needed :=
+ Lib_Dir & Directory_Separator & Lib_Version /= Lib_File;
+ end if;
+
+ if Symbolic_Link_Needed then
+ declare
+ Success : Boolean;
+ Oldpath : String (1 .. Lib_Version'Length + 1);
+ Newpath : String (1 .. Lib_File'Length + 1);
+
+ Result : Integer;
+ pragma Unreferenced (Result);
+
+ function Symlink
+ (Oldpath : System.Address;
+ Newpath : System.Address) return Integer;
+ pragma Import (C, Symlink, "__gnat_symlink");
+
+ begin
+ Oldpath (1 .. Lib_Version'Length) := Lib_Version;
+ Oldpath (Oldpath'Last) := ASCII.NUL;
+ Newpath (1 .. Lib_File'Length) := Lib_File;
+ Newpath (Newpath'Last) := ASCII.NUL;
+
+ Delete_File (Lib_File, Success);
+
+ Result := Symlink (Oldpath'Address, Newpath'Address);
+ end;
+ end if;
+ end;
end if;
end Build_Dynamic_Library;
------------------------
function Library_Exists_For
- (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean
+ (Project : Project_Id;
+ In_Tree : Project_Tree_Ref) return Boolean
is
begin
if not In_Tree.Projects.Table (Project).Library then
else
declare
- Lib_Dir : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Dir);
+ Lib_Dir : constant String :=
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Dir);
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
- if In_Tree.Projects.Table (Project).Library_Kind =
- Static
- then
+ if In_Tree.Projects.Table (Project).Library_Kind = Static then
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, Archive_Ext));
+ Fil.Append_To (Lib_Name, Archive_Ext));
else
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, DLL_Ext));
+ Fil.Append_To (Lib_Name, DLL_Ext));
end if;
end;
end if;
else
declare
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
Name_Len := 3;
if In_Tree.Projects.Table (Project).Library_Kind =
Static
then
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, Archive_Ext));
-
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, Archive_Ext));
else
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, DLL_Ext));
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, DLL_Ext));
end if;
return Name_Find;
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2005 Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2006 Free Software Foundation, Inc. --
-- --
-- GNAT 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- --
------------------------
function Library_Exists_For
- (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean
+ (Project : Project_Id;
+ In_Tree : Project_Tree_Ref) return Boolean
is
begin
if not In_Tree.Projects.Table (Project).Library then
else
declare
- Lib_Dir : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Dir);
+ Lib_Dir : constant String :=
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Dir);
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
- if In_Tree.Projects.Table (Project).Library_Kind =
- Static
- then
+ if In_Tree.Projects.Table (Project).Library_Kind = Static then
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, Archive_Ext));
+ Fil.Append_To (Lib_Name, Archive_Ext));
else
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, DLL_Ext));
+ Fil.Append_To (Lib_Name, DLL_Ext));
end if;
end;
end if;
else
declare
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
Name_Len := 3;
if In_Tree.Projects.Table (Project).Library_Kind =
Static
then
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, Archive_Ext));
-
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, Archive_Ext));
else
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, DLL_Ext));
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, DLL_Ext));
end if;
return Name_Find;
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2005, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2006, Free Software Foundation, Inc. --
-- --
-- GNAT 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- --
Lib_File : constant String :=
Lib_Dir & Directory_Separator &
- Files.Ext_To (Lib_Filename, DLL_Ext);
+ Files.Append_To (Lib_Filename, DLL_Ext);
-- Start of processing for Build_Dynamic_Library
------------------------
function Library_Exists_For
- (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean is
+ (Project : Project_Id;
+ In_Tree : Project_Tree_Ref) return Boolean is
begin
if not In_Tree.Projects.Table (Project).Library then
Prj.Com.Fail ("INTERNAL ERROR: Library_Exists_For called " &
else
declare
- Lib_Dir : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Dir);
+ Lib_Dir : constant String :=
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Dir);
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
- if In_Tree.Projects.Table (Project).Library_Kind =
- Static
- then
+ if In_Tree.Projects.Table (Project).Library_Kind = Static then
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- MLib.Fil.Ext_To (Lib_Name, Archive_Ext));
+ MLib.Fil.Append_To (Lib_Name, Archive_Ext));
else
return Is_Regular_File
(Lib_Dir & Directory_Separator &
- MLib.Fil.Ext_To (Lib_Name, DLL_Ext));
+ MLib.Fil.Append_To (Lib_Name, DLL_Ext));
end if;
end;
end if;
else
declare
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
if In_Tree.Projects.Table (Project).Library_Kind =
then
Name_Len := 3;
Name_Buffer (1 .. Name_Len) := "lib";
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, Archive_Ext));
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, Archive_Ext));
else
Name_Len := 0;
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, DLL_Ext));
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, DLL_Ext));
end if;
return Name_Find;
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2005 Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2006 Free Software Foundation, Inc. --
-- --
-- GNAT 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- --
Lib_File : constant String :=
Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Filename, DLL_Ext);
+ Fil.Append_To (Lib_Filename, DLL_Ext);
Version_Arg : String_Access;
Symbolic_Link_Needed : Boolean := False;
------------------------
function Library_Exists_For
- (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean
+ (Project : Project_Id;
+ In_Tree : Project_Tree_Ref) return Boolean
is
begin
if not In_Tree.Projects.Table (Project).Library then
else
declare
- Lib_Dir : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Dir);
+ Lib_Dir : constant String :=
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Dir);
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
- if In_Tree.Projects.Table (Project).Library_Kind =
- Static
- then
+ if In_Tree.Projects.Table (Project).Library_Kind = Static then
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, Archive_Ext));
+ Fil.Append_To (Lib_Name, Archive_Ext));
else
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, DLL_Ext));
+ Fil.Append_To (Lib_Name, DLL_Ext));
end if;
end;
end if;
else
declare
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
Name_Len := 3;
if In_Tree.Projects.Table (Project).Library_Kind =
Static
then
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, Archive_Ext));
-
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, Archive_Ext));
else
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, DLL_Ext));
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, DLL_Ext));
end if;
return Name_Find;
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2005 Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2006 Free Software Foundation, Inc. --
-- --
-- GNAT 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- --
Lib_File : constant String :=
Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Filename, DLL_Ext);
+ Fil.Append_To (Lib_Filename, DLL_Ext);
Version_Arg : String_Access;
Symbolic_Link_Needed : Boolean := False;
------------------------
function Library_Exists_For
- (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean
+ (Project : Project_Id;
+ In_Tree : Project_Tree_Ref) return Boolean
is
begin
if not In_Tree.Projects.Table (Project).Library then
else
declare
- Lib_Dir : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Dir);
+ Lib_Dir : constant String :=
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Dir);
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
- if In_Tree.Projects.Table (Project).Library_Kind =
- Static
- then
+ if In_Tree.Projects.Table (Project).Library_Kind = Static then
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, Archive_Ext));
+ Fil.Append_To (Lib_Name, Archive_Ext));
else
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, DLL_Ext));
+ Fil.Append_To (Lib_Name, DLL_Ext));
end if;
end;
end if;
else
declare
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
Name_Len := 3;
if In_Tree.Projects.Table (Project).Library_Kind =
Static
then
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, Archive_Ext));
-
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, Archive_Ext));
else
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, DLL_Ext));
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, DLL_Ext));
end if;
return Name_Find;
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2005 Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2006 Free Software Foundation, Inc. --
-- --
-- GNAT 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- --
return "sparc64";
elsif Target_Name (Target_Name'First .. Index) = "xscale" then
return "arm";
+ elsif Target_Name (Target_Name'First .. Index) = "i586" then
+ return "pentium";
else
return "";
end if;
------------------------
function Library_Exists_For
- (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean
+ (Project : Project_Id;
+ In_Tree : Project_Tree_Ref) return Boolean
is
begin
if not In_Tree.Projects.Table (Project).Library then
else
declare
- Lib_Dir : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Dir);
+ Lib_Dir : constant String :=
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Dir);
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
- if In_Tree.Projects.Table (Project).Library_Kind =
- Static
- then
+ if In_Tree.Projects.Table (Project).Library_Kind = Static then
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, Archive_Ext));
+ Fil.Append_To (Lib_Name, Archive_Ext));
else
return Is_Regular_File
(Lib_Dir & Directory_Separator & "lib" &
- Fil.Ext_To (Lib_Name, DLL_Ext));
+ Fil.Append_To (Lib_Name, DLL_Ext));
end if;
end;
end if;
else
declare
Lib_Name : constant String :=
- Get_Name_String
- (In_Tree.Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
Name_Len := 3;
if In_Tree.Projects.Table (Project).Library_Kind =
Static
then
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, Archive_Ext));
-
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, Archive_Ext));
else
- Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, DLL_Ext));
+ Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, DLL_Ext));
end if;
return Name_Find;