summaryrefslogtreecommitdiff
path: root/gcc/ada/mlib-tgt.ads
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/mlib-tgt.ads')
-rw-r--r--gcc/ada/mlib-tgt.ads109
1 files changed, 84 insertions, 25 deletions
diff --git a/gcc/ada/mlib-tgt.ads b/gcc/ada/mlib-tgt.ads
index a84a989946e..d7cad10b091 100644
--- a/gcc/ada/mlib-tgt.ads
+++ b/gcc/ada/mlib-tgt.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001, Ada Core Technologies, Inc. --
+-- Copyright (C) 2001-2003, 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- --
@@ -20,7 +20,7 @@
-- MA 02111-1307, USA. --
-- --
-- GNAT was originally developed by the GNAT team at New York University. --
--- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
-- --
------------------------------------------------------------------------------
@@ -30,36 +30,63 @@
-- There are several versions for the body of this package.
-- In the default version, libraries are not supported, so function
--- Libraries_Are_Supported returns False.
+-- Support_For_Libraries return None.
with GNAT.OS_Lib; use GNAT.OS_Lib;
-with Types; use Types;
+with Prj; use Prj;
package MLib.Tgt is
- function Libraries_Are_Supported return Boolean;
- -- Indicates if building libraries by gnatmake and gnatmlib
- -- are supported by the GNAT implementation for the OS.
+ type Library_Support is (None, Static_Only, Full);
+ -- Support for Library Project File.
+ -- - None: Library Project Files are not supported at all
+ -- - Static_Only: Library Project Files are only supported for static
+ -- libraries.
+ -- - Full: Library Project Files are supported for static and dynamic
+ -- (shared) libraries.
+
+ function Support_For_Libraries return Library_Support;
+ -- Indicates how building libraries by gnatmake is supported by the GNAT
+ -- implementation for the platform.
+
+ function Standalone_Library_Auto_Init_Is_Supported return Boolean;
+ -- Indicates if when building a dynamic Standalone Library,
+ -- automatic initialization is supported. If it is, then it is the default,
+ -- unless attribute Library_Auto_Init has the value "false".
+
+ function Archive_Builder return String;
+ -- Returns the name of the archive builder program, usually "ar"
+
+ function Archive_Builder_Options return String_List_Access;
+ -- A list of options to invoke the Archive_Builder, usually "cr" for "ar"
+
+ function Archive_Indexer return String;
+ -- Returns the name of the program, if any, that generates an index
+ -- to the contents of an archive, usually "ranlib".
function Default_DLL_Address return String;
- -- default address for non relocatable DLL
+ -- Default address for non relocatable DLL.
+ -- For OSes where a dynamic library is always relocatable,
+ -- this function returns an empty string.
function Dynamic_Option return String;
- -- gcc option to create a dynamic library
-
- function Base_Option return String;
+ -- gcc option to create a dynamic library.
+ -- For Unix, returns "-shared", for Windows returns "-mdll".
function Libgnat return String;
-- System dependent static GNAT library
function Archive_Ext return String;
- -- System dependent static library extension
+ -- System dependent static library extension, without leading dot.
+ -- For Unix and Windows, return "a".
function Object_Ext return String;
- -- System dependent object extension
+ -- System dependent object extension, without leadien dot.
+ -- On Unix, returns "o".
function DLL_Ext return String;
- -- System dependent dynamic library extension
+ -- System dependent dynamic library extension, without leading dot.
+ -- On Unix, returns "so", on Windows, returns "dll".
function PIC_Option return String;
-- Position independent code option
@@ -73,26 +100,58 @@ package MLib.Tgt is
function Is_Archive_Ext (Ext : String) return Boolean;
-- Returns True iff Ext is an extension for a library
- procedure Copy_ALI_Files
- (From : Name_Id;
- To : Name_Id);
- -- Copy all ALI files from directory From to directory To
-
- function Linker_Library_Path_Option
- (Directory : String)
- return String_Access;
- -- Linker option to specify the library directory path
+ function Linker_Library_Path_Option return String_Access;
+ -- Linker option to specify to the linker the library directory path.
+ -- If non null, the library directory path is to be appended.
+ -- Should be deallocated by the caller, when no longer needed.
procedure Build_Dynamic_Library
(Ofiles : Argument_List;
Foreign : Argument_List;
Afiles : Argument_List;
Options : Argument_List;
+ Interfaces : Argument_List;
Lib_Filename : String;
Lib_Dir : String;
+ Driver_Name : Name_Id := No_Name;
Lib_Address : String := "";
Lib_Version : String := "";
- Relocatable : Boolean := False);
- -- Build a dynamic/relocatable library
+ Relocatable : Boolean := False;
+ Auto_Init : Boolean := False);
+ -- Build a dynamic/relocatable library.
+ --
+ -- Ofiles is the list of all object files in the library.
+ -- Foreign is the list of non Ada object files (also included in Ofiles).
+ -- Afiles is the list of ALI files for the Ada object files.
+ -- Options is a list of options to be passed to the tool (gcc or other)
+ -- that effectively builds the dynamic library.
+ -- Interfaces is the list of ALI files for the interfaces of a SAL.
+ -- It is empty if the library is not a SAL.
+ -- Lib_Filename is the name of the library, without any prefix or
+ -- extension. For example, on Unix, if Lib_Filename is "toto", the name of
+ -- the library file will be "libtoto.so".
+ -- Lib_Dir is the directory path where the library will be located.
+ -- Lib_Address is the base address of the library for a non relocatable
+ -- library, given as an hexadecimal string.
+ -- For OSes that support symbolic links, Lib_Version, if non null, is
+ -- the actual file name of the library. For example on Unix,
+ -- if Lib_Filename is "toto" and Lib_Version is "libtoto.so.2.1",
+ -- "libtoto.so" will be a symbolic link to "libtoto.so.2.1" which will
+ -- be the actual library file.
+ -- Relocatable indicates if the library should be relocatable or not,
+ -- for those OSes that actually support non relocatable dynamic libraries.
+ -- Relocatable indicates that automatic elaboration/finalization must be
+ -- indicated to the linker, if possible.
+ -- Note: Depending on the OS, some of the parameters may not be taken
+ -- into account. For example, on Linux, Foreign, Afiles Lib_Address and
+ -- Relocatable are ignored.
+
+ function Library_Exists_For (Project : Project_Id) return Boolean;
+ -- Return True if the library file for a library project already exists.
+ -- This function can only be called for library projects.
+
+ function Library_File_Name_For (Project : Project_Id) return Name_Id;
+ -- Returns the file name of the library file of a library project.
+ -- This function can only be called for library projects.
end MLib.Tgt;