]>
Commit | Line | Data |
---|---|---|
f5faf9de AC |
1 | ------------------------------------------------------------------------------ |
2 | -- -- | |
3 | -- GNAT COMPILER COMPONENTS -- | |
4 | -- -- | |
5 | -- M L I B . T G T -- | |
6 | -- (LynxOS Version) -- | |
7 | -- -- | |
8 | -- B o d y -- | |
9 | -- -- | |
7e98a4c6 | 10 | -- Copyright (C) 2003-2005 Free Software Foundation, Inc. -- |
f5faf9de AC |
11 | -- -- |
12 | -- GNAT is free software; you can redistribute it and/or modify it under -- | |
13 | -- terms of the GNU General Public License as published by the Free Soft- -- | |
14 | -- ware Foundation; either version 2, or (at your option) any later ver- -- | |
15 | -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- | |
16 | -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- | |
17 | -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- | |
18 | -- for more details. You should have received a copy of the GNU General -- | |
19 | -- Public License distributed with GNAT; see file COPYING. If not, write -- | |
20 | -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- | |
21 | -- MA 02111-1307, USA. -- | |
22 | -- -- | |
23 | -- GNAT was originally developed by the GNAT team at New York University. -- | |
24 | -- Extensive contributions were provided by Ada Core Technologies Inc. -- | |
25 | -- -- | |
26 | ------------------------------------------------------------------------------ | |
27 | ||
28 | -- This package provides a set of target dependent routines to build | |
29 | -- static libraries. | |
30 | ||
31 | -- This is the LynxOS version of the body | |
32 | ||
33 | with MLib.Fil; | |
34 | with Namet; use Namet; | |
35 | with Prj.Com; | |
36 | ||
37 | package body MLib.Tgt is | |
38 | ||
39 | --------------------- | |
40 | -- Archive_Builder -- | |
41 | --------------------- | |
42 | ||
43 | function Archive_Builder return String is | |
44 | begin | |
45 | return "ar"; | |
46 | end Archive_Builder; | |
47 | ||
48 | ----------------------------- | |
49 | -- Archive_Builder_Options -- | |
50 | ----------------------------- | |
51 | ||
52 | function Archive_Builder_Options return String_List_Access is | |
53 | begin | |
54 | return new String_List'(1 => new String'("cr")); | |
55 | end Archive_Builder_Options; | |
56 | ||
57 | ----------------- | |
58 | -- Archive_Ext -- | |
59 | ----------------- | |
60 | ||
61 | function Archive_Ext return String is | |
62 | begin | |
63 | return "a"; | |
64 | end Archive_Ext; | |
65 | ||
66 | --------------------- | |
67 | -- Archive_Indexer -- | |
68 | --------------------- | |
69 | ||
70 | function Archive_Indexer return String is | |
71 | begin | |
72 | return "ranlib"; | |
73 | end Archive_Indexer; | |
74 | ||
75 | ----------------------------- | |
76 | -- Archive_Indexer_Options -- | |
77 | ----------------------------- | |
78 | ||
79 | function Archive_Indexer_Options return String_List_Access is | |
80 | begin | |
81 | return new String_List (1 .. 0); | |
82 | end Archive_Indexer_Options; | |
83 | ||
84 | --------------------------- | |
85 | -- Build_Dynamic_Library -- | |
86 | --------------------------- | |
87 | ||
88 | procedure Build_Dynamic_Library | |
89 | (Ofiles : Argument_List; | |
90 | Foreign : Argument_List; | |
91 | Afiles : Argument_List; | |
92 | Options : Argument_List; | |
93 | Options_2 : Argument_List; | |
94 | Interfaces : Argument_List; | |
95 | Lib_Filename : String; | |
96 | Lib_Dir : String; | |
97 | Symbol_Data : Symbol_Record; | |
98 | Driver_Name : Name_Id := No_Name; | |
99 | Lib_Version : String := ""; | |
100 | Auto_Init : Boolean := False) | |
101 | is | |
102 | pragma Unreferenced (Ofiles); | |
103 | pragma Unreferenced (Foreign); | |
104 | pragma Unreferenced (Afiles); | |
105 | pragma Unreferenced (Options); | |
106 | pragma Unreferenced (Options_2); | |
107 | pragma Unreferenced (Interfaces); | |
108 | pragma Unreferenced (Lib_Filename); | |
109 | pragma Unreferenced (Lib_Dir); | |
110 | pragma Unreferenced (Symbol_Data); | |
111 | pragma Unreferenced (Driver_Name); | |
112 | pragma Unreferenced (Lib_Version); | |
113 | pragma Unreferenced (Auto_Init); | |
114 | ||
115 | begin | |
116 | null; | |
117 | end Build_Dynamic_Library; | |
118 | ||
119 | ------------- | |
120 | -- DLL_Ext -- | |
121 | ------------- | |
122 | ||
123 | function DLL_Ext return String is | |
124 | begin | |
125 | return ""; | |
126 | end DLL_Ext; | |
127 | ||
128 | -------------------- | |
129 | -- Dynamic_Option -- | |
130 | -------------------- | |
131 | ||
132 | function Dynamic_Option return String is | |
133 | begin | |
134 | return ""; | |
135 | end Dynamic_Option; | |
136 | ||
137 | ------------------- | |
138 | -- Is_Object_Ext -- | |
139 | ------------------- | |
140 | ||
141 | function Is_Object_Ext (Ext : String) return Boolean is | |
142 | begin | |
143 | return Ext = ".o"; | |
144 | end Is_Object_Ext; | |
145 | ||
146 | -------------- | |
147 | -- Is_C_Ext -- | |
148 | -------------- | |
149 | ||
150 | function Is_C_Ext (Ext : String) return Boolean is | |
151 | begin | |
152 | return Ext = ".c"; | |
153 | end Is_C_Ext; | |
154 | ||
155 | -------------------- | |
156 | -- Is_Archive_Ext -- | |
157 | -------------------- | |
158 | ||
159 | function Is_Archive_Ext (Ext : String) return Boolean is | |
160 | begin | |
161 | return Ext = ".a"; | |
162 | end Is_Archive_Ext; | |
163 | ||
164 | ------------- | |
165 | -- Libgnat -- | |
166 | ------------- | |
167 | ||
168 | function Libgnat return String is | |
169 | begin | |
170 | return "libgnat.a"; | |
171 | end Libgnat; | |
172 | ||
173 | ------------------------ | |
174 | -- Library_Exists_For -- | |
175 | ------------------------ | |
176 | ||
7e98a4c6 VC |
177 | function Library_Exists_For |
178 | (Project : Project_Id; In_Tree : Project_Tree_Ref) return Boolean | |
179 | is | |
f5faf9de | 180 | begin |
7e98a4c6 | 181 | if not In_Tree.Projects.Table (Project).Library then |
f5faf9de AC |
182 | Prj.Com.Fail ("INTERNAL ERROR: Library_Exists_For called " & |
183 | "for non library project"); | |
184 | return False; | |
185 | ||
186 | else | |
187 | declare | |
188 | Lib_Dir : constant String := | |
7e98a4c6 VC |
189 | Get_Name_String |
190 | (In_Tree.Projects.Table (Project).Library_Dir); | |
f5faf9de | 191 | Lib_Name : constant String := |
7e98a4c6 VC |
192 | Get_Name_String |
193 | (In_Tree.Projects.Table (Project).Library_Name); | |
f5faf9de AC |
194 | |
195 | begin | |
7e98a4c6 VC |
196 | if In_Tree.Projects.Table (Project).Library_Kind = |
197 | Static | |
198 | then | |
f5faf9de AC |
199 | return Is_Regular_File |
200 | (Lib_Dir & Directory_Separator & "lib" & | |
201 | Fil.Ext_To (Lib_Name, Archive_Ext)); | |
202 | ||
203 | else | |
204 | return Is_Regular_File | |
205 | (Lib_Dir & Directory_Separator & "lib" & | |
206 | Fil.Ext_To (Lib_Name, DLL_Ext)); | |
207 | end if; | |
208 | end; | |
209 | end if; | |
210 | end Library_Exists_For; | |
211 | ||
212 | --------------------------- | |
213 | -- Library_File_Name_For -- | |
214 | --------------------------- | |
215 | ||
7e98a4c6 VC |
216 | function Library_File_Name_For |
217 | (Project : Project_Id; | |
218 | In_Tree : Project_Tree_Ref) return Name_Id | |
219 | is | |
f5faf9de | 220 | begin |
7e98a4c6 | 221 | if not In_Tree.Projects.Table (Project).Library then |
f5faf9de AC |
222 | Prj.Com.Fail ("INTERNAL ERROR: Library_File_Name_For called " & |
223 | "for non library project"); | |
224 | return No_Name; | |
225 | ||
226 | else | |
227 | declare | |
228 | Lib_Name : constant String := | |
7e98a4c6 VC |
229 | Get_Name_String |
230 | (In_Tree.Projects.Table (Project).Library_Name); | |
f5faf9de AC |
231 | |
232 | begin | |
233 | Name_Len := 3; | |
234 | Name_Buffer (1 .. Name_Len) := "lib"; | |
235 | ||
7e98a4c6 VC |
236 | if In_Tree.Projects.Table (Project).Library_Kind = |
237 | Static | |
238 | then | |
f5faf9de AC |
239 | Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, Archive_Ext)); |
240 | ||
241 | else | |
242 | Add_Str_To_Name_Buffer (Fil.Ext_To (Lib_Name, DLL_Ext)); | |
243 | end if; | |
244 | ||
245 | return Name_Find; | |
246 | end; | |
247 | end if; | |
248 | end Library_File_Name_For; | |
249 | ||
250 | ---------------- | |
251 | -- Object_Ext -- | |
252 | ---------------- | |
253 | ||
254 | function Object_Ext return String is | |
255 | begin | |
256 | return "o"; | |
257 | end Object_Ext; | |
258 | ||
259 | ---------------- | |
260 | -- PIC_Option -- | |
261 | ---------------- | |
262 | ||
263 | function PIC_Option return String is | |
264 | begin | |
265 | return ""; | |
266 | end PIC_Option; | |
267 | ||
268 | ----------------------------------------------- | |
269 | -- Standalone_Library_Auto_Init_Is_Supported -- | |
270 | ----------------------------------------------- | |
271 | ||
272 | function Standalone_Library_Auto_Init_Is_Supported return Boolean is | |
273 | begin | |
274 | return False; | |
275 | end Standalone_Library_Auto_Init_Is_Supported; | |
276 | ||
277 | --------------------------- | |
278 | -- Support_For_Libraries -- | |
279 | --------------------------- | |
280 | ||
281 | function Support_For_Libraries return Library_Support is | |
282 | begin | |
283 | return Static_Only; | |
284 | end Support_For_Libraries; | |
285 | ||
286 | end MLib.Tgt; |