-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2004, Ada Core Technologies, Inc. --
+-- Copyright (C) 2003-2005, Ada Core Technologies, 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- --
-- 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. --
+-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
+-- Boston, MA 02110-1301, USA. --
-- --
-- GNAT was originally developed by the GNAT team at New York University. --
-- Extensive contributions were provided by Ada Core Technologies Inc. --
return "ranlib";
end Archive_Indexer;
+ -----------------------------
+ -- Archive_Indexer_Options --
+ -----------------------------
+
+ function Archive_Indexer_Options return String_List_Access is
+ begin
+ return new String_List (1 .. 0);
+ end Archive_Indexer_Options;
+
---------------------------
-- Build_Dynamic_Library --
---------------------------
Foreign : Argument_List;
Afiles : Argument_List;
Options : Argument_List;
+ Options_2 : Argument_List;
Interfaces : Argument_List;
Lib_Filename : String;
Lib_Dir : String;
Symbol_Data : Symbol_Record;
Driver_Name : Name_Id := No_Name;
- Lib_Address : String := "";
Lib_Version : String := "";
- Relocatable : Boolean := False;
Auto_Init : Boolean := False)
is
pragma Unreferenced (Foreign);
pragma Unreferenced (Afiles);
pragma Unreferenced (Interfaces);
pragma Unreferenced (Symbol_Data);
- pragma Unreferenced (Lib_Address);
- pragma Unreferenced (Relocatable);
Lib_File : constant String :=
- Lib_Dir & Directory_Separator & "lib" &
- MLib.Fil.Ext_To (Lib_Filename, DLL_Ext);
+ Lib_Dir & Directory_Separator & "lib" &
+ MLib.Fil.Ext_To (Lib_Filename, DLL_Ext);
Version_Arg : String_Access;
Symbolic_Link_Needed : Boolean := False;
end if;
-- If specified, add automatic elaboration/finalization
+
if Auto_Init then
Init_Fini := Init_Fini_List;
Init_Fini (2) := new String'("-Wl," & Lib_Filename & "init");
(Output_File => Lib_File,
Objects => Ofiles,
Options => Common_Options & Init_Fini.all,
+ Options_2 => Options_2,
Driver_Name => Driver_Name);
else
(Output_File => Lib_Version,
Objects => Ofiles,
Options => Common_Options & Version_Arg & Init_Fini.all,
+ Options_2 => Options_2,
Driver_Name => Driver_Name);
Symbolic_Link_Needed := Lib_Version /= Lib_File;
(Output_File => Lib_Dir & Directory_Separator & Lib_Version,
Objects => Ofiles,
Options => Common_Options & Version_Arg & Init_Fini.all,
+ Options_2 => Options_2,
Driver_Name => Driver_Name);
Symbolic_Link_Needed :=
Lib_Dir & Directory_Separator & Lib_Version /= Lib_File;
end if;
end Build_Dynamic_Library;
- -------------------------
- -- Default_DLL_Address --
- -------------------------
-
- function Default_DLL_Address return String is
- begin
- return "";
- end Default_DLL_Address;
-
-------------
-- DLL_Ext --
-------------
-- Library_Exists_For --
------------------------
- function Library_Exists_For (Project : Project_Id) return Boolean is
+ function Library_Exists_For
+ (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean
+ is
begin
- if not Projects.Table (Project).Library then
+ if not In_Tree.Projects.Table (Project).Library then
Prj.Com.Fail ("INTERNAL ERROR: Library_Exists_For called " &
"for non library project");
return False;
else
declare
Lib_Dir : constant String :=
- Get_Name_String (Projects.Table (Project).Library_Dir);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Dir);
Lib_Name : constant String :=
- Get_Name_String (Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
- if 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));
-- Library_File_Name_For --
---------------------------
- function Library_File_Name_For (Project : Project_Id) return Name_Id is
+ function Library_File_Name_For
+ (Project : Project_Id;
+ In_Tree : Project_Tree_Ref) return Name_Id
+ is
begin
- if not Projects.Table (Project).Library then
+ if not In_Tree.Projects.Table (Project).Library then
Prj.Com.Fail ("INTERNAL ERROR: Library_File_Name_For called " &
"for non library project");
return No_Name;
else
declare
Lib_Name : constant String :=
- Get_Name_String (Projects.Table (Project).Library_Name);
+ Get_Name_String
+ (In_Tree.Projects.Table (Project).Library_Name);
begin
Name_Len := 3;
Name_Buffer (1 .. Name_Len) := "lib";
- if Projects.Table (Project).Library_Kind = Static then
+ if In_Tree.Projects.Table (Project).Library_Kind =
+ Static
+ then
Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, Archive_Ext));
else