1 ------------------------------------------------------------------------------
3 -- GNAT COMPILER COMPONENTS --
9 -- Copyright (C) 2001-2009, AdaCore --
11 -- GNAT is free software; you can redistribute it and/or modify it under --
12 -- terms of the GNU General Public License as published by the Free Soft- --
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
17 -- for more details. You should have received a copy of the GNU General --
18 -- Public License distributed with GNAT; see file COPYING3. If not, go to --
19 -- http://www.gnu.org/licenses for a complete copy of the license. --
21 -- GNAT was originally developed by the GNAT team at New York University. --
22 -- Extensive contributions were provided by Ada Core Technologies Inc. --
24 ------------------------------------------------------------------------------
29 with MLib.Tgt.Specific;
30 pragma Warnings (Off, MLib.Tgt.Specific);
31 -- MLib.Tgt.Specific is with'ed only for elaboration purposes
33 package body MLib.Tgt is
39 function Archive_Builder return String is
41 return Archive_Builder_Ptr.all;
44 -----------------------------
45 -- Archive_Builder_Default --
46 -----------------------------
48 function Archive_Builder_Default return String is
51 end Archive_Builder_Default;
53 -----------------------------
54 -- Archive_Builder_Options --
55 -----------------------------
57 function Archive_Builder_Options return String_List_Access is
59 return Archive_Builder_Options_Ptr.all;
60 end Archive_Builder_Options;
62 -------------------------------------
63 -- Archive_Builder_Options_Default --
64 -------------------------------------
66 function Archive_Builder_Options_Default return String_List_Access is
68 return new String_List'(1 => new String'("cr"));
69 end Archive_Builder_Options_Default;
71 ------------------------------------
72 -- Archive_Builder_Append_Options --
73 ------------------------------------
75 function Archive_Builder_Append_Options return String_List_Access is
77 return Archive_Builder_Append_Options_Ptr.all;
78 end Archive_Builder_Append_Options;
80 --------------------------------------------
81 -- Archive_Builder_Append_Options_Default --
82 --------------------------------------------
84 function Archive_Builder_Append_Options_Default return String_List_Access is
86 return new String_List'(1 => new String'("q"));
87 end Archive_Builder_Append_Options_Default;
93 function Archive_Ext return String is
95 return Archive_Ext_Ptr.all;
98 -------------------------
99 -- Archive_Ext_Default --
100 -------------------------
102 function Archive_Ext_Default return String is
105 end Archive_Ext_Default;
107 ---------------------
108 -- Archive_Indexer --
109 ---------------------
111 function Archive_Indexer return String is
113 return Archive_Indexer_Ptr.all;
116 -----------------------------
117 -- Archive_Indexer_Default --
118 -----------------------------
120 function Archive_Indexer_Default return String is
123 end Archive_Indexer_Default;
125 -----------------------------
126 -- Archive_Indexer_Options --
127 -----------------------------
129 function Archive_Indexer_Options return String_List_Access is
131 return Archive_Indexer_Options_Ptr.all;
132 end Archive_Indexer_Options;
134 -------------------------------------
135 -- Archive_Indexer_Options_Default --
136 -------------------------------------
138 function Archive_Indexer_Options_Default return String_List_Access is
140 return new String_List (1 .. 0);
141 end Archive_Indexer_Options_Default;
143 ---------------------------
144 -- Build_Dynamic_Library --
145 ---------------------------
147 procedure Build_Dynamic_Library
148 (Ofiles : Argument_List;
149 Options : Argument_List;
150 Interfaces : Argument_List;
151 Lib_Filename : String;
153 Symbol_Data : Symbol_Record;
154 Driver_Name : Name_Id := No_Name;
155 Lib_Version : String := "";
156 Auto_Init : Boolean := False)
159 Build_Dynamic_Library_Ptr
169 end Build_Dynamic_Library;
171 ------------------------------
172 -- Default_Symbol_File_Name --
173 ------------------------------
175 function Default_Symbol_File_Name return String is
177 return Default_Symbol_File_Name_Ptr.all;
178 end Default_Symbol_File_Name;
180 --------------------------------------
181 -- Default_Symbol_File_Name_Default --
182 --------------------------------------
184 function Default_Symbol_File_Name_Default return String is
187 end Default_Symbol_File_Name_Default;
193 function DLL_Ext return String is
195 return DLL_Ext_Ptr.all;
198 ---------------------
199 -- DLL_Ext_Default --
200 ---------------------
202 function DLL_Ext_Default return String is
211 function DLL_Prefix return String is
213 return DLL_Prefix_Ptr.all;
216 ------------------------
217 -- DLL_Prefix_Default --
218 ------------------------
220 function DLL_Prefix_Default return String is
223 end DLL_Prefix_Default;
229 function Dynamic_Option return String is
231 return Dynamic_Option_Ptr.all;
234 ----------------------------
235 -- Dynamic_Option_Default --
236 ----------------------------
238 function Dynamic_Option_Default return String is
241 end Dynamic_Option_Default;
247 function Is_Object_Ext (Ext : String) return Boolean is
249 return Is_Object_Ext_Ptr (Ext);
252 ---------------------------
253 -- Is_Object_Ext_Default --
254 ---------------------------
256 function Is_Object_Ext_Default (Ext : String) return Boolean is
259 end Is_Object_Ext_Default;
265 function Is_C_Ext (Ext : String) return Boolean is
267 return Is_C_Ext_Ptr (Ext);
270 ----------------------
271 -- Is_C_Ext_Default --
272 ----------------------
274 function Is_C_Ext_Default (Ext : String) return Boolean is
277 end Is_C_Ext_Default;
283 function Is_Archive_Ext (Ext : String) return Boolean is
285 return Is_Archive_Ext_Ptr (Ext);
288 ----------------------------
289 -- Is_Archive_Ext_Default --
290 ----------------------------
292 function Is_Archive_Ext_Default (Ext : String) return Boolean is
295 end Is_Archive_Ext_Default;
301 function Libgnat return String is
303 return Libgnat_Ptr.all;
306 ---------------------
307 -- Libgnat_Default --
308 ---------------------
310 function Libgnat_Default return String is
315 ------------------------
316 -- Library_Exists_For --
317 ------------------------
319 function Library_Exists_For
320 (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean
323 return Library_Exists_For_Ptr (Project, In_Tree);
324 end Library_Exists_For;
326 --------------------------------
327 -- Library_Exists_For_Default --
328 --------------------------------
330 function Library_Exists_For_Default
331 (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean
333 pragma Unreferenced (In_Tree);
335 if not Project.Library then
336 Prj.Com.Fail ("INTERNAL ERROR: Library_Exists_For called " &
337 "for non library project");
342 Lib_Dir : constant String :=
343 Get_Name_String (Project.Library_Dir.Name);
344 Lib_Name : constant String :=
345 Get_Name_String (Project.Library_Name);
348 if Project.Library_Kind = Static then
349 return Is_Regular_File
350 (Lib_Dir & Directory_Separator & "lib" &
351 Fil.Append_To (Lib_Name, Archive_Ext));
354 return Is_Regular_File
355 (Lib_Dir & Directory_Separator & DLL_Prefix &
356 Fil.Append_To (Lib_Name, DLL_Ext));
360 end Library_Exists_For_Default;
362 ---------------------------
363 -- Library_File_Name_For --
364 ---------------------------
366 function Library_File_Name_For
367 (Project : Project_Id;
368 In_Tree : Project_Tree_Ref) return File_Name_Type
371 return Library_File_Name_For_Ptr (Project, In_Tree);
372 end Library_File_Name_For;
374 -----------------------------------
375 -- Library_File_Name_For_Default --
376 -----------------------------------
378 function Library_File_Name_For_Default
379 (Project : Project_Id;
380 In_Tree : Project_Tree_Ref) return File_Name_Type
382 pragma Unreferenced (In_Tree);
384 if not Project.Library then
385 Prj.Com.Fail ("INTERNAL ERROR: Library_File_Name_For called " &
386 "for non library project");
391 Lib_Name : constant String :=
392 Get_Name_String (Project.Library_Name);
395 if Project.Library_Kind =
399 Name_Buffer (1 .. Name_Len) := "lib";
400 Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, Archive_Ext));
403 Add_Str_To_Name_Buffer (DLL_Prefix);
404 Add_Str_To_Name_Buffer (Fil.Append_To (Lib_Name, DLL_Ext));
410 end Library_File_Name_For_Default;
412 --------------------------------------
413 -- Library_Major_Minor_Id_Supported --
414 --------------------------------------
416 function Library_Major_Minor_Id_Supported return Boolean is
418 return Library_Major_Minor_Id_Supported_Ptr.all;
419 end Library_Major_Minor_Id_Supported;
421 ----------------------------------------------
422 -- Library_Major_Minor_Id_Supported_Default --
423 ----------------------------------------------
425 function Library_Major_Minor_Id_Supported_Default return Boolean is
428 end Library_Major_Minor_Id_Supported_Default;
434 function Object_Ext return String is
436 return Object_Ext_Ptr.all;
439 ------------------------
440 -- Object_Ext_Default --
441 ------------------------
443 function Object_Ext_Default return String is
446 end Object_Ext_Default;
452 function PIC_Option return String is
454 return PIC_Option_Ptr.all;
457 ------------------------
458 -- PIC_Option_Default --
459 ------------------------
461 function PIC_Option_Default return String is
464 end PIC_Option_Default;
466 -----------------------------------------------
467 -- Standalone_Library_Auto_Init_Is_Supported --
468 -----------------------------------------------
470 function Standalone_Library_Auto_Init_Is_Supported return Boolean is
472 return Standalone_Library_Auto_Init_Is_Supported_Ptr.all;
473 end Standalone_Library_Auto_Init_Is_Supported;
475 -------------------------------------------------------
476 -- Standalone_Library_Auto_Init_Is_Supported_Default --
477 -------------------------------------------------------
479 function Standalone_Library_Auto_Init_Is_Supported_Default return Boolean is
482 end Standalone_Library_Auto_Init_Is_Supported_Default;
484 ---------------------------
485 -- Support_For_Libraries --
486 ---------------------------
488 function Support_For_Libraries return Library_Support is
490 return Support_For_Libraries_Ptr.all;
491 end Support_For_Libraries;
493 -----------------------------------
494 -- Support_For_Libraries_Default --
495 -----------------------------------
497 function Support_For_Libraries_Default return Library_Support is
500 end Support_For_Libraries_Default;