@@ -0,0 +1,3 | |||||
|
1 | Developers: | |||
|
2 | Yannic Simon <yannic.simon@lpp.polytechnique.fr> | |||
|
3 | Alexis Jeandet <alexis.jeandet@lpp.polytechnique.fr> No newline at end of file |
This diff has been collapsed as it changes many lines, (674 lines changed) Show them Hide them | |||||
@@ -0,0 +1,674 | |||||
|
1 | GNU GENERAL PUBLIC LICENSE | |||
|
2 | Version 3, 29 June 2007 | |||
|
3 | ||||
|
4 | Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> | |||
|
5 | Everyone is permitted to copy and distribute verbatim copies | |||
|
6 | of this license document, but changing it is not allowed. | |||
|
7 | ||||
|
8 | Preamble | |||
|
9 | ||||
|
10 | The GNU General Public License is a free, copyleft license for | |||
|
11 | software and other kinds of works. | |||
|
12 | ||||
|
13 | The licenses for most software and other practical works are designed | |||
|
14 | to take away your freedom to share and change the works. By contrast, | |||
|
15 | the GNU General Public License is intended to guarantee your freedom to | |||
|
16 | share and change all versions of a program--to make sure it remains free | |||
|
17 | software for all its users. We, the Free Software Foundation, use the | |||
|
18 | GNU General Public License for most of our software; it applies also to | |||
|
19 | any other work released this way by its authors. You can apply it to | |||
|
20 | your programs, too. | |||
|
21 | ||||
|
22 | When we speak of free software, we are referring to freedom, not | |||
|
23 | price. Our General Public Licenses are designed to make sure that you | |||
|
24 | have the freedom to distribute copies of free software (and charge for | |||
|
25 | them if you wish), that you receive source code or can get it if you | |||
|
26 | want it, that you can change the software or use pieces of it in new | |||
|
27 | free programs, and that you know you can do these things. | |||
|
28 | ||||
|
29 | To protect your rights, we need to prevent others from denying you | |||
|
30 | these rights or asking you to surrender the rights. Therefore, you have | |||
|
31 | certain responsibilities if you distribute copies of the software, or if | |||
|
32 | you modify it: responsibilities to respect the freedom of others. | |||
|
33 | ||||
|
34 | For example, if you distribute copies of such a program, whether | |||
|
35 | gratis or for a fee, you must pass on to the recipients the same | |||
|
36 | freedoms that you received. You must make sure that they, too, receive | |||
|
37 | or can get the source code. And you must show them these terms so they | |||
|
38 | know their rights. | |||
|
39 | ||||
|
40 | Developers that use the GNU GPL protect your rights with two steps: | |||
|
41 | (1) assert copyright on the software, and (2) offer you this License | |||
|
42 | giving you legal permission to copy, distribute and/or modify it. | |||
|
43 | ||||
|
44 | For the developers' and authors' protection, the GPL clearly explains | |||
|
45 | that there is no warranty for this free software. For both users' and | |||
|
46 | authors' sake, the GPL requires that modified versions be marked as | |||
|
47 | changed, so that their problems will not be attributed erroneously to | |||
|
48 | authors of previous versions. | |||
|
49 | ||||
|
50 | Some devices are designed to deny users access to install or run | |||
|
51 | modified versions of the software inside them, although the manufacturer | |||
|
52 | can do so. This is fundamentally incompatible with the aim of | |||
|
53 | protecting users' freedom to change the software. The systematic | |||
|
54 | pattern of such abuse occurs in the area of products for individuals to | |||
|
55 | use, which is precisely where it is most unacceptable. Therefore, we | |||
|
56 | have designed this version of the GPL to prohibit the practice for those | |||
|
57 | products. If such problems arise substantially in other domains, we | |||
|
58 | stand ready to extend this provision to those domains in future versions | |||
|
59 | of the GPL, as needed to protect the freedom of users. | |||
|
60 | ||||
|
61 | Finally, every program is threatened constantly by software patents. | |||
|
62 | States should not allow patents to restrict development and use of | |||
|
63 | software on general-purpose computers, but in those that do, we wish to | |||
|
64 | avoid the special danger that patents applied to a free program could | |||
|
65 | make it effectively proprietary. To prevent this, the GPL assures that | |||
|
66 | patents cannot be used to render the program non-free. | |||
|
67 | ||||
|
68 | The precise terms and conditions for copying, distribution and | |||
|
69 | modification follow. | |||
|
70 | ||||
|
71 | TERMS AND CONDITIONS | |||
|
72 | ||||
|
73 | 0. Definitions. | |||
|
74 | ||||
|
75 | "This License" refers to version 3 of the GNU General Public License. | |||
|
76 | ||||
|
77 | "Copyright" also means copyright-like laws that apply to other kinds of | |||
|
78 | works, such as semiconductor masks. | |||
|
79 | ||||
|
80 | "The Program" refers to any copyrightable work licensed under this | |||
|
81 | License. Each licensee is addressed as "you". "Licensees" and | |||
|
82 | "recipients" may be individuals or organizations. | |||
|
83 | ||||
|
84 | To "modify" a work means to copy from or adapt all or part of the work | |||
|
85 | in a fashion requiring copyright permission, other than the making of an | |||
|
86 | exact copy. The resulting work is called a "modified version" of the | |||
|
87 | earlier work or a work "based on" the earlier work. | |||
|
88 | ||||
|
89 | A "covered work" means either the unmodified Program or a work based | |||
|
90 | on the Program. | |||
|
91 | ||||
|
92 | To "propagate" a work means to do anything with it that, without | |||
|
93 | permission, would make you directly or secondarily liable for | |||
|
94 | infringement under applicable copyright law, except executing it on a | |||
|
95 | computer or modifying a private copy. Propagation includes copying, | |||
|
96 | distribution (with or without modification), making available to the | |||
|
97 | public, and in some countries other activities as well. | |||
|
98 | ||||
|
99 | To "convey" a work means any kind of propagation that enables other | |||
|
100 | parties to make or receive copies. Mere interaction with a user through | |||
|
101 | a computer network, with no transfer of a copy, is not conveying. | |||
|
102 | ||||
|
103 | An interactive user interface displays "Appropriate Legal Notices" | |||
|
104 | to the extent that it includes a convenient and prominently visible | |||
|
105 | feature that (1) displays an appropriate copyright notice, and (2) | |||
|
106 | tells the user that there is no warranty for the work (except to the | |||
|
107 | extent that warranties are provided), that licensees may convey the | |||
|
108 | work under this License, and how to view a copy of this License. If | |||
|
109 | the interface presents a list of user commands or options, such as a | |||
|
110 | menu, a prominent item in the list meets this criterion. | |||
|
111 | ||||
|
112 | 1. Source Code. | |||
|
113 | ||||
|
114 | The "source code" for a work means the preferred form of the work | |||
|
115 | for making modifications to it. "Object code" means any non-source | |||
|
116 | form of a work. | |||
|
117 | ||||
|
118 | A "Standard Interface" means an interface that either is an official | |||
|
119 | standard defined by a recognized standards body, or, in the case of | |||
|
120 | interfaces specified for a particular programming language, one that | |||
|
121 | is widely used among developers working in that language. | |||
|
122 | ||||
|
123 | The "System Libraries" of an executable work include anything, other | |||
|
124 | than the work as a whole, that (a) is included in the normal form of | |||
|
125 | packaging a Major Component, but which is not part of that Major | |||
|
126 | Component, and (b) serves only to enable use of the work with that | |||
|
127 | Major Component, or to implement a Standard Interface for which an | |||
|
128 | implementation is available to the public in source code form. A | |||
|
129 | "Major Component", in this context, means a major essential component | |||
|
130 | (kernel, window system, and so on) of the specific operating system | |||
|
131 | (if any) on which the executable work runs, or a compiler used to | |||
|
132 | produce the work, or an object code interpreter used to run it. | |||
|
133 | ||||
|
134 | The "Corresponding Source" for a work in object code form means all | |||
|
135 | the source code needed to generate, install, and (for an executable | |||
|
136 | work) run the object code and to modify the work, including scripts to | |||
|
137 | control those activities. However, it does not include the work's | |||
|
138 | System Libraries, or general-purpose tools or generally available free | |||
|
139 | programs which are used unmodified in performing those activities but | |||
|
140 | which are not part of the work. For example, Corresponding Source | |||
|
141 | includes interface definition files associated with source files for | |||
|
142 | the work, and the source code for shared libraries and dynamically | |||
|
143 | linked subprograms that the work is specifically designed to require, | |||
|
144 | such as by intimate data communication or control flow between those | |||
|
145 | subprograms and other parts of the work. | |||
|
146 | ||||
|
147 | The Corresponding Source need not include anything that users | |||
|
148 | can regenerate automatically from other parts of the Corresponding | |||
|
149 | Source. | |||
|
150 | ||||
|
151 | The Corresponding Source for a work in source code form is that | |||
|
152 | same work. | |||
|
153 | ||||
|
154 | 2. Basic Permissions. | |||
|
155 | ||||
|
156 | All rights granted under this License are granted for the term of | |||
|
157 | copyright on the Program, and are irrevocable provided the stated | |||
|
158 | conditions are met. This License explicitly affirms your unlimited | |||
|
159 | permission to run the unmodified Program. The output from running a | |||
|
160 | covered work is covered by this License only if the output, given its | |||
|
161 | content, constitutes a covered work. This License acknowledges your | |||
|
162 | rights of fair use or other equivalent, as provided by copyright law. | |||
|
163 | ||||
|
164 | You may make, run and propagate covered works that you do not | |||
|
165 | convey, without conditions so long as your license otherwise remains | |||
|
166 | in force. You may convey covered works to others for the sole purpose | |||
|
167 | of having them make modifications exclusively for you, or provide you | |||
|
168 | with facilities for running those works, provided that you comply with | |||
|
169 | the terms of this License in conveying all material for which you do | |||
|
170 | not control copyright. Those thus making or running the covered works | |||
|
171 | for you must do so exclusively on your behalf, under your direction | |||
|
172 | and control, on terms that prohibit them from making any copies of | |||
|
173 | your copyrighted material outside their relationship with you. | |||
|
174 | ||||
|
175 | Conveying under any other circumstances is permitted solely under | |||
|
176 | the conditions stated below. Sublicensing is not allowed; section 10 | |||
|
177 | makes it unnecessary. | |||
|
178 | ||||
|
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. | |||
|
180 | ||||
|
181 | No covered work shall be deemed part of an effective technological | |||
|
182 | measure under any applicable law fulfilling obligations under article | |||
|
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or | |||
|
184 | similar laws prohibiting or restricting circumvention of such | |||
|
185 | measures. | |||
|
186 | ||||
|
187 | When you convey a covered work, you waive any legal power to forbid | |||
|
188 | circumvention of technological measures to the extent such circumvention | |||
|
189 | is effected by exercising rights under this License with respect to | |||
|
190 | the covered work, and you disclaim any intention to limit operation or | |||
|
191 | modification of the work as a means of enforcing, against the work's | |||
|
192 | users, your or third parties' legal rights to forbid circumvention of | |||
|
193 | technological measures. | |||
|
194 | ||||
|
195 | 4. Conveying Verbatim Copies. | |||
|
196 | ||||
|
197 | You may convey verbatim copies of the Program's source code as you | |||
|
198 | receive it, in any medium, provided that you conspicuously and | |||
|
199 | appropriately publish on each copy an appropriate copyright notice; | |||
|
200 | keep intact all notices stating that this License and any | |||
|
201 | non-permissive terms added in accord with section 7 apply to the code; | |||
|
202 | keep intact all notices of the absence of any warranty; and give all | |||
|
203 | recipients a copy of this License along with the Program. | |||
|
204 | ||||
|
205 | You may charge any price or no price for each copy that you convey, | |||
|
206 | and you may offer support or warranty protection for a fee. | |||
|
207 | ||||
|
208 | 5. Conveying Modified Source Versions. | |||
|
209 | ||||
|
210 | You may convey a work based on the Program, or the modifications to | |||
|
211 | produce it from the Program, in the form of source code under the | |||
|
212 | terms of section 4, provided that you also meet all of these conditions: | |||
|
213 | ||||
|
214 | a) The work must carry prominent notices stating that you modified | |||
|
215 | it, and giving a relevant date. | |||
|
216 | ||||
|
217 | b) The work must carry prominent notices stating that it is | |||
|
218 | released under this License and any conditions added under section | |||
|
219 | 7. This requirement modifies the requirement in section 4 to | |||
|
220 | "keep intact all notices". | |||
|
221 | ||||
|
222 | c) You must license the entire work, as a whole, under this | |||
|
223 | License to anyone who comes into possession of a copy. This | |||
|
224 | License will therefore apply, along with any applicable section 7 | |||
|
225 | additional terms, to the whole of the work, and all its parts, | |||
|
226 | regardless of how they are packaged. This License gives no | |||
|
227 | permission to license the work in any other way, but it does not | |||
|
228 | invalidate such permission if you have separately received it. | |||
|
229 | ||||
|
230 | d) If the work has interactive user interfaces, each must display | |||
|
231 | Appropriate Legal Notices; however, if the Program has interactive | |||
|
232 | interfaces that do not display Appropriate Legal Notices, your | |||
|
233 | work need not make them do so. | |||
|
234 | ||||
|
235 | A compilation of a covered work with other separate and independent | |||
|
236 | works, which are not by their nature extensions of the covered work, | |||
|
237 | and which are not combined with it such as to form a larger program, | |||
|
238 | in or on a volume of a storage or distribution medium, is called an | |||
|
239 | "aggregate" if the compilation and its resulting copyright are not | |||
|
240 | used to limit the access or legal rights of the compilation's users | |||
|
241 | beyond what the individual works permit. Inclusion of a covered work | |||
|
242 | in an aggregate does not cause this License to apply to the other | |||
|
243 | parts of the aggregate. | |||
|
244 | ||||
|
245 | 6. Conveying Non-Source Forms. | |||
|
246 | ||||
|
247 | You may convey a covered work in object code form under the terms | |||
|
248 | of sections 4 and 5, provided that you also convey the | |||
|
249 | machine-readable Corresponding Source under the terms of this License, | |||
|
250 | in one of these ways: | |||
|
251 | ||||
|
252 | a) Convey the object code in, or embodied in, a physical product | |||
|
253 | (including a physical distribution medium), accompanied by the | |||
|
254 | Corresponding Source fixed on a durable physical medium | |||
|
255 | customarily used for software interchange. | |||
|
256 | ||||
|
257 | b) Convey the object code in, or embodied in, a physical product | |||
|
258 | (including a physical distribution medium), accompanied by a | |||
|
259 | written offer, valid for at least three years and valid for as | |||
|
260 | long as you offer spare parts or customer support for that product | |||
|
261 | model, to give anyone who possesses the object code either (1) a | |||
|
262 | copy of the Corresponding Source for all the software in the | |||
|
263 | product that is covered by this License, on a durable physical | |||
|
264 | medium customarily used for software interchange, for a price no | |||
|
265 | more than your reasonable cost of physically performing this | |||
|
266 | conveying of source, or (2) access to copy the | |||
|
267 | Corresponding Source from a network server at no charge. | |||
|
268 | ||||
|
269 | c) Convey individual copies of the object code with a copy of the | |||
|
270 | written offer to provide the Corresponding Source. This | |||
|
271 | alternative is allowed only occasionally and noncommercially, and | |||
|
272 | only if you received the object code with such an offer, in accord | |||
|
273 | with subsection 6b. | |||
|
274 | ||||
|
275 | d) Convey the object code by offering access from a designated | |||
|
276 | place (gratis or for a charge), and offer equivalent access to the | |||
|
277 | Corresponding Source in the same way through the same place at no | |||
|
278 | further charge. You need not require recipients to copy the | |||
|
279 | Corresponding Source along with the object code. If the place to | |||
|
280 | copy the object code is a network server, the Corresponding Source | |||
|
281 | may be on a different server (operated by you or a third party) | |||
|
282 | that supports equivalent copying facilities, provided you maintain | |||
|
283 | clear directions next to the object code saying where to find the | |||
|
284 | Corresponding Source. Regardless of what server hosts the | |||
|
285 | Corresponding Source, you remain obligated to ensure that it is | |||
|
286 | available for as long as needed to satisfy these requirements. | |||
|
287 | ||||
|
288 | e) Convey the object code using peer-to-peer transmission, provided | |||
|
289 | you inform other peers where the object code and Corresponding | |||
|
290 | Source of the work are being offered to the general public at no | |||
|
291 | charge under subsection 6d. | |||
|
292 | ||||
|
293 | A separable portion of the object code, whose source code is excluded | |||
|
294 | from the Corresponding Source as a System Library, need not be | |||
|
295 | included in conveying the object code work. | |||
|
296 | ||||
|
297 | A "User Product" is either (1) a "consumer product", which means any | |||
|
298 | tangible personal property which is normally used for personal, family, | |||
|
299 | or household purposes, or (2) anything designed or sold for incorporation | |||
|
300 | into a dwelling. In determining whether a product is a consumer product, | |||
|
301 | doubtful cases shall be resolved in favor of coverage. For a particular | |||
|
302 | product received by a particular user, "normally used" refers to a | |||
|
303 | typical or common use of that class of product, regardless of the status | |||
|
304 | of the particular user or of the way in which the particular user | |||
|
305 | actually uses, or expects or is expected to use, the product. A product | |||
|
306 | is a consumer product regardless of whether the product has substantial | |||
|
307 | commercial, industrial or non-consumer uses, unless such uses represent | |||
|
308 | the only significant mode of use of the product. | |||
|
309 | ||||
|
310 | "Installation Information" for a User Product means any methods, | |||
|
311 | procedures, authorization keys, or other information required to install | |||
|
312 | and execute modified versions of a covered work in that User Product from | |||
|
313 | a modified version of its Corresponding Source. The information must | |||
|
314 | suffice to ensure that the continued functioning of the modified object | |||
|
315 | code is in no case prevented or interfered with solely because | |||
|
316 | modification has been made. | |||
|
317 | ||||
|
318 | If you convey an object code work under this section in, or with, or | |||
|
319 | specifically for use in, a User Product, and the conveying occurs as | |||
|
320 | part of a transaction in which the right of possession and use of the | |||
|
321 | User Product is transferred to the recipient in perpetuity or for a | |||
|
322 | fixed term (regardless of how the transaction is characterized), the | |||
|
323 | Corresponding Source conveyed under this section must be accompanied | |||
|
324 | by the Installation Information. But this requirement does not apply | |||
|
325 | if neither you nor any third party retains the ability to install | |||
|
326 | modified object code on the User Product (for example, the work has | |||
|
327 | been installed in ROM). | |||
|
328 | ||||
|
329 | The requirement to provide Installation Information does not include a | |||
|
330 | requirement to continue to provide support service, warranty, or updates | |||
|
331 | for a work that has been modified or installed by the recipient, or for | |||
|
332 | the User Product in which it has been modified or installed. Access to a | |||
|
333 | network may be denied when the modification itself materially and | |||
|
334 | adversely affects the operation of the network or violates the rules and | |||
|
335 | protocols for communication across the network. | |||
|
336 | ||||
|
337 | Corresponding Source conveyed, and Installation Information provided, | |||
|
338 | in accord with this section must be in a format that is publicly | |||
|
339 | documented (and with an implementation available to the public in | |||
|
340 | source code form), and must require no special password or key for | |||
|
341 | unpacking, reading or copying. | |||
|
342 | ||||
|
343 | 7. Additional Terms. | |||
|
344 | ||||
|
345 | "Additional permissions" are terms that supplement the terms of this | |||
|
346 | License by making exceptions from one or more of its conditions. | |||
|
347 | Additional permissions that are applicable to the entire Program shall | |||
|
348 | be treated as though they were included in this License, to the extent | |||
|
349 | that they are valid under applicable law. If additional permissions | |||
|
350 | apply only to part of the Program, that part may be used separately | |||
|
351 | under those permissions, but the entire Program remains governed by | |||
|
352 | this License without regard to the additional permissions. | |||
|
353 | ||||
|
354 | When you convey a copy of a covered work, you may at your option | |||
|
355 | remove any additional permissions from that copy, or from any part of | |||
|
356 | it. (Additional permissions may be written to require their own | |||
|
357 | removal in certain cases when you modify the work.) You may place | |||
|
358 | additional permissions on material, added by you to a covered work, | |||
|
359 | for which you have or can give appropriate copyright permission. | |||
|
360 | ||||
|
361 | Notwithstanding any other provision of this License, for material you | |||
|
362 | add to a covered work, you may (if authorized by the copyright holders of | |||
|
363 | that material) supplement the terms of this License with terms: | |||
|
364 | ||||
|
365 | a) Disclaiming warranty or limiting liability differently from the | |||
|
366 | terms of sections 15 and 16 of this License; or | |||
|
367 | ||||
|
368 | b) Requiring preservation of specified reasonable legal notices or | |||
|
369 | author attributions in that material or in the Appropriate Legal | |||
|
370 | Notices displayed by works containing it; or | |||
|
371 | ||||
|
372 | c) Prohibiting misrepresentation of the origin of that material, or | |||
|
373 | requiring that modified versions of such material be marked in | |||
|
374 | reasonable ways as different from the original version; or | |||
|
375 | ||||
|
376 | d) Limiting the use for publicity purposes of names of licensors or | |||
|
377 | authors of the material; or | |||
|
378 | ||||
|
379 | e) Declining to grant rights under trademark law for use of some | |||
|
380 | trade names, trademarks, or service marks; or | |||
|
381 | ||||
|
382 | f) Requiring indemnification of licensors and authors of that | |||
|
383 | material by anyone who conveys the material (or modified versions of | |||
|
384 | it) with contractual assumptions of liability to the recipient, for | |||
|
385 | any liability that these contractual assumptions directly impose on | |||
|
386 | those licensors and authors. | |||
|
387 | ||||
|
388 | All other non-permissive additional terms are considered "further | |||
|
389 | restrictions" within the meaning of section 10. If the Program as you | |||
|
390 | received it, or any part of it, contains a notice stating that it is | |||
|
391 | governed by this License along with a term that is a further | |||
|
392 | restriction, you may remove that term. If a license document contains | |||
|
393 | a further restriction but permits relicensing or conveying under this | |||
|
394 | License, you may add to a covered work material governed by the terms | |||
|
395 | of that license document, provided that the further restriction does | |||
|
396 | not survive such relicensing or conveying. | |||
|
397 | ||||
|
398 | If you add terms to a covered work in accord with this section, you | |||
|
399 | must place, in the relevant source files, a statement of the | |||
|
400 | additional terms that apply to those files, or a notice indicating | |||
|
401 | where to find the applicable terms. | |||
|
402 | ||||
|
403 | Additional terms, permissive or non-permissive, may be stated in the | |||
|
404 | form of a separately written license, or stated as exceptions; | |||
|
405 | the above requirements apply either way. | |||
|
406 | ||||
|
407 | 8. Termination. | |||
|
408 | ||||
|
409 | You may not propagate or modify a covered work except as expressly | |||
|
410 | provided under this License. Any attempt otherwise to propagate or | |||
|
411 | modify it is void, and will automatically terminate your rights under | |||
|
412 | this License (including any patent licenses granted under the third | |||
|
413 | paragraph of section 11). | |||
|
414 | ||||
|
415 | However, if you cease all violation of this License, then your | |||
|
416 | license from a particular copyright holder is reinstated (a) | |||
|
417 | provisionally, unless and until the copyright holder explicitly and | |||
|
418 | finally terminates your license, and (b) permanently, if the copyright | |||
|
419 | holder fails to notify you of the violation by some reasonable means | |||
|
420 | prior to 60 days after the cessation. | |||
|
421 | ||||
|
422 | Moreover, your license from a particular copyright holder is | |||
|
423 | reinstated permanently if the copyright holder notifies you of the | |||
|
424 | violation by some reasonable means, this is the first time you have | |||
|
425 | received notice of violation of this License (for any work) from that | |||
|
426 | copyright holder, and you cure the violation prior to 30 days after | |||
|
427 | your receipt of the notice. | |||
|
428 | ||||
|
429 | Termination of your rights under this section does not terminate the | |||
|
430 | licenses of parties who have received copies or rights from you under | |||
|
431 | this License. If your rights have been terminated and not permanently | |||
|
432 | reinstated, you do not qualify to receive new licenses for the same | |||
|
433 | material under section 10. | |||
|
434 | ||||
|
435 | 9. Acceptance Not Required for Having Copies. | |||
|
436 | ||||
|
437 | You are not required to accept this License in order to receive or | |||
|
438 | run a copy of the Program. Ancillary propagation of a covered work | |||
|
439 | occurring solely as a consequence of using peer-to-peer transmission | |||
|
440 | to receive a copy likewise does not require acceptance. However, | |||
|
441 | nothing other than this License grants you permission to propagate or | |||
|
442 | modify any covered work. These actions infringe copyright if you do | |||
|
443 | not accept this License. Therefore, by modifying or propagating a | |||
|
444 | covered work, you indicate your acceptance of this License to do so. | |||
|
445 | ||||
|
446 | 10. Automatic Licensing of Downstream Recipients. | |||
|
447 | ||||
|
448 | Each time you convey a covered work, the recipient automatically | |||
|
449 | receives a license from the original licensors, to run, modify and | |||
|
450 | propagate that work, subject to this License. You are not responsible | |||
|
451 | for enforcing compliance by third parties with this License. | |||
|
452 | ||||
|
453 | An "entity transaction" is a transaction transferring control of an | |||
|
454 | organization, or substantially all assets of one, or subdividing an | |||
|
455 | organization, or merging organizations. If propagation of a covered | |||
|
456 | work results from an entity transaction, each party to that | |||
|
457 | transaction who receives a copy of the work also receives whatever | |||
|
458 | licenses to the work the party's predecessor in interest had or could | |||
|
459 | give under the previous paragraph, plus a right to possession of the | |||
|
460 | Corresponding Source of the work from the predecessor in interest, if | |||
|
461 | the predecessor has it or can get it with reasonable efforts. | |||
|
462 | ||||
|
463 | You may not impose any further restrictions on the exercise of the | |||
|
464 | rights granted or affirmed under this License. For example, you may | |||
|
465 | not impose a license fee, royalty, or other charge for exercise of | |||
|
466 | rights granted under this License, and you may not initiate litigation | |||
|
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that | |||
|
468 | any patent claim is infringed by making, using, selling, offering for | |||
|
469 | sale, or importing the Program or any portion of it. | |||
|
470 | ||||
|
471 | 11. Patents. | |||
|
472 | ||||
|
473 | A "contributor" is a copyright holder who authorizes use under this | |||
|
474 | License of the Program or a work on which the Program is based. The | |||
|
475 | work thus licensed is called the contributor's "contributor version". | |||
|
476 | ||||
|
477 | A contributor's "essential patent claims" are all patent claims | |||
|
478 | owned or controlled by the contributor, whether already acquired or | |||
|
479 | hereafter acquired, that would be infringed by some manner, permitted | |||
|
480 | by this License, of making, using, or selling its contributor version, | |||
|
481 | but do not include claims that would be infringed only as a | |||
|
482 | consequence of further modification of the contributor version. For | |||
|
483 | purposes of this definition, "control" includes the right to grant | |||
|
484 | patent sublicenses in a manner consistent with the requirements of | |||
|
485 | this License. | |||
|
486 | ||||
|
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free | |||
|
488 | patent license under the contributor's essential patent claims, to | |||
|
489 | make, use, sell, offer for sale, import and otherwise run, modify and | |||
|
490 | propagate the contents of its contributor version. | |||
|
491 | ||||
|
492 | In the following three paragraphs, a "patent license" is any express | |||
|
493 | agreement or commitment, however denominated, not to enforce a patent | |||
|
494 | (such as an express permission to practice a patent or covenant not to | |||
|
495 | sue for patent infringement). To "grant" such a patent license to a | |||
|
496 | party means to make such an agreement or commitment not to enforce a | |||
|
497 | patent against the party. | |||
|
498 | ||||
|
499 | If you convey a covered work, knowingly relying on a patent license, | |||
|
500 | and the Corresponding Source of the work is not available for anyone | |||
|
501 | to copy, free of charge and under the terms of this License, through a | |||
|
502 | publicly available network server or other readily accessible means, | |||
|
503 | then you must either (1) cause the Corresponding Source to be so | |||
|
504 | available, or (2) arrange to deprive yourself of the benefit of the | |||
|
505 | patent license for this particular work, or (3) arrange, in a manner | |||
|
506 | consistent with the requirements of this License, to extend the patent | |||
|
507 | license to downstream recipients. "Knowingly relying" means you have | |||
|
508 | actual knowledge that, but for the patent license, your conveying the | |||
|
509 | covered work in a country, or your recipient's use of the covered work | |||
|
510 | in a country, would infringe one or more identifiable patents in that | |||
|
511 | country that you have reason to believe are valid. | |||
|
512 | ||||
|
513 | If, pursuant to or in connection with a single transaction or | |||
|
514 | arrangement, you convey, or propagate by procuring conveyance of, a | |||
|
515 | covered work, and grant a patent license to some of the parties | |||
|
516 | receiving the covered work authorizing them to use, propagate, modify | |||
|
517 | or convey a specific copy of the covered work, then the patent license | |||
|
518 | you grant is automatically extended to all recipients of the covered | |||
|
519 | work and works based on it. | |||
|
520 | ||||
|
521 | A patent license is "discriminatory" if it does not include within | |||
|
522 | the scope of its coverage, prohibits the exercise of, or is | |||
|
523 | conditioned on the non-exercise of one or more of the rights that are | |||
|
524 | specifically granted under this License. You may not convey a covered | |||
|
525 | work if you are a party to an arrangement with a third party that is | |||
|
526 | in the business of distributing software, under which you make payment | |||
|
527 | to the third party based on the extent of your activity of conveying | |||
|
528 | the work, and under which the third party grants, to any of the | |||
|
529 | parties who would receive the covered work from you, a discriminatory | |||
|
530 | patent license (a) in connection with copies of the covered work | |||
|
531 | conveyed by you (or copies made from those copies), or (b) primarily | |||
|
532 | for and in connection with specific products or compilations that | |||
|
533 | contain the covered work, unless you entered into that arrangement, | |||
|
534 | or that patent license was granted, prior to 28 March 2007. | |||
|
535 | ||||
|
536 | Nothing in this License shall be construed as excluding or limiting | |||
|
537 | any implied license or other defenses to infringement that may | |||
|
538 | otherwise be available to you under applicable patent law. | |||
|
539 | ||||
|
540 | 12. No Surrender of Others' Freedom. | |||
|
541 | ||||
|
542 | If conditions are imposed on you (whether by court order, agreement or | |||
|
543 | otherwise) that contradict the conditions of this License, they do not | |||
|
544 | excuse you from the conditions of this License. If you cannot convey a | |||
|
545 | covered work so as to satisfy simultaneously your obligations under this | |||
|
546 | License and any other pertinent obligations, then as a consequence you may | |||
|
547 | not convey it at all. For example, if you agree to terms that obligate you | |||
|
548 | to collect a royalty for further conveying from those to whom you convey | |||
|
549 | the Program, the only way you could satisfy both those terms and this | |||
|
550 | License would be to refrain entirely from conveying the Program. | |||
|
551 | ||||
|
552 | 13. Use with the GNU Affero General Public License. | |||
|
553 | ||||
|
554 | Notwithstanding any other provision of this License, you have | |||
|
555 | permission to link or combine any covered work with a work licensed | |||
|
556 | under version 3 of the GNU Affero General Public License into a single | |||
|
557 | combined work, and to convey the resulting work. The terms of this | |||
|
558 | License will continue to apply to the part which is the covered work, | |||
|
559 | but the special requirements of the GNU Affero General Public License, | |||
|
560 | section 13, concerning interaction through a network will apply to the | |||
|
561 | combination as such. | |||
|
562 | ||||
|
563 | 14. Revised Versions of this License. | |||
|
564 | ||||
|
565 | The Free Software Foundation may publish revised and/or new versions of | |||
|
566 | the GNU General Public License from time to time. Such new versions will | |||
|
567 | be similar in spirit to the present version, but may differ in detail to | |||
|
568 | address new problems or concerns. | |||
|
569 | ||||
|
570 | Each version is given a distinguishing version number. If the | |||
|
571 | Program specifies that a certain numbered version of the GNU General | |||
|
572 | Public License "or any later version" applies to it, you have the | |||
|
573 | option of following the terms and conditions either of that numbered | |||
|
574 | version or of any later version published by the Free Software | |||
|
575 | Foundation. If the Program does not specify a version number of the | |||
|
576 | GNU General Public License, you may choose any version ever published | |||
|
577 | by the Free Software Foundation. | |||
|
578 | ||||
|
579 | If the Program specifies that a proxy can decide which future | |||
|
580 | versions of the GNU General Public License can be used, that proxy's | |||
|
581 | public statement of acceptance of a version permanently authorizes you | |||
|
582 | to choose that version for the Program. | |||
|
583 | ||||
|
584 | Later license versions may give you additional or different | |||
|
585 | permissions. However, no additional obligations are imposed on any | |||
|
586 | author or copyright holder as a result of your choosing to follow a | |||
|
587 | later version. | |||
|
588 | ||||
|
589 | 15. Disclaimer of Warranty. | |||
|
590 | ||||
|
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY | |||
|
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT | |||
|
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY | |||
|
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, | |||
|
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |||
|
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM | |||
|
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF | |||
|
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | |||
|
599 | ||||
|
600 | 16. Limitation of Liability. | |||
|
601 | ||||
|
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | |||
|
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS | |||
|
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY | |||
|
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE | |||
|
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF | |||
|
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD | |||
|
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), | |||
|
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF | |||
|
610 | SUCH DAMAGES. | |||
|
611 | ||||
|
612 | 17. Interpretation of Sections 15 and 16. | |||
|
613 | ||||
|
614 | If the disclaimer of warranty and limitation of liability provided | |||
|
615 | above cannot be given local legal effect according to their terms, | |||
|
616 | reviewing courts shall apply local law that most closely approximates | |||
|
617 | an absolute waiver of all civil liability in connection with the | |||
|
618 | Program, unless a warranty or assumption of liability accompanies a | |||
|
619 | copy of the Program in return for a fee. | |||
|
620 | ||||
|
621 | END OF TERMS AND CONDITIONS | |||
|
622 | ||||
|
623 | How to Apply These Terms to Your New Programs | |||
|
624 | ||||
|
625 | If you develop a new program, and you want it to be of the greatest | |||
|
626 | possible use to the public, the best way to achieve this is to make it | |||
|
627 | free software which everyone can redistribute and change under these terms. | |||
|
628 | ||||
|
629 | To do so, attach the following notices to the program. It is safest | |||
|
630 | to attach them to the start of each source file to most effectively | |||
|
631 | state the exclusion of warranty; and each file should have at least | |||
|
632 | the "copyright" line and a pointer to where the full notice is found. | |||
|
633 | ||||
|
634 | <one line to give the program's name and a brief idea of what it does.> | |||
|
635 | Copyright (C) <year> <name of author> | |||
|
636 | ||||
|
637 | This program is free software: you can redistribute it and/or modify | |||
|
638 | it under the terms of the GNU General Public License as published by | |||
|
639 | the Free Software Foundation, either version 3 of the License, or | |||
|
640 | (at your option) any later version. | |||
|
641 | ||||
|
642 | This program is distributed in the hope that it will be useful, | |||
|
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
645 | GNU General Public License for more details. | |||
|
646 | ||||
|
647 | You should have received a copy of the GNU General Public License | |||
|
648 | along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
|
649 | ||||
|
650 | Also add information on how to contact you by electronic and paper mail. | |||
|
651 | ||||
|
652 | If the program does terminal interaction, make it output a short | |||
|
653 | notice like this when it starts in an interactive mode: | |||
|
654 | ||||
|
655 | <program> Copyright (C) <year> <name of author> | |||
|
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | |||
|
657 | This is free software, and you are welcome to redistribute it | |||
|
658 | under certain conditions; type `show c' for details. | |||
|
659 | ||||
|
660 | The hypothetical commands `show w' and `show c' should show the appropriate | |||
|
661 | parts of the General Public License. Of course, your program's commands | |||
|
662 | might be different; for a GUI interface, you would use an "about box". | |||
|
663 | ||||
|
664 | You should also get your employer (if you work as a programmer) or school, | |||
|
665 | if any, to sign a "copyright disclaimer" for the program, if necessary. | |||
|
666 | For more information on this, and how to apply and follow the GNU GPL, see | |||
|
667 | <http://www.gnu.org/licenses/>. | |||
|
668 | ||||
|
669 | The GNU General Public License does not permit incorporating your program | |||
|
670 | into proprietary programs. If your program is a subroutine library, you | |||
|
671 | may consider it more useful to permit linking proprietary applications with | |||
|
672 | the library. If this is what you want to do, use the GNU Lesser General | |||
|
673 | Public License instead of this License. But first, please read | |||
|
674 | <http://www.gnu.org/philosophy/why-not-lgpl.html>. |
@@ -0,0 +1,76 | |||||
|
1 | 2010-05-28 Daniel Elstner <danielk@openismus.com> | |||
|
2 | ||||
|
3 | Move central header file to top-level directory | |||
|
4 | ||||
|
5 | * example.h: Rename from example/example.h, so that the location in | |||
|
6 | in the source directory hierarchy matches the relative installation | |||
|
7 | location. Also, moving the file allows for example.h to be included | |||
|
8 | from code within the source tree. | |||
|
9 | * Makefile.am (nobase_example_include_HEADERS): Adjust list of header | |||
|
10 | files accordingly. | |||
|
11 | ||||
|
12 | 2010-05-28 Daniel Elstner <danielk@openismus.com> | |||
|
13 | ||||
|
14 | Update and clean configure.ac | |||
|
15 | ||||
|
16 | * configure.ac (AC_INIT): Also provide the home page argument. | |||
|
17 | (AC_PREREQ): Add minimum Autoconf version requirement, as a generally | |||
|
18 | good habit. | |||
|
19 | (AM_INIT_AUTOMAKE): Add minimum version and the no-define option to | |||
|
20 | the argument list, also because it's generally a good habit to do so. | |||
|
21 | Remove the subdir-objects option, as it is now defined directly in the | |||
|
22 | Makefile.am file. | |||
|
23 | (AC_CONFIG_HEADERS): Generate two configuration headers; one for the | |||
|
24 | build itself with an autogenerated template, and a second one which | |||
|
25 | will be installed alongside the library. | |||
|
26 | (AC_PROG_CXX_C_O): Remove call. Checking for -c -o support is only | |||
|
27 | required for the C compiler, and then the Automake-specific macro | |||
|
28 | AM_PROG_CC_C_O must be used. | |||
|
29 | (AC_PROG_INSTALL): Remove check, as Automake should take care of that | |||
|
30 | by itself if needed. | |||
|
31 | (EXAMPLE_FULL_NAME): Remove redundant substitution. | |||
|
32 | (AC_CONFIG_FILES): Substitute the API version into the filename of the | |||
|
33 | generated .pc file from a variable, and override the template filename | |||
|
34 | to not include the version number. | |||
|
35 | * example.pc.in: Rename from example-1.0.pc.in. Adjust substitutions | |||
|
36 | to changes in configure.ac. | |||
|
37 | * exampleconfig.h.in: New header file template. Empty for now; a good | |||
|
38 | usage example still needs to be provided. | |||
|
39 | ||||
|
40 | 2010-05-28 Daniel Elstner <danielk@openismus.com> | |||
|
41 | ||||
|
42 | Update and heavily comment Makefile.am | |||
|
43 | ||||
|
44 | * Makefile.am (AUTOMAKE_OPTIONS): Set the subdir-objects option here, | |||
|
45 | in order to make the file self-contained. It is also one of the few | |||
|
46 | options which can reasonably be used on a per-directory basis. | |||
|
47 | (ACLOCAL_AMFLAGS): Set variable to ${ACLOCAL_FLAGS}, similar to what | |||
|
48 | we do in the build files of the GNOME C++ binding modules. I want it | |||
|
49 | to become a widely used pattern. | |||
|
50 | (nobase_example_include_HEADERS): Combine all header files into one | |||
|
51 | list and use the nobase_ prefix. | |||
|
52 | (nodist_example_libinclude_HEADERS): The installed configuration | |||
|
53 | header file should never be the fully auto-generated config.h file! | |||
|
54 | That one is for the build itself only, and installing it causes | |||
|
55 | serious breakage if anyone ever tries to actually use it. Installing | |||
|
56 | it with the name config.h makes it even worse. Use a separate file | |||
|
57 | with a manually edited template instead. | |||
|
58 | ||||
|
59 | 2010-05-28 Daniel Elstner <danielk@openismus.com> | |||
|
60 | ||||
|
61 | Simplify autogen.sh | |||
|
62 | ||||
|
63 | * autogen.sh: Remove the sub-shell and pass the source directory to | |||
|
64 | autoreconf as command line argument. Also enable verbose output. | |||
|
65 | ||||
|
66 | 0.4: | |||
|
67 | ||||
|
68 | 2010-04-30 David King <davidk@openismus.com> | |||
|
69 | ||||
|
70 | Major rewrite | |||
|
71 | ||||
|
72 | 0.3: | |||
|
73 | ||||
|
74 | 2002-01-21 Murray Cumming <murrayc@usa.net> | |||
|
75 | ||||
|
76 | * Now uses pkg-config. |
@@ -0,0 +1,5 | |||||
|
1 | AUTOMAKE_OPTIONS = subdir-objects | |||
|
2 | ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} | |||
|
3 | SUBDIRS = src | |||
|
4 | ||||
|
5 | dist_noinst_SCRIPTS = autogen.sh |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 |
@@ -0,0 +1,6 | |||||
|
1 | #!/bin/sh -e | |||
|
2 | test -n "$srcdir" || srcdir=`dirname "$0"` | |||
|
3 | test -n "$srcdir" || srcdir=. | |||
|
4 | ||||
|
5 | autoreconf --force --install --verbose "$srcdir" | |||
|
6 | test -n "$NOCONFIGURE" || "$srcdir/configure" "$@" |
@@ -0,0 +1,52 | |||||
|
1 | /* config.h.in. Generated from configure.ac by autoheader. */ | |||
|
2 | ||||
|
3 | /* Define to 1 if you have the <dlfcn.h> header file. */ | |||
|
4 | #undef HAVE_DLFCN_H | |||
|
5 | ||||
|
6 | /* Define to 1 if you have the <inttypes.h> header file. */ | |||
|
7 | #undef HAVE_INTTYPES_H | |||
|
8 | ||||
|
9 | /* Define to 1 if you have the <memory.h> header file. */ | |||
|
10 | #undef HAVE_MEMORY_H | |||
|
11 | ||||
|
12 | /* Define to 1 if you have the <stdint.h> header file. */ | |||
|
13 | #undef HAVE_STDINT_H | |||
|
14 | ||||
|
15 | /* Define to 1 if you have the <stdlib.h> header file. */ | |||
|
16 | #undef HAVE_STDLIB_H | |||
|
17 | ||||
|
18 | /* Define to 1 if you have the <strings.h> header file. */ | |||
|
19 | #undef HAVE_STRINGS_H | |||
|
20 | ||||
|
21 | /* Define to 1 if you have the <string.h> header file. */ | |||
|
22 | #undef HAVE_STRING_H | |||
|
23 | ||||
|
24 | /* Define to 1 if you have the <sys/stat.h> header file. */ | |||
|
25 | #undef HAVE_SYS_STAT_H | |||
|
26 | ||||
|
27 | /* Define to 1 if you have the <sys/types.h> header file. */ | |||
|
28 | #undef HAVE_SYS_TYPES_H | |||
|
29 | ||||
|
30 | /* Define to 1 if you have the <termios.h> header file. */ | |||
|
31 | #undef HAVE_TERMIOS_H | |||
|
32 | ||||
|
33 | /* Define to 1 if you have the <unistd.h> header file. */ | |||
|
34 | #undef HAVE_UNISTD_H | |||
|
35 | ||||
|
36 | /* Define to the address where bug reports for this package should be sent. */ | |||
|
37 | #undef PACKAGE_BUGREPORT | |||
|
38 | ||||
|
39 | /* Define to the full name of this package. */ | |||
|
40 | #undef PACKAGE_NAME | |||
|
41 | ||||
|
42 | /* Define to the full name and version of this package. */ | |||
|
43 | #undef PACKAGE_STRING | |||
|
44 | ||||
|
45 | /* Define to the one symbol short name of this package. */ | |||
|
46 | #undef PACKAGE_TARNAME | |||
|
47 | ||||
|
48 | /* Define to the version of this package. */ | |||
|
49 | #undef PACKAGE_VERSION | |||
|
50 | ||||
|
51 | /* Define to 1 if you have the ANSI C header files. */ | |||
|
52 | #undef STDC_HEADERS |
@@ -0,0 +1,27 | |||||
|
1 | # -*- Autoconf -*- | |||
|
2 | # Process this file with autoconf to produce a configure script. | |||
|
3 | AC_PREREQ([2.63]) | |||
|
4 | AC_INIT([librs232], [0.1.0], [alexis.jeandet@lpp.polytechnique.fr],[rs232],[http://www.lpp.fr]) | |||
|
5 | AM_INIT_AUTOMAKE([1.10 -Wall no-define]) | |||
|
6 | ||||
|
7 | # Checks for programs. | |||
|
8 | AC_CONFIG_HEADERS([config.h]) | |||
|
9 | AC_PROG_CC | |||
|
10 | ||||
|
11 | AC_PROG_LIBTOOL | |||
|
12 | LT_INIT | |||
|
13 | #AC_PROG_MAKE_SET | |||
|
14 | ||||
|
15 | # Checks for libraries. | |||
|
16 | ||||
|
17 | # Checks for header files. | |||
|
18 | AC_CHECK_HEADERS([string.h termios.h unistd.h]) | |||
|
19 | ||||
|
20 | AC_SUBST([RS232_SO_VERSION], [1:2:0]) | |||
|
21 | AC_SUBST([RS232_API_VERSION], [1.0]) | |||
|
22 | # Checks for typedefs, structures, and compiler characteristics. | |||
|
23 | ||||
|
24 | # Checks for library functions. | |||
|
25 | AC_CONFIG_FILES([Makefile src/Makefile rs232-${RS232_API_VERSION}.pc:rs232.pc.in]) | |||
|
26 | ||||
|
27 | AC_OUTPUT |
This diff has been collapsed as it changes many lines, (5794 lines changed) Show them Hide them | |||||
@@ -0,0 +1,5794 | |||||
|
1 | # ltmain.sh - Provide generalized library-building support services. | |||
|
2 | # NOTE: Changing this file will not affect anything until you rerun configure. | |||
|
3 | # | |||
|
4 | # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 | |||
|
5 | # Free Software Foundation, Inc. | |||
|
6 | # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 | |||
|
7 | # | |||
|
8 | # This program is free software; you can redistribute it and/or modify | |||
|
9 | # it under the terms of the GNU General Public License as published by | |||
|
10 | # the Free Software Foundation; either version 2 of the License, or | |||
|
11 | # (at your option) any later version. | |||
|
12 | # | |||
|
13 | # This program is distributed in the hope that it will be useful, but | |||
|
14 | # WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
|
16 | # General Public License for more details. | |||
|
17 | # | |||
|
18 | # You should have received a copy of the GNU General Public License | |||
|
19 | # along with this program; if not, write to the Free Software | |||
|
20 | # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
|
21 | # | |||
|
22 | # As a special exception to the GNU General Public License, if you | |||
|
23 | # distribute this file as part of a program that contains a | |||
|
24 | # configuration script generated by Autoconf, you may include it under | |||
|
25 | # the same distribution terms that you use for the rest of that program. | |||
|
26 | ||||
|
27 | # Check that we have a working $echo. | |||
|
28 | if test "X$1" = X--no-reexec; then | |||
|
29 | # Discard the --no-reexec flag, and continue. | |||
|
30 | shift | |||
|
31 | elif test "X$1" = X--fallback-echo; then | |||
|
32 | # Avoid inline document here, it may be left over | |||
|
33 | : | |||
|
34 | elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then | |||
|
35 | # Yippee, $echo works! | |||
|
36 | : | |||
|
37 | else | |||
|
38 | # Restart under the correct shell, and then maybe $echo will work. | |||
|
39 | exec $SHELL "$0" --no-reexec ${1+"$@"} | |||
|
40 | fi | |||
|
41 | ||||
|
42 | if test "X$1" = X--fallback-echo; then | |||
|
43 | # used as fallback echo | |||
|
44 | shift | |||
|
45 | cat <<EOF | |||
|
46 | $* | |||
|
47 | EOF | |||
|
48 | exit 0 | |||
|
49 | fi | |||
|
50 | ||||
|
51 | # The name of this program. | |||
|
52 | progname=`$echo "$0" | ${SED} 's%^.*/%%'` | |||
|
53 | modename="$progname" | |||
|
54 | ||||
|
55 | # Constants. | |||
|
56 | PROGRAM=ltmain.sh | |||
|
57 | PACKAGE=libtool | |||
|
58 | VERSION=1.4e | |||
|
59 | TIMESTAMP=" (1.1162 2002/11/22 22:36:25)" | |||
|
60 | ||||
|
61 | default_mode= | |||
|
62 | help="Try \`$progname --help' for more information." | |||
|
63 | magic="%%%MAGIC variable%%%" | |||
|
64 | mkdir="mkdir" | |||
|
65 | mv="mv -f" | |||
|
66 | rm="rm -f" | |||
|
67 | ||||
|
68 | # Sed substitution that helps us do robust quoting. It backslashifies | |||
|
69 | # metacharacters that are still active within double-quoted strings. | |||
|
70 | Xsed="${SED}"' -e 1s/^X//' | |||
|
71 | sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' | |||
|
72 | # test EBCDIC or ASCII | |||
|
73 | case `echo A|od -x` in | |||
|
74 | *[Cc]1*) # EBCDIC based system | |||
|
75 | SP2NL="tr '\100' '\n'" | |||
|
76 | NL2SP="tr '\r\n' '\100\100'" | |||
|
77 | ;; | |||
|
78 | *) # Assume ASCII based system | |||
|
79 | SP2NL="tr '\040' '\012'" | |||
|
80 | NL2SP="tr '\015\012' '\040\040'" | |||
|
81 | ;; | |||
|
82 | esac | |||
|
83 | ||||
|
84 | # NLS nuisances. | |||
|
85 | # Only set LANG and LC_ALL to C if already set. | |||
|
86 | # These must not be set unconditionally because not all systems understand | |||
|
87 | # e.g. LANG=C (notably SCO). | |||
|
88 | # We save the old values to restore during execute mode. | |||
|
89 | if test "${LC_ALL+set}" = set; then | |||
|
90 | save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL | |||
|
91 | fi | |||
|
92 | if test "${LANG+set}" = set; then | |||
|
93 | save_LANG="$LANG"; LANG=C; export LANG | |||
|
94 | fi | |||
|
95 | ||||
|
96 | # Make sure IFS has a sensible default | |||
|
97 | : ${IFS=" "} | |||
|
98 | ||||
|
99 | if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then | |||
|
100 | echo "$modename: not configured to build any kind of library" 1>&2 | |||
|
101 | echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 | |||
|
102 | exit 1 | |||
|
103 | fi | |||
|
104 | ||||
|
105 | # Global variables. | |||
|
106 | mode=$default_mode | |||
|
107 | nonopt= | |||
|
108 | prev= | |||
|
109 | prevopt= | |||
|
110 | run= | |||
|
111 | show="$echo" | |||
|
112 | show_help= | |||
|
113 | execute_dlfiles= | |||
|
114 | lo2o="s/\\.lo\$/.${objext}/" | |||
|
115 | o2lo="s/\\.${objext}\$/.lo/" | |||
|
116 | ||||
|
117 | ##################################### | |||
|
118 | # Shell function definitions: | |||
|
119 | # This seems to be the best place for them | |||
|
120 | ||||
|
121 | # Need a lot of goo to handle *both* DLLs and import libs | |||
|
122 | # Has to be a shell function in order to 'eat' the argument | |||
|
123 | # that is supplied when $file_magic_command is called. | |||
|
124 | win32_libid () { | |||
|
125 | win32_libid_type="unknown" | |||
|
126 | if eval $OBJDUMP -f $1 2>/dev/null | \ | |||
|
127 | grep -E 'file format pei+-i386(.*architecture: i386)?' >/dev/null ; then | |||
|
128 | win32_libid_type="x86 DLL" | |||
|
129 | else | |||
|
130 | if eval $OBJDUMP -f $1 2>/dev/null | \ | |||
|
131 | grep -E 'file format pei*-i386(.*architecture: i386)?' >/dev/null ; then | |||
|
132 | win32_libid_type="x86" | |||
|
133 | if eval file $1 2>/dev/null | \ | |||
|
134 | grep -E 'ar archive' >/dev/null; then | |||
|
135 | win32_libid_type="$win32_libid_type archive" | |||
|
136 | if eval $NM -f posix -A $1 | awk '{print $3}' | grep "I" >/dev/null ; then | |||
|
137 | win32_libid_type="$win32_libid_type import" | |||
|
138 | else | |||
|
139 | win32_libid_type="$win32_libid_type static" | |||
|
140 | fi | |||
|
141 | fi | |||
|
142 | fi | |||
|
143 | fi | |||
|
144 | echo $win32_libid_type | |||
|
145 | } | |||
|
146 | ||||
|
147 | # End of Shell function definitions | |||
|
148 | ##################################### | |||
|
149 | ||||
|
150 | ||||
|
151 | # Parse our command line options once, thoroughly. | |||
|
152 | while test "$#" -gt 0 | |||
|
153 | do | |||
|
154 | arg="$1" | |||
|
155 | shift | |||
|
156 | ||||
|
157 | case $arg in | |||
|
158 | -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; | |||
|
159 | *) optarg= ;; | |||
|
160 | esac | |||
|
161 | ||||
|
162 | # If the previous option needs an argument, assign it. | |||
|
163 | if test -n "$prev"; then | |||
|
164 | case $prev in | |||
|
165 | execute_dlfiles) | |||
|
166 | execute_dlfiles="$execute_dlfiles $arg" | |||
|
167 | ;; | |||
|
168 | tag) | |||
|
169 | tagname="$arg" | |||
|
170 | ||||
|
171 | # Check whether tagname contains only valid characters | |||
|
172 | case $tagname in | |||
|
173 | *[!-_A-Za-z0-9,/]*) | |||
|
174 | echo "$progname: invalid tag name: $tagname" 1>&2 | |||
|
175 | exit 1 | |||
|
176 | ;; | |||
|
177 | esac | |||
|
178 | ||||
|
179 | case $tagname in | |||
|
180 | CC) | |||
|
181 | # Don't test for the "default" C tag, as we know, it's there, but | |||
|
182 | # not specially marked. | |||
|
183 | ;; | |||
|
184 | *) | |||
|
185 | if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then | |||
|
186 | taglist="$taglist $tagname" | |||
|
187 | # Evaluate the configuration. | |||
|
188 | eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`" | |||
|
189 | else | |||
|
190 | echo "$progname: ignoring unknown tag $tagname" 1>&2 | |||
|
191 | fi | |||
|
192 | ;; | |||
|
193 | esac | |||
|
194 | ;; | |||
|
195 | *) | |||
|
196 | eval "$prev=\$arg" | |||
|
197 | ;; | |||
|
198 | esac | |||
|
199 | ||||
|
200 | prev= | |||
|
201 | prevopt= | |||
|
202 | continue | |||
|
203 | fi | |||
|
204 | ||||
|
205 | # Have we seen a non-optional argument yet? | |||
|
206 | case $arg in | |||
|
207 | --help) | |||
|
208 | show_help=yes | |||
|
209 | ;; | |||
|
210 | ||||
|
211 | --version) | |||
|
212 | echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" | |||
|
213 | echo | |||
|
214 | echo "Copyright 1996, 1997, 1998, 1999, 2000, 2001" | |||
|
215 | echo "Free Software Foundation, Inc." | |||
|
216 | echo "This is free software; see the source for copying conditions. There is NO" | |||
|
217 | echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." | |||
|
218 | exit 0 | |||
|
219 | ;; | |||
|
220 | ||||
|
221 | --config) | |||
|
222 | ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 | |||
|
223 | # Now print the configurations for the tags. | |||
|
224 | for tagname in $taglist; do | |||
|
225 | ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0" | |||
|
226 | done | |||
|
227 | exit 0 | |||
|
228 | ;; | |||
|
229 | ||||
|
230 | --debug) | |||
|
231 | echo "$progname: enabling shell trace mode" | |||
|
232 | set -x | |||
|
233 | ;; | |||
|
234 | ||||
|
235 | --dry-run | -n) | |||
|
236 | run=: | |||
|
237 | ;; | |||
|
238 | ||||
|
239 | --features) | |||
|
240 | echo "host: $host" | |||
|
241 | if test "$build_libtool_libs" = yes; then | |||
|
242 | echo "enable shared libraries" | |||
|
243 | else | |||
|
244 | echo "disable shared libraries" | |||
|
245 | fi | |||
|
246 | if test "$build_old_libs" = yes; then | |||
|
247 | echo "enable static libraries" | |||
|
248 | else | |||
|
249 | echo "disable static libraries" | |||
|
250 | fi | |||
|
251 | exit 0 | |||
|
252 | ;; | |||
|
253 | ||||
|
254 | --finish) mode="finish" ;; | |||
|
255 | ||||
|
256 | --mode) prevopt="--mode" prev=mode ;; | |||
|
257 | --mode=*) mode="$optarg" ;; | |||
|
258 | ||||
|
259 | --preserve-dup-deps) duplicate_deps="yes" ;; | |||
|
260 | ||||
|
261 | --quiet | --silent) | |||
|
262 | show=: | |||
|
263 | ;; | |||
|
264 | ||||
|
265 | --tag) prevopt="--tag" prev=tag ;; | |||
|
266 | --tag=*) | |||
|
267 | set tag "$optarg" ${1+"$@"} | |||
|
268 | shift | |||
|
269 | prev=tag | |||
|
270 | ;; | |||
|
271 | ||||
|
272 | -dlopen) | |||
|
273 | prevopt="-dlopen" | |||
|
274 | prev=execute_dlfiles | |||
|
275 | ;; | |||
|
276 | ||||
|
277 | -*) | |||
|
278 | $echo "$modename: unrecognized option \`$arg'" 1>&2 | |||
|
279 | $echo "$help" 1>&2 | |||
|
280 | exit 1 | |||
|
281 | ;; | |||
|
282 | ||||
|
283 | *) | |||
|
284 | nonopt="$arg" | |||
|
285 | break | |||
|
286 | ;; | |||
|
287 | esac | |||
|
288 | done | |||
|
289 | ||||
|
290 | if test -n "$prevopt"; then | |||
|
291 | $echo "$modename: option \`$prevopt' requires an argument" 1>&2 | |||
|
292 | $echo "$help" 1>&2 | |||
|
293 | exit 1 | |||
|
294 | fi | |||
|
295 | ||||
|
296 | # If this variable is set in any of the actions, the command in it | |||
|
297 | # will be execed at the end. This prevents here-documents from being | |||
|
298 | # left over by shells. | |||
|
299 | exec_cmd= | |||
|
300 | ||||
|
301 | if test -z "$show_help"; then | |||
|
302 | ||||
|
303 | # Infer the operation mode. | |||
|
304 | if test -z "$mode"; then | |||
|
305 | $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 | |||
|
306 | $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 | |||
|
307 | case $nonopt in | |||
|
308 | *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) | |||
|
309 | mode=link | |||
|
310 | for arg | |||
|
311 | do | |||
|
312 | case $arg in | |||
|
313 | -c) | |||
|
314 | mode=compile | |||
|
315 | break | |||
|
316 | ;; | |||
|
317 | esac | |||
|
318 | done | |||
|
319 | ;; | |||
|
320 | *db | *dbx | *strace | *truss) | |||
|
321 | mode=execute | |||
|
322 | ;; | |||
|
323 | *install*|cp|mv) | |||
|
324 | mode=install | |||
|
325 | ;; | |||
|
326 | *rm) | |||
|
327 | mode=uninstall | |||
|
328 | ;; | |||
|
329 | *) | |||
|
330 | # If we have no mode, but dlfiles were specified, then do execute mode. | |||
|
331 | test -n "$execute_dlfiles" && mode=execute | |||
|
332 | ||||
|
333 | # Just use the default operation mode. | |||
|
334 | if test -z "$mode"; then | |||
|
335 | if test -n "$nonopt"; then | |||
|
336 | $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 | |||
|
337 | else | |||
|
338 | $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 | |||
|
339 | fi | |||
|
340 | fi | |||
|
341 | ;; | |||
|
342 | esac | |||
|
343 | fi | |||
|
344 | ||||
|
345 | # Only execute mode is allowed to have -dlopen flags. | |||
|
346 | if test -n "$execute_dlfiles" && test "$mode" != execute; then | |||
|
347 | $echo "$modename: unrecognized option \`-dlopen'" 1>&2 | |||
|
348 | $echo "$help" 1>&2 | |||
|
349 | exit 1 | |||
|
350 | fi | |||
|
351 | ||||
|
352 | # Change the help message to a mode-specific one. | |||
|
353 | generic_help="$help" | |||
|
354 | help="Try \`$modename --help --mode=$mode' for more information." | |||
|
355 | ||||
|
356 | # These modes are in order of execution frequency so that they run quickly. | |||
|
357 | case $mode in | |||
|
358 | # libtool compile mode | |||
|
359 | compile) | |||
|
360 | modename="$modename: compile" | |||
|
361 | # Get the compilation command and the source file. | |||
|
362 | base_compile= | |||
|
363 | srcfile="$nonopt" # always keep a non-empty value in "srcfile" | |||
|
364 | suppress_output= | |||
|
365 | arg_mode=normal | |||
|
366 | libobj= | |||
|
367 | ||||
|
368 | for arg | |||
|
369 | do | |||
|
370 | case "$arg_mode" in | |||
|
371 | arg ) | |||
|
372 | # do not "continue". Instead, add this to base_compile | |||
|
373 | lastarg="$arg" | |||
|
374 | arg_mode=normal | |||
|
375 | ;; | |||
|
376 | ||||
|
377 | target ) | |||
|
378 | libobj="$arg" | |||
|
379 | arg_mode=normal | |||
|
380 | continue | |||
|
381 | ;; | |||
|
382 | ||||
|
383 | normal ) | |||
|
384 | # Accept any command-line options. | |||
|
385 | case $arg in | |||
|
386 | -o) | |||
|
387 | if test -n "$libobj" ; then | |||
|
388 | $echo "$modename: you cannot specify \`-o' more than once" 1>&2 | |||
|
389 | exit 1 | |||
|
390 | fi | |||
|
391 | arg_mode=target | |||
|
392 | continue | |||
|
393 | ;; | |||
|
394 | ||||
|
395 | -static) | |||
|
396 | build_old_libs=yes | |||
|
397 | continue | |||
|
398 | ;; | |||
|
399 | ||||
|
400 | -prefer-pic) | |||
|
401 | pic_mode=yes | |||
|
402 | continue | |||
|
403 | ;; | |||
|
404 | ||||
|
405 | -prefer-non-pic) | |||
|
406 | pic_mode=no | |||
|
407 | continue | |||
|
408 | ;; | |||
|
409 | ||||
|
410 | -Xcompiler) | |||
|
411 | arg_mode=arg # the next one goes into the "base_compile" arg list | |||
|
412 | continue # The current "srcfile" will either be retained or | |||
|
413 | ;; # replaced later. I would guess that would be a bug. | |||
|
414 | ||||
|
415 | -Wc,*) | |||
|
416 | args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` | |||
|
417 | lastarg= | |||
|
418 | save_ifs="$IFS"; IFS=',' | |||
|
419 | for arg in $args; do | |||
|
420 | IFS="$save_ifs" | |||
|
421 | ||||
|
422 | # Double-quote args containing other shell metacharacters. | |||
|
423 | # Many Bourne shells cannot handle close brackets correctly | |||
|
424 | # in scan sets, so we specify it separately. | |||
|
425 | case $arg in | |||
|
426 | *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") | |||
|
427 | arg="\"$arg\"" | |||
|
428 | ;; | |||
|
429 | esac | |||
|
430 | lastarg="$lastarg $arg" | |||
|
431 | done | |||
|
432 | IFS="$save_ifs" | |||
|
433 | lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` | |||
|
434 | ||||
|
435 | # Add the arguments to base_compile. | |||
|
436 | base_compile="$base_compile $lastarg" | |||
|
437 | continue | |||
|
438 | ;; | |||
|
439 | ||||
|
440 | * ) | |||
|
441 | # Accept the current argument as the source file. | |||
|
442 | # The previous "srcfile" becomes the current argument. | |||
|
443 | # | |||
|
444 | lastarg="$srcfile" | |||
|
445 | srcfile="$arg" | |||
|
446 | ;; | |||
|
447 | esac # case $arg | |||
|
448 | ;; | |||
|
449 | esac # case $arg_mode | |||
|
450 | ||||
|
451 | # Aesthetically quote the previous argument. | |||
|
452 | lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` | |||
|
453 | ||||
|
454 | case $lastarg in | |||
|
455 | # Double-quote args containing other shell metacharacters. | |||
|
456 | # Many Bourne shells cannot handle close brackets correctly | |||
|
457 | # in scan sets, so we specify it separately. | |||
|
458 | *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") | |||
|
459 | lastarg="\"$lastarg\"" | |||
|
460 | ;; | |||
|
461 | esac | |||
|
462 | ||||
|
463 | base_compile="$base_compile $lastarg" | |||
|
464 | done # for arg | |||
|
465 | ||||
|
466 | case $arg_mode in | |||
|
467 | arg) | |||
|
468 | $echo "$modename: you must specify an argument for -Xcompile" | |||
|
469 | exit 1 | |||
|
470 | ;; | |||
|
471 | target) | |||
|
472 | $echo "$modename: you must specify a target with \`-o'" 1>&2 | |||
|
473 | exit 1 | |||
|
474 | ;; | |||
|
475 | *) | |||
|
476 | # Get the name of the library object. | |||
|
477 | [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` | |||
|
478 | ;; | |||
|
479 | esac | |||
|
480 | ||||
|
481 | # Recognize several different file suffixes. | |||
|
482 | # If the user specifies -o file.o, it is replaced with file.lo | |||
|
483 | xform='[cCFSifmso]' | |||
|
484 | case $libobj in | |||
|
485 | *.ada) xform=ada ;; | |||
|
486 | *.adb) xform=adb ;; | |||
|
487 | *.ads) xform=ads ;; | |||
|
488 | *.asm) xform=asm ;; | |||
|
489 | *.c++) xform=c++ ;; | |||
|
490 | *.cc) xform=cc ;; | |||
|
491 | *.ii) xform=ii ;; | |||
|
492 | *.class) xform=class ;; | |||
|
493 | *.cpp) xform=cpp ;; | |||
|
494 | *.cxx) xform=cxx ;; | |||
|
495 | *.f90) xform=f90 ;; | |||
|
496 | *.for) xform=for ;; | |||
|
497 | *.java) xform=java ;; | |||
|
498 | esac | |||
|
499 | ||||
|
500 | libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` | |||
|
501 | ||||
|
502 | case $libobj in | |||
|
503 | *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; | |||
|
504 | *) | |||
|
505 | $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 | |||
|
506 | exit 1 | |||
|
507 | ;; | |||
|
508 | esac | |||
|
509 | ||||
|
510 | # Infer tagged configuration to use if any are available and | |||
|
511 | # if one wasn't chosen via the "--tag" command line option. | |||
|
512 | # Only attempt this if the compiler in the base compile | |||
|
513 | # command doesn't match the default compiler. | |||
|
514 | if test -n "$available_tags" && test -z "$tagname"; then | |||
|
515 | case $base_compile in | |||
|
516 | # Blanks in the command may have been stripped by the calling shell, | |||
|
517 | # but not from the CC environment variable when configure was run. | |||
|
518 | " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "*) ;; | |||
|
519 | # Blanks at the start of $base_compile will cause this to fail | |||
|
520 | # if we don't check for them as well. | |||
|
521 | *) | |||
|
522 | for z in $available_tags; do | |||
|
523 | if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then | |||
|
524 | # Evaluate the configuration. | |||
|
525 | eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" | |||
|
526 | case "$base_compile " in | |||
|
527 | "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) | |||
|
528 | # The compiler in the base compile command matches | |||
|
529 | # the one in the tagged configuration. | |||
|
530 | # Assume this is the tagged configuration we want. | |||
|
531 | tagname=$z | |||
|
532 | break | |||
|
533 | ;; | |||
|
534 | esac | |||
|
535 | fi | |||
|
536 | done | |||
|
537 | # If $tagname still isn't set, then no tagged configuration | |||
|
538 | # was found and let the user know that the "--tag" command | |||
|
539 | # line option must be used. | |||
|
540 | if test -z "$tagname"; then | |||
|
541 | echo "$modename: unable to infer tagged configuration" | |||
|
542 | echo "$modename: specify a tag with \`--tag'" 1>&2 | |||
|
543 | exit 1 | |||
|
544 | # else | |||
|
545 | # echo "$modename: using $tagname tagged configuration" | |||
|
546 | fi | |||
|
547 | ;; | |||
|
548 | esac | |||
|
549 | fi | |||
|
550 | ||||
|
551 | objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` | |||
|
552 | xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` | |||
|
553 | if test "X$xdir" = "X$obj"; then | |||
|
554 | xdir= | |||
|
555 | else | |||
|
556 | xdir=$xdir/ | |||
|
557 | fi | |||
|
558 | lobj=${xdir}$objdir/$objname | |||
|
559 | ||||
|
560 | if test -z "$base_compile"; then | |||
|
561 | $echo "$modename: you must specify a compilation command" 1>&2 | |||
|
562 | $echo "$help" 1>&2 | |||
|
563 | exit 1 | |||
|
564 | fi | |||
|
565 | ||||
|
566 | # Delete any leftover library objects. | |||
|
567 | if test "$build_old_libs" = yes; then | |||
|
568 | removelist="$obj $lobj $libobj ${libobj}T" | |||
|
569 | else | |||
|
570 | removelist="$lobj $libobj ${libobj}T" | |||
|
571 | fi | |||
|
572 | ||||
|
573 | $run $rm $removelist | |||
|
574 | trap "$run $rm $removelist; exit 1" 1 2 15 | |||
|
575 | ||||
|
576 | # On Cygwin there's no "real" PIC flag so we must build both object types | |||
|
577 | case $host_os in | |||
|
578 | cygwin* | mingw* | pw32* | os2*) | |||
|
579 | pic_mode=default | |||
|
580 | ;; | |||
|
581 | esac | |||
|
582 | if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then | |||
|
583 | # non-PIC code in shared libraries is not supported | |||
|
584 | pic_mode=default | |||
|
585 | fi | |||
|
586 | ||||
|
587 | # Calculate the filename of the output object if compiler does | |||
|
588 | # not support -o with -c | |||
|
589 | if test "$compiler_c_o" = no; then | |||
|
590 | output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} | |||
|
591 | lockfile="$output_obj.lock" | |||
|
592 | removelist="$removelist $output_obj $lockfile" | |||
|
593 | trap "$run $rm $removelist; exit 1" 1 2 15 | |||
|
594 | else | |||
|
595 | output_obj= | |||
|
596 | need_locks=no | |||
|
597 | lockfile= | |||
|
598 | fi | |||
|
599 | ||||
|
600 | # Lock this critical section if it is needed | |||
|
601 | # We use this script file to make the link, it avoids creating a new file | |||
|
602 | if test "$need_locks" = yes; then | |||
|
603 | until $run ln "$0" "$lockfile" 2>/dev/null; do | |||
|
604 | $show "Waiting for $lockfile to be removed" | |||
|
605 | sleep 2 | |||
|
606 | done | |||
|
607 | elif test "$need_locks" = warn; then | |||
|
608 | if test -f "$lockfile"; then | |||
|
609 | echo "\ | |||
|
610 | *** ERROR, $lockfile exists and contains: | |||
|
611 | `cat $lockfile 2>/dev/null` | |||
|
612 | ||||
|
613 | This indicates that another process is trying to use the same | |||
|
614 | temporary object file, and libtool could not work around it because | |||
|
615 | your compiler does not support \`-c' and \`-o' together. If you | |||
|
616 | repeat this compilation, it may succeed, by chance, but you had better | |||
|
617 | avoid parallel builds (make -j) in this platform, or get a better | |||
|
618 | compiler." | |||
|
619 | ||||
|
620 | $run $rm $removelist | |||
|
621 | exit 1 | |||
|
622 | fi | |||
|
623 | echo $srcfile > "$lockfile" | |||
|
624 | fi | |||
|
625 | ||||
|
626 | if test -n "$fix_srcfile_path"; then | |||
|
627 | eval srcfile=\"$fix_srcfile_path\" | |||
|
628 | fi | |||
|
629 | ||||
|
630 | $run $rm "$libobj" "${libobj}T" | |||
|
631 | ||||
|
632 | # Create a libtool object file (analogous to a ".la" file), | |||
|
633 | # but don't create it if we're doing a dry run. | |||
|
634 | test -z "$run" && cat > ${libobj}T <<EOF | |||
|
635 | # $libobj - a libtool object file | |||
|
636 | # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP | |||
|
637 | # | |||
|
638 | # Please DO NOT delete this file! | |||
|
639 | # It is necessary for linking the library. | |||
|
640 | ||||
|
641 | # Name of the PIC object. | |||
|
642 | EOF | |||
|
643 | ||||
|
644 | # Only build a PIC object if we are building libtool libraries. | |||
|
645 | if test "$build_libtool_libs" = yes; then | |||
|
646 | # Without this assignment, base_compile gets emptied. | |||
|
647 | fbsd_hideous_sh_bug=$base_compile | |||
|
648 | ||||
|
649 | if test "$pic_mode" != no; then | |||
|
650 | command="$base_compile $srcfile $pic_flag" | |||
|
651 | else | |||
|
652 | # Don't build PIC code | |||
|
653 | command="$base_compile $srcfile" | |||
|
654 | fi | |||
|
655 | ||||
|
656 | if test ! -d "${xdir}$objdir"; then | |||
|
657 | $show "$mkdir ${xdir}$objdir" | |||
|
658 | $run $mkdir ${xdir}$objdir | |||
|
659 | status=$? | |||
|
660 | if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then | |||
|
661 | exit $status | |||
|
662 | fi | |||
|
663 | fi | |||
|
664 | ||||
|
665 | if test -z "$output_obj"; then | |||
|
666 | # Place PIC objects in $objdir | |||
|
667 | command="$command -o $lobj" | |||
|
668 | fi | |||
|
669 | ||||
|
670 | $run $rm "$lobj" "$output_obj" | |||
|
671 | ||||
|
672 | $show "$command" | |||
|
673 | if $run eval "$command"; then : | |||
|
674 | else | |||
|
675 | test -n "$output_obj" && $run $rm $removelist | |||
|
676 | exit 1 | |||
|
677 | fi | |||
|
678 | ||||
|
679 | if test "$need_locks" = warn && | |||
|
680 | test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then | |||
|
681 | echo "\ | |||
|
682 | *** ERROR, $lockfile contains: | |||
|
683 | `cat $lockfile 2>/dev/null` | |||
|
684 | ||||
|
685 | but it should contain: | |||
|
686 | $srcfile | |||
|
687 | ||||
|
688 | This indicates that another process is trying to use the same | |||
|
689 | temporary object file, and libtool could not work around it because | |||
|
690 | your compiler does not support \`-c' and \`-o' together. If you | |||
|
691 | repeat this compilation, it may succeed, by chance, but you had better | |||
|
692 | avoid parallel builds (make -j) in this platform, or get a better | |||
|
693 | compiler." | |||
|
694 | ||||
|
695 | $run $rm $removelist | |||
|
696 | exit 1 | |||
|
697 | fi | |||
|
698 | ||||
|
699 | # Just move the object if needed, then go on to compile the next one | |||
|
700 | if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then | |||
|
701 | $show "$mv $output_obj $lobj" | |||
|
702 | if $run $mv $output_obj $lobj; then : | |||
|
703 | else | |||
|
704 | error=$? | |||
|
705 | $run $rm $removelist | |||
|
706 | exit $error | |||
|
707 | fi | |||
|
708 | fi | |||
|
709 | ||||
|
710 | # Append the name of the PIC object to the libtool object file. | |||
|
711 | test -z "$run" && cat >> ${libobj}T <<EOF | |||
|
712 | pic_object='$objdir/$objname' | |||
|
713 | ||||
|
714 | EOF | |||
|
715 | ||||
|
716 | # Allow error messages only from the first compilation. | |||
|
717 | suppress_output=' >/dev/null 2>&1' | |||
|
718 | else | |||
|
719 | # No PIC object so indicate it doesn't exist in the libtool | |||
|
720 | # object file. | |||
|
721 | test -z "$run" && cat >> ${libobj}T <<EOF | |||
|
722 | pic_object=none | |||
|
723 | ||||
|
724 | EOF | |||
|
725 | fi | |||
|
726 | ||||
|
727 | # Only build a position-dependent object if we build old libraries. | |||
|
728 | if test "$build_old_libs" = yes; then | |||
|
729 | if test "$pic_mode" != yes; then | |||
|
730 | # Don't build PIC code | |||
|
731 | command="$base_compile $srcfile" | |||
|
732 | else | |||
|
733 | command="$base_compile $srcfile $pic_flag" | |||
|
734 | fi | |||
|
735 | if test "$compiler_c_o" = yes; then | |||
|
736 | command="$command -o $obj" | |||
|
737 | fi | |||
|
738 | ||||
|
739 | # Suppress compiler output if we already did a PIC compilation. | |||
|
740 | command="$command$suppress_output" | |||
|
741 | $run $rm "$obj" "$output_obj" | |||
|
742 | $show "$command" | |||
|
743 | if $run eval "$command"; then : | |||
|
744 | else | |||
|
745 | $run $rm $removelist | |||
|
746 | exit 1 | |||
|
747 | fi | |||
|
748 | ||||
|
749 | if test "$need_locks" = warn && | |||
|
750 | test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then | |||
|
751 | echo "\ | |||
|
752 | *** ERROR, $lockfile contains: | |||
|
753 | `cat $lockfile 2>/dev/null` | |||
|
754 | ||||
|
755 | but it should contain: | |||
|
756 | $srcfile | |||
|
757 | ||||
|
758 | This indicates that another process is trying to use the same | |||
|
759 | temporary object file, and libtool could not work around it because | |||
|
760 | your compiler does not support \`-c' and \`-o' together. If you | |||
|
761 | repeat this compilation, it may succeed, by chance, but you had better | |||
|
762 | avoid parallel builds (make -j) in this platform, or get a better | |||
|
763 | compiler." | |||
|
764 | ||||
|
765 | $run $rm $removelist | |||
|
766 | exit 1 | |||
|
767 | fi | |||
|
768 | ||||
|
769 | # Just move the object if needed | |||
|
770 | if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then | |||
|
771 | $show "$mv $output_obj $obj" | |||
|
772 | if $run $mv $output_obj $obj; then : | |||
|
773 | else | |||
|
774 | error=$? | |||
|
775 | $run $rm $removelist | |||
|
776 | exit $error | |||
|
777 | fi | |||
|
778 | fi | |||
|
779 | ||||
|
780 | # Append the name of the non-PIC object the libtool object file. | |||
|
781 | # Only append if the libtool object file exists. | |||
|
782 | test -z "$run" && cat >> ${libobj}T <<EOF | |||
|
783 | # Name of the non-PIC object. | |||
|
784 | non_pic_object='$objname' | |||
|
785 | ||||
|
786 | EOF | |||
|
787 | else | |||
|
788 | # Append the name of the non-PIC object the libtool object file. | |||
|
789 | # Only append if the libtool object file exists. | |||
|
790 | test -z "$run" && cat >> ${libobj}T <<EOF | |||
|
791 | # Name of the non-PIC object. | |||
|
792 | non_pic_object=none | |||
|
793 | ||||
|
794 | EOF | |||
|
795 | fi | |||
|
796 | ||||
|
797 | $run $mv "${libobj}T" "${libobj}" | |||
|
798 | ||||
|
799 | # Unlock the critical section if it was locked | |||
|
800 | if test "$need_locks" != no; then | |||
|
801 | $run $rm "$lockfile" | |||
|
802 | fi | |||
|
803 | ||||
|
804 | exit 0 | |||
|
805 | ;; | |||
|
806 | ||||
|
807 | # libtool link mode | |||
|
808 | link | relink) | |||
|
809 | modename="$modename: link" | |||
|
810 | case $host in | |||
|
811 | *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) | |||
|
812 | # It is impossible to link a dll without this setting, and | |||
|
813 | # we shouldn't force the makefile maintainer to figure out | |||
|
814 | # which system we are compiling for in order to pass an extra | |||
|
815 | # flag for every libtool invocation. | |||
|
816 | # allow_undefined=no | |||
|
817 | ||||
|
818 | # FIXME: Unfortunately, there are problems with the above when trying | |||
|
819 | # to make a dll which has undefined symbols, in which case not | |||
|
820 | # even a static library is built. For now, we need to specify | |||
|
821 | # -no-undefined on the libtool link line when we can be certain | |||
|
822 | # that all symbols are satisfied, otherwise we get a static library. | |||
|
823 | allow_undefined=yes | |||
|
824 | ;; | |||
|
825 | *) | |||
|
826 | allow_undefined=yes | |||
|
827 | ;; | |||
|
828 | esac | |||
|
829 | libtool_args="$nonopt" | |||
|
830 | base_compile="$nonopt" | |||
|
831 | compile_command="$nonopt" | |||
|
832 | finalize_command="$nonopt" | |||
|
833 | ||||
|
834 | compile_rpath= | |||
|
835 | finalize_rpath= | |||
|
836 | compile_shlibpath= | |||
|
837 | finalize_shlibpath= | |||
|
838 | convenience= | |||
|
839 | old_convenience= | |||
|
840 | deplibs= | |||
|
841 | old_deplibs= | |||
|
842 | compiler_flags= | |||
|
843 | linker_flags= | |||
|
844 | dllsearchpath= | |||
|
845 | lib_search_path=`pwd` | |||
|
846 | inst_prefix_dir= | |||
|
847 | ||||
|
848 | avoid_version=no | |||
|
849 | dlfiles= | |||
|
850 | dlprefiles= | |||
|
851 | dlself=no | |||
|
852 | export_dynamic=no | |||
|
853 | export_symbols= | |||
|
854 | export_symbols_regex= | |||
|
855 | generated= | |||
|
856 | libobjs= | |||
|
857 | ltlibs= | |||
|
858 | module=no | |||
|
859 | no_install=no | |||
|
860 | objs= | |||
|
861 | non_pic_objects= | |||
|
862 | prefer_static_libs=no | |||
|
863 | preload=no | |||
|
864 | prev= | |||
|
865 | prevarg= | |||
|
866 | release= | |||
|
867 | rpath= | |||
|
868 | xrpath= | |||
|
869 | perm_rpath= | |||
|
870 | temp_rpath= | |||
|
871 | thread_safe=no | |||
|
872 | vinfo= | |||
|
873 | ||||
|
874 | # We need to know -static, to get the right output filenames. | |||
|
875 | for arg | |||
|
876 | do | |||
|
877 | case $arg in | |||
|
878 | -all-static | -static) | |||
|
879 | if test "X$arg" = "X-all-static"; then | |||
|
880 | if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then | |||
|
881 | $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 | |||
|
882 | fi | |||
|
883 | if test -n "$link_static_flag"; then | |||
|
884 | dlopen_self=$dlopen_self_static | |||
|
885 | fi | |||
|
886 | else | |||
|
887 | if test -z "$pic_flag" && test -n "$link_static_flag"; then | |||
|
888 | dlopen_self=$dlopen_self_static | |||
|
889 | fi | |||
|
890 | fi | |||
|
891 | build_libtool_libs=no | |||
|
892 | build_old_libs=yes | |||
|
893 | prefer_static_libs=yes | |||
|
894 | break | |||
|
895 | ;; | |||
|
896 | esac | |||
|
897 | done | |||
|
898 | ||||
|
899 | # See if our shared archives depend on static archives. | |||
|
900 | test -n "$old_archive_from_new_cmds" && build_old_libs=yes | |||
|
901 | ||||
|
902 | # Go through the arguments, transforming them on the way. | |||
|
903 | while test "$#" -gt 0; do | |||
|
904 | arg="$1" | |||
|
905 | base_compile="$base_compile $arg" | |||
|
906 | shift | |||
|
907 | case $arg in | |||
|
908 | *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") | |||
|
909 | qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test | |||
|
910 | ;; | |||
|
911 | *) qarg=$arg ;; | |||
|
912 | esac | |||
|
913 | libtool_args="$libtool_args $qarg" | |||
|
914 | ||||
|
915 | # If the previous option needs an argument, assign it. | |||
|
916 | if test -n "$prev"; then | |||
|
917 | case $prev in | |||
|
918 | output) | |||
|
919 | compile_command="$compile_command @OUTPUT@" | |||
|
920 | finalize_command="$finalize_command @OUTPUT@" | |||
|
921 | ;; | |||
|
922 | esac | |||
|
923 | ||||
|
924 | case $prev in | |||
|
925 | dlfiles|dlprefiles) | |||
|
926 | if test "$preload" = no; then | |||
|
927 | # Add the symbol object into the linking commands. | |||
|
928 | compile_command="$compile_command @SYMFILE@" | |||
|
929 | finalize_command="$finalize_command @SYMFILE@" | |||
|
930 | preload=yes | |||
|
931 | fi | |||
|
932 | case $arg in | |||
|
933 | *.la | *.lo) ;; # We handle these cases below. | |||
|
934 | force) | |||
|
935 | if test "$dlself" = no; then | |||
|
936 | dlself=needless | |||
|
937 | export_dynamic=yes | |||
|
938 | fi | |||
|
939 | prev= | |||
|
940 | continue | |||
|
941 | ;; | |||
|
942 | self) | |||
|
943 | if test "$prev" = dlprefiles; then | |||
|
944 | dlself=yes | |||
|
945 | elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then | |||
|
946 | dlself=yes | |||
|
947 | else | |||
|
948 | dlself=needless | |||
|
949 | export_dynamic=yes | |||
|
950 | fi | |||
|
951 | prev= | |||
|
952 | continue | |||
|
953 | ;; | |||
|
954 | *) | |||
|
955 | if test "$prev" = dlfiles; then | |||
|
956 | dlfiles="$dlfiles $arg" | |||
|
957 | else | |||
|
958 | dlprefiles="$dlprefiles $arg" | |||
|
959 | fi | |||
|
960 | prev= | |||
|
961 | continue | |||
|
962 | ;; | |||
|
963 | esac | |||
|
964 | ;; | |||
|
965 | expsyms) | |||
|
966 | export_symbols="$arg" | |||
|
967 | if test ! -f "$arg"; then | |||
|
968 | $echo "$modename: symbol file \`$arg' does not exist" | |||
|
969 | exit 1 | |||
|
970 | fi | |||
|
971 | prev= | |||
|
972 | continue | |||
|
973 | ;; | |||
|
974 | expsyms_regex) | |||
|
975 | export_symbols_regex="$arg" | |||
|
976 | prev= | |||
|
977 | continue | |||
|
978 | ;; | |||
|
979 | inst_prefix) | |||
|
980 | inst_prefix_dir="$arg" | |||
|
981 | prev= | |||
|
982 | continue | |||
|
983 | ;; | |||
|
984 | release) | |||
|
985 | release="-$arg" | |||
|
986 | prev= | |||
|
987 | continue | |||
|
988 | ;; | |||
|
989 | objectlist) | |||
|
990 | if test -f "$arg"; then | |||
|
991 | save_arg=$arg | |||
|
992 | moreargs= | |||
|
993 | for fil in `cat $save_arg` | |||
|
994 | do | |||
|
995 | # moreargs="$moreargs $fil" | |||
|
996 | arg=$fil | |||
|
997 | # A libtool-controlled object. | |||
|
998 | ||||
|
999 | # Check to see that this really is a libtool object. | |||
|
1000 | if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then | |||
|
1001 | pic_object= | |||
|
1002 | non_pic_object= | |||
|
1003 | ||||
|
1004 | # Read the .lo file | |||
|
1005 | # If there is no directory component, then add one. | |||
|
1006 | case $arg in | |||
|
1007 | */* | *\\*) . $arg ;; | |||
|
1008 | *) . ./$arg ;; | |||
|
1009 | esac | |||
|
1010 | ||||
|
1011 | if test -z "$pic_object" || \ | |||
|
1012 | test -z "$non_pic_object" || | |||
|
1013 | test "$pic_object" = none && \ | |||
|
1014 | test "$non_pic_object" = none; then | |||
|
1015 | $echo "$modename: cannot find name of object for \`$arg'" 1>&2 | |||
|
1016 | exit 1 | |||
|
1017 | fi | |||
|
1018 | ||||
|
1019 | # Extract subdirectory from the argument. | |||
|
1020 | xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` | |||
|
1021 | if test "X$xdir" = "X$arg"; then | |||
|
1022 | xdir= | |||
|
1023 | else | |||
|
1024 | xdir="$xdir/" | |||
|
1025 | fi | |||
|
1026 | ||||
|
1027 | if test "$pic_object" != none; then | |||
|
1028 | # Prepend the subdirectory the object is found in. | |||
|
1029 | pic_object="$xdir$pic_object" | |||
|
1030 | ||||
|
1031 | if test "$prev" = dlfiles; then | |||
|
1032 | if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then | |||
|
1033 | dlfiles="$dlfiles $pic_object" | |||
|
1034 | prev= | |||
|
1035 | continue | |||
|
1036 | else | |||
|
1037 | # If libtool objects are unsupported, then we need to preload. | |||
|
1038 | prev=dlprefiles | |||
|
1039 | fi | |||
|
1040 | fi | |||
|
1041 | ||||
|
1042 | # CHECK ME: I think I busted this. -Ossama | |||
|
1043 | if test "$prev" = dlprefiles; then | |||
|
1044 | # Preload the old-style object. | |||
|
1045 | dlprefiles="$dlprefiles $pic_object" | |||
|
1046 | prev= | |||
|
1047 | fi | |||
|
1048 | ||||
|
1049 | # A PIC object. | |||
|
1050 | libobjs="$libobjs $pic_object" | |||
|
1051 | arg="$pic_object" | |||
|
1052 | fi | |||
|
1053 | ||||
|
1054 | # Non-PIC object. | |||
|
1055 | if test "$non_pic_object" != none; then | |||
|
1056 | # Prepend the subdirectory the object is found in. | |||
|
1057 | non_pic_object="$xdir$non_pic_object" | |||
|
1058 | ||||
|
1059 | # A standard non-PIC object | |||
|
1060 | non_pic_objects="$non_pic_objects $non_pic_object" | |||
|
1061 | if test -z "$pic_object" || test "$pic_object" = none ; then | |||
|
1062 | arg="$non_pic_object" | |||
|
1063 | fi | |||
|
1064 | fi | |||
|
1065 | else | |||
|
1066 | # Only an error if not doing a dry-run. | |||
|
1067 | if test -z "$run"; then | |||
|
1068 | $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 | |||
|
1069 | exit 1 | |||
|
1070 | else | |||
|
1071 | # Dry-run case. | |||
|
1072 | ||||
|
1073 | # Extract subdirectory from the argument. | |||
|
1074 | xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` | |||
|
1075 | if test "X$xdir" = "X$arg"; then | |||
|
1076 | xdir= | |||
|
1077 | else | |||
|
1078 | xdir="$xdir/" | |||
|
1079 | fi | |||
|
1080 | ||||
|
1081 | pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` | |||
|
1082 | non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` | |||
|
1083 | libobjs="$libobjs $pic_object" | |||
|
1084 | non_pic_objects="$non_pic_objects $non_pic_object" | |||
|
1085 | fi | |||
|
1086 | fi | |||
|
1087 | done | |||
|
1088 | else | |||
|
1089 | $echo "$modename: link input file \`$save_arg' does not exist" | |||
|
1090 | exit 1 | |||
|
1091 | fi | |||
|
1092 | arg=$save_arg | |||
|
1093 | prev= | |||
|
1094 | continue | |||
|
1095 | ;; | |||
|
1096 | rpath | xrpath) | |||
|
1097 | # We need an absolute path. | |||
|
1098 | case $arg in | |||
|
1099 | [\\/]* | [A-Za-z]:[\\/]*) ;; | |||
|
1100 | *) | |||
|
1101 | $echo "$modename: only absolute run-paths are allowed" 1>&2 | |||
|
1102 | exit 1 | |||
|
1103 | ;; | |||
|
1104 | esac | |||
|
1105 | if test "$prev" = rpath; then | |||
|
1106 | case "$rpath " in | |||
|
1107 | *" $arg "*) ;; | |||
|
1108 | *) rpath="$rpath $arg" ;; | |||
|
1109 | esac | |||
|
1110 | else | |||
|
1111 | case "$xrpath " in | |||
|
1112 | *" $arg "*) ;; | |||
|
1113 | *) xrpath="$xrpath $arg" ;; | |||
|
1114 | esac | |||
|
1115 | fi | |||
|
1116 | prev= | |||
|
1117 | continue | |||
|
1118 | ;; | |||
|
1119 | xcompiler) | |||
|
1120 | compiler_flags="$compiler_flags $qarg" | |||
|
1121 | prev= | |||
|
1122 | compile_command="$compile_command $qarg" | |||
|
1123 | finalize_command="$finalize_command $qarg" | |||
|
1124 | continue | |||
|
1125 | ;; | |||
|
1126 | xlinker) | |||
|
1127 | linker_flags="$linker_flags $qarg" | |||
|
1128 | compiler_flags="$compiler_flags $wl$qarg" | |||
|
1129 | prev= | |||
|
1130 | compile_command="$compile_command $wl$qarg" | |||
|
1131 | finalize_command="$finalize_command $wl$qarg" | |||
|
1132 | continue | |||
|
1133 | ;; | |||
|
1134 | xcclinker) | |||
|
1135 | linker_flags="$linker_flags $qarg" | |||
|
1136 | compiler_flags="$compiler_flags $qarg" | |||
|
1137 | prev= | |||
|
1138 | compile_command="$compile_command $qarg" | |||
|
1139 | finalize_command="$finalize_command $qarg" | |||
|
1140 | continue | |||
|
1141 | ;; | |||
|
1142 | *) | |||
|
1143 | eval "$prev=\"\$arg\"" | |||
|
1144 | prev= | |||
|
1145 | continue | |||
|
1146 | ;; | |||
|
1147 | esac | |||
|
1148 | fi # test -n "$prev" | |||
|
1149 | ||||
|
1150 | prevarg="$arg" | |||
|
1151 | ||||
|
1152 | case $arg in | |||
|
1153 | -all-static) | |||
|
1154 | if test -n "$link_static_flag"; then | |||
|
1155 | compile_command="$compile_command $link_static_flag" | |||
|
1156 | finalize_command="$finalize_command $link_static_flag" | |||
|
1157 | fi | |||
|
1158 | continue | |||
|
1159 | ;; | |||
|
1160 | ||||
|
1161 | -allow-undefined) | |||
|
1162 | # FIXME: remove this flag sometime in the future. | |||
|
1163 | $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 | |||
|
1164 | continue | |||
|
1165 | ;; | |||
|
1166 | ||||
|
1167 | -avoid-version) | |||
|
1168 | avoid_version=yes | |||
|
1169 | continue | |||
|
1170 | ;; | |||
|
1171 | ||||
|
1172 | -dlopen) | |||
|
1173 | prev=dlfiles | |||
|
1174 | continue | |||
|
1175 | ;; | |||
|
1176 | ||||
|
1177 | -dlpreopen) | |||
|
1178 | prev=dlprefiles | |||
|
1179 | continue | |||
|
1180 | ;; | |||
|
1181 | ||||
|
1182 | -export-dynamic) | |||
|
1183 | export_dynamic=yes | |||
|
1184 | continue | |||
|
1185 | ;; | |||
|
1186 | ||||
|
1187 | -export-symbols | -export-symbols-regex) | |||
|
1188 | if test -n "$export_symbols" || test -n "$export_symbols_regex"; then | |||
|
1189 | $echo "$modename: more than one -exported-symbols argument is not allowed" | |||
|
1190 | exit 1 | |||
|
1191 | fi | |||
|
1192 | if test "X$arg" = "X-export-symbols"; then | |||
|
1193 | prev=expsyms | |||
|
1194 | else | |||
|
1195 | prev=expsyms_regex | |||
|
1196 | fi | |||
|
1197 | continue | |||
|
1198 | ;; | |||
|
1199 | ||||
|
1200 | -inst-prefix-dir) | |||
|
1201 | prev=inst_prefix | |||
|
1202 | continue | |||
|
1203 | ;; | |||
|
1204 | ||||
|
1205 | # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* | |||
|
1206 | # so, if we see these flags be careful not to treat them like -L | |||
|
1207 | -L[A-Z][A-Z]*:*) | |||
|
1208 | case $with_gcc/$host in | |||
|
1209 | no/*-*-irix* | /*-*-irix*) | |||
|
1210 | compile_command="$compile_command $arg" | |||
|
1211 | finalize_command="$finalize_command $arg" | |||
|
1212 | ;; | |||
|
1213 | esac | |||
|
1214 | continue | |||
|
1215 | ;; | |||
|
1216 | ||||
|
1217 | -L*) | |||
|
1218 | dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` | |||
|
1219 | # We need an absolute path. | |||
|
1220 | case $dir in | |||
|
1221 | [\\/]* | [A-Za-z]:[\\/]*) ;; | |||
|
1222 | *) | |||
|
1223 | absdir=`cd "$dir" && pwd` | |||
|
1224 | if test -z "$absdir"; then | |||
|
1225 | $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 | |||
|
1226 | exit 1 | |||
|
1227 | fi | |||
|
1228 | dir="$absdir" | |||
|
1229 | ;; | |||
|
1230 | esac | |||
|
1231 | case "$deplibs " in | |||
|
1232 | *" -L$dir "*) ;; | |||
|
1233 | *) | |||
|
1234 | deplibs="$deplibs -L$dir" | |||
|
1235 | lib_search_path="$lib_search_path $dir" | |||
|
1236 | ;; | |||
|
1237 | esac | |||
|
1238 | case $host in | |||
|
1239 | *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) | |||
|
1240 | case :$dllsearchpath: in | |||
|
1241 | *":$dir:"*) ;; | |||
|
1242 | *) dllsearchpath="$dllsearchpath:$dir";; | |||
|
1243 | esac | |||
|
1244 | ;; | |||
|
1245 | esac | |||
|
1246 | continue | |||
|
1247 | ;; | |||
|
1248 | ||||
|
1249 | -l*) | |||
|
1250 | if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then | |||
|
1251 | case $host in | |||
|
1252 | *-*-cygwin* | *-*-pw32* | *-*-beos*) | |||
|
1253 | # These systems don't actually have a C or math library (as such) | |||
|
1254 | continue | |||
|
1255 | ;; | |||
|
1256 | *-*-mingw* | *-*-os2*) | |||
|
1257 | # These systems don't actually have a C library (as such) | |||
|
1258 | test "X$arg" = "X-lc" && continue | |||
|
1259 | ;; | |||
|
1260 | *-*-openbsd* | *-*-freebsd*) | |||
|
1261 | # Do not include libc due to us having libc/libc_r. | |||
|
1262 | test "X$arg" = "X-lc" && continue | |||
|
1263 | ;; | |||
|
1264 | *-*-rhapsody* | *-*-darwin1.[012]) | |||
|
1265 | # Rhapsody C and math libraries are in the System framework | |||
|
1266 | deplibs="$deplibs -framework System" | |||
|
1267 | continue | |||
|
1268 | esac | |||
|
1269 | elif test "X$arg" = "X-lc_r"; then | |||
|
1270 | case $host in | |||
|
1271 | *-*-openbsd* | *-*-freebsd*) | |||
|
1272 | # Do not include libc_r directly, use -pthread flag. | |||
|
1273 | continue | |||
|
1274 | ;; | |||
|
1275 | esac | |||
|
1276 | fi | |||
|
1277 | deplibs="$deplibs $arg" | |||
|
1278 | continue | |||
|
1279 | ;; | |||
|
1280 | ||||
|
1281 | -module) | |||
|
1282 | module=yes | |||
|
1283 | continue | |||
|
1284 | ;; | |||
|
1285 | ||||
|
1286 | # gcc -m* arguments should be passed to the linker via $compiler_flags | |||
|
1287 | # in order to pass architecture information to the linker | |||
|
1288 | # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo | |||
|
1289 | # but this is not reliable with gcc because gcc may use -mfoo to | |||
|
1290 | # select a different linker, different libraries, etc, while | |||
|
1291 | # -Wl,-mfoo simply passes -mfoo to the linker. | |||
|
1292 | -m*) | |||
|
1293 | # Unknown arguments in both finalize_command and compile_command need | |||
|
1294 | # to be aesthetically quoted because they are evaled later. | |||
|
1295 | arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` | |||
|
1296 | case $arg in | |||
|
1297 | *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") | |||
|
1298 | arg="\"$arg\"" | |||
|
1299 | ;; | |||
|
1300 | esac | |||
|
1301 | compile_command="$compile_command $arg" | |||
|
1302 | finalize_command="$finalize_command $arg" | |||
|
1303 | if test "$with_gcc" = "yes" ; then | |||
|
1304 | compiler_flags="$compiler_flags $arg" | |||
|
1305 | fi | |||
|
1306 | continue | |||
|
1307 | ;; | |||
|
1308 | ||||
|
1309 | -no-fast-install) | |||
|
1310 | fast_install=no | |||
|
1311 | continue | |||
|
1312 | ;; | |||
|
1313 | ||||
|
1314 | -no-install) | |||
|
1315 | case $host in | |||
|
1316 | *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) | |||
|
1317 | # The PATH hackery in wrapper scripts is required on Windows | |||
|
1318 | # in order for the loader to find any dlls it needs. | |||
|
1319 | $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 | |||
|
1320 | $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 | |||
|
1321 | fast_install=no | |||
|
1322 | ;; | |||
|
1323 | *) no_install=yes ;; | |||
|
1324 | esac | |||
|
1325 | continue | |||
|
1326 | ;; | |||
|
1327 | ||||
|
1328 | -no-undefined) | |||
|
1329 | allow_undefined=no | |||
|
1330 | continue | |||
|
1331 | ;; | |||
|
1332 | ||||
|
1333 | -objectlist) | |||
|
1334 | prev=objectlist | |||
|
1335 | continue | |||
|
1336 | ;; | |||
|
1337 | ||||
|
1338 | -o) prev=output ;; | |||
|
1339 | ||||
|
1340 | -release) | |||
|
1341 | prev=release | |||
|
1342 | continue | |||
|
1343 | ;; | |||
|
1344 | ||||
|
1345 | -rpath) | |||
|
1346 | prev=rpath | |||
|
1347 | continue | |||
|
1348 | ;; | |||
|
1349 | ||||
|
1350 | -R) | |||
|
1351 | prev=xrpath | |||
|
1352 | continue | |||
|
1353 | ;; | |||
|
1354 | ||||
|
1355 | -R*) | |||
|
1356 | dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` | |||
|
1357 | # We need an absolute path. | |||
|
1358 | case $dir in | |||
|
1359 | [\\/]* | [A-Za-z]:[\\/]*) ;; | |||
|
1360 | *) | |||
|
1361 | $echo "$modename: only absolute run-paths are allowed" 1>&2 | |||
|
1362 | exit 1 | |||
|
1363 | ;; | |||
|
1364 | esac | |||
|
1365 | case "$xrpath " in | |||
|
1366 | *" $dir "*) ;; | |||
|
1367 | *) xrpath="$xrpath $dir" ;; | |||
|
1368 | esac | |||
|
1369 | continue | |||
|
1370 | ;; | |||
|
1371 | ||||
|
1372 | -static) | |||
|
1373 | # The effects of -static are defined in a previous loop. | |||
|
1374 | # We used to do the same as -all-static on platforms that | |||
|
1375 | # didn't have a PIC flag, but the assumption that the effects | |||
|
1376 | # would be equivalent was wrong. It would break on at least | |||
|
1377 | # Digital Unix and AIX. | |||
|
1378 | continue | |||
|
1379 | ;; | |||
|
1380 | ||||
|
1381 | -thread-safe) | |||
|
1382 | thread_safe=yes | |||
|
1383 | continue | |||
|
1384 | ;; | |||
|
1385 | ||||
|
1386 | -version-info) | |||
|
1387 | prev=vinfo | |||
|
1388 | continue | |||
|
1389 | ;; | |||
|
1390 | ||||
|
1391 | -Wc,*) | |||
|
1392 | args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` | |||
|
1393 | arg= | |||
|
1394 | save_ifs="$IFS"; IFS=',' | |||
|
1395 | for flag in $args; do | |||
|
1396 | IFS="$save_ifs" | |||
|
1397 | case $flag in | |||
|
1398 | *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") | |||
|
1399 | flag="\"$flag\"" | |||
|
1400 | ;; | |||
|
1401 | esac | |||
|
1402 | arg="$arg $wl$flag" | |||
|
1403 | compiler_flags="$compiler_flags $flag" | |||
|
1404 | done | |||
|
1405 | IFS="$save_ifs" | |||
|
1406 | arg=`$echo "X$arg" | $Xsed -e "s/^ //"` | |||
|
1407 | ;; | |||
|
1408 | ||||
|
1409 | -Wl,*) | |||
|
1410 | args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` | |||
|
1411 | arg= | |||
|
1412 | save_ifs="$IFS"; IFS=',' | |||
|
1413 | for flag in $args; do | |||
|
1414 | IFS="$save_ifs" | |||
|
1415 | case $flag in | |||
|
1416 | *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") | |||
|
1417 | flag="\"$flag\"" | |||
|
1418 | ;; | |||
|
1419 | esac | |||
|
1420 | arg="$arg $wl$flag" | |||
|
1421 | compiler_flags="$compiler_flags $wl$flag" | |||
|
1422 | linker_flags="$linker_flags $flag" | |||
|
1423 | done | |||
|
1424 | IFS="$save_ifs" | |||
|
1425 | arg=`$echo "X$arg" | $Xsed -e "s/^ //"` | |||
|
1426 | ;; | |||
|
1427 | ||||
|
1428 | -Xcompiler) | |||
|
1429 | prev=xcompiler | |||
|
1430 | continue | |||
|
1431 | ;; | |||
|
1432 | ||||
|
1433 | -Xlinker) | |||
|
1434 | prev=xlinker | |||
|
1435 | continue | |||
|
1436 | ;; | |||
|
1437 | ||||
|
1438 | -XCClinker) | |||
|
1439 | prev=xcclinker | |||
|
1440 | continue | |||
|
1441 | ;; | |||
|
1442 | ||||
|
1443 | # Some other compiler flag. | |||
|
1444 | -* | +*) | |||
|
1445 | # Unknown arguments in both finalize_command and compile_command need | |||
|
1446 | # to be aesthetically quoted because they are evaled later. | |||
|
1447 | arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` | |||
|
1448 | case $arg in | |||
|
1449 | *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") | |||
|
1450 | arg="\"$arg\"" | |||
|
1451 | ;; | |||
|
1452 | esac | |||
|
1453 | ;; | |||
|
1454 | ||||
|
1455 | *.$objext) | |||
|
1456 | # A standard object. | |||
|
1457 | objs="$objs $arg" | |||
|
1458 | ;; | |||
|
1459 | ||||
|
1460 | *.lo) | |||
|
1461 | # A libtool-controlled object. | |||
|
1462 | ||||
|
1463 | # Check to see that this really is a libtool object. | |||
|
1464 | if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then | |||
|
1465 | pic_object= | |||
|
1466 | non_pic_object= | |||
|
1467 | ||||
|
1468 | # Read the .lo file | |||
|
1469 | # If there is no directory component, then add one. | |||
|
1470 | case $arg in | |||
|
1471 | */* | *\\*) . $arg ;; | |||
|
1472 | *) . ./$arg ;; | |||
|
1473 | esac | |||
|
1474 | ||||
|
1475 | if test -z "$pic_object" || \ | |||
|
1476 | test -z "$non_pic_object" || | |||
|
1477 | test "$pic_object" = none && \ | |||
|
1478 | test "$non_pic_object" = none; then | |||
|
1479 | $echo "$modename: cannot find name of object for \`$arg'" 1>&2 | |||
|
1480 | exit 1 | |||
|
1481 | fi | |||
|
1482 | ||||
|
1483 | # Extract subdirectory from the argument. | |||
|
1484 | xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` | |||
|
1485 | if test "X$xdir" = "X$arg"; then | |||
|
1486 | xdir= | |||
|
1487 | else | |||
|
1488 | xdir="$xdir/" | |||
|
1489 | fi | |||
|
1490 | ||||
|
1491 | if test "$pic_object" != none; then | |||
|
1492 | # Prepend the subdirectory the object is found in. | |||
|
1493 | pic_object="$xdir$pic_object" | |||
|
1494 | ||||
|
1495 | if test "$prev" = dlfiles; then | |||
|
1496 | if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then | |||
|
1497 | dlfiles="$dlfiles $pic_object" | |||
|
1498 | prev= | |||
|
1499 | continue | |||
|
1500 | else | |||
|
1501 | # If libtool objects are unsupported, then we need to preload. | |||
|
1502 | prev=dlprefiles | |||
|
1503 | fi | |||
|
1504 | fi | |||
|
1505 | ||||
|
1506 | # CHECK ME: I think I busted this. -Ossama | |||
|
1507 | if test "$prev" = dlprefiles; then | |||
|
1508 | # Preload the old-style object. | |||
|
1509 | dlprefiles="$dlprefiles $pic_object" | |||
|
1510 | prev= | |||
|
1511 | fi | |||
|
1512 | ||||
|
1513 | # A PIC object. | |||
|
1514 | libobjs="$libobjs $pic_object" | |||
|
1515 | arg="$pic_object" | |||
|
1516 | fi | |||
|
1517 | ||||
|
1518 | # Non-PIC object. | |||
|
1519 | if test "$non_pic_object" != none; then | |||
|
1520 | # Prepend the subdirectory the object is found in. | |||
|
1521 | non_pic_object="$xdir$non_pic_object" | |||
|
1522 | ||||
|
1523 | # A standard non-PIC object | |||
|
1524 | non_pic_objects="$non_pic_objects $non_pic_object" | |||
|
1525 | if test -z "$pic_object" || test "$pic_object" = none ; then | |||
|
1526 | arg="$non_pic_object" | |||
|
1527 | fi | |||
|
1528 | fi | |||
|
1529 | else | |||
|
1530 | # Only an error if not doing a dry-run. | |||
|
1531 | if test -z "$run"; then | |||
|
1532 | $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 | |||
|
1533 | exit 1 | |||
|
1534 | else | |||
|
1535 | # Dry-run case. | |||
|
1536 | ||||
|
1537 | # Extract subdirectory from the argument. | |||
|
1538 | xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` | |||
|
1539 | if test "X$xdir" = "X$arg"; then | |||
|
1540 | xdir= | |||
|
1541 | else | |||
|
1542 | xdir="$xdir/" | |||
|
1543 | fi | |||
|
1544 | ||||
|
1545 | pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` | |||
|
1546 | non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` | |||
|
1547 | libobjs="$libobjs $pic_object" | |||
|
1548 | non_pic_objects="$non_pic_objects $non_pic_object" | |||
|
1549 | fi | |||
|
1550 | fi | |||
|
1551 | ;; | |||
|
1552 | ||||
|
1553 | *.$libext) | |||
|
1554 | # An archive. | |||
|
1555 | deplibs="$deplibs $arg" | |||
|
1556 | old_deplibs="$old_deplibs $arg" | |||
|
1557 | continue | |||
|
1558 | ;; | |||
|
1559 | ||||
|
1560 | *.la) | |||
|
1561 | # A libtool-controlled library. | |||
|
1562 | ||||
|
1563 | if test "$prev" = dlfiles; then | |||
|
1564 | # This library was specified with -dlopen. | |||
|
1565 | dlfiles="$dlfiles $arg" | |||
|
1566 | prev= | |||
|
1567 | elif test "$prev" = dlprefiles; then | |||
|
1568 | # The library was specified with -dlpreopen. | |||
|
1569 | dlprefiles="$dlprefiles $arg" | |||
|
1570 | prev= | |||
|
1571 | else | |||
|
1572 | deplibs="$deplibs $arg" | |||
|
1573 | fi | |||
|
1574 | continue | |||
|
1575 | ;; | |||
|
1576 | ||||
|
1577 | # Some other compiler argument. | |||
|
1578 | *) | |||
|
1579 | # Unknown arguments in both finalize_command and compile_command need | |||
|
1580 | # to be aesthetically quoted because they are evaled later. | |||
|
1581 | arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` | |||
|
1582 | case $arg in | |||
|
1583 | *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") | |||
|
1584 | arg="\"$arg\"" | |||
|
1585 | ;; | |||
|
1586 | esac | |||
|
1587 | ;; | |||
|
1588 | esac # arg | |||
|
1589 | ||||
|
1590 | # Now actually substitute the argument into the commands. | |||
|
1591 | if test -n "$arg"; then | |||
|
1592 | compile_command="$compile_command $arg" | |||
|
1593 | finalize_command="$finalize_command $arg" | |||
|
1594 | fi | |||
|
1595 | done # argument parsing loop | |||
|
1596 | ||||
|
1597 | if test -n "$prev"; then | |||
|
1598 | $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 | |||
|
1599 | $echo "$help" 1>&2 | |||
|
1600 | exit 1 | |||
|
1601 | fi | |||
|
1602 | ||||
|
1603 | # Infer tagged configuration to use if any are available and | |||
|
1604 | # if one wasn't chosen via the "--tag" command line option. | |||
|
1605 | # Only attempt this if the compiler in the base link | |||
|
1606 | # command doesn't match the default compiler. | |||
|
1607 | if test -n "$available_tags" && test -z "$tagname"; then | |||
|
1608 | case $base_compile in | |||
|
1609 | # Blanks in the command may have been stripped by the calling shell, | |||
|
1610 | # but not from the CC environment variable when configure was run. | |||
|
1611 | "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) ;; | |||
|
1612 | # Blanks at the start of $base_compile will cause this to fail | |||
|
1613 | # if we don't check for them as well. | |||
|
1614 | *) | |||
|
1615 | for z in $available_tags; do | |||
|
1616 | if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then | |||
|
1617 | # Evaluate the configuration. | |||
|
1618 | eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" | |||
|
1619 | case $base_compile in | |||
|
1620 | "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) | |||
|
1621 | # The compiler in $compile_command matches | |||
|
1622 | # the one in the tagged configuration. | |||
|
1623 | # Assume this is the tagged configuration we want. | |||
|
1624 | tagname=$z | |||
|
1625 | break | |||
|
1626 | ;; | |||
|
1627 | esac | |||
|
1628 | fi | |||
|
1629 | done | |||
|
1630 | # If $tagname still isn't set, then no tagged configuration | |||
|
1631 | # was found and let the user know that the "--tag" command | |||
|
1632 | # line option must be used. | |||
|
1633 | if test -z "$tagname"; then | |||
|
1634 | echo "$modename: unable to infer tagged configuration" | |||
|
1635 | echo "$modename: specify a tag with \`--tag'" 1>&2 | |||
|
1636 | exit 1 | |||
|
1637 | # else | |||
|
1638 | # echo "$modename: using $tagname tagged configuration" | |||
|
1639 | fi | |||
|
1640 | ;; | |||
|
1641 | esac | |||
|
1642 | fi | |||
|
1643 | ||||
|
1644 | if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then | |||
|
1645 | eval arg=\"$export_dynamic_flag_spec\" | |||
|
1646 | compile_command="$compile_command $arg" | |||
|
1647 | finalize_command="$finalize_command $arg" | |||
|
1648 | fi | |||
|
1649 | ||||
|
1650 | oldlibs= | |||
|
1651 | # calculate the name of the file, without its directory | |||
|
1652 | outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` | |||
|
1653 | libobjs_save="$libobjs" | |||
|
1654 | ||||
|
1655 | if test -n "$shlibpath_var"; then | |||
|
1656 | # get the directories listed in $shlibpath_var | |||
|
1657 | eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` | |||
|
1658 | else | |||
|
1659 | shlib_search_path= | |||
|
1660 | fi | |||
|
1661 | eval sys_lib_search_path=\"$sys_lib_search_path_spec\" | |||
|
1662 | eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" | |||
|
1663 | ||||
|
1664 | output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` | |||
|
1665 | if test "X$output_objdir" = "X$output"; then | |||
|
1666 | output_objdir="$objdir" | |||
|
1667 | else | |||
|
1668 | output_objdir="$output_objdir/$objdir" | |||
|
1669 | fi | |||
|
1670 | # Create the object directory. | |||
|
1671 | if test ! -d "$output_objdir"; then | |||
|
1672 | $show "$mkdir $output_objdir" | |||
|
1673 | $run $mkdir $output_objdir | |||
|
1674 | status=$? | |||
|
1675 | if test "$status" -ne 0 && test ! -d "$output_objdir"; then | |||
|
1676 | exit $status | |||
|
1677 | fi | |||
|
1678 | fi | |||
|
1679 | ||||
|
1680 | # Determine the type of output | |||
|
1681 | case $output in | |||
|
1682 | "") | |||
|
1683 | $echo "$modename: you must specify an output file" 1>&2 | |||
|
1684 | $echo "$help" 1>&2 | |||
|
1685 | exit 1 | |||
|
1686 | ;; | |||
|
1687 | *.$libext) linkmode=oldlib ;; | |||
|
1688 | *.lo | *.$objext) linkmode=obj ;; | |||
|
1689 | *.la) linkmode=lib ;; | |||
|
1690 | *) linkmode=prog ;; # Anything else should be a program. | |||
|
1691 | esac | |||
|
1692 | ||||
|
1693 | case $host in | |||
|
1694 | *cygwin* | *mingw* | *pw32*) | |||
|
1695 | # don't eliminate duplcations in $postdeps and $predeps | |||
|
1696 | duplicate_compiler_generated_deps=yes | |||
|
1697 | ;; | |||
|
1698 | *) | |||
|
1699 | duplicate_compiler_generated_deps=$duplicate_deps | |||
|
1700 | ;; | |||
|
1701 | esac | |||
|
1702 | specialdeplibs= | |||
|
1703 | ||||
|
1704 | libs= | |||
|
1705 | # Find all interdependent deplibs by searching for libraries | |||
|
1706 | # that are linked more than once (e.g. -la -lb -la) | |||
|
1707 | for deplib in $deplibs; do | |||
|
1708 | if test "X$duplicate_deps" = "Xyes" ; then | |||
|
1709 | case "$libs " in | |||
|
1710 | *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; | |||
|
1711 | esac | |||
|
1712 | fi | |||
|
1713 | libs="$libs $deplib" | |||
|
1714 | done | |||
|
1715 | ||||
|
1716 | if test "$linkmode" = lib; then | |||
|
1717 | libs="$predeps $libs $compiler_lib_search_path $postdeps" | |||
|
1718 | ||||
|
1719 | # Compute libraries that are listed more than once in $predeps | |||
|
1720 | # $postdeps and mark them as special (i.e., whose duplicates are | |||
|
1721 | # not to be eliminated). | |||
|
1722 | pre_post_deps= | |||
|
1723 | if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then | |||
|
1724 | for pre_post_dep in $predeps $postdeps; do | |||
|
1725 | case "$pre_post_deps " in | |||
|
1726 | *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; | |||
|
1727 | esac | |||
|
1728 | pre_post_deps="$pre_post_deps $pre_post_dep" | |||
|
1729 | done | |||
|
1730 | fi | |||
|
1731 | pre_post_deps= | |||
|
1732 | fi | |||
|
1733 | ||||
|
1734 | deplibs= | |||
|
1735 | newdependency_libs= | |||
|
1736 | newlib_search_path= | |||
|
1737 | need_relink=no # whether we're linking any uninstalled libtool libraries | |||
|
1738 | notinst_deplibs= # not-installed libtool libraries | |||
|
1739 | notinst_path= # paths that contain not-installed libtool libraries | |||
|
1740 | case $linkmode in | |||
|
1741 | lib) | |||
|
1742 | passes="conv link" | |||
|
1743 | for file in $dlfiles $dlprefiles; do | |||
|
1744 | case $file in | |||
|
1745 | *.la) ;; | |||
|
1746 | *) | |||
|
1747 | $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 | |||
|
1748 | exit 1 | |||
|
1749 | ;; | |||
|
1750 | esac | |||
|
1751 | done | |||
|
1752 | ;; | |||
|
1753 | prog) | |||
|
1754 | compile_deplibs= | |||
|
1755 | finalize_deplibs= | |||
|
1756 | alldeplibs=no | |||
|
1757 | newdlfiles= | |||
|
1758 | newdlprefiles= | |||
|
1759 | passes="conv scan dlopen dlpreopen link" | |||
|
1760 | ;; | |||
|
1761 | *) passes="conv" | |||
|
1762 | ;; | |||
|
1763 | esac | |||
|
1764 | for pass in $passes; do | |||
|
1765 | if test "$linkmode,$pass" = "lib,link" || | |||
|
1766 | test "$linkmode,$pass" = "prog,scan"; then | |||
|
1767 | libs="$deplibs" | |||
|
1768 | deplibs= | |||
|
1769 | fi | |||
|
1770 | if test "$linkmode" = prog; then | |||
|
1771 | case $pass in | |||
|
1772 | dlopen) libs="$dlfiles" ;; | |||
|
1773 | dlpreopen) libs="$dlprefiles" ;; | |||
|
1774 | link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; | |||
|
1775 | esac | |||
|
1776 | fi | |||
|
1777 | if test "$pass" = dlopen; then | |||
|
1778 | # Collect dlpreopened libraries | |||
|
1779 | save_deplibs="$deplibs" | |||
|
1780 | deplibs= | |||
|
1781 | fi | |||
|
1782 | for deplib in $libs; do | |||
|
1783 | lib= | |||
|
1784 | found=no | |||
|
1785 | case $deplib in | |||
|
1786 | -l*) | |||
|
1787 | if test "$linkmode" != lib && test "$linkmode" != prog; then | |||
|
1788 | $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 | |||
|
1789 | continue | |||
|
1790 | fi | |||
|
1791 | if test "$pass" = conv; then | |||
|
1792 | deplibs="$deplib $deplibs" | |||
|
1793 | continue | |||
|
1794 | fi | |||
|
1795 | name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` | |||
|
1796 | for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do | |||
|
1797 | # Search the libtool library | |||
|
1798 | lib="$searchdir/lib${name}.la" | |||
|
1799 | if test -f "$lib"; then | |||
|
1800 | found=yes | |||
|
1801 | break | |||
|
1802 | fi | |||
|
1803 | done | |||
|
1804 | if test "$found" != yes; then | |||
|
1805 | # deplib doesn't seem to be a libtool library | |||
|
1806 | if test "$linkmode,$pass" = "prog,link"; then | |||
|
1807 | compile_deplibs="$deplib $compile_deplibs" | |||
|
1808 | finalize_deplibs="$deplib $finalize_deplibs" | |||
|
1809 | else | |||
|
1810 | deplibs="$deplib $deplibs" | |||
|
1811 | test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" | |||
|
1812 | fi | |||
|
1813 | continue | |||
|
1814 | else # deplib is a libtool library | |||
|
1815 | # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, | |||
|
1816 | # We need to do some special things here, and not later. | |||
|
1817 | if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |||
|
1818 | case " $predeps $postdeps " in | |||
|
1819 | *" $deplib "*) | |||
|
1820 | if (${SED} -e '2q' $lib | | |||
|
1821 | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then | |||
|
1822 | library_names= | |||
|
1823 | old_library= | |||
|
1824 | case $lib in | |||
|
1825 | */* | *\\*) . $lib ;; | |||
|
1826 | *) . ./$lib ;; | |||
|
1827 | esac | |||
|
1828 | for l in $old_library $library_names; do | |||
|
1829 | ll="$l" | |||
|
1830 | done | |||
|
1831 | if test "X$ll" = "X$old_library" ; then # only static version available | |||
|
1832 | found=no | |||
|
1833 | ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` | |||
|
1834 | test "X$ladir" = "X$lib" && ladir="." | |||
|
1835 | lib=$ladir/$old_library | |||
|
1836 | if test "$linkmode,$pass" = "prog,link"; then | |||
|
1837 | compile_deplibs="$deplib $compile_deplibs" | |||
|
1838 | finalize_deplibs="$deplib $finalize_deplibs" | |||
|
1839 | else | |||
|
1840 | deplibs="$deplib $deplibs" | |||
|
1841 | test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" | |||
|
1842 | fi | |||
|
1843 | continue | |||
|
1844 | fi | |||
|
1845 | fi | |||
|
1846 | ;; | |||
|
1847 | *) ;; | |||
|
1848 | esac | |||
|
1849 | fi | |||
|
1850 | fi | |||
|
1851 | ;; # -l | |||
|
1852 | -L*) | |||
|
1853 | case $linkmode in | |||
|
1854 | lib) | |||
|
1855 | deplibs="$deplib $deplibs" | |||
|
1856 | test "$pass" = conv && continue | |||
|
1857 | newdependency_libs="$deplib $newdependency_libs" | |||
|
1858 | newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` | |||
|
1859 | ;; | |||
|
1860 | prog) | |||
|
1861 | if test "$pass" = conv; then | |||
|
1862 | deplibs="$deplib $deplibs" | |||
|
1863 | continue | |||
|
1864 | fi | |||
|
1865 | if test "$pass" = scan; then | |||
|
1866 | deplibs="$deplib $deplibs" | |||
|
1867 | newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` | |||
|
1868 | else | |||
|
1869 | compile_deplibs="$deplib $compile_deplibs" | |||
|
1870 | finalize_deplibs="$deplib $finalize_deplibs" | |||
|
1871 | fi | |||
|
1872 | ;; | |||
|
1873 | *) | |||
|
1874 | $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 | |||
|
1875 | ;; | |||
|
1876 | esac # linkmode | |||
|
1877 | continue | |||
|
1878 | ;; # -L | |||
|
1879 | -R*) | |||
|
1880 | if test "$pass" = link; then | |||
|
1881 | dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` | |||
|
1882 | # Make sure the xrpath contains only unique directories. | |||
|
1883 | case "$xrpath " in | |||
|
1884 | *" $dir "*) ;; | |||
|
1885 | *) xrpath="$xrpath $dir" ;; | |||
|
1886 | esac | |||
|
1887 | fi | |||
|
1888 | deplibs="$deplib $deplibs" | |||
|
1889 | continue | |||
|
1890 | ;; | |||
|
1891 | *.la) lib="$deplib" ;; | |||
|
1892 | *.$libext) | |||
|
1893 | if test "$pass" = conv; then | |||
|
1894 | deplibs="$deplib $deplibs" | |||
|
1895 | continue | |||
|
1896 | fi | |||
|
1897 | case $linkmode in | |||
|
1898 | lib) | |||
|
1899 | if test "$deplibs_check_method" != pass_all; then | |||
|
1900 | echo | |||
|
1901 | echo "*** Warning: Trying to link with static lib archive $deplib." | |||
|
1902 | echo "*** I have the capability to make that library automatically link in when" | |||
|
1903 | echo "*** you link to this library. But I can only do this if you have a" | |||
|
1904 | echo "*** shared version of the library, which you do not appear to have" | |||
|
1905 | echo "*** because the file extensions .$libext of this argument makes me believe" | |||
|
1906 | echo "*** that it is just a static archive that I should not used here." | |||
|
1907 | else | |||
|
1908 | echo | |||
|
1909 | echo "*** Warning: Linking the shared library $output against the" | |||
|
1910 | echo "*** static library $deplib is not portable!" | |||
|
1911 | deplibs="$deplib $deplibs" | |||
|
1912 | fi | |||
|
1913 | continue | |||
|
1914 | ;; | |||
|
1915 | prog) | |||
|
1916 | if test "$pass" != link; then | |||
|
1917 | deplibs="$deplib $deplibs" | |||
|
1918 | else | |||
|
1919 | compile_deplibs="$deplib $compile_deplibs" | |||
|
1920 | finalize_deplibs="$deplib $finalize_deplibs" | |||
|
1921 | fi | |||
|
1922 | continue | |||
|
1923 | ;; | |||
|
1924 | esac # linkmode | |||
|
1925 | ;; # *.$libext | |||
|
1926 | *.lo | *.$objext) | |||
|
1927 | if test "$pass" = conv; then | |||
|
1928 | deplibs="$deplib $deplibs" | |||
|
1929 | elif test "$linkmode" = prog; then | |||
|
1930 | if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then | |||
|
1931 | # If there is no dlopen support or we're linking statically, | |||
|
1932 | # we need to preload. | |||
|
1933 | newdlprefiles="$newdlprefiles $deplib" | |||
|
1934 | compile_deplibs="$deplib $compile_deplibs" | |||
|
1935 | finalize_deplibs="$deplib $finalize_deplibs" | |||
|
1936 | else | |||
|
1937 | newdlfiles="$newdlfiles $deplib" | |||
|
1938 | fi | |||
|
1939 | fi | |||
|
1940 | continue | |||
|
1941 | ;; | |||
|
1942 | %DEPLIBS%) | |||
|
1943 | alldeplibs=yes | |||
|
1944 | continue | |||
|
1945 | ;; | |||
|
1946 | esac # case $deplib | |||
|
1947 | if test "$found" = yes || test -f "$lib"; then : | |||
|
1948 | else | |||
|
1949 | $echo "$modename: cannot find the library \`$lib'" 1>&2 | |||
|
1950 | exit 1 | |||
|
1951 | fi | |||
|
1952 | ||||
|
1953 | # Check to see that this really is a libtool archive. | |||
|
1954 | if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : | |||
|
1955 | else | |||
|
1956 | $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 | |||
|
1957 | exit 1 | |||
|
1958 | fi | |||
|
1959 | ||||
|
1960 | ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` | |||
|
1961 | test "X$ladir" = "X$lib" && ladir="." | |||
|
1962 | ||||
|
1963 | dlname= | |||
|
1964 | dlopen= | |||
|
1965 | dlpreopen= | |||
|
1966 | libdir= | |||
|
1967 | library_names= | |||
|
1968 | old_library= | |||
|
1969 | # If the library was installed with an old release of libtool, | |||
|
1970 | # it will not redefine variable installed. | |||
|
1971 | installed=yes | |||
|
1972 | ||||
|
1973 | # Read the .la file | |||
|
1974 | case $lib in | |||
|
1975 | */* | *\\*) . $lib ;; | |||
|
1976 | *) . ./$lib ;; | |||
|
1977 | esac | |||
|
1978 | ||||
|
1979 | if test "$linkmode,$pass" = "lib,link" || | |||
|
1980 | test "$linkmode,$pass" = "prog,scan" || | |||
|
1981 | { test "$linkmode" != prog && test "$linkmode" != lib; }; then | |||
|
1982 | test -n "$dlopen" && dlfiles="$dlfiles $dlopen" | |||
|
1983 | test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" | |||
|
1984 | fi | |||
|
1985 | ||||
|
1986 | if test "$pass" = conv; then | |||
|
1987 | # Only check for convenience libraries | |||
|
1988 | deplibs="$lib $deplibs" | |||
|
1989 | if test -z "$libdir"; then | |||
|
1990 | if test -z "$old_library"; then | |||
|
1991 | $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 | |||
|
1992 | exit 1 | |||
|
1993 | fi | |||
|
1994 | # It is a libtool convenience library, so add in its objects. | |||
|
1995 | convenience="$convenience $ladir/$objdir/$old_library" | |||
|
1996 | old_convenience="$old_convenience $ladir/$objdir/$old_library" | |||
|
1997 | tmp_libs= | |||
|
1998 | for deplib in $dependency_libs; do | |||
|
1999 | deplibs="$deplib $deplibs" | |||
|
2000 | if test "X$duplicate_deps" = "Xyes" ; then | |||
|
2001 | case "$tmp_libs " in | |||
|
2002 | *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; | |||
|
2003 | esac | |||
|
2004 | fi | |||
|
2005 | tmp_libs="$tmp_libs $deplib" | |||
|
2006 | done | |||
|
2007 | elif test "$linkmode" != prog && test "$linkmode" != lib; then | |||
|
2008 | $echo "$modename: \`$lib' is not a convenience library" 1>&2 | |||
|
2009 | exit 1 | |||
|
2010 | fi | |||
|
2011 | continue | |||
|
2012 | fi # $pass = conv | |||
|
2013 | ||||
|
2014 | # Get the name of the library we link against. | |||
|
2015 | linklib= | |||
|
2016 | for l in $old_library $library_names; do | |||
|
2017 | linklib="$l" | |||
|
2018 | done | |||
|
2019 | if test -z "$linklib"; then | |||
|
2020 | $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 | |||
|
2021 | exit 1 | |||
|
2022 | fi | |||
|
2023 | ||||
|
2024 | # This library was specified with -dlopen. | |||
|
2025 | if test "$pass" = dlopen; then | |||
|
2026 | if test -z "$libdir"; then | |||
|
2027 | $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 | |||
|
2028 | exit 1 | |||
|
2029 | fi | |||
|
2030 | if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then | |||
|
2031 | # If there is no dlname, no dlopen support or we're linking | |||
|
2032 | # statically, we need to preload. We also need to preload any | |||
|
2033 | # dependent libraries so libltdl's deplib preloader doesn't | |||
|
2034 | # bomb out in the load deplibs phase. | |||
|
2035 | dlprefiles="$dlprefiles $lib $dependency_libs" | |||
|
2036 | else | |||
|
2037 | newdlfiles="$newdlfiles $lib" | |||
|
2038 | fi | |||
|
2039 | continue | |||
|
2040 | fi # $pass = dlopen | |||
|
2041 | ||||
|
2042 | # We need an absolute path. | |||
|
2043 | case $ladir in | |||
|
2044 | [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; | |||
|
2045 | *) | |||
|
2046 | abs_ladir=`cd "$ladir" && pwd` | |||
|
2047 | if test -z "$abs_ladir"; then | |||
|
2048 | $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 | |||
|
2049 | $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 | |||
|
2050 | abs_ladir="$ladir" | |||
|
2051 | fi | |||
|
2052 | ;; | |||
|
2053 | esac | |||
|
2054 | laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` | |||
|
2055 | ||||
|
2056 | # Find the relevant object directory and library name. | |||
|
2057 | if test "X$installed" = Xyes; then | |||
|
2058 | if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then | |||
|
2059 | $echo "$modename: warning: library \`$lib' was moved." 1>&2 | |||
|
2060 | dir="$ladir" | |||
|
2061 | absdir="$abs_ladir" | |||
|
2062 | libdir="$abs_ladir" | |||
|
2063 | else | |||
|
2064 | dir="$libdir" | |||
|
2065 | absdir="$libdir" | |||
|
2066 | fi | |||
|
2067 | else | |||
|
2068 | dir="$ladir/$objdir" | |||
|
2069 | absdir="$abs_ladir/$objdir" | |||
|
2070 | # Remove this search path later | |||
|
2071 | notinst_path="$notinst_path $abs_ladir" | |||
|
2072 | fi # $installed = yes | |||
|
2073 | name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` | |||
|
2074 | ||||
|
2075 | # This library was specified with -dlpreopen. | |||
|
2076 | if test "$pass" = dlpreopen; then | |||
|
2077 | if test -z "$libdir"; then | |||
|
2078 | $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 | |||
|
2079 | exit 1 | |||
|
2080 | fi | |||
|
2081 | # Prefer using a static library (so that no silly _DYNAMIC symbols | |||
|
2082 | # are required to link). | |||
|
2083 | if test -n "$old_library"; then | |||
|
2084 | newdlprefiles="$newdlprefiles $dir/$old_library" | |||
|
2085 | # Otherwise, use the dlname, so that lt_dlopen finds it. | |||
|
2086 | elif test -n "$dlname"; then | |||
|
2087 | newdlprefiles="$newdlprefiles $dir/$dlname" | |||
|
2088 | else | |||
|
2089 | newdlprefiles="$newdlprefiles $dir/$linklib" | |||
|
2090 | fi | |||
|
2091 | fi # $pass = dlpreopen | |||
|
2092 | ||||
|
2093 | if test -z "$libdir"; then | |||
|
2094 | # Link the convenience library | |||
|
2095 | if test "$linkmode" = lib; then | |||
|
2096 | deplibs="$dir/$old_library $deplibs" | |||
|
2097 | elif test "$linkmode,$pass" = "prog,link"; then | |||
|
2098 | compile_deplibs="$dir/$old_library $compile_deplibs" | |||
|
2099 | finalize_deplibs="$dir/$old_library $finalize_deplibs" | |||
|
2100 | else | |||
|
2101 | deplibs="$lib $deplibs" # used for prog,scan pass | |||
|
2102 | fi | |||
|
2103 | continue | |||
|
2104 | fi | |||
|
2105 | ||||
|
2106 | if test "$linkmode" = prog && test "$pass" != link; then | |||
|
2107 | newlib_search_path="$newlib_search_path $ladir" | |||
|
2108 | deplibs="$lib $deplibs" | |||
|
2109 | ||||
|
2110 | linkalldeplibs=no | |||
|
2111 | if test "$link_all_deplibs" != no || test -z "$library_names" || | |||
|
2112 | test "$build_libtool_libs" = no; then | |||
|
2113 | linkalldeplibs=yes | |||
|
2114 | fi | |||
|
2115 | ||||
|
2116 | tmp_libs= | |||
|
2117 | for deplib in $dependency_libs; do | |||
|
2118 | case $deplib in | |||
|
2119 | -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test | |||
|
2120 | esac | |||
|
2121 | # Need to link against all dependency_libs? | |||
|
2122 | if test "$linkalldeplibs" = yes; then | |||
|
2123 | deplibs="$deplib $deplibs" | |||
|
2124 | else | |||
|
2125 | # Need to hardcode shared library paths | |||
|
2126 | # or/and link against static libraries | |||
|
2127 | newdependency_libs="$deplib $newdependency_libs" | |||
|
2128 | fi | |||
|
2129 | if test "X$duplicate_deps" = "Xyes" ; then | |||
|
2130 | case "$tmp_libs " in | |||
|
2131 | *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; | |||
|
2132 | esac | |||
|
2133 | fi | |||
|
2134 | tmp_libs="$tmp_libs $deplib" | |||
|
2135 | done # for deplib | |||
|
2136 | continue | |||
|
2137 | fi # $linkmode = prog... | |||
|
2138 | ||||
|
2139 | if test "$linkmode,$pass" = "prog,link"; then | |||
|
2140 | if test -n "$library_names" && | |||
|
2141 | { test "$prefer_static_libs" = no || test -z "$old_library"; }; then | |||
|
2142 | # We need to hardcode the library path | |||
|
2143 | if test -n "$shlibpath_var"; then | |||
|
2144 | # Make sure the rpath contains only unique directories. | |||
|
2145 | case "$temp_rpath " in | |||
|
2146 | *" $dir "*) ;; | |||
|
2147 | *" $absdir "*) ;; | |||
|
2148 | *) temp_rpath="$temp_rpath $dir" ;; | |||
|
2149 | esac | |||
|
2150 | fi | |||
|
2151 | ||||
|
2152 | # Hardcode the library path. | |||
|
2153 | # Skip directories that are in the system default run-time | |||
|
2154 | # search path. | |||
|
2155 | case " $sys_lib_dlsearch_path " in | |||
|
2156 | *" $absdir "*) ;; | |||
|
2157 | *) | |||
|
2158 | case "$compile_rpath " in | |||
|
2159 | *" $absdir "*) ;; | |||
|
2160 | *) compile_rpath="$compile_rpath $absdir" | |||
|
2161 | esac | |||
|
2162 | ;; | |||
|
2163 | esac | |||
|
2164 | case " $sys_lib_dlsearch_path " in | |||
|
2165 | *" $libdir "*) ;; | |||
|
2166 | *) | |||
|
2167 | case "$finalize_rpath " in | |||
|
2168 | *" $libdir "*) ;; | |||
|
2169 | *) finalize_rpath="$finalize_rpath $libdir" | |||
|
2170 | esac | |||
|
2171 | ;; | |||
|
2172 | esac | |||
|
2173 | fi # $linkmode,$pass = prog,link... | |||
|
2174 | ||||
|
2175 | if test "$alldeplibs" = yes && | |||
|
2176 | { test "$deplibs_check_method" = pass_all || | |||
|
2177 | { test "$build_libtool_libs" = yes && | |||
|
2178 | test -n "$library_names"; }; }; then | |||
|
2179 | # We only need to search for static libraries | |||
|
2180 | continue | |||
|
2181 | fi | |||
|
2182 | fi | |||
|
2183 | ||||
|
2184 | link_static=no # Whether the deplib will be linked statically | |||
|
2185 | if test -n "$library_names" && | |||
|
2186 | { test "$prefer_static_libs" = no || test -z "$old_library"; }; then | |||
|
2187 | if test "$installed" = no; then | |||
|
2188 | notinst_deplibs="$notinst_deplibs $lib" | |||
|
2189 | need_relink=yes | |||
|
2190 | fi | |||
|
2191 | # This is a shared library | |||
|
2192 | if test "$linkmode" = lib && | |||
|
2193 | test "$hardcode_into_libs" = yes; then | |||
|
2194 | # Hardcode the library path. | |||
|
2195 | # Skip directories that are in the system default run-time | |||
|
2196 | # search path. | |||
|
2197 | case " $sys_lib_dlsearch_path " in | |||
|
2198 | *" $absdir "*) ;; | |||
|
2199 | *) | |||
|
2200 | case "$compile_rpath " in | |||
|
2201 | *" $absdir "*) ;; | |||
|
2202 | *) compile_rpath="$compile_rpath $absdir" | |||
|
2203 | esac | |||
|
2204 | ;; | |||
|
2205 | esac | |||
|
2206 | case " $sys_lib_dlsearch_path " in | |||
|
2207 | *" $libdir "*) ;; | |||
|
2208 | *) | |||
|
2209 | case "$finalize_rpath " in | |||
|
2210 | *" $libdir "*) ;; | |||
|
2211 | *) finalize_rpath="$finalize_rpath $libdir" | |||
|
2212 | esac | |||
|
2213 | ;; | |||
|
2214 | esac | |||
|
2215 | fi | |||
|
2216 | ||||
|
2217 | if test -n "$old_archive_from_expsyms_cmds"; then | |||
|
2218 | # figure out the soname | |||
|
2219 | set dummy $library_names | |||
|
2220 | realname="$2" | |||
|
2221 | shift; shift | |||
|
2222 | libname=`eval \\$echo \"$libname_spec\"` | |||
|
2223 | # use dlname if we got it. it's perfectly good, no? | |||
|
2224 | if test -n "$dlname"; then | |||
|
2225 | soname="$dlname" | |||
|
2226 | elif test -n "$soname_spec"; then | |||
|
2227 | # bleh windows | |||
|
2228 | case $host in | |||
|
2229 | *cygwin* | mingw*) | |||
|
2230 | major=`expr $current - $age` | |||
|
2231 | versuffix="-$major" | |||
|
2232 | ;; | |||
|
2233 | esac | |||
|
2234 | eval soname=\"$soname_spec\" | |||
|
2235 | else | |||
|
2236 | soname="$realname" | |||
|
2237 | fi | |||
|
2238 | ||||
|
2239 | # Make a new name for the extract_expsyms_cmds to use | |||
|
2240 | soroot="$soname" | |||
|
2241 | soname=`echo $soroot | ${SED} -e 's/^.*\///'` | |||
|
2242 | newlib="libimp-`echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" | |||
|
2243 | ||||
|
2244 | # If the library has no export list, then create one now | |||
|
2245 | if test -f "$output_objdir/$soname-def"; then : | |||
|
2246 | else | |||
|
2247 | $show "extracting exported symbol list from \`$soname'" | |||
|
2248 | save_ifs="$IFS"; IFS='~' | |||
|
2249 | eval cmds=\"$extract_expsyms_cmds\" | |||
|
2250 | for cmd in $cmds; do | |||
|
2251 | IFS="$save_ifs" | |||
|
2252 | $show "$cmd" | |||
|
2253 | $run eval "$cmd" || exit $? | |||
|
2254 | done | |||
|
2255 | IFS="$save_ifs" | |||
|
2256 | fi | |||
|
2257 | ||||
|
2258 | # Create $newlib | |||
|
2259 | if test -f "$output_objdir/$newlib"; then :; else | |||
|
2260 | $show "generating import library for \`$soname'" | |||
|
2261 | save_ifs="$IFS"; IFS='~' | |||
|
2262 | eval cmds=\"$old_archive_from_expsyms_cmds\" | |||
|
2263 | for cmd in $cmds; do | |||
|
2264 | IFS="$save_ifs" | |||
|
2265 | $show "$cmd" | |||
|
2266 | $run eval "$cmd" || exit $? | |||
|
2267 | done | |||
|
2268 | IFS="$save_ifs" | |||
|
2269 | fi | |||
|
2270 | # make sure the library variables are pointing to the new library | |||
|
2271 | dir=$output_objdir | |||
|
2272 | linklib=$newlib | |||
|
2273 | fi # test -n "$old_archive_from_expsyms_cmds" | |||
|
2274 | ||||
|
2275 | if test "$linkmode" = prog || test "$mode" != relink; then | |||
|
2276 | add_shlibpath= | |||
|
2277 | add_dir= | |||
|
2278 | add= | |||
|
2279 | lib_linked=yes | |||
|
2280 | case $hardcode_action in | |||
|
2281 | immediate | unsupported) | |||
|
2282 | if test "$hardcode_direct" = no; then | |||
|
2283 | case $host in | |||
|
2284 | *-*-sco3.2v5* ) add_dir="-L$dir" ;; | |||
|
2285 | esac | |||
|
2286 | add="$dir/$linklib" | |||
|
2287 | elif test "$hardcode_minus_L" = no; then | |||
|
2288 | case $host in | |||
|
2289 | *-*-sunos*) add_shlibpath="$dir" ;; | |||
|
2290 | esac | |||
|
2291 | add_dir="-L$dir" | |||
|
2292 | add="-l$name" | |||
|
2293 | elif test "$hardcode_shlibpath_var" = no; then | |||
|
2294 | add_shlibpath="$dir" | |||
|
2295 | add="-l$name" | |||
|
2296 | else | |||
|
2297 | lib_linked=no | |||
|
2298 | fi | |||
|
2299 | ;; | |||
|
2300 | relink) | |||
|
2301 | if test "$hardcode_direct" = yes; then | |||
|
2302 | add="$dir/$linklib" | |||
|
2303 | elif test "$hardcode_minus_L" = yes; then | |||
|
2304 | add_dir="-L$dir" | |||
|
2305 | # Try looking first in the location we're being installed to. | |||
|
2306 | if test -n "$inst_prefix_dir"; then | |||
|
2307 | case "$libdir" in | |||
|
2308 | [\\/]*) | |||
|
2309 | add_dir="-L$inst_prefix_dir$libdir $add_dir" | |||
|
2310 | ;; | |||
|
2311 | esac | |||
|
2312 | fi | |||
|
2313 | add="-l$name" | |||
|
2314 | elif test "$hardcode_shlibpath_var" = yes; then | |||
|
2315 | add_shlibpath="$dir" | |||
|
2316 | add="-l$name" | |||
|
2317 | else | |||
|
2318 | lib_linked=no | |||
|
2319 | fi | |||
|
2320 | ;; | |||
|
2321 | *) lib_linked=no ;; | |||
|
2322 | esac | |||
|
2323 | ||||
|
2324 | if test "$lib_linked" != yes; then | |||
|
2325 | $echo "$modename: configuration error: unsupported hardcode properties" | |||
|
2326 | exit 1 | |||
|
2327 | fi | |||
|
2328 | ||||
|
2329 | if test -n "$add_shlibpath"; then | |||
|
2330 | case :$compile_shlibpath: in | |||
|
2331 | *":$add_shlibpath:"*) ;; | |||
|
2332 | *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; | |||
|
2333 | esac | |||
|
2334 | fi | |||
|
2335 | if test "$linkmode" = prog; then | |||
|
2336 | test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" | |||
|
2337 | test -n "$add" && compile_deplibs="$add $compile_deplibs" | |||
|
2338 | else | |||
|
2339 | test -n "$add_dir" && deplibs="$add_dir $deplibs" | |||
|
2340 | test -n "$add" && deplibs="$add $deplibs" | |||
|
2341 | if test "$hardcode_direct" != yes && \ | |||
|
2342 | test "$hardcode_minus_L" != yes && \ | |||
|
2343 | test "$hardcode_shlibpath_var" = yes; then | |||
|
2344 | case :$finalize_shlibpath: in | |||
|
2345 | *":$libdir:"*) ;; | |||
|
2346 | *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; | |||
|
2347 | esac | |||
|
2348 | fi | |||
|
2349 | fi | |||
|
2350 | fi | |||
|
2351 | ||||
|
2352 | if test "$linkmode" = prog || test "$mode" = relink; then | |||
|
2353 | add_shlibpath= | |||
|
2354 | add_dir= | |||
|
2355 | add= | |||
|
2356 | # Finalize command for both is simple: just hardcode it. | |||
|
2357 | if test "$hardcode_direct" = yes; then | |||
|
2358 | add="$libdir/$linklib" | |||
|
2359 | elif test "$hardcode_minus_L" = yes; then | |||
|
2360 | add_dir="-L$libdir" | |||
|
2361 | add="-l$name" | |||
|
2362 | elif test "$hardcode_shlibpath_var" = yes; then | |||
|
2363 | case :$finalize_shlibpath: in | |||
|
2364 | *":$libdir:"*) ;; | |||
|
2365 | *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; | |||
|
2366 | esac | |||
|
2367 | add="-l$name" | |||
|
2368 | else | |||
|
2369 | # We cannot seem to hardcode it, guess we'll fake it. | |||
|
2370 | add_dir="-L$libdir" | |||
|
2371 | # Try looking first in the location we're being installed to. | |||
|
2372 | if test -n "$inst_prefix_dir"; then | |||
|
2373 | case "$libdir" in | |||
|
2374 | [\\/]*) | |||
|
2375 | add_dir="-L$inst_prefix_dir$libdir $add_dir" | |||
|
2376 | ;; | |||
|
2377 | esac | |||
|
2378 | fi | |||
|
2379 | add="-l$name" | |||
|
2380 | fi | |||
|
2381 | ||||
|
2382 | if test "$linkmode" = prog; then | |||
|
2383 | test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" | |||
|
2384 | test -n "$add" && finalize_deplibs="$add $finalize_deplibs" | |||
|
2385 | else | |||
|
2386 | test -n "$add_dir" && deplibs="$add_dir $deplibs" | |||
|
2387 | test -n "$add" && deplibs="$add $deplibs" | |||
|
2388 | fi | |||
|
2389 | fi | |||
|
2390 | elif test "$linkmode" = prog; then | |||
|
2391 | # Here we assume that one of hardcode_direct or hardcode_minus_L | |||
|
2392 | # is not unsupported. This is valid on all known static and | |||
|
2393 | # shared platforms. | |||
|
2394 | if test "$hardcode_direct" != unsupported; then | |||
|
2395 | test -n "$old_library" && linklib="$old_library" | |||
|
2396 | compile_deplibs="$dir/$linklib $compile_deplibs" | |||
|
2397 | finalize_deplibs="$dir/$linklib $finalize_deplibs" | |||
|
2398 | else | |||
|
2399 | compile_deplibs="-l$name -L$dir $compile_deplibs" | |||
|
2400 | finalize_deplibs="-l$name -L$dir $finalize_deplibs" | |||
|
2401 | fi | |||
|
2402 | elif test "$build_libtool_libs" = yes; then | |||
|
2403 | # Not a shared library | |||
|
2404 | if test "$deplibs_check_method" != pass_all; then | |||
|
2405 | # We're trying link a shared library against a static one | |||
|
2406 | # but the system doesn't support it. | |||
|
2407 | ||||
|
2408 | # Just print a warning and add the library to dependency_libs so | |||
|
2409 | # that the program can be linked against the static library. | |||
|
2410 | echo | |||
|
2411 | echo "*** Warning: This system can not link to static lib archive $lib." | |||
|
2412 | echo "*** I have the capability to make that library automatically link in when" | |||
|
2413 | echo "*** you link to this library. But I can only do this if you have a" | |||
|
2414 | echo "*** shared version of the library, which you do not appear to have." | |||
|
2415 | if test "$module" = yes; then | |||
|
2416 | echo "*** But as you try to build a module library, libtool will still create " | |||
|
2417 | echo "*** a static module, that should work as long as the dlopening application" | |||
|
2418 | echo "*** is linked with the -dlopen flag to resolve symbols at runtime." | |||
|
2419 | if test -z "$global_symbol_pipe"; then | |||
|
2420 | echo | |||
|
2421 | echo "*** However, this would only work if libtool was able to extract symbol" | |||
|
2422 | echo "*** lists from a program, using \`nm' or equivalent, but libtool could" | |||
|
2423 | echo "*** not find such a program. So, this module is probably useless." | |||
|
2424 | echo "*** \`nm' from GNU binutils and a full rebuild may help." | |||
|
2425 | fi | |||
|
2426 | if test "$build_old_libs" = no; then | |||
|
2427 | build_libtool_libs=module | |||
|
2428 | build_old_libs=yes | |||
|
2429 | else | |||
|
2430 | build_libtool_libs=no | |||
|
2431 | fi | |||
|
2432 | fi | |||
|
2433 | else | |||
|
2434 | convenience="$convenience $dir/$old_library" | |||
|
2435 | old_convenience="$old_convenience $dir/$old_library" | |||
|
2436 | deplibs="$dir/$old_library $deplibs" | |||
|
2437 | link_static=yes | |||
|
2438 | fi | |||
|
2439 | fi # link shared/static library? | |||
|
2440 | ||||
|
2441 | if test "$linkmode" = lib; then | |||
|
2442 | if test -n "$dependency_libs" && | |||
|
2443 | { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || | |||
|
2444 | test "$link_static" = yes; }; then | |||
|
2445 | # Extract -R from dependency_libs | |||
|
2446 | temp_deplibs= | |||
|
2447 | for libdir in $dependency_libs; do | |||
|
2448 | case $libdir in | |||
|
2449 | -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` | |||
|
2450 | case " $xrpath " in | |||
|
2451 | *" $temp_xrpath "*) ;; | |||
|
2452 | *) xrpath="$xrpath $temp_xrpath";; | |||
|
2453 | esac;; | |||
|
2454 | *) temp_deplibs="$temp_deplibs $libdir";; | |||
|
2455 | esac | |||
|
2456 | done | |||
|
2457 | dependency_libs="$temp_deplibs" | |||
|
2458 | fi | |||
|
2459 | ||||
|
2460 | newlib_search_path="$newlib_search_path $absdir" | |||
|
2461 | # Link against this library | |||
|
2462 | test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" | |||
|
2463 | # ... and its dependency_libs | |||
|
2464 | tmp_libs= | |||
|
2465 | for deplib in $dependency_libs; do | |||
|
2466 | newdependency_libs="$deplib $newdependency_libs" | |||
|
2467 | if test "X$duplicate_deps" = "Xyes" ; then | |||
|
2468 | case "$tmp_libs " in | |||
|
2469 | *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; | |||
|
2470 | esac | |||
|
2471 | fi | |||
|
2472 | tmp_libs="$tmp_libs $deplib" | |||
|
2473 | done | |||
|
2474 | ||||
|
2475 | if test "$link_all_deplibs" != no; then | |||
|
2476 | # Add the search paths of all dependency libraries | |||
|
2477 | for deplib in $dependency_libs; do | |||
|
2478 | case $deplib in | |||
|
2479 | -L*) path="$deplib" ;; | |||
|
2480 | *.la) | |||
|
2481 | dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` | |||
|
2482 | test "X$dir" = "X$deplib" && dir="." | |||
|
2483 | # We need an absolute path. | |||
|
2484 | case $dir in | |||
|
2485 | [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; | |||
|
2486 | *) | |||
|
2487 | absdir=`cd "$dir" && pwd` | |||
|
2488 | if test -z "$absdir"; then | |||
|
2489 | $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 | |||
|
2490 | absdir="$dir" | |||
|
2491 | fi | |||
|
2492 | ;; | |||
|
2493 | esac | |||
|
2494 | if grep "^installed=no" $deplib > /dev/null; then | |||
|
2495 | path="-L$absdir/$objdir" | |||
|
2496 | else | |||
|
2497 | eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` | |||
|
2498 | if test -z "$libdir"; then | |||
|
2499 | $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 | |||
|
2500 | exit 1 | |||
|
2501 | fi | |||
|
2502 | if test "$absdir" != "$libdir"; then | |||
|
2503 | $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 | |||
|
2504 | fi | |||
|
2505 | path="-L$absdir" | |||
|
2506 | fi | |||
|
2507 | ;; | |||
|
2508 | *) continue ;; | |||
|
2509 | esac | |||
|
2510 | case " $deplibs " in | |||
|
2511 | *" $path "*) ;; | |||
|
2512 | *) deplibs="$deplibs $path" ;; | |||
|
2513 | esac | |||
|
2514 | done | |||
|
2515 | fi # link_all_deplibs != no | |||
|
2516 | fi # linkmode = lib | |||
|
2517 | done # for deplib in $libs | |||
|
2518 | dependency_libs="$newdependency_libs" | |||
|
2519 | if test "$pass" = dlpreopen; then | |||
|
2520 | # Link the dlpreopened libraries before other libraries | |||
|
2521 | for deplib in $save_deplibs; do | |||
|
2522 | deplibs="$deplib $deplibs" | |||
|
2523 | done | |||
|
2524 | fi | |||
|
2525 | if test "$pass" != dlopen; then | |||
|
2526 | if test "$pass" != conv; then | |||
|
2527 | # Make sure lib_search_path contains only unique directories. | |||
|
2528 | lib_search_path= | |||
|
2529 | for dir in $newlib_search_path; do | |||
|
2530 | case "$lib_search_path " in | |||
|
2531 | *" $dir "*) ;; | |||
|
2532 | *) lib_search_path="$lib_search_path $dir" ;; | |||
|
2533 | esac | |||
|
2534 | done | |||
|
2535 | newlib_search_path= | |||
|
2536 | fi | |||
|
2537 | ||||
|
2538 | if test "$linkmode,$pass" != "prog,link"; then | |||
|
2539 | vars="deplibs" | |||
|
2540 | else | |||
|
2541 | vars="compile_deplibs finalize_deplibs" | |||
|
2542 | fi | |||
|
2543 | for var in $vars dependency_libs; do | |||
|
2544 | # Add libraries to $var in reverse order | |||
|
2545 | eval tmp_libs=\"\$$var\" | |||
|
2546 | new_libs= | |||
|
2547 | for deplib in $tmp_libs; do | |||
|
2548 | # FIXME: Pedantically, this is the right thing to do, so | |||
|
2549 | # that some nasty dependency loop isn't accidentally | |||
|
2550 | # broken: | |||
|
2551 | #new_libs="$deplib $new_libs" | |||
|
2552 | # Pragmatically, this seems to cause very few problems in | |||
|
2553 | # practice: | |||
|
2554 | case $deplib in | |||
|
2555 | -L*) new_libs="$deplib $new_libs" ;; | |||
|
2556 | *) | |||
|
2557 | # And here is the reason: when a library appears more | |||
|
2558 | # than once as an explicit dependence of a library, or | |||
|
2559 | # is implicitly linked in more than once by the | |||
|
2560 | # compiler, it is considered special, and multiple | |||
|
2561 | # occurrences thereof are not removed. Compare this | |||
|
2562 | # with having the same library being listed as a | |||
|
2563 | # dependency of multiple other libraries: in this case, | |||
|
2564 | # we know (pedantically, we assume) the library does not | |||
|
2565 | # need to be listed more than once, so we keep only the | |||
|
2566 | # last copy. This is not always right, but it is rare | |||
|
2567 | # enough that we require users that really mean to play | |||
|
2568 | # such unportable linking tricks to link the library | |||
|
2569 | # using -Wl,-lname, so that libtool does not consider it | |||
|
2570 | # for duplicate removal. | |||
|
2571 | case " $specialdeplibs " in | |||
|
2572 | *" $deplib "*) new_libs="$deplib $new_libs" ;; | |||
|
2573 | *) | |||
|
2574 | case " $new_libs " in | |||
|
2575 | *" $deplib "*) ;; | |||
|
2576 | *) new_libs="$deplib $new_libs" ;; | |||
|
2577 | esac | |||
|
2578 | ;; | |||
|
2579 | esac | |||
|
2580 | ;; | |||
|
2581 | esac | |||
|
2582 | done | |||
|
2583 | tmp_libs= | |||
|
2584 | for deplib in $new_libs; do | |||
|
2585 | case $deplib in | |||
|
2586 | -L*) | |||
|
2587 | case " $tmp_libs " in | |||
|
2588 | *" $deplib "*) ;; | |||
|
2589 | *) tmp_libs="$tmp_libs $deplib" ;; | |||
|
2590 | esac | |||
|
2591 | ;; | |||
|
2592 | *) tmp_libs="$tmp_libs $deplib" ;; | |||
|
2593 | esac | |||
|
2594 | done | |||
|
2595 | eval $var=\"$tmp_libs\" | |||
|
2596 | done # for var | |||
|
2597 | fi | |||
|
2598 | # Last step: remove runtime libs from dependency_libs (they stay in deplibs) | |||
|
2599 | tmp_libs= | |||
|
2600 | for i in $dependency_libs ; do | |||
|
2601 | case " $predeps $postdeps $compiler_lib_search_path " in | |||
|
2602 | *" $i "*) | |||
|
2603 | i="" | |||
|
2604 | ;; | |||
|
2605 | esac | |||
|
2606 | if test -n "$i" ; then | |||
|
2607 | tmp_libs="$tmp_libs $i" | |||
|
2608 | fi | |||
|
2609 | done | |||
|
2610 | dependency_libs=$tmp_libs | |||
|
2611 | done # for pass | |||
|
2612 | if test "$linkmode" = prog; then | |||
|
2613 | dlfiles="$newdlfiles" | |||
|
2614 | dlprefiles="$newdlprefiles" | |||
|
2615 | fi | |||
|
2616 | ||||
|
2617 | case $linkmode in | |||
|
2618 | oldlib) | |||
|
2619 | if test -n "$deplibs"; then | |||
|
2620 | $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 | |||
|
2621 | fi | |||
|
2622 | ||||
|
2623 | if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then | |||
|
2624 | $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 | |||
|
2625 | fi | |||
|
2626 | ||||
|
2627 | if test -n "$rpath"; then | |||
|
2628 | $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 | |||
|
2629 | fi | |||
|
2630 | ||||
|
2631 | if test -n "$xrpath"; then | |||
|
2632 | $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 | |||
|
2633 | fi | |||
|
2634 | ||||
|
2635 | if test -n "$vinfo"; then | |||
|
2636 | $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 | |||
|
2637 | fi | |||
|
2638 | ||||
|
2639 | if test -n "$release"; then | |||
|
2640 | $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 | |||
|
2641 | fi | |||
|
2642 | ||||
|
2643 | if test -n "$export_symbols" || test -n "$export_symbols_regex"; then | |||
|
2644 | $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 | |||
|
2645 | fi | |||
|
2646 | ||||
|
2647 | # Now set the variables for building old libraries. | |||
|
2648 | build_libtool_libs=no | |||
|
2649 | oldlibs="$output" | |||
|
2650 | objs="$objs$old_deplibs" | |||
|
2651 | ;; | |||
|
2652 | ||||
|
2653 | lib) | |||
|
2654 | # Make sure we only generate libraries of the form `libNAME.la'. | |||
|
2655 | case $outputname in | |||
|
2656 | lib*) | |||
|
2657 | name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` | |||
|
2658 | eval libname=\"$libname_spec\" | |||
|
2659 | ;; | |||
|
2660 | *) | |||
|
2661 | if test "$module" = no; then | |||
|
2662 | $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 | |||
|
2663 | $echo "$help" 1>&2 | |||
|
2664 | exit 1 | |||
|
2665 | fi | |||
|
2666 | if test "$need_lib_prefix" != no; then | |||
|
2667 | # Add the "lib" prefix for modules if required | |||
|
2668 | name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` | |||
|
2669 | eval libname=\"$libname_spec\" | |||
|
2670 | else | |||
|
2671 | libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` | |||
|
2672 | fi | |||
|
2673 | ;; | |||
|
2674 | esac | |||
|
2675 | ||||
|
2676 | if test -n "$objs"; then | |||
|
2677 | if test "$deplibs_check_method" != pass_all; then | |||
|
2678 | $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 | |||
|
2679 | exit 1 | |||
|
2680 | else | |||
|
2681 | echo | |||
|
2682 | echo "*** Warning: Linking the shared library $output against the non-libtool" | |||
|
2683 | echo "*** objects $objs is not portable!" | |||
|
2684 | libobjs="$libobjs $objs" | |||
|
2685 | fi | |||
|
2686 | fi | |||
|
2687 | ||||
|
2688 | if test "$dlself" != no; then | |||
|
2689 | $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 | |||
|
2690 | fi | |||
|
2691 | ||||
|
2692 | set dummy $rpath | |||
|
2693 | if test "$#" -gt 2; then | |||
|
2694 | $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 | |||
|
2695 | fi | |||
|
2696 | install_libdir="$2" | |||
|
2697 | ||||
|
2698 | oldlibs= | |||
|
2699 | if test -z "$rpath"; then | |||
|
2700 | if test "$build_libtool_libs" = yes; then | |||
|
2701 | # Building a libtool convenience library. | |||
|
2702 | # Some compilers have problems with a `.al' extension so | |||
|
2703 | # convenience libraries should have the same extension an | |||
|
2704 | # archive normally would. | |||
|
2705 | oldlibs="$output_objdir/$libname.$libext $oldlibs" | |||
|
2706 | build_libtool_libs=convenience | |||
|
2707 | build_old_libs=yes | |||
|
2708 | fi | |||
|
2709 | ||||
|
2710 | if test -n "$vinfo"; then | |||
|
2711 | $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 | |||
|
2712 | fi | |||
|
2713 | ||||
|
2714 | if test -n "$release"; then | |||
|
2715 | $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 | |||
|
2716 | fi | |||
|
2717 | else | |||
|
2718 | ||||
|
2719 | # Parse the version information argument. | |||
|
2720 | save_ifs="$IFS"; IFS=':' | |||
|
2721 | set dummy $vinfo 0 0 0 | |||
|
2722 | IFS="$save_ifs" | |||
|
2723 | ||||
|
2724 | if test -n "$8"; then | |||
|
2725 | $echo "$modename: too many parameters to \`-version-info'" 1>&2 | |||
|
2726 | $echo "$help" 1>&2 | |||
|
2727 | exit 1 | |||
|
2728 | fi | |||
|
2729 | ||||
|
2730 | current="$2" | |||
|
2731 | revision="$3" | |||
|
2732 | age="$4" | |||
|
2733 | ||||
|
2734 | # Check that each of the things are valid numbers. | |||
|
2735 | case $current in | |||
|
2736 | 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; | |||
|
2737 | *) | |||
|
2738 | $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 | |||
|
2739 | $echo "$modename: \`$vinfo' is not valid version information" 1>&2 | |||
|
2740 | exit 1 | |||
|
2741 | ;; | |||
|
2742 | esac | |||
|
2743 | ||||
|
2744 | case $revision in | |||
|
2745 | 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; | |||
|
2746 | *) | |||
|
2747 | $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 | |||
|
2748 | $echo "$modename: \`$vinfo' is not valid version information" 1>&2 | |||
|
2749 | exit 1 | |||
|
2750 | ;; | |||
|
2751 | esac | |||
|
2752 | ||||
|
2753 | case $age in | |||
|
2754 | 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; | |||
|
2755 | *) | |||
|
2756 | $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 | |||
|
2757 | $echo "$modename: \`$vinfo' is not valid version information" 1>&2 | |||
|
2758 | exit 1 | |||
|
2759 | ;; | |||
|
2760 | esac | |||
|
2761 | ||||
|
2762 | if test "$age" -gt "$current"; then | |||
|
2763 | $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 | |||
|
2764 | $echo "$modename: \`$vinfo' is not valid version information" 1>&2 | |||
|
2765 | exit 1 | |||
|
2766 | fi | |||
|
2767 | ||||
|
2768 | # Calculate the version variables. | |||
|
2769 | major= | |||
|
2770 | versuffix= | |||
|
2771 | verstring= | |||
|
2772 | case $version_type in | |||
|
2773 | none) ;; | |||
|
2774 | ||||
|
2775 | darwin) | |||
|
2776 | # Like Linux, but with the current version available in | |||
|
2777 | # verstring for coding it into the library header | |||
|
2778 | major=.`expr $current - $age` | |||
|
2779 | versuffix="$major.$age.$revision" | |||
|
2780 | # Darwin ld doesn't like 0 for these options... | |||
|
2781 | minor_current=`expr $current + 1` | |||
|
2782 | verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" | |||
|
2783 | ;; | |||
|
2784 | ||||
|
2785 | freebsd-aout) | |||
|
2786 | major=".$current" | |||
|
2787 | versuffix=".$current.$revision"; | |||
|
2788 | ;; | |||
|
2789 | ||||
|
2790 | freebsd-elf) | |||
|
2791 | major=".$current" | |||
|
2792 | versuffix=".$current"; | |||
|
2793 | ;; | |||
|
2794 | ||||
|
2795 | irix | nonstopux) | |||
|
2796 | major=`expr $current - $age` | |||
|
2797 | ||||
|
2798 | case $version_type in | |||
|
2799 | nonstopux) verstring_prefix=nonstopux ;; | |||
|
2800 | *) verstring_prefix=sgi ;; | |||
|
2801 | esac | |||
|
2802 | verstring="$verstring_prefix$major.$revision" | |||
|
2803 | ||||
|
2804 | # Add in all the interfaces that we are compatible with. | |||
|
2805 | loop=$revision | |||
|
2806 | while test "$loop" -ne 0; do | |||
|
2807 | iface=`expr $revision - $loop` | |||
|
2808 | loop=`expr $loop - 1` | |||
|
2809 | verstring="$verstring_prefix$major.$iface:$verstring" | |||
|
2810 | done | |||
|
2811 | ||||
|
2812 | # Before this point, $major must not contain `.'. | |||
|
2813 | major=.$major | |||
|
2814 | versuffix="$major.$revision" | |||
|
2815 | ;; | |||
|
2816 | ||||
|
2817 | linux) | |||
|
2818 | major=.`expr $current - $age` | |||
|
2819 | versuffix="$major.$age.$revision" | |||
|
2820 | ;; | |||
|
2821 | ||||
|
2822 | osf) | |||
|
2823 | major=.`expr $current - $age` | |||
|
2824 | versuffix=".$current.$age.$revision" | |||
|
2825 | verstring="$current.$age.$revision" | |||
|
2826 | ||||
|
2827 | # Add in all the interfaces that we are compatible with. | |||
|
2828 | loop=$age | |||
|
2829 | while test "$loop" -ne 0; do | |||
|
2830 | iface=`expr $current - $loop` | |||
|
2831 | loop=`expr $loop - 1` | |||
|
2832 | verstring="$verstring:${iface}.0" | |||
|
2833 | done | |||
|
2834 | ||||
|
2835 | # Make executables depend on our current version. | |||
|
2836 | verstring="$verstring:${current}.0" | |||
|
2837 | ;; | |||
|
2838 | ||||
|
2839 | sunos) | |||
|
2840 | major=".$current" | |||
|
2841 | versuffix=".$current.$revision" | |||
|
2842 | ;; | |||
|
2843 | ||||
|
2844 | windows) | |||
|
2845 | # Use '-' rather than '.', since we only want one | |||
|
2846 | # extension on DOS 8.3 filesystems. | |||
|
2847 | major=`expr $current - $age` | |||
|
2848 | versuffix="-$major" | |||
|
2849 | ;; | |||
|
2850 | ||||
|
2851 | *) | |||
|
2852 | $echo "$modename: unknown library version type \`$version_type'" 1>&2 | |||
|
2853 | echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 | |||
|
2854 | exit 1 | |||
|
2855 | ;; | |||
|
2856 | esac | |||
|
2857 | ||||
|
2858 | # Clear the version info if we defaulted, and they specified a release. | |||
|
2859 | if test -z "$vinfo" && test -n "$release"; then | |||
|
2860 | major= | |||
|
2861 | case $version_type in | |||
|
2862 | darwin) | |||
|
2863 | # we can't check for "0.0" in archive_cmds due to quoting | |||
|
2864 | # problems, so we reset it completely | |||
|
2865 | verstring= | |||
|
2866 | ;; | |||
|
2867 | *) | |||
|
2868 | verstring="0.0" | |||
|
2869 | ;; | |||
|
2870 | esac | |||
|
2871 | if test "$need_version" = no; then | |||
|
2872 | versuffix= | |||
|
2873 | else | |||
|
2874 | versuffix=".0.0" | |||
|
2875 | fi | |||
|
2876 | fi | |||
|
2877 | ||||
|
2878 | # Remove version info from name if versioning should be avoided | |||
|
2879 | if test "$avoid_version" = yes && test "$need_version" = no; then | |||
|
2880 | major= | |||
|
2881 | versuffix= | |||
|
2882 | verstring="" | |||
|
2883 | fi | |||
|
2884 | ||||
|
2885 | # Check to see if the archive will have undefined symbols. | |||
|
2886 | if test "$allow_undefined" = yes; then | |||
|
2887 | if test "$allow_undefined_flag" = unsupported; then | |||
|
2888 | $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 | |||
|
2889 | build_libtool_libs=no | |||
|
2890 | build_old_libs=yes | |||
|
2891 | fi | |||
|
2892 | else | |||
|
2893 | # Don't allow undefined symbols. | |||
|
2894 | allow_undefined_flag="$no_undefined_flag" | |||
|
2895 | fi | |||
|
2896 | fi | |||
|
2897 | ||||
|
2898 | if test "$mode" != relink; then | |||
|
2899 | # Remove our outputs, but don't remove object files since they | |||
|
2900 | # may have been created when compiling PIC objects. | |||
|
2901 | removelist= | |||
|
2902 | tempremovelist=`echo "$output_objdir/*"` | |||
|
2903 | for p in $tempremovelist; do | |||
|
2904 | case $p in | |||
|
2905 | *.$objext) | |||
|
2906 | ;; | |||
|
2907 | $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) | |||
|
2908 | removelist="$removelist $p" | |||
|
2909 | ;; | |||
|
2910 | *) ;; | |||
|
2911 | esac | |||
|
2912 | done | |||
|
2913 | if test -n "$removelist"; then | |||
|
2914 | $show "${rm}r $removelist" | |||
|
2915 | $run ${rm}r $removelist | |||
|
2916 | fi | |||
|
2917 | fi | |||
|
2918 | ||||
|
2919 | # Now set the variables for building old libraries. | |||
|
2920 | if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then | |||
|
2921 | oldlibs="$oldlibs $output_objdir/$libname.$libext" | |||
|
2922 | ||||
|
2923 | # Transform .lo files to .o files. | |||
|
2924 | oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` | |||
|
2925 | fi | |||
|
2926 | ||||
|
2927 | # Eliminate all temporary directories. | |||
|
2928 | for path in $notinst_path; do | |||
|
2929 | lib_search_path=`echo "$lib_search_path " | ${SED} -e 's% $path % %g'` | |||
|
2930 | deplibs=`echo "$deplibs " | ${SED} -e 's% -L$path % %g'` | |||
|
2931 | dependency_libs=`echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` | |||
|
2932 | done | |||
|
2933 | ||||
|
2934 | if test -n "$xrpath"; then | |||
|
2935 | # If the user specified any rpath flags, then add them. | |||
|
2936 | temp_xrpath= | |||
|
2937 | for libdir in $xrpath; do | |||
|
2938 | temp_xrpath="$temp_xrpath -R$libdir" | |||
|
2939 | case "$finalize_rpath " in | |||
|
2940 | *" $libdir "*) ;; | |||
|
2941 | *) finalize_rpath="$finalize_rpath $libdir" ;; | |||
|
2942 | esac | |||
|
2943 | done | |||
|
2944 | if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then | |||
|
2945 | dependency_libs="$temp_xrpath $dependency_libs" | |||
|
2946 | fi | |||
|
2947 | fi | |||
|
2948 | ||||
|
2949 | # Make sure dlfiles contains only unique files that won't be dlpreopened | |||
|
2950 | old_dlfiles="$dlfiles" | |||
|
2951 | dlfiles= | |||
|
2952 | for lib in $old_dlfiles; do | |||
|
2953 | case " $dlprefiles $dlfiles " in | |||
|
2954 | *" $lib "*) ;; | |||
|
2955 | *) dlfiles="$dlfiles $lib" ;; | |||
|
2956 | esac | |||
|
2957 | done | |||
|
2958 | ||||
|
2959 | # Make sure dlprefiles contains only unique files | |||
|
2960 | old_dlprefiles="$dlprefiles" | |||
|
2961 | dlprefiles= | |||
|
2962 | for lib in $old_dlprefiles; do | |||
|
2963 | case "$dlprefiles " in | |||
|
2964 | *" $lib "*) ;; | |||
|
2965 | *) dlprefiles="$dlprefiles $lib" ;; | |||
|
2966 | esac | |||
|
2967 | done | |||
|
2968 | ||||
|
2969 | if test "$build_libtool_libs" = yes; then | |||
|
2970 | if test -n "$rpath"; then | |||
|
2971 | case $host in | |||
|
2972 | *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) | |||
|
2973 | # these systems don't actually have a c library (as such)! | |||
|
2974 | ;; | |||
|
2975 | *-*-rhapsody* | *-*-darwin1.[012]) | |||
|
2976 | # Rhapsody C library is in the System framework | |||
|
2977 | deplibs="$deplibs -framework System" | |||
|
2978 | ;; | |||
|
2979 | *-*-netbsd*) | |||
|
2980 | # Don't link with libc until the a.out ld.so is fixed. | |||
|
2981 | ;; | |||
|
2982 | *-*-openbsd* | *-*-freebsd*) | |||
|
2983 | # Do not include libc due to us having libc/libc_r. | |||
|
2984 | test "X$arg" = "X-lc" && continue | |||
|
2985 | ;; | |||
|
2986 | *) | |||
|
2987 | # Add libc to deplibs on all other systems if necessary. | |||
|
2988 | if test "$build_libtool_need_lc" = "yes"; then | |||
|
2989 | deplibs="$deplibs -lc" | |||
|
2990 | fi | |||
|
2991 | ;; | |||
|
2992 | esac | |||
|
2993 | fi | |||
|
2994 | ||||
|
2995 | # Transform deplibs into only deplibs that can be linked in shared. | |||
|
2996 | name_save=$name | |||
|
2997 | libname_save=$libname | |||
|
2998 | release_save=$release | |||
|
2999 | versuffix_save=$versuffix | |||
|
3000 | major_save=$major | |||
|
3001 | # I'm not sure if I'm treating the release correctly. I think | |||
|
3002 | # release should show up in the -l (ie -lgmp5) so we don't want to | |||
|
3003 | # add it in twice. Is that correct? | |||
|
3004 | release="" | |||
|
3005 | versuffix="" | |||
|
3006 | major="" | |||
|
3007 | newdeplibs= | |||
|
3008 | droppeddeps=no | |||
|
3009 | case $deplibs_check_method in | |||
|
3010 | pass_all) | |||
|
3011 | # Don't check for shared/static. Everything works. | |||
|
3012 | # This might be a little naive. We might want to check | |||
|
3013 | # whether the library exists or not. But this is on | |||
|
3014 | # osf3 & osf4 and I'm not really sure... Just | |||
|
3015 | # implementing what was already the behavior. | |||
|
3016 | newdeplibs=$deplibs | |||
|
3017 | ;; | |||
|
3018 | test_compile) | |||
|
3019 | # This code stresses the "libraries are programs" paradigm to its | |||
|
3020 | # limits. Maybe even breaks it. We compile a program, linking it | |||
|
3021 | # against the deplibs as a proxy for the library. Then we can check | |||
|
3022 | # whether they linked in statically or dynamically with ldd. | |||
|
3023 | $rm conftest.c | |||
|
3024 | cat > conftest.c <<EOF | |||
|
3025 | int main() { return 0; } | |||
|
3026 | EOF | |||
|
3027 | $rm conftest | |||
|
3028 | $LTCC -o conftest conftest.c $deplibs | |||
|
3029 | if test "$?" -eq 0 ; then | |||
|
3030 | ldd_output=`ldd conftest` | |||
|
3031 | for i in $deplibs; do | |||
|
3032 | name="`expr $i : '-l\(.*\)'`" | |||
|
3033 | # If $name is empty we are operating on a -L argument. | |||
|
3034 | if test "$name" != "" && test "$name" -ne "0"; then | |||
|
3035 | if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |||
|
3036 | case " $predeps $postdeps " in | |||
|
3037 | *" $i "*) | |||
|
3038 | newdeplibs="$newdeplibs $i" | |||
|
3039 | i="" | |||
|
3040 | ;; | |||
|
3041 | esac | |||
|
3042 | fi | |||
|
3043 | if test -n "$i" ; then | |||
|
3044 | libname=`eval \\$echo \"$libname_spec\"` | |||
|
3045 | deplib_matches=`eval \\$echo \"$library_names_spec\"` | |||
|
3046 | set dummy $deplib_matches | |||
|
3047 | deplib_match=$2 | |||
|
3048 | if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then | |||
|
3049 | newdeplibs="$newdeplibs $i" | |||
|
3050 | else | |||
|
3051 | droppeddeps=yes | |||
|
3052 | echo | |||
|
3053 | echo "*** Warning: dynamic linker does not accept needed library $i." | |||
|
3054 | echo "*** I have the capability to make that library automatically link in when" | |||
|
3055 | echo "*** you link to this library. But I can only do this if you have a" | |||
|
3056 | echo "*** shared version of the library, which I believe you do not have" | |||
|
3057 | echo "*** because a test_compile did reveal that the linker did not use it for" | |||
|
3058 | echo "*** its dynamic dependency list that programs get resolved with at runtime." | |||
|
3059 | fi | |||
|
3060 | fi | |||
|
3061 | else | |||
|
3062 | newdeplibs="$newdeplibs $i" | |||
|
3063 | fi | |||
|
3064 | done | |||
|
3065 | else | |||
|
3066 | # Error occurred in the first compile. Let's try to salvage | |||
|
3067 | # the situation: Compile a separate program for each library. | |||
|
3068 | for i in $deplibs; do | |||
|
3069 | name="`expr $i : '-l\(.*\)'`" | |||
|
3070 | # If $name is empty we are operating on a -L argument. | |||
|
3071 | if test "$name" != "" && test "$name" != "0"; then | |||
|
3072 | $rm conftest | |||
|
3073 | $LTCC -o conftest conftest.c $i | |||
|
3074 | # Did it work? | |||
|
3075 | if test "$?" -eq 0 ; then | |||
|
3076 | ldd_output=`ldd conftest` | |||
|
3077 | if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |||
|
3078 | case " $predeps $postdeps " in | |||
|
3079 | *" $i "*) | |||
|
3080 | newdeplibs="$newdeplibs $i" | |||
|
3081 | i="" | |||
|
3082 | ;; | |||
|
3083 | esac | |||
|
3084 | fi | |||
|
3085 | if test -n "$i" ; then | |||
|
3086 | libname=`eval \\$echo \"$libname_spec\"` | |||
|
3087 | deplib_matches=`eval \\$echo \"$library_names_spec\"` | |||
|
3088 | set dummy $deplib_matches | |||
|
3089 | deplib_match=$2 | |||
|
3090 | if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then | |||
|
3091 | newdeplibs="$newdeplibs $i" | |||
|
3092 | else | |||
|
3093 | droppeddeps=yes | |||
|
3094 | echo | |||
|
3095 | echo "*** Warning: dynamic linker does not accept needed library $i." | |||
|
3096 | echo "*** I have the capability to make that library automatically link in when" | |||
|
3097 | echo "*** you link to this library. But I can only do this if you have a" | |||
|
3098 | echo "*** shared version of the library, which you do not appear to have" | |||
|
3099 | echo "*** because a test_compile did reveal that the linker did not use this one" | |||
|
3100 | echo "*** as a dynamic dependency that programs can get resolved with at runtime." | |||
|
3101 | fi | |||
|
3102 | fi | |||
|
3103 | else | |||
|
3104 | droppeddeps=yes | |||
|
3105 | echo | |||
|
3106 | echo "*** Warning! Library $i is needed by this library but I was not able to" | |||
|
3107 | echo "*** make it link in! You will probably need to install it or some" | |||
|
3108 | echo "*** library that it depends on before this library will be fully" | |||
|
3109 | echo "*** functional. Installing it before continuing would be even better." | |||
|
3110 | fi | |||
|
3111 | else | |||
|
3112 | newdeplibs="$newdeplibs $i" | |||
|
3113 | fi | |||
|
3114 | done | |||
|
3115 | fi | |||
|
3116 | ;; | |||
|
3117 | file_magic*) | |||
|
3118 | set dummy $deplibs_check_method | |||
|
3119 | file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` | |||
|
3120 | for a_deplib in $deplibs; do | |||
|
3121 | name="`expr $a_deplib : '-l\(.*\)'`" | |||
|
3122 | # If $name is empty we are operating on a -L argument. | |||
|
3123 | if test "$name" != "" && test "$name" != "0"; then | |||
|
3124 | if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |||
|
3125 | case " $predeps $postdeps " in | |||
|
3126 | *" $a_deplib "*) | |||
|
3127 | newdeplibs="$newdeplibs $a_deplib" | |||
|
3128 | a_deplib="" | |||
|
3129 | ;; | |||
|
3130 | esac | |||
|
3131 | fi | |||
|
3132 | if test -n "$a_deplib" ; then | |||
|
3133 | libname=`eval \\$echo \"$libname_spec\"` | |||
|
3134 | for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do | |||
|
3135 | potential_libs=`ls $i/$libname[.-]* 2>/dev/null` | |||
|
3136 | for potent_lib in $potential_libs; do | |||
|
3137 | # Follow soft links. | |||
|
3138 | if ls -lLd "$potent_lib" 2>/dev/null \ | |||
|
3139 | | grep " -> " >/dev/null; then | |||
|
3140 | continue | |||
|
3141 | fi | |||
|
3142 | # The statement above tries to avoid entering an | |||
|
3143 | # endless loop below, in case of cyclic links. | |||
|
3144 | # We might still enter an endless loop, since a link | |||
|
3145 | # loop can be closed while we follow links, | |||
|
3146 | # but so what? | |||
|
3147 | potlib="$potent_lib" | |||
|
3148 | while test -h "$potlib" 2>/dev/null; do | |||
|
3149 | potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` | |||
|
3150 | case $potliblink in | |||
|
3151 | [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; | |||
|
3152 | *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; | |||
|
3153 | esac | |||
|
3154 | done | |||
|
3155 | if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | |||
|
3156 | | ${SED} 10q \ | |||
|
3157 | | $EGREP "$file_magic_regex" > /dev/null; then | |||
|
3158 | newdeplibs="$newdeplibs $a_deplib" | |||
|
3159 | a_deplib="" | |||
|
3160 | break 2 | |||
|
3161 | fi | |||
|
3162 | done | |||
|
3163 | done | |||
|
3164 | fi | |||
|
3165 | if test -n "$a_deplib" ; then | |||
|
3166 | droppeddeps=yes | |||
|
3167 | echo | |||
|
3168 | echo "*** Warning: linker path does not have real file for library $a_deplib." | |||
|
3169 | echo "*** I have the capability to make that library automatically link in when" | |||
|
3170 | echo "*** you link to this library. But I can only do this if you have a" | |||
|
3171 | echo "*** shared version of the library, which you do not appear to have" | |||
|
3172 | echo "*** because I did check the linker path looking for a file starting" | |||
|
3173 | if test -z "$potlib" ; then | |||
|
3174 | echo "*** with $libname but no candidates were found. (...for file magic test)" | |||
|
3175 | else | |||
|
3176 | echo "*** with $libname and none of the candidates passed a file format test" | |||
|
3177 | echo "*** using a file magic. Last file checked: $potlib" | |||
|
3178 | fi | |||
|
3179 | fi | |||
|
3180 | else | |||
|
3181 | # Add a -L argument. | |||
|
3182 | newdeplibs="$newdeplibs $a_deplib" | |||
|
3183 | fi | |||
|
3184 | done # Gone through all deplibs. | |||
|
3185 | ;; | |||
|
3186 | match_pattern*) | |||
|
3187 | set dummy $deplibs_check_method | |||
|
3188 | match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` | |||
|
3189 | for a_deplib in $deplibs; do | |||
|
3190 | name="`expr $a_deplib : '-l\(.*\)'`" | |||
|
3191 | # If $name is empty we are operating on a -L argument. | |||
|
3192 | if test -n "$name" && test "$name" != "0"; then | |||
|
3193 | if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |||
|
3194 | case " $predeps $postdeps " in | |||
|
3195 | *" $a_deplib "*) | |||
|
3196 | newdeplibs="$newdeplibs $a_deplib" | |||
|
3197 | a_deplib="" | |||
|
3198 | ;; | |||
|
3199 | esac | |||
|
3200 | fi | |||
|
3201 | if test -n "$a_deplib" ; then | |||
|
3202 | libname=`eval \\$echo \"$libname_spec\"` | |||
|
3203 | for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do | |||
|
3204 | potential_libs=`ls $i/$libname[.-]* 2>/dev/null` | |||
|
3205 | for potent_lib in $potential_libs; do | |||
|
3206 | potlib="$potent_lib" # see symlink-check above in file_magic test | |||
|
3207 | if eval echo \"$potent_lib\" 2>/dev/null \ | |||
|
3208 | | ${SED} 10q \ | |||
|
3209 | | $EGREP "$match_pattern_regex" > /dev/null; then | |||
|
3210 | newdeplibs="$newdeplibs $a_deplib" | |||
|
3211 | a_deplib="" | |||
|
3212 | break 2 | |||
|
3213 | fi | |||
|
3214 | done | |||
|
3215 | done | |||
|
3216 | fi | |||
|
3217 | if test -n "$a_deplib" ; then | |||
|
3218 | droppeddeps=yes | |||
|
3219 | echo | |||
|
3220 | echo "*** Warning: linker path does not have real file for library $a_deplib." | |||
|
3221 | echo "*** I have the capability to make that library automatically link in when" | |||
|
3222 | echo "*** you link to this library. But I can only do this if you have a" | |||
|
3223 | echo "*** shared version of the library, which you do not appear to have" | |||
|
3224 | echo "*** because I did check the linker path looking for a file starting" | |||
|
3225 | if test -z "$potlib" ; then | |||
|
3226 | echo "*** with $libname but no candidates were found. (...for regex pattern test)" | |||
|
3227 | else | |||
|
3228 | echo "*** with $libname and none of the candidates passed a file format test" | |||
|
3229 | echo "*** using a regex pattern. Last file checked: $potlib" | |||
|
3230 | fi | |||
|
3231 | fi | |||
|
3232 | else | |||
|
3233 | # Add a -L argument. | |||
|
3234 | newdeplibs="$newdeplibs $a_deplib" | |||
|
3235 | fi | |||
|
3236 | done # Gone through all deplibs. | |||
|
3237 | ;; | |||
|
3238 | none | unknown | *) | |||
|
3239 | newdeplibs="" | |||
|
3240 | tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ | |||
|
3241 | -e 's/ -[LR][^ ]*//g'` | |||
|
3242 | if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |||
|
3243 | for i in $predeps $postdeps ; do | |||
|
3244 | # can't use Xsed below, because $i might contain '/' | |||
|
3245 | tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` | |||
|
3246 | done | |||
|
3247 | fi | |||
|
3248 | if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ | |||
|
3249 | | grep . >/dev/null; then | |||
|
3250 | echo | |||
|
3251 | if test "X$deplibs_check_method" = "Xnone"; then | |||
|
3252 | echo "*** Warning: inter-library dependencies are not supported in this platform." | |||
|
3253 | else | |||
|
3254 | echo "*** Warning: inter-library dependencies are not known to be supported." | |||
|
3255 | fi | |||
|
3256 | echo "*** All declared inter-library dependencies are being dropped." | |||
|
3257 | droppeddeps=yes | |||
|
3258 | fi | |||
|
3259 | ;; | |||
|
3260 | esac | |||
|
3261 | versuffix=$versuffix_save | |||
|
3262 | major=$major_save | |||
|
3263 | release=$release_save | |||
|
3264 | libname=$libname_save | |||
|
3265 | name=$name_save | |||
|
3266 | ||||
|
3267 | case $host in | |||
|
3268 | *-*-rhapsody* | *-*-darwin1.[012]) | |||
|
3269 | # On Rhapsody replace the C library is the System framework | |||
|
3270 | newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` | |||
|
3271 | ;; | |||
|
3272 | esac | |||
|
3273 | ||||
|
3274 | if test "$droppeddeps" = yes; then | |||
|
3275 | if test "$module" = yes; then | |||
|
3276 | echo | |||
|
3277 | echo "*** Warning: libtool could not satisfy all declared inter-library" | |||
|
3278 | echo "*** dependencies of module $libname. Therefore, libtool will create" | |||
|
3279 | echo "*** a static module, that should work as long as the dlopening" | |||
|
3280 | echo "*** application is linked with the -dlopen flag." | |||
|
3281 | if test -z "$global_symbol_pipe"; then | |||
|
3282 | echo | |||
|
3283 | echo "*** However, this would only work if libtool was able to extract symbol" | |||
|
3284 | echo "*** lists from a program, using \`nm' or equivalent, but libtool could" | |||
|
3285 | echo "*** not find such a program. So, this module is probably useless." | |||
|
3286 | echo "*** \`nm' from GNU binutils and a full rebuild may help." | |||
|
3287 | fi | |||
|
3288 | if test "$build_old_libs" = no; then | |||
|
3289 | oldlibs="$output_objdir/$libname.$libext" | |||
|
3290 | build_libtool_libs=module | |||
|
3291 | build_old_libs=yes | |||
|
3292 | else | |||
|
3293 | build_libtool_libs=no | |||
|
3294 | fi | |||
|
3295 | else | |||
|
3296 | echo "*** The inter-library dependencies that have been dropped here will be" | |||
|
3297 | echo "*** automatically added whenever a program is linked with this library" | |||
|
3298 | echo "*** or is declared to -dlopen it." | |||
|
3299 | ||||
|
3300 | if test "$allow_undefined" = no; then | |||
|
3301 | echo | |||
|
3302 | echo "*** Since this library must not contain undefined symbols," | |||
|
3303 | echo "*** because either the platform does not support them or" | |||
|
3304 | echo "*** it was explicitly requested with -no-undefined," | |||
|
3305 | echo "*** libtool will only create a static version of it." | |||
|
3306 | if test "$build_old_libs" = no; then | |||
|
3307 | oldlibs="$output_objdir/$libname.$libext" | |||
|
3308 | build_libtool_libs=module | |||
|
3309 | build_old_libs=yes | |||
|
3310 | else | |||
|
3311 | build_libtool_libs=no | |||
|
3312 | fi | |||
|
3313 | fi | |||
|
3314 | fi | |||
|
3315 | fi | |||
|
3316 | # Done checking deplibs! | |||
|
3317 | deplibs=$newdeplibs | |||
|
3318 | fi | |||
|
3319 | ||||
|
3320 | # All the library-specific variables (install_libdir is set above). | |||
|
3321 | library_names= | |||
|
3322 | old_library= | |||
|
3323 | dlname= | |||
|
3324 | ||||
|
3325 | # Test again, we may have decided not to build it any more | |||
|
3326 | if test "$build_libtool_libs" = yes; then | |||
|
3327 | if test "$hardcode_into_libs" = yes; then | |||
|
3328 | # Hardcode the library paths | |||
|
3329 | hardcode_libdirs= | |||
|
3330 | dep_rpath= | |||
|
3331 | rpath="$finalize_rpath" | |||
|
3332 | test "$mode" != relink && rpath="$compile_rpath$rpath" | |||
|
3333 | for libdir in $rpath; do | |||
|
3334 | if test -n "$hardcode_libdir_flag_spec"; then | |||
|
3335 | if test -n "$hardcode_libdir_separator"; then | |||
|
3336 | if test -z "$hardcode_libdirs"; then | |||
|
3337 | hardcode_libdirs="$libdir" | |||
|
3338 | else | |||
|
3339 | # Just accumulate the unique libdirs. | |||
|
3340 | case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in | |||
|
3341 | *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) | |||
|
3342 | ;; | |||
|
3343 | *) | |||
|
3344 | hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" | |||
|
3345 | ;; | |||
|
3346 | esac | |||
|
3347 | fi | |||
|
3348 | else | |||
|
3349 | eval flag=\"$hardcode_libdir_flag_spec\" | |||
|
3350 | dep_rpath="$dep_rpath $flag" | |||
|
3351 | fi | |||
|
3352 | elif test -n "$runpath_var"; then | |||
|
3353 | case "$perm_rpath " in | |||
|
3354 | *" $libdir "*) ;; | |||
|
3355 | *) perm_rpath="$perm_rpath $libdir" ;; | |||
|
3356 | esac | |||
|
3357 | fi | |||
|
3358 | done | |||
|
3359 | # Substitute the hardcoded libdirs into the rpath. | |||
|
3360 | if test -n "$hardcode_libdir_separator" && | |||
|
3361 | test -n "$hardcode_libdirs"; then | |||
|
3362 | libdir="$hardcode_libdirs" | |||
|
3363 | eval dep_rpath=\"$hardcode_libdir_flag_spec\" | |||
|
3364 | fi | |||
|
3365 | if test -n "$runpath_var" && test -n "$perm_rpath"; then | |||
|
3366 | # We should set the runpath_var. | |||
|
3367 | rpath= | |||
|
3368 | for dir in $perm_rpath; do | |||
|
3369 | rpath="$rpath$dir:" | |||
|
3370 | done | |||
|
3371 | eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" | |||
|
3372 | fi | |||
|
3373 | test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" | |||
|
3374 | fi | |||
|
3375 | ||||
|
3376 | shlibpath="$finalize_shlibpath" | |||
|
3377 | test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" | |||
|
3378 | if test -n "$shlibpath"; then | |||
|
3379 | eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" | |||
|
3380 | fi | |||
|
3381 | ||||
|
3382 | # Get the real and link names of the library. | |||
|
3383 | eval library_names=\"$library_names_spec\" | |||
|
3384 | set dummy $library_names | |||
|
3385 | realname="$2" | |||
|
3386 | shift; shift | |||
|
3387 | ||||
|
3388 | if test -n "$soname_spec"; then | |||
|
3389 | eval soname=\"$soname_spec\" | |||
|
3390 | else | |||
|
3391 | soname="$realname" | |||
|
3392 | fi | |||
|
3393 | if test -z "$dlname"; then | |||
|
3394 | dlname=$soname | |||
|
3395 | fi | |||
|
3396 | ||||
|
3397 | lib="$output_objdir/$realname" | |||
|
3398 | for link | |||
|
3399 | do | |||
|
3400 | linknames="$linknames $link" | |||
|
3401 | done | |||
|
3402 | ||||
|
3403 | # Use standard objects if they are pic | |||
|
3404 | test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` | |||
|
3405 | ||||
|
3406 | # Prepare the list of exported symbols | |||
|
3407 | if test -z "$export_symbols"; then | |||
|
3408 | if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then | |||
|
3409 | $show "generating symbol list for \`$libname.la'" | |||
|
3410 | export_symbols="$output_objdir/$libname.exp" | |||
|
3411 | $run $rm $export_symbols | |||
|
3412 | eval cmds=\"$export_symbols_cmds\" | |||
|
3413 | save_ifs="$IFS"; IFS='~' | |||
|
3414 | for cmd in $cmds; do | |||
|
3415 | IFS="$save_ifs" | |||
|
3416 | if len=`expr "X$cmd" : ".*"` && | |||
|
3417 | test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then | |||
|
3418 | $show "$cmd" | |||
|
3419 | $run eval "$cmd" || exit $? | |||
|
3420 | skipped_export=false | |||
|
3421 | else | |||
|
3422 | # The command line is too long to execute in one step. | |||
|
3423 | $show "using reloadable object file for export list..." | |||
|
3424 | skipped_export=: | |||
|
3425 | fi | |||
|
3426 | done | |||
|
3427 | IFS="$save_ifs" | |||
|
3428 | if test -n "$export_symbols_regex"; then | |||
|
3429 | $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" | |||
|
3430 | $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' | |||
|
3431 | $show "$mv \"${export_symbols}T\" \"$export_symbols\"" | |||
|
3432 | $run eval '$mv "${export_symbols}T" "$export_symbols"' | |||
|
3433 | fi | |||
|
3434 | fi | |||
|
3435 | fi | |||
|
3436 | ||||
|
3437 | if test -n "$export_symbols" && test -n "$include_expsyms"; then | |||
|
3438 | $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' | |||
|
3439 | fi | |||
|
3440 | ||||
|
3441 | if test -n "$convenience"; then | |||
|
3442 | if test -n "$whole_archive_flag_spec"; then | |||
|
3443 | save_libobjs=$libobjs | |||
|
3444 | eval libobjs=\"\$libobjs $whole_archive_flag_spec\" | |||
|
3445 | else | |||
|
3446 | gentop="$output_objdir/${outputname}x" | |||
|
3447 | $show "${rm}r $gentop" | |||
|
3448 | $run ${rm}r "$gentop" | |||
|
3449 | $show "$mkdir $gentop" | |||
|
3450 | $run $mkdir "$gentop" | |||
|
3451 | status=$? | |||
|
3452 | if test "$status" -ne 0 && test ! -d "$gentop"; then | |||
|
3453 | exit $status | |||
|
3454 | fi | |||
|
3455 | generated="$generated $gentop" | |||
|
3456 | ||||
|
3457 | for xlib in $convenience; do | |||
|
3458 | # Extract the objects. | |||
|
3459 | case $xlib in | |||
|
3460 | [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; | |||
|
3461 | *) xabs=`pwd`"/$xlib" ;; | |||
|
3462 | esac | |||
|
3463 | xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` | |||
|
3464 | xdir="$gentop/$xlib" | |||
|
3465 | ||||
|
3466 | $show "${rm}r $xdir" | |||
|
3467 | $run ${rm}r "$xdir" | |||
|
3468 | $show "$mkdir $xdir" | |||
|
3469 | $run $mkdir "$xdir" | |||
|
3470 | status=$? | |||
|
3471 | if test "$status" -ne 0 && test ! -d "$xdir"; then | |||
|
3472 | exit $status | |||
|
3473 | fi | |||
|
3474 | $show "(cd $xdir && $AR x $xabs)" | |||
|
3475 | $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? | |||
|
3476 | ||||
|
3477 | libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` | |||
|
3478 | done | |||
|
3479 | fi | |||
|
3480 | fi | |||
|
3481 | ||||
|
3482 | if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then | |||
|
3483 | eval flag=\"$thread_safe_flag_spec\" | |||
|
3484 | linker_flags="$linker_flags $flag" | |||
|
3485 | fi | |||
|
3486 | ||||
|
3487 | # Make a backup of the uninstalled library when relinking | |||
|
3488 | if test "$mode" = relink; then | |||
|
3489 | $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? | |||
|
3490 | fi | |||
|
3491 | ||||
|
3492 | # Do each of the archive commands. | |||
|
3493 | if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then | |||
|
3494 | eval cmds=\"$archive_expsym_cmds\" | |||
|
3495 | else | |||
|
3496 | save_deplibs="$deplibs" | |||
|
3497 | for conv in $convenience; do | |||
|
3498 | tmp_deplibs= | |||
|
3499 | for test_deplib in $deplibs; do | |||
|
3500 | if test "$test_deplib" != "$conv"; then | |||
|
3501 | tmp_deplibs="$tmp_deplibs $test_deplib" | |||
|
3502 | fi | |||
|
3503 | done | |||
|
3504 | deplibs="$tmp_deplibs" | |||
|
3505 | done | |||
|
3506 | eval cmds=\"$archive_cmds\" | |||
|
3507 | deplibs="$save_deplibs" | |||
|
3508 | fi | |||
|
3509 | ||||
|
3510 | if test "X$skipped_export" != "X:" && len=`expr "X$cmds" : ".*"` && | |||
|
3511 | test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then | |||
|
3512 | : | |||
|
3513 | else | |||
|
3514 | # The command line is too long to link in one step, link piecewise. | |||
|
3515 | $echo "creating reloadable object files..." | |||
|
3516 | ||||
|
3517 | # Save the value of $output and $libobjs because we want to | |||
|
3518 | # use them later. If we have whole_archive_flag_spec, we | |||
|
3519 | # want to use save_libobjs as it was before | |||
|
3520 | # whole_archive_flag_spec was expanded, because we can't | |||
|
3521 | # assume the linker understands whole_archive_flag_spec. | |||
|
3522 | # This may have to be revisited, in case too many | |||
|
3523 | # convenience libraries get linked in and end up exceeding | |||
|
3524 | # the spec. | |||
|
3525 | if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then | |||
|
3526 | save_libobjs=$libobjs | |||
|
3527 | fi | |||
|
3528 | save_output=$output | |||
|
3529 | ||||
|
3530 | # Clear the reloadable object creation command queue and | |||
|
3531 | # initialize k to one. | |||
|
3532 | test_cmds= | |||
|
3533 | concat_cmds= | |||
|
3534 | objlist= | |||
|
3535 | delfiles= | |||
|
3536 | last_robj= | |||
|
3537 | k=1 | |||
|
3538 | output=$output_objdir/$save_output-${k}.$objext | |||
|
3539 | # Loop over the list of objects to be linked. | |||
|
3540 | for obj in $save_libobjs | |||
|
3541 | do | |||
|
3542 | eval test_cmds=\"$reload_cmds $objlist $last_robj\" | |||
|
3543 | if test "X$objlist" = X || | |||
|
3544 | { len=`expr "X$test_cmds" : ".*"` && | |||
|
3545 | test "$len" -le "$max_cmd_len"; }; then | |||
|
3546 | objlist="$objlist $obj" | |||
|
3547 | else | |||
|
3548 | # The command $test_cmds is almost too long, add a | |||
|
3549 | # command to the queue. | |||
|
3550 | if test "$k" -eq 1 ; then | |||
|
3551 | # The first file doesn't have a previous command to add. | |||
|
3552 | eval concat_cmds=\"$reload_cmds $objlist $last_robj\" | |||
|
3553 | else | |||
|
3554 | # All subsequent reloadable object files will link in | |||
|
3555 | # the last one created. | |||
|
3556 | eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" | |||
|
3557 | fi | |||
|
3558 | last_robj=$output_objdir/$save_output-${k}.$objext | |||
|
3559 | k=`expr $k + 1` | |||
|
3560 | output=$output_objdir/$save_output-${k}.$objext | |||
|
3561 | objlist=$obj | |||
|
3562 | len=1 | |||
|
3563 | fi | |||
|
3564 | done | |||
|
3565 | # Handle the remaining objects by creating one last | |||
|
3566 | # reloadable object file. All subsequent reloadable object | |||
|
3567 | # files will link in the last one created. | |||
|
3568 | test -z "$concat_cmds" || concat_cmds=$concat_cmds~ | |||
|
3569 | eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" | |||
|
3570 | ||||
|
3571 | if ${skipped_export-false}; then | |||
|
3572 | $show "generating symbol list for \`$libname.la'" | |||
|
3573 | export_symbols="$output_objdir/$libname.exp" | |||
|
3574 | $run $rm $export_symbols | |||
|
3575 | libobjs=$output | |||
|
3576 | # Append the command to create the export file. | |||
|
3577 | eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" | |||
|
3578 | fi | |||
|
3579 | ||||
|
3580 | # Set up a command to remove the reloadale object files | |||
|
3581 | # after they are used. | |||
|
3582 | i=0 | |||
|
3583 | while test "$i" -lt "$k" | |||
|
3584 | do | |||
|
3585 | i=`expr $i + 1` | |||
|
3586 | delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" | |||
|
3587 | done | |||
|
3588 | ||||
|
3589 | $echo "creating a temporary reloadable object file: $output" | |||
|
3590 | ||||
|
3591 | # Loop through the commands generated above and execute them. | |||
|
3592 | save_ifs="$IFS"; IFS='~' | |||
|
3593 | for cmd in $concat_cmds; do | |||
|
3594 | IFS="$save_ifs" | |||
|
3595 | $show "$cmd" | |||
|
3596 | $run eval "$cmd" || exit $? | |||
|
3597 | done | |||
|
3598 | IFS="$save_ifs" | |||
|
3599 | ||||
|
3600 | libobjs=$output | |||
|
3601 | # Restore the value of output. | |||
|
3602 | output=$save_output | |||
|
3603 | ||||
|
3604 | if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then | |||
|
3605 | eval libobjs=\"\$libobjs $whole_archive_flag_spec\" | |||
|
3606 | fi | |||
|
3607 | # Expand the library linking commands again to reset the | |||
|
3608 | # value of $libobjs for piecewise linking. | |||
|
3609 | ||||
|
3610 | # Do each of the archive commands. | |||
|
3611 | if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then | |||
|
3612 | eval cmds=\"$archive_expsym_cmds\" | |||
|
3613 | else | |||
|
3614 | eval cmds=\"$archive_cmds\" | |||
|
3615 | fi | |||
|
3616 | ||||
|
3617 | # Append the command to remove the reloadable object files | |||
|
3618 | # to the just-reset $cmds. | |||
|
3619 | eval cmds=\"\$cmds~$rm $delfiles\" | |||
|
3620 | fi | |||
|
3621 | save_ifs="$IFS"; IFS='~' | |||
|
3622 | for cmd in $cmds; do | |||
|
3623 | IFS="$save_ifs" | |||
|
3624 | $show "$cmd" | |||
|
3625 | $run eval "$cmd" || exit $? | |||
|
3626 | done | |||
|
3627 | IFS="$save_ifs" | |||
|
3628 | ||||
|
3629 | # Restore the uninstalled library and exit | |||
|
3630 | if test "$mode" = relink; then | |||
|
3631 | $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? | |||
|
3632 | exit 0 | |||
|
3633 | fi | |||
|
3634 | ||||
|
3635 | # Create links to the real library. | |||
|
3636 | for linkname in $linknames; do | |||
|
3637 | if test "$realname" != "$linkname"; then | |||
|
3638 | $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" | |||
|
3639 | $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? | |||
|
3640 | fi | |||
|
3641 | done | |||
|
3642 | ||||
|
3643 | # If -module or -export-dynamic was specified, set the dlname. | |||
|
3644 | if test "$module" = yes || test "$export_dynamic" = yes; then | |||
|
3645 | # On all known operating systems, these are identical. | |||
|
3646 | dlname="$soname" | |||
|
3647 | fi | |||
|
3648 | fi | |||
|
3649 | ;; | |||
|
3650 | ||||
|
3651 | obj) | |||
|
3652 | if test -n "$deplibs"; then | |||
|
3653 | $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 | |||
|
3654 | fi | |||
|
3655 | ||||
|
3656 | if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then | |||
|
3657 | $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 | |||
|
3658 | fi | |||
|
3659 | ||||
|
3660 | if test -n "$rpath"; then | |||
|
3661 | $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 | |||
|
3662 | fi | |||
|
3663 | ||||
|
3664 | if test -n "$xrpath"; then | |||
|
3665 | $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 | |||
|
3666 | fi | |||
|
3667 | ||||
|
3668 | if test -n "$vinfo"; then | |||
|
3669 | $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 | |||
|
3670 | fi | |||
|
3671 | ||||
|
3672 | if test -n "$release"; then | |||
|
3673 | $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 | |||
|
3674 | fi | |||
|
3675 | ||||
|
3676 | case $output in | |||
|
3677 | *.lo) | |||
|
3678 | if test -n "$objs$old_deplibs"; then | |||
|
3679 | $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 | |||
|
3680 | exit 1 | |||
|
3681 | fi | |||
|
3682 | libobj="$output" | |||
|
3683 | obj=`$echo "X$output" | $Xsed -e "$lo2o"` | |||
|
3684 | ;; | |||
|
3685 | *) | |||
|
3686 | libobj= | |||
|
3687 | obj="$output" | |||
|
3688 | ;; | |||
|
3689 | esac | |||
|
3690 | ||||
|
3691 | # Delete the old objects. | |||
|
3692 | $run $rm $obj $libobj | |||
|
3693 | ||||
|
3694 | # Objects from convenience libraries. This assumes | |||
|
3695 | # single-version convenience libraries. Whenever we create | |||
|
3696 | # different ones for PIC/non-PIC, this we'll have to duplicate | |||
|
3697 | # the extraction. | |||
|
3698 | reload_conv_objs= | |||
|
3699 | gentop= | |||
|
3700 | # reload_cmds runs $LD directly, so let us get rid of | |||
|
3701 | # -Wl from whole_archive_flag_spec | |||
|
3702 | wl= | |||
|
3703 | ||||
|
3704 | if test -n "$convenience"; then | |||
|
3705 | if test -n "$whole_archive_flag_spec"; then | |||
|
3706 | eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" | |||
|
3707 | else | |||
|
3708 | gentop="$output_objdir/${obj}x" | |||
|
3709 | $show "${rm}r $gentop" | |||
|
3710 | $run ${rm}r "$gentop" | |||
|
3711 | $show "$mkdir $gentop" | |||
|
3712 | $run $mkdir "$gentop" | |||
|
3713 | status=$? | |||
|
3714 | if test "$status" -ne 0 && test ! -d "$gentop"; then | |||
|
3715 | exit $status | |||
|
3716 | fi | |||
|
3717 | generated="$generated $gentop" | |||
|
3718 | ||||
|
3719 | for xlib in $convenience; do | |||
|
3720 | # Extract the objects. | |||
|
3721 | case $xlib in | |||
|
3722 | [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; | |||
|
3723 | *) xabs=`pwd`"/$xlib" ;; | |||
|
3724 | esac | |||
|
3725 | xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` | |||
|
3726 | xdir="$gentop/$xlib" | |||
|
3727 | ||||
|
3728 | $show "${rm}r $xdir" | |||
|
3729 | $run ${rm}r "$xdir" | |||
|
3730 | $show "$mkdir $xdir" | |||
|
3731 | $run $mkdir "$xdir" | |||
|
3732 | status=$? | |||
|
3733 | if test "$status" -ne 0 && test ! -d "$xdir"; then | |||
|
3734 | exit $status | |||
|
3735 | fi | |||
|
3736 | $show "(cd $xdir && $AR x $xabs)" | |||
|
3737 | $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? | |||
|
3738 | ||||
|
3739 | reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` | |||
|
3740 | done | |||
|
3741 | fi | |||
|
3742 | fi | |||
|
3743 | ||||
|
3744 | # Create the old-style object. | |||
|
3745 | reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test | |||
|
3746 | ||||
|
3747 | output="$obj" | |||
|
3748 | eval cmds=\"$reload_cmds\" | |||
|
3749 | save_ifs="$IFS"; IFS='~' | |||
|
3750 | for cmd in $cmds; do | |||
|
3751 | IFS="$save_ifs" | |||
|
3752 | $show "$cmd" | |||
|
3753 | $run eval "$cmd" || exit $? | |||
|
3754 | done | |||
|
3755 | IFS="$save_ifs" | |||
|
3756 | ||||
|
3757 | # Exit if we aren't doing a library object file. | |||
|
3758 | if test -z "$libobj"; then | |||
|
3759 | if test -n "$gentop"; then | |||
|
3760 | $show "${rm}r $gentop" | |||
|
3761 | $run ${rm}r $gentop | |||
|
3762 | fi | |||
|
3763 | ||||
|
3764 | exit 0 | |||
|
3765 | fi | |||
|
3766 | ||||
|
3767 | if test "$build_libtool_libs" != yes; then | |||
|
3768 | if test -n "$gentop"; then | |||
|
3769 | $show "${rm}r $gentop" | |||
|
3770 | $run ${rm}r $gentop | |||
|
3771 | fi | |||
|
3772 | ||||
|
3773 | # Create an invalid libtool object if no PIC, so that we don't | |||
|
3774 | # accidentally link it into a program. | |||
|
3775 | # $show "echo timestamp > $libobj" | |||
|
3776 | # $run eval "echo timestamp > $libobj" || exit $? | |||
|
3777 | exit 0 | |||
|
3778 | fi | |||
|
3779 | ||||
|
3780 | if test -n "$pic_flag" || test "$pic_mode" != default; then | |||
|
3781 | # Only do commands if we really have different PIC objects. | |||
|
3782 | reload_objs="$libobjs $reload_conv_objs" | |||
|
3783 | output="$libobj" | |||
|
3784 | eval cmds=\"$reload_cmds\" | |||
|
3785 | save_ifs="$IFS"; IFS='~' | |||
|
3786 | for cmd in $cmds; do | |||
|
3787 | IFS="$save_ifs" | |||
|
3788 | $show "$cmd" | |||
|
3789 | $run eval "$cmd" || exit $? | |||
|
3790 | done | |||
|
3791 | IFS="$save_ifs" | |||
|
3792 | fi | |||
|
3793 | ||||
|
3794 | if test -n "$gentop"; then | |||
|
3795 | $show "${rm}r $gentop" | |||
|
3796 | $run ${rm}r $gentop | |||
|
3797 | fi | |||
|
3798 | ||||
|
3799 | exit 0 | |||
|
3800 | ;; | |||
|
3801 | ||||
|
3802 | prog) | |||
|
3803 | case $host in | |||
|
3804 | *cygwin*) output=`echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; | |||
|
3805 | esac | |||
|
3806 | if test -n "$vinfo"; then | |||
|
3807 | $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 | |||
|
3808 | fi | |||
|
3809 | ||||
|
3810 | if test -n "$release"; then | |||
|
3811 | $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 | |||
|
3812 | fi | |||
|
3813 | ||||
|
3814 | if test "$preload" = yes; then | |||
|
3815 | if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && | |||
|
3816 | test "$dlopen_self_static" = unknown; then | |||
|
3817 | $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." | |||
|
3818 | fi | |||
|
3819 | fi | |||
|
3820 | ||||
|
3821 | case $host in | |||
|
3822 | *-*-rhapsody* | *-*-darwin1.[012]) | |||
|
3823 | # On Rhapsody replace the C library is the System framework | |||
|
3824 | compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` | |||
|
3825 | finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` | |||
|
3826 | ;; | |||
|
3827 | esac | |||
|
3828 | ||||
|
3829 | compile_command="$compile_command $compile_deplibs" | |||
|
3830 | finalize_command="$finalize_command $finalize_deplibs" | |||
|
3831 | ||||
|
3832 | if test -n "$rpath$xrpath"; then | |||
|
3833 | # If the user specified any rpath flags, then add them. | |||
|
3834 | for libdir in $rpath $xrpath; do | |||
|
3835 | # This is the magic to use -rpath. | |||
|
3836 | case "$finalize_rpath " in | |||
|
3837 | *" $libdir "*) ;; | |||
|
3838 | *) finalize_rpath="$finalize_rpath $libdir" ;; | |||
|
3839 | esac | |||
|
3840 | done | |||
|
3841 | fi | |||
|
3842 | ||||
|
3843 | # Now hardcode the library paths | |||
|
3844 | rpath= | |||
|
3845 | hardcode_libdirs= | |||
|
3846 | for libdir in $compile_rpath $finalize_rpath; do | |||
|
3847 | if test -n "$hardcode_libdir_flag_spec"; then | |||
|
3848 | if test -n "$hardcode_libdir_separator"; then | |||
|
3849 | if test -z "$hardcode_libdirs"; then | |||
|
3850 | hardcode_libdirs="$libdir" | |||
|
3851 | else | |||
|
3852 | # Just accumulate the unique libdirs. | |||
|
3853 | case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in | |||
|
3854 | *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) | |||
|
3855 | ;; | |||
|
3856 | *) | |||
|
3857 | hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" | |||
|
3858 | ;; | |||
|
3859 | esac | |||
|
3860 | fi | |||
|
3861 | else | |||
|
3862 | eval flag=\"$hardcode_libdir_flag_spec\" | |||
|
3863 | rpath="$rpath $flag" | |||
|
3864 | fi | |||
|
3865 | elif test -n "$runpath_var"; then | |||
|
3866 | case "$perm_rpath " in | |||
|
3867 | *" $libdir "*) ;; | |||
|
3868 | *) perm_rpath="$perm_rpath $libdir" ;; | |||
|
3869 | esac | |||
|
3870 | fi | |||
|
3871 | case $host in | |||
|
3872 | *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) | |||
|
3873 | case :$dllsearchpath: in | |||
|
3874 | *":$libdir:"*) ;; | |||
|
3875 | *) dllsearchpath="$dllsearchpath:$libdir";; | |||
|
3876 | esac | |||
|
3877 | ;; | |||
|
3878 | esac | |||
|
3879 | done | |||
|
3880 | # Substitute the hardcoded libdirs into the rpath. | |||
|
3881 | if test -n "$hardcode_libdir_separator" && | |||
|
3882 | test -n "$hardcode_libdirs"; then | |||
|
3883 | libdir="$hardcode_libdirs" | |||
|
3884 | eval rpath=\" $hardcode_libdir_flag_spec\" | |||
|
3885 | fi | |||
|
3886 | compile_rpath="$rpath" | |||
|
3887 | ||||
|
3888 | rpath= | |||
|
3889 | hardcode_libdirs= | |||
|
3890 | for libdir in $finalize_rpath; do | |||
|
3891 | if test -n "$hardcode_libdir_flag_spec"; then | |||
|
3892 | if test -n "$hardcode_libdir_separator"; then | |||
|
3893 | if test -z "$hardcode_libdirs"; then | |||
|
3894 | hardcode_libdirs="$libdir" | |||
|
3895 | else | |||
|
3896 | # Just accumulate the unique libdirs. | |||
|
3897 | case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in | |||
|
3898 | *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) | |||
|
3899 | ;; | |||
|
3900 | *) | |||
|
3901 | hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" | |||
|
3902 | ;; | |||
|
3903 | esac | |||
|
3904 | fi | |||
|
3905 | else | |||
|
3906 | eval flag=\"$hardcode_libdir_flag_spec\" | |||
|
3907 | rpath="$rpath $flag" | |||
|
3908 | fi | |||
|
3909 | elif test -n "$runpath_var"; then | |||
|
3910 | case "$finalize_perm_rpath " in | |||
|
3911 | *" $libdir "*) ;; | |||
|
3912 | *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; | |||
|
3913 | esac | |||
|
3914 | fi | |||
|
3915 | done | |||
|
3916 | # Substitute the hardcoded libdirs into the rpath. | |||
|
3917 | if test -n "$hardcode_libdir_separator" && | |||
|
3918 | test -n "$hardcode_libdirs"; then | |||
|
3919 | libdir="$hardcode_libdirs" | |||
|
3920 | eval rpath=\" $hardcode_libdir_flag_spec\" | |||
|
3921 | fi | |||
|
3922 | finalize_rpath="$rpath" | |||
|
3923 | ||||
|
3924 | if test -n "$libobjs" && test "$build_old_libs" = yes; then | |||
|
3925 | # Transform all the library objects into standard objects. | |||
|
3926 | compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` | |||
|
3927 | finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` | |||
|
3928 | fi | |||
|
3929 | ||||
|
3930 | dlsyms= | |||
|
3931 | if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then | |||
|
3932 | if test -n "$NM" && test -n "$global_symbol_pipe"; then | |||
|
3933 | dlsyms="${outputname}S.c" | |||
|
3934 | else | |||
|
3935 | $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 | |||
|
3936 | fi | |||
|
3937 | fi | |||
|
3938 | ||||
|
3939 | if test -n "$dlsyms"; then | |||
|
3940 | case $dlsyms in | |||
|
3941 | "") ;; | |||
|
3942 | *.c) | |||
|
3943 | # Discover the nlist of each of the dlfiles. | |||
|
3944 | nlist="$output_objdir/${outputname}.nm" | |||
|
3945 | ||||
|
3946 | $show "$rm $nlist ${nlist}S ${nlist}T" | |||
|
3947 | $run $rm "$nlist" "${nlist}S" "${nlist}T" | |||
|
3948 | ||||
|
3949 | # Parse the name list into a source file. | |||
|
3950 | $show "creating $output_objdir/$dlsyms" | |||
|
3951 | ||||
|
3952 | test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ | |||
|
3953 | /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ | |||
|
3954 | /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ | |||
|
3955 | ||||
|
3956 | #ifdef __cplusplus | |||
|
3957 | extern \"C\" { | |||
|
3958 | #endif | |||
|
3959 | ||||
|
3960 | /* Prevent the only kind of declaration conflicts we can make. */ | |||
|
3961 | #define lt_preloaded_symbols some_other_symbol | |||
|
3962 | ||||
|
3963 | /* External symbol declarations for the compiler. */\ | |||
|
3964 | " | |||
|
3965 | ||||
|
3966 | if test "$dlself" = yes; then | |||
|
3967 | $show "generating symbol list for \`$output'" | |||
|
3968 | ||||
|
3969 | test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" | |||
|
3970 | ||||
|
3971 | # Add our own program objects to the symbol list. | |||
|
3972 | progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` | |||
|
3973 | for arg in $progfiles; do | |||
|
3974 | $show "extracting global C symbols from \`$arg'" | |||
|
3975 | $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" | |||
|
3976 | done | |||
|
3977 | ||||
|
3978 | if test -n "$exclude_expsyms"; then | |||
|
3979 | $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' | |||
|
3980 | $run eval '$mv "$nlist"T "$nlist"' | |||
|
3981 | fi | |||
|
3982 | ||||
|
3983 | if test -n "$export_symbols_regex"; then | |||
|
3984 | $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' | |||
|
3985 | $run eval '$mv "$nlist"T "$nlist"' | |||
|
3986 | fi | |||
|
3987 | ||||
|
3988 | # Prepare the list of exported symbols | |||
|
3989 | if test -z "$export_symbols"; then | |||
|
3990 | export_symbols="$output_objdir/$output.exp" | |||
|
3991 | $run $rm $export_symbols | |||
|
3992 | $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' | |||
|
3993 | else | |||
|
3994 | $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' | |||
|
3995 | $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' | |||
|
3996 | $run eval 'mv "$nlist"T "$nlist"' | |||
|
3997 | fi | |||
|
3998 | fi | |||
|
3999 | ||||
|
4000 | for arg in $dlprefiles; do | |||
|
4001 | $show "extracting global C symbols from \`$arg'" | |||
|
4002 | name=`echo "$arg" | ${SED} -e 's%^.*/%%'` | |||
|
4003 | $run eval 'echo ": $name " >> "$nlist"' | |||
|
4004 | $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" | |||
|
4005 | done | |||
|
4006 | ||||
|
4007 | if test -z "$run"; then | |||
|
4008 | # Make sure we have at least an empty file. | |||
|
4009 | test -f "$nlist" || : > "$nlist" | |||
|
4010 | ||||
|
4011 | if test -n "$exclude_expsyms"; then | |||
|
4012 | $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T | |||
|
4013 | $mv "$nlist"T "$nlist" | |||
|
4014 | fi | |||
|
4015 | ||||
|
4016 | # Try sorting and uniquifying the output. | |||
|
4017 | if grep -v "^: " < "$nlist" | | |||
|
4018 | if sort -k 3 </dev/null >/dev/null 2>&1; then | |||
|
4019 | sort -k 3 | |||
|
4020 | else | |||
|
4021 | sort +2 | |||
|
4022 | fi | | |||
|
4023 | uniq > "$nlist"S; then | |||
|
4024 | : | |||
|
4025 | else | |||
|
4026 | grep -v "^: " < "$nlist" > "$nlist"S | |||
|
4027 | fi | |||
|
4028 | ||||
|
4029 | if test -f "$nlist"S; then | |||
|
4030 | eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' | |||
|
4031 | else | |||
|
4032 | echo '/* NONE */' >> "$output_objdir/$dlsyms" | |||
|
4033 | fi | |||
|
4034 | ||||
|
4035 | $echo >> "$output_objdir/$dlsyms" "\ | |||
|
4036 | ||||
|
4037 | #undef lt_preloaded_symbols | |||
|
4038 | ||||
|
4039 | #if defined (__STDC__) && __STDC__ | |||
|
4040 | # define lt_ptr void * | |||
|
4041 | #else | |||
|
4042 | # define lt_ptr char * | |||
|
4043 | # define const | |||
|
4044 | #endif | |||
|
4045 | ||||
|
4046 | /* The mapping between symbol names and symbols. */ | |||
|
4047 | const struct { | |||
|
4048 | const char *name; | |||
|
4049 | lt_ptr address; | |||
|
4050 | } | |||
|
4051 | lt_preloaded_symbols[] = | |||
|
4052 | {\ | |||
|
4053 | " | |||
|
4054 | ||||
|
4055 | eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" | |||
|
4056 | ||||
|
4057 | $echo >> "$output_objdir/$dlsyms" "\ | |||
|
4058 | {0, (lt_ptr) 0} | |||
|
4059 | }; | |||
|
4060 | ||||
|
4061 | /* This works around a problem in FreeBSD linker */ | |||
|
4062 | #ifdef FREEBSD_WORKAROUND | |||
|
4063 | static const void *lt_preloaded_setup() { | |||
|
4064 | return lt_preloaded_symbols; | |||
|
4065 | } | |||
|
4066 | #endif | |||
|
4067 | ||||
|
4068 | #ifdef __cplusplus | |||
|
4069 | } | |||
|
4070 | #endif\ | |||
|
4071 | " | |||
|
4072 | fi | |||
|
4073 | ||||
|
4074 | pic_flag_for_symtable= | |||
|
4075 | case $host in | |||
|
4076 | # compiling the symbol table file with pic_flag works around | |||
|
4077 | # a FreeBSD bug that causes programs to crash when -lm is | |||
|
4078 | # linked before any other PIC object. But we must not use | |||
|
4079 | # pic_flag when linking with -static. The problem exists in | |||
|
4080 | # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. | |||
|
4081 | *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) | |||
|
4082 | case "$compile_command " in | |||
|
4083 | *" -static "*) ;; | |||
|
4084 | *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; | |||
|
4085 | esac;; | |||
|
4086 | *-*-hpux*) | |||
|
4087 | case "$compile_command " in | |||
|
4088 | *" -static "*) ;; | |||
|
4089 | *) pic_flag_for_symtable=" $pic_flag";; | |||
|
4090 | esac | |||
|
4091 | esac | |||
|
4092 | ||||
|
4093 | # Now compile the dynamic symbol file. | |||
|
4094 | $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" | |||
|
4095 | $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? | |||
|
4096 | ||||
|
4097 | # Clean up the generated files. | |||
|
4098 | $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" | |||
|
4099 | $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" | |||
|
4100 | ||||
|
4101 | # Transform the symbol file into the correct name. | |||
|
4102 | compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` | |||
|
4103 | finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` | |||
|
4104 | ;; | |||
|
4105 | *) | |||
|
4106 | $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 | |||
|
4107 | exit 1 | |||
|
4108 | ;; | |||
|
4109 | esac | |||
|
4110 | else | |||
|
4111 | # We keep going just in case the user didn't refer to | |||
|
4112 | # lt_preloaded_symbols. The linker will fail if global_symbol_pipe | |||
|
4113 | # really was required. | |||
|
4114 | ||||
|
4115 | # Nullify the symbol file. | |||
|
4116 | compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` | |||
|
4117 | finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` | |||
|
4118 | fi | |||
|
4119 | ||||
|
4120 | if test "$need_relink" = no || test "$build_libtool_libs" != yes; then | |||
|
4121 | # Replace the output file specification. | |||
|
4122 | compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` | |||
|
4123 | link_command="$compile_command$compile_rpath" | |||
|
4124 | ||||
|
4125 | # We have no uninstalled library dependencies, so finalize right now. | |||
|
4126 | $show "$link_command" | |||
|
4127 | $run eval "$link_command" | |||
|
4128 | status=$? | |||
|
4129 | ||||
|
4130 | # Delete the generated files. | |||
|
4131 | if test -n "$dlsyms"; then | |||
|
4132 | $show "$rm $output_objdir/${outputname}S.${objext}" | |||
|
4133 | $run $rm "$output_objdir/${outputname}S.${objext}" | |||
|
4134 | fi | |||
|
4135 | ||||
|
4136 | exit $status | |||
|
4137 | fi | |||
|
4138 | ||||
|
4139 | if test -n "$shlibpath_var"; then | |||
|
4140 | # We should set the shlibpath_var | |||
|
4141 | rpath= | |||
|
4142 | for dir in $temp_rpath; do | |||
|
4143 | case $dir in | |||
|
4144 | [\\/]* | [A-Za-z]:[\\/]*) | |||
|
4145 | # Absolute path. | |||
|
4146 | rpath="$rpath$dir:" | |||
|
4147 | ;; | |||
|
4148 | *) | |||
|
4149 | # Relative path: add a thisdir entry. | |||
|
4150 | rpath="$rpath\$thisdir/$dir:" | |||
|
4151 | ;; | |||
|
4152 | esac | |||
|
4153 | done | |||
|
4154 | temp_rpath="$rpath" | |||
|
4155 | fi | |||
|
4156 | ||||
|
4157 | if test -n "$compile_shlibpath$finalize_shlibpath"; then | |||
|
4158 | compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" | |||
|
4159 | fi | |||
|
4160 | if test -n "$finalize_shlibpath"; then | |||
|
4161 | finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" | |||
|
4162 | fi | |||
|
4163 | ||||
|
4164 | compile_var= | |||
|
4165 | finalize_var= | |||
|
4166 | if test -n "$runpath_var"; then | |||
|
4167 | if test -n "$perm_rpath"; then | |||
|
4168 | # We should set the runpath_var. | |||
|
4169 | rpath= | |||
|
4170 | for dir in $perm_rpath; do | |||
|
4171 | rpath="$rpath$dir:" | |||
|
4172 | done | |||
|
4173 | compile_var="$runpath_var=\"$rpath\$$runpath_var\" " | |||
|
4174 | fi | |||
|
4175 | if test -n "$finalize_perm_rpath"; then | |||
|
4176 | # We should set the runpath_var. | |||
|
4177 | rpath= | |||
|
4178 | for dir in $finalize_perm_rpath; do | |||
|
4179 | rpath="$rpath$dir:" | |||
|
4180 | done | |||
|
4181 | finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " | |||
|
4182 | fi | |||
|
4183 | fi | |||
|
4184 | ||||
|
4185 | if test "$no_install" = yes; then | |||
|
4186 | # We don't need to create a wrapper script. | |||
|
4187 | link_command="$compile_var$compile_command$compile_rpath" | |||
|
4188 | # Replace the output file specification. | |||
|
4189 | link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` | |||
|
4190 | # Delete the old output file. | |||
|
4191 | $run $rm $output | |||
|
4192 | # Link the executable and exit | |||
|
4193 | $show "$link_command" | |||
|
4194 | $run eval "$link_command" || exit $? | |||
|
4195 | exit 0 | |||
|
4196 | fi | |||
|
4197 | ||||
|
4198 | if test "$hardcode_action" = relink; then | |||
|
4199 | # Fast installation is not supported | |||
|
4200 | link_command="$compile_var$compile_command$compile_rpath" | |||
|
4201 | relink_command="$finalize_var$finalize_command$finalize_rpath" | |||
|
4202 | ||||
|
4203 | $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 | |||
|
4204 | $echo "$modename: \`$output' will be relinked during installation" 1>&2 | |||
|
4205 | else | |||
|
4206 | if test "$fast_install" != no; then | |||
|
4207 | link_command="$finalize_var$compile_command$finalize_rpath" | |||
|
4208 | if test "$fast_install" = yes; then | |||
|
4209 | relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` | |||
|
4210 | else | |||
|
4211 | # fast_install is set to needless | |||
|
4212 | relink_command= | |||
|
4213 | fi | |||
|
4214 | else | |||
|
4215 | link_command="$compile_var$compile_command$compile_rpath" | |||
|
4216 | relink_command="$finalize_var$finalize_command$finalize_rpath" | |||
|
4217 | fi | |||
|
4218 | fi | |||
|
4219 | ||||
|
4220 | # Replace the output file specification. | |||
|
4221 | link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` | |||
|
4222 | ||||
|
4223 | # Delete the old output files. | |||
|
4224 | $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname | |||
|
4225 | ||||
|
4226 | $show "$link_command" | |||
|
4227 | $run eval "$link_command" || exit $? | |||
|
4228 | ||||
|
4229 | # Now create the wrapper script. | |||
|
4230 | $show "creating $output" | |||
|
4231 | ||||
|
4232 | # Quote the relink command for shipping. | |||
|
4233 | if test -n "$relink_command"; then | |||
|
4234 | # Preserve any variables that may affect compiler behavior | |||
|
4235 | for var in $variables_saved_for_relink; do | |||
|
4236 | if eval test -z \"\${$var+set}\"; then | |||
|
4237 | relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" | |||
|
4238 | elif eval var_value=\$$var; test -z "$var_value"; then | |||
|
4239 | relink_command="$var=; export $var; $relink_command" | |||
|
4240 | else | |||
|
4241 | var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` | |||
|
4242 | relink_command="$var=\"$var_value\"; export $var; $relink_command" | |||
|
4243 | fi | |||
|
4244 | done | |||
|
4245 | relink_command="(cd `pwd`; $relink_command)" | |||
|
4246 | relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` | |||
|
4247 | fi | |||
|
4248 | ||||
|
4249 | # Quote $echo for shipping. | |||
|
4250 | if test "X$echo" = "X$SHELL $0 --fallback-echo"; then | |||
|
4251 | case $0 in | |||
|
4252 | [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; | |||
|
4253 | *) qecho="$SHELL `pwd`/$0 --fallback-echo";; | |||
|
4254 | esac | |||
|
4255 | qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` | |||
|
4256 | else | |||
|
4257 | qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` | |||
|
4258 | fi | |||
|
4259 | ||||
|
4260 | # Only actually do things if our run command is non-null. | |||
|
4261 | if test -z "$run"; then | |||
|
4262 | # win32 will think the script is a binary if it has | |||
|
4263 | # a .exe suffix, so we strip it off here. | |||
|
4264 | case $output in | |||
|
4265 | *.exe) output=`echo $output|${SED} 's,.exe$,,'` ;; | |||
|
4266 | esac | |||
|
4267 | # test for cygwin because mv fails w/o .exe extensions | |||
|
4268 | case $host in | |||
|
4269 | *cygwin*) | |||
|
4270 | exeext=.exe | |||
|
4271 | outputname=`echo $outputname|${SED} 's,.exe$,,'` ;; | |||
|
4272 | *) exeext= ;; | |||
|
4273 | esac | |||
|
4274 | $rm $output | |||
|
4275 | trap "$rm $output; exit 1" 1 2 15 | |||
|
4276 | ||||
|
4277 | $echo > $output "\ | |||
|
4278 | #! $SHELL | |||
|
4279 | ||||
|
4280 | # $output - temporary wrapper script for $objdir/$outputname | |||
|
4281 | # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP | |||
|
4282 | # | |||
|
4283 | # The $output program cannot be directly executed until all the libtool | |||
|
4284 | # libraries that it depends on are installed. | |||
|
4285 | # | |||
|
4286 | # This wrapper script should never be moved out of the build directory. | |||
|
4287 | # If it is, it will not operate correctly. | |||
|
4288 | ||||
|
4289 | # Sed substitution that helps us do robust quoting. It backslashifies | |||
|
4290 | # metacharacters that are still active within double-quoted strings. | |||
|
4291 | Xsed='${SED} -e 1s/^X//' | |||
|
4292 | sed_quote_subst='$sed_quote_subst' | |||
|
4293 | ||||
|
4294 | # The HP-UX ksh and POSIX shell print the target directory to stdout | |||
|
4295 | # if CDPATH is set. | |||
|
4296 | if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi | |||
|
4297 | ||||
|
4298 | relink_command=\"$relink_command\" | |||
|
4299 | ||||
|
4300 | # This environment variable determines our operation mode. | |||
|
4301 | if test \"\$libtool_install_magic\" = \"$magic\"; then | |||
|
4302 | # install mode needs the following variable: | |||
|
4303 | notinst_deplibs='$notinst_deplibs' | |||
|
4304 | else | |||
|
4305 | # When we are sourced in execute mode, \$file and \$echo are already set. | |||
|
4306 | if test \"\$libtool_execute_magic\" != \"$magic\"; then | |||
|
4307 | echo=\"$qecho\" | |||
|
4308 | file=\"\$0\" | |||
|
4309 | # Make sure echo works. | |||
|
4310 | if test \"X\$1\" = X--no-reexec; then | |||
|
4311 | # Discard the --no-reexec flag, and continue. | |||
|
4312 | shift | |||
|
4313 | elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then | |||
|
4314 | # Yippee, \$echo works! | |||
|
4315 | : | |||
|
4316 | else | |||
|
4317 | # Restart under the correct shell, and then maybe \$echo will work. | |||
|
4318 | exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} | |||
|
4319 | fi | |||
|
4320 | fi\ | |||
|
4321 | " | |||
|
4322 | $echo >> $output "\ | |||
|
4323 | ||||
|
4324 | # Find the directory that this script lives in. | |||
|
4325 | thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` | |||
|
4326 | test \"x\$thisdir\" = \"x\$file\" && thisdir=. | |||
|
4327 | ||||
|
4328 | # Follow symbolic links until we get to the real thisdir. | |||
|
4329 | file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` | |||
|
4330 | while test -n \"\$file\"; do | |||
|
4331 | destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` | |||
|
4332 | ||||
|
4333 | # If there was a directory component, then change thisdir. | |||
|
4334 | if test \"x\$destdir\" != \"x\$file\"; then | |||
|
4335 | case \"\$destdir\" in | |||
|
4336 | [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; | |||
|
4337 | *) thisdir=\"\$thisdir/\$destdir\" ;; | |||
|
4338 | esac | |||
|
4339 | fi | |||
|
4340 | ||||
|
4341 | file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` | |||
|
4342 | file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` | |||
|
4343 | done | |||
|
4344 | ||||
|
4345 | # Try to get the absolute directory name. | |||
|
4346 | absdir=\`cd \"\$thisdir\" && pwd\` | |||
|
4347 | test -n \"\$absdir\" && thisdir=\"\$absdir\" | |||
|
4348 | " | |||
|
4349 | ||||
|
4350 | if test "$fast_install" = yes; then | |||
|
4351 | echo >> $output "\ | |||
|
4352 | program=lt-'$outputname'$exeext | |||
|
4353 | progdir=\"\$thisdir/$objdir\" | |||
|
4354 | ||||
|
4355 | if test ! -f \"\$progdir/\$program\" || \\ | |||
|
4356 | { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ | |||
|
4357 | test \"X\$file\" != \"X\$progdir/\$program\"; }; then | |||
|
4358 | ||||
|
4359 | file=\"\$\$-\$program\" | |||
|
4360 | ||||
|
4361 | if test ! -d \"\$progdir\"; then | |||
|
4362 | $mkdir \"\$progdir\" | |||
|
4363 | else | |||
|
4364 | $rm \"\$progdir/\$file\" | |||
|
4365 | fi" | |||
|
4366 | ||||
|
4367 | echo >> $output "\ | |||
|
4368 | ||||
|
4369 | # relink executable if necessary | |||
|
4370 | if test -n \"\$relink_command\"; then | |||
|
4371 | if relink_command_output=\`eval \$relink_command 2>&1\`; then : | |||
|
4372 | else | |||
|
4373 | $echo \"\$relink_command_output\" >&2 | |||
|
4374 | $rm \"\$progdir/\$file\" | |||
|
4375 | exit 1 | |||
|
4376 | fi | |||
|
4377 | fi | |||
|
4378 | ||||
|
4379 | $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || | |||
|
4380 | { $rm \"\$progdir/\$program\"; | |||
|
4381 | $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } | |||
|
4382 | $rm \"\$progdir/\$file\" | |||
|
4383 | fi" | |||
|
4384 | else | |||
|
4385 | echo >> $output "\ | |||
|
4386 | program='$outputname' | |||
|
4387 | progdir=\"\$thisdir/$objdir\" | |||
|
4388 | " | |||
|
4389 | fi | |||
|
4390 | ||||
|
4391 | echo >> $output "\ | |||
|
4392 | ||||
|
4393 | if test -f \"\$progdir/\$program\"; then" | |||
|
4394 | ||||
|
4395 | # Export our shlibpath_var if we have one. | |||
|
4396 | if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then | |||
|
4397 | $echo >> $output "\ | |||
|
4398 | # Add our own library path to $shlibpath_var | |||
|
4399 | $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" | |||
|
4400 | ||||
|
4401 | # Some systems cannot cope with colon-terminated $shlibpath_var | |||
|
4402 | # The second colon is a workaround for a bug in BeOS R4 sed | |||
|
4403 | $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` | |||
|
4404 | ||||
|
4405 | export $shlibpath_var | |||
|
4406 | " | |||
|
4407 | fi | |||
|
4408 | ||||
|
4409 | # fixup the dll searchpath if we need to. | |||
|
4410 | if test -n "$dllsearchpath"; then | |||
|
4411 | $echo >> $output "\ | |||
|
4412 | # Add the dll search path components to the executable PATH | |||
|
4413 | PATH=$dllsearchpath:\$PATH | |||
|
4414 | " | |||
|
4415 | fi | |||
|
4416 | ||||
|
4417 | $echo >> $output "\ | |||
|
4418 | if test \"\$libtool_execute_magic\" != \"$magic\"; then | |||
|
4419 | # Run the actual program with our arguments. | |||
|
4420 | " | |||
|
4421 | case $host in | |||
|
4422 | # Backslashes separate directories on plain windows | |||
|
4423 | *-*-mingw | *-*-os2*) | |||
|
4424 | $echo >> $output "\ | |||
|
4425 | exec \$progdir\\\\\$program \${1+\"\$@\"} | |||
|
4426 | " | |||
|
4427 | ;; | |||
|
4428 | ||||
|
4429 | *) | |||
|
4430 | $echo >> $output "\ | |||
|
4431 | exec \$progdir/\$program \${1+\"\$@\"} | |||
|
4432 | " | |||
|
4433 | ;; | |||
|
4434 | esac | |||
|
4435 | $echo >> $output "\ | |||
|
4436 | \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" | |||
|
4437 | exit 1 | |||
|
4438 | fi | |||
|
4439 | else | |||
|
4440 | # The program doesn't exist. | |||
|
4441 | \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 | |||
|
4442 | \$echo \"This script is just a wrapper for \$program.\" 1>&2 | |||
|
4443 | echo \"See the $PACKAGE documentation for more information.\" 1>&2 | |||
|
4444 | exit 1 | |||
|
4445 | fi | |||
|
4446 | fi\ | |||
|
4447 | " | |||
|
4448 | chmod +x $output | |||
|
4449 | fi | |||
|
4450 | exit 0 | |||
|
4451 | ;; | |||
|
4452 | esac | |||
|
4453 | ||||
|
4454 | # See if we need to build an old-fashioned archive. | |||
|
4455 | for oldlib in $oldlibs; do | |||
|
4456 | ||||
|
4457 | if test "$build_libtool_libs" = convenience; then | |||
|
4458 | oldobjs="$libobjs_save" | |||
|
4459 | addlibs="$convenience" | |||
|
4460 | build_libtool_libs=no | |||
|
4461 | else | |||
|
4462 | if test "$build_libtool_libs" = module; then | |||
|
4463 | oldobjs="$libobjs_save" | |||
|
4464 | build_libtool_libs=no | |||
|
4465 | else | |||
|
4466 | oldobjs="$old_deplibs $non_pic_objects" | |||
|
4467 | fi | |||
|
4468 | addlibs="$old_convenience" | |||
|
4469 | fi | |||
|
4470 | ||||
|
4471 | if test -n "$addlibs"; then | |||
|
4472 | gentop="$output_objdir/${outputname}x" | |||
|
4473 | $show "${rm}r $gentop" | |||
|
4474 | $run ${rm}r "$gentop" | |||
|
4475 | $show "$mkdir $gentop" | |||
|
4476 | $run $mkdir "$gentop" | |||
|
4477 | status=$? | |||
|
4478 | if test "$status" -ne 0 && test ! -d "$gentop"; then | |||
|
4479 | exit $status | |||
|
4480 | fi | |||
|
4481 | generated="$generated $gentop" | |||
|
4482 | ||||
|
4483 | # Add in members from convenience archives. | |||
|
4484 | for xlib in $addlibs; do | |||
|
4485 | # Extract the objects. | |||
|
4486 | case $xlib in | |||
|
4487 | [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; | |||
|
4488 | *) xabs=`pwd`"/$xlib" ;; | |||
|
4489 | esac | |||
|
4490 | xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` | |||
|
4491 | xdir="$gentop/$xlib" | |||
|
4492 | ||||
|
4493 | $show "${rm}r $xdir" | |||
|
4494 | $run ${rm}r "$xdir" | |||
|
4495 | $show "$mkdir $xdir" | |||
|
4496 | $run $mkdir "$xdir" | |||
|
4497 | status=$? | |||
|
4498 | if test "$status" -ne 0 && test ! -d "$xdir"; then | |||
|
4499 | exit $status | |||
|
4500 | fi | |||
|
4501 | $show "(cd $xdir && $AR x $xabs)" | |||
|
4502 | $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? | |||
|
4503 | ||||
|
4504 | oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` | |||
|
4505 | done | |||
|
4506 | fi | |||
|
4507 | ||||
|
4508 | # Do each command in the archive commands. | |||
|
4509 | if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then | |||
|
4510 | eval cmds=\"$old_archive_from_new_cmds\" | |||
|
4511 | else | |||
|
4512 | eval cmds=\"$old_archive_cmds\" | |||
|
4513 | ||||
|
4514 | if len=`expr "X$cmds" : ".*"` && | |||
|
4515 | test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then | |||
|
4516 | : | |||
|
4517 | else | |||
|
4518 | # the command line is too long to link in one step, link in parts | |||
|
4519 | $echo "using piecewise archive linking..." | |||
|
4520 | save_RANLIB=$RANLIB | |||
|
4521 | RANLIB=: | |||
|
4522 | objlist= | |||
|
4523 | concat_cmds= | |||
|
4524 | save_oldobjs=$oldobjs | |||
|
4525 | # GNU ar 2.10+ was changed to match POSIX; thus no paths are | |||
|
4526 | # encoded into archives. This makes 'ar r' malfunction in | |||
|
4527 | # this piecewise linking case whenever conflicting object | |||
|
4528 | # names appear in distinct ar calls; check, warn and compensate. | |||
|
4529 | if (for obj in $save_oldobjs | |||
|
4530 | do | |||
|
4531 | $echo "X$obj" | $Xsed -e 's%^.*/%%' | |||
|
4532 | done | sort | sort -uc >/dev/null 2>&1); then | |||
|
4533 | : | |||
|
4534 | else | |||
|
4535 | $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 | |||
|
4536 | $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 | |||
|
4537 | AR_FLAGS=cq | |||
|
4538 | fi | |||
|
4539 | for obj in $save_oldobjs | |||
|
4540 | do | |||
|
4541 | oldobjs="$objlist $obj" | |||
|
4542 | objlist="$objlist $obj" | |||
|
4543 | eval test_cmds=\"$old_archive_cmds\" | |||
|
4544 | if len=`expr "X$test_cmds" : ".*"` && | |||
|
4545 | test "$len" -le "$max_cmd_len"; then | |||
|
4546 | : | |||
|
4547 | else | |||
|
4548 | # the above command should be used before it gets too long | |||
|
4549 | oldobjs=$objlist | |||
|
4550 | test -z "$concat_cmds" || concat_cmds=$concat_cmds~ | |||
|
4551 | eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" | |||
|
4552 | objlist= | |||
|
4553 | fi | |||
|
4554 | done | |||
|
4555 | RANLIB=$save_RANLIB | |||
|
4556 | oldobjs=$objlist | |||
|
4557 | eval cmds=\"\$concat_cmds~$old_archive_cmds\" | |||
|
4558 | fi | |||
|
4559 | fi | |||
|
4560 | save_ifs="$IFS"; IFS='~' | |||
|
4561 | for cmd in $cmds; do | |||
|
4562 | IFS="$save_ifs" | |||
|
4563 | $show "$cmd" | |||
|
4564 | $run eval "$cmd" || exit $? | |||
|
4565 | done | |||
|
4566 | IFS="$save_ifs" | |||
|
4567 | done | |||
|
4568 | ||||
|
4569 | if test -n "$generated"; then | |||
|
4570 | $show "${rm}r$generated" | |||
|
4571 | $run ${rm}r$generated | |||
|
4572 | fi | |||
|
4573 | ||||
|
4574 | # Now create the libtool archive. | |||
|
4575 | case $output in | |||
|
4576 | *.la) | |||
|
4577 | old_library= | |||
|
4578 | test "$build_old_libs" = yes && old_library="$libname.$libext" | |||
|
4579 | $show "creating $output" | |||
|
4580 | ||||
|
4581 | # Preserve any variables that may affect compiler behavior | |||
|
4582 | for var in $variables_saved_for_relink; do | |||
|
4583 | if eval test -z \"\${$var+set}\"; then | |||
|
4584 | relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" | |||
|
4585 | elif eval var_value=\$$var; test -z "$var_value"; then | |||
|
4586 | relink_command="$var=; export $var; $relink_command" | |||
|
4587 | else | |||
|
4588 | var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` | |||
|
4589 | relink_command="$var=\"$var_value\"; export $var; $relink_command" | |||
|
4590 | fi | |||
|
4591 | done | |||
|
4592 | # Quote the link command for shipping. | |||
|
4593 | relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)" | |||
|
4594 | relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` | |||
|
4595 | ||||
|
4596 | # Only create the output if not a dry run. | |||
|
4597 | if test -z "$run"; then | |||
|
4598 | for installed in no yes; do | |||
|
4599 | if test "$installed" = yes; then | |||
|
4600 | if test -z "$install_libdir"; then | |||
|
4601 | break | |||
|
4602 | fi | |||
|
4603 | output="$output_objdir/$outputname"i | |||
|
4604 | # Replace all uninstalled libtool libraries with the installed ones | |||
|
4605 | newdependency_libs= | |||
|
4606 | for deplib in $dependency_libs; do | |||
|
4607 | case $deplib in | |||
|
4608 | *.la) | |||
|
4609 | name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` | |||
|
4610 | eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` | |||
|
4611 | if test -z "$libdir"; then | |||
|
4612 | $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 | |||
|
4613 | exit 1 | |||
|
4614 | fi | |||
|
4615 | newdependency_libs="$newdependency_libs $libdir/$name" | |||
|
4616 | ;; | |||
|
4617 | *) newdependency_libs="$newdependency_libs $deplib" ;; | |||
|
4618 | esac | |||
|
4619 | done | |||
|
4620 | dependency_libs="$newdependency_libs" | |||
|
4621 | newdlfiles= | |||
|
4622 | for lib in $dlfiles; do | |||
|
4623 | name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` | |||
|
4624 | eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` | |||
|
4625 | if test -z "$libdir"; then | |||
|
4626 | $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 | |||
|
4627 | exit 1 | |||
|
4628 | fi | |||
|
4629 | newdlfiles="$newdlfiles $libdir/$name" | |||
|
4630 | done | |||
|
4631 | dlfiles="$newdlfiles" | |||
|
4632 | newdlprefiles= | |||
|
4633 | for lib in $dlprefiles; do | |||
|
4634 | name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` | |||
|
4635 | eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` | |||
|
4636 | if test -z "$libdir"; then | |||
|
4637 | $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 | |||
|
4638 | exit 1 | |||
|
4639 | fi | |||
|
4640 | newdlprefiles="$newdlprefiles $libdir/$name" | |||
|
4641 | done | |||
|
4642 | dlprefiles="$newdlprefiles" | |||
|
4643 | fi | |||
|
4644 | $rm $output | |||
|
4645 | # place dlname in correct position for cygwin | |||
|
4646 | tdlname=$dlname | |||
|
4647 | case $host,$output,$installed,$module,$dlname in | |||
|
4648 | *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; | |||
|
4649 | esac | |||
|
4650 | $echo > $output "\ | |||
|
4651 | # $outputname - a libtool library file | |||
|
4652 | # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP | |||
|
4653 | # | |||
|
4654 | # Please DO NOT delete this file! | |||
|
4655 | # It is necessary for linking the library. | |||
|
4656 | ||||
|
4657 | # The name that we can dlopen(3). | |||
|
4658 | dlname='$tdlname' | |||
|
4659 | ||||
|
4660 | # Names of this library. | |||
|
4661 | library_names='$library_names' | |||
|
4662 | ||||
|
4663 | # The name of the static archive. | |||
|
4664 | old_library='$old_library' | |||
|
4665 | ||||
|
4666 | # Libraries that this one depends upon. | |||
|
4667 | dependency_libs='$dependency_libs' | |||
|
4668 | ||||
|
4669 | # Version information for $libname. | |||
|
4670 | current=$current | |||
|
4671 | age=$age | |||
|
4672 | revision=$revision | |||
|
4673 | ||||
|
4674 | # Is this an already installed library? | |||
|
4675 | installed=$installed | |||
|
4676 | ||||
|
4677 | # Files to dlopen/dlpreopen | |||
|
4678 | dlopen='$dlfiles' | |||
|
4679 | dlpreopen='$dlprefiles' | |||
|
4680 | ||||
|
4681 | # Directory that this library needs to be installed in: | |||
|
4682 | libdir='$install_libdir'" | |||
|
4683 | if test "$installed" = no && test "$need_relink" = yes; then | |||
|
4684 | $echo >> $output "\ | |||
|
4685 | relink_command=\"$relink_command\"" | |||
|
4686 | fi | |||
|
4687 | done | |||
|
4688 | fi | |||
|
4689 | ||||
|
4690 | # Do a symbolic link so that the libtool archive can be found in | |||
|
4691 | # LD_LIBRARY_PATH before the program is installed. | |||
|
4692 | $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" | |||
|
4693 | $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? | |||
|
4694 | ;; | |||
|
4695 | esac | |||
|
4696 | exit 0 | |||
|
4697 | ;; | |||
|
4698 | ||||
|
4699 | # libtool install mode | |||
|
4700 | install) | |||
|
4701 | modename="$modename: install" | |||
|
4702 | ||||
|
4703 | # There may be an optional sh(1) argument at the beginning of | |||
|
4704 | # install_prog (especially on Windows NT). | |||
|
4705 | if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || | |||
|
4706 | # Allow the use of GNU shtool's install command. | |||
|
4707 | $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then | |||
|
4708 | # Aesthetically quote it. | |||
|
4709 | arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` | |||
|
4710 | case $arg in | |||
|
4711 | *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) | |||
|
4712 | arg="\"$arg\"" | |||
|
4713 | ;; | |||
|
4714 | esac | |||
|
4715 | install_prog="$arg " | |||
|
4716 | arg="$1" | |||
|
4717 | shift | |||
|
4718 | else | |||
|
4719 | install_prog= | |||
|
4720 | arg="$nonopt" | |||
|
4721 | fi | |||
|
4722 | ||||
|
4723 | # The real first argument should be the name of the installation program. | |||
|
4724 | # Aesthetically quote it. | |||
|
4725 | arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` | |||
|
4726 | case $arg in | |||
|
4727 | *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) | |||
|
4728 | arg="\"$arg\"" | |||
|
4729 | ;; | |||
|
4730 | esac | |||
|
4731 | install_prog="$install_prog$arg" | |||
|
4732 | ||||
|
4733 | # We need to accept at least all the BSD install flags. | |||
|
4734 | dest= | |||
|
4735 | files= | |||
|
4736 | opts= | |||
|
4737 | prev= | |||
|
4738 | install_type= | |||
|
4739 | isdir=no | |||
|
4740 | stripme= | |||
|
4741 | for arg | |||
|
4742 | do | |||
|
4743 | if test -n "$dest"; then | |||
|
4744 | files="$files $dest" | |||
|
4745 | dest="$arg" | |||
|
4746 | continue | |||
|
4747 | fi | |||
|
4748 | ||||
|
4749 | case $arg in | |||
|
4750 | -d) isdir=yes ;; | |||
|
4751 | -f) prev="-f" ;; | |||
|
4752 | -g) prev="-g" ;; | |||
|
4753 | -m) prev="-m" ;; | |||
|
4754 | -o) prev="-o" ;; | |||
|
4755 | -s) | |||
|
4756 | stripme=" -s" | |||
|
4757 | continue | |||
|
4758 | ;; | |||
|
4759 | -*) ;; | |||
|
4760 | ||||
|
4761 | *) | |||
|
4762 | # If the previous option needed an argument, then skip it. | |||
|
4763 | if test -n "$prev"; then | |||
|
4764 | prev= | |||
|
4765 | else | |||
|
4766 | dest="$arg" | |||
|
4767 | continue | |||
|
4768 | fi | |||
|
4769 | ;; | |||
|
4770 | esac | |||
|
4771 | ||||
|
4772 | # Aesthetically quote the argument. | |||
|
4773 | arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` | |||
|
4774 | case $arg in | |||
|
4775 | *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) | |||
|
4776 | arg="\"$arg\"" | |||
|
4777 | ;; | |||
|
4778 | esac | |||
|
4779 | install_prog="$install_prog $arg" | |||
|
4780 | done | |||
|
4781 | ||||
|
4782 | if test -z "$install_prog"; then | |||
|
4783 | $echo "$modename: you must specify an install program" 1>&2 | |||
|
4784 | $echo "$help" 1>&2 | |||
|
4785 | exit 1 | |||
|
4786 | fi | |||
|
4787 | ||||
|
4788 | if test -n "$prev"; then | |||
|
4789 | $echo "$modename: the \`$prev' option requires an argument" 1>&2 | |||
|
4790 | $echo "$help" 1>&2 | |||
|
4791 | exit 1 | |||
|
4792 | fi | |||
|
4793 | ||||
|
4794 | if test -z "$files"; then | |||
|
4795 | if test -z "$dest"; then | |||
|
4796 | $echo "$modename: no file or destination specified" 1>&2 | |||
|
4797 | else | |||
|
4798 | $echo "$modename: you must specify a destination" 1>&2 | |||
|
4799 | fi | |||
|
4800 | $echo "$help" 1>&2 | |||
|
4801 | exit 1 | |||
|
4802 | fi | |||
|
4803 | ||||
|
4804 | # Strip any trailing slash from the destination. | |||
|
4805 | dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` | |||
|
4806 | ||||
|
4807 | # Check to see that the destination is a directory. | |||
|
4808 | test -d "$dest" && isdir=yes | |||
|
4809 | if test "$isdir" = yes; then | |||
|
4810 | destdir="$dest" | |||
|
4811 | destname= | |||
|
4812 | else | |||
|
4813 | destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` | |||
|
4814 | test "X$destdir" = "X$dest" && destdir=. | |||
|
4815 | destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` | |||
|
4816 | ||||
|
4817 | # Not a directory, so check to see that there is only one file specified. | |||
|
4818 | set dummy $files | |||
|
4819 | if test "$#" -gt 2; then | |||
|
4820 | $echo "$modename: \`$dest' is not a directory" 1>&2 | |||
|
4821 | $echo "$help" 1>&2 | |||
|
4822 | exit 1 | |||
|
4823 | fi | |||
|
4824 | fi | |||
|
4825 | case $destdir in | |||
|
4826 | [\\/]* | [A-Za-z]:[\\/]*) ;; | |||
|
4827 | *) | |||
|
4828 | for file in $files; do | |||
|
4829 | case $file in | |||
|
4830 | *.lo) ;; | |||
|
4831 | *) | |||
|
4832 | $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 | |||
|
4833 | $echo "$help" 1>&2 | |||
|
4834 | exit 1 | |||
|
4835 | ;; | |||
|
4836 | esac | |||
|
4837 | done | |||
|
4838 | ;; | |||
|
4839 | esac | |||
|
4840 | ||||
|
4841 | # This variable tells wrapper scripts just to set variables rather | |||
|
4842 | # than running their programs. | |||
|
4843 | libtool_install_magic="$magic" | |||
|
4844 | ||||
|
4845 | staticlibs= | |||
|
4846 | future_libdirs= | |||
|
4847 | current_libdirs= | |||
|
4848 | for file in $files; do | |||
|
4849 | ||||
|
4850 | # Do each installation. | |||
|
4851 | case $file in | |||
|
4852 | *.$libext) | |||
|
4853 | # Do the static libraries later. | |||
|
4854 | staticlibs="$staticlibs $file" | |||
|
4855 | ;; | |||
|
4856 | ||||
|
4857 | *.la) | |||
|
4858 | # Check to see that this really is a libtool archive. | |||
|
4859 | if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : | |||
|
4860 | else | |||
|
4861 | $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 | |||
|
4862 | $echo "$help" 1>&2 | |||
|
4863 | exit 1 | |||
|
4864 | fi | |||
|
4865 | ||||
|
4866 | library_names= | |||
|
4867 | old_library= | |||
|
4868 | relink_command= | |||
|
4869 | # If there is no directory component, then add one. | |||
|
4870 | case $file in | |||
|
4871 | */* | *\\*) . $file ;; | |||
|
4872 | *) . ./$file ;; | |||
|
4873 | esac | |||
|
4874 | ||||
|
4875 | # Add the libdir to current_libdirs if it is the destination. | |||
|
4876 | if test "X$destdir" = "X$libdir"; then | |||
|
4877 | case "$current_libdirs " in | |||
|
4878 | *" $libdir "*) ;; | |||
|
4879 | *) current_libdirs="$current_libdirs $libdir" ;; | |||
|
4880 | esac | |||
|
4881 | else | |||
|
4882 | # Note the libdir as a future libdir. | |||
|
4883 | case "$future_libdirs " in | |||
|
4884 | *" $libdir "*) ;; | |||
|
4885 | *) future_libdirs="$future_libdirs $libdir" ;; | |||
|
4886 | esac | |||
|
4887 | fi | |||
|
4888 | ||||
|
4889 | dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ | |||
|
4890 | test "X$dir" = "X$file/" && dir= | |||
|
4891 | dir="$dir$objdir" | |||
|
4892 | ||||
|
4893 | if test -n "$relink_command"; then | |||
|
4894 | # Determine the prefix the user has applied to our future dir. | |||
|
4895 | inst_prefix_dir=`$echo "$destdir" | sed "s%$libdir\$%%"` | |||
|
4896 | ||||
|
4897 | # Don't allow the user to place us outside of our expected | |||
|
4898 | # location b/c this prevents finding dependent libraries that | |||
|
4899 | # are installed to the same prefix. | |||
|
4900 | # At present, this check doesn't affect windows .dll's that | |||
|
4901 | # are installed into $libdir/../bin (currently, that works fine) | |||
|
4902 | # but it's something to keep an eye on. | |||
|
4903 | if test "$inst_prefix_dir" = "$destdir"; then | |||
|
4904 | $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 | |||
|
4905 | exit 1 | |||
|
4906 | fi | |||
|
4907 | ||||
|
4908 | if test -n "$inst_prefix_dir"; then | |||
|
4909 | # Stick the inst_prefix_dir data into the link command. | |||
|
4910 | relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` | |||
|
4911 | else | |||
|
4912 | relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"` | |||
|
4913 | fi | |||
|
4914 | ||||
|
4915 | $echo "$modename: warning: relinking \`$file'" 1>&2 | |||
|
4916 | $show "$relink_command" | |||
|
4917 | if $run eval "$relink_command"; then : | |||
|
4918 | else | |||
|
4919 | $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 | |||
|
4920 | exit 1 | |||
|
4921 | fi | |||
|
4922 | fi | |||
|
4923 | ||||
|
4924 | # See the names of the shared library. | |||
|
4925 | set dummy $library_names | |||
|
4926 | if test -n "$2"; then | |||
|
4927 | realname="$2" | |||
|
4928 | shift | |||
|
4929 | shift | |||
|
4930 | ||||
|
4931 | srcname="$realname" | |||
|
4932 | test -n "$relink_command" && srcname="$realname"T | |||
|
4933 | ||||
|
4934 | # Install the shared library and build the symlinks. | |||
|
4935 | $show "$install_prog $dir/$srcname $destdir/$realname" | |||
|
4936 | $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? | |||
|
4937 | if test -n "$stripme" && test -n "$striplib"; then | |||
|
4938 | $show "$striplib $destdir/$realname" | |||
|
4939 | $run eval "$striplib $destdir/$realname" || exit $? | |||
|
4940 | fi | |||
|
4941 | ||||
|
4942 | if test "$#" -gt 0; then | |||
|
4943 | # Delete the old symlinks, and create new ones. | |||
|
4944 | for linkname | |||
|
4945 | do | |||
|
4946 | if test "$linkname" != "$realname"; then | |||
|
4947 | $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" | |||
|
4948 | $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" | |||
|
4949 | fi | |||
|
4950 | done | |||
|
4951 | fi | |||
|
4952 | ||||
|
4953 | # Do each command in the postinstall commands. | |||
|
4954 | lib="$destdir/$realname" | |||
|
4955 | eval cmds=\"$postinstall_cmds\" | |||
|
4956 | save_ifs="$IFS"; IFS='~' | |||
|
4957 | for cmd in $cmds; do | |||
|
4958 | IFS="$save_ifs" | |||
|
4959 | $show "$cmd" | |||
|
4960 | $run eval "$cmd" || exit $? | |||
|
4961 | done | |||
|
4962 | IFS="$save_ifs" | |||
|
4963 | fi | |||
|
4964 | ||||
|
4965 | # Install the pseudo-library for information purposes. | |||
|
4966 | name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` | |||
|
4967 | instname="$dir/$name"i | |||
|
4968 | $show "$install_prog $instname $destdir/$name" | |||
|
4969 | $run eval "$install_prog $instname $destdir/$name" || exit $? | |||
|
4970 | ||||
|
4971 | # Maybe install the static library, too. | |||
|
4972 | test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" | |||
|
4973 | ;; | |||
|
4974 | ||||
|
4975 | *.lo) | |||
|
4976 | # Install (i.e. copy) a libtool object. | |||
|
4977 | ||||
|
4978 | # Figure out destination file name, if it wasn't already specified. | |||
|
4979 | if test -n "$destname"; then | |||
|
4980 | destfile="$destdir/$destname" | |||
|
4981 | else | |||
|
4982 | destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` | |||
|
4983 | destfile="$destdir/$destfile" | |||
|
4984 | fi | |||
|
4985 | ||||
|
4986 | # Deduce the name of the destination old-style object file. | |||
|
4987 | case $destfile in | |||
|
4988 | *.lo) | |||
|
4989 | staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` | |||
|
4990 | ;; | |||
|
4991 | *.$objext) | |||
|
4992 | staticdest="$destfile" | |||
|
4993 | destfile= | |||
|
4994 | ;; | |||
|
4995 | *) | |||
|
4996 | $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 | |||
|
4997 | $echo "$help" 1>&2 | |||
|
4998 | exit 1 | |||
|
4999 | ;; | |||
|
5000 | esac | |||
|
5001 | ||||
|
5002 | # Install the libtool object if requested. | |||
|
5003 | if test -n "$destfile"; then | |||
|
5004 | $show "$install_prog $file $destfile" | |||
|
5005 | $run eval "$install_prog $file $destfile" || exit $? | |||
|
5006 | fi | |||
|
5007 | ||||
|
5008 | # Install the old object if enabled. | |||
|
5009 | if test "$build_old_libs" = yes; then | |||
|
5010 | # Deduce the name of the old-style object file. | |||
|
5011 | staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` | |||
|
5012 | ||||
|
5013 | $show "$install_prog $staticobj $staticdest" | |||
|
5014 | $run eval "$install_prog \$staticobj \$staticdest" || exit $? | |||
|
5015 | fi | |||
|
5016 | exit 0 | |||
|
5017 | ;; | |||
|
5018 | ||||
|
5019 | *) | |||
|
5020 | # Figure out destination file name, if it wasn't already specified. | |||
|
5021 | if test -n "$destname"; then | |||
|
5022 | destfile="$destdir/$destname" | |||
|
5023 | else | |||
|
5024 | destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` | |||
|
5025 | destfile="$destdir/$destfile" | |||
|
5026 | fi | |||
|
5027 | ||||
|
5028 | # If the file is missing, and there is a .exe on the end, strip it | |||
|
5029 | # because it is most likely a libtool script we actually want to | |||
|
5030 | # install | |||
|
5031 | stripped_ext="" | |||
|
5032 | case $file in | |||
|
5033 | *.exe) | |||
|
5034 | if test ! -f "$file"; then | |||
|
5035 | file=`echo $file|${SED} 's,.exe$,,'` | |||
|
5036 | stripped_ext=".exe" | |||
|
5037 | fi | |||
|
5038 | ;; | |||
|
5039 | esac | |||
|
5040 | ||||
|
5041 | # Do a test to see if this is really a libtool program. | |||
|
5042 | case $host in | |||
|
5043 | *cygwin*|*mingw*) | |||
|
5044 | wrapper=`echo $file | ${SED} -e 's,.exe$,,'` | |||
|
5045 | ;; | |||
|
5046 | *) | |||
|
5047 | wrapper=$file | |||
|
5048 | ;; | |||
|
5049 | esac | |||
|
5050 | if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then | |||
|
5051 | notinst_deplibs= | |||
|
5052 | relink_command= | |||
|
5053 | ||||
|
5054 | # If there is no directory component, then add one. | |||
|
5055 | case $file in | |||
|
5056 | */* | *\\*) . $wrapper ;; | |||
|
5057 | *) . ./$wrapper ;; | |||
|
5058 | esac | |||
|
5059 | ||||
|
5060 | # Check the variables that should have been set. | |||
|
5061 | if test -z "$notinst_deplibs"; then | |||
|
5062 | $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 | |||
|
5063 | exit 1 | |||
|
5064 | fi | |||
|
5065 | ||||
|
5066 | finalize=yes | |||
|
5067 | for lib in $notinst_deplibs; do | |||
|
5068 | # Check to see that each library is installed. | |||
|
5069 | libdir= | |||
|
5070 | if test -f "$lib"; then | |||
|
5071 | # If there is no directory component, then add one. | |||
|
5072 | case $lib in | |||
|
5073 | */* | *\\*) . $lib ;; | |||
|
5074 | *) . ./$lib ;; | |||
|
5075 | esac | |||
|
5076 | fi | |||
|
5077 | libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test | |||
|
5078 | if test -n "$libdir" && test ! -f "$libfile"; then | |||
|
5079 | $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 | |||
|
5080 | finalize=no | |||
|
5081 | fi | |||
|
5082 | done | |||
|
5083 | ||||
|
5084 | relink_command= | |||
|
5085 | # If there is no directory component, then add one. | |||
|
5086 | case $file in | |||
|
5087 | */* | *\\*) . $file ;; | |||
|
5088 | *) . ./$file ;; | |||
|
5089 | esac | |||
|
5090 | ||||
|
5091 | outputname= | |||
|
5092 | if test "$fast_install" = no && test -n "$relink_command"; then | |||
|
5093 | if test "$finalize" = yes && test -z "$run"; then | |||
|
5094 | tmpdir="/tmp" | |||
|
5095 | test -n "$TMPDIR" && tmpdir="$TMPDIR" | |||
|
5096 | tmpdir="$tmpdir/libtool-$$" | |||
|
5097 | if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : | |||
|
5098 | else | |||
|
5099 | $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 | |||
|
5100 | continue | |||
|
5101 | fi | |||
|
5102 | file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` | |||
|
5103 | outputname="$tmpdir/$file" | |||
|
5104 | # Replace the output file specification. | |||
|
5105 | relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` | |||
|
5106 | ||||
|
5107 | $show "$relink_command" | |||
|
5108 | if $run eval "$relink_command"; then : | |||
|
5109 | else | |||
|
5110 | $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 | |||
|
5111 | ${rm}r "$tmpdir" | |||
|
5112 | continue | |||
|
5113 | fi | |||
|
5114 | file="$outputname" | |||
|
5115 | else | |||
|
5116 | $echo "$modename: warning: cannot relink \`$file'" 1>&2 | |||
|
5117 | fi | |||
|
5118 | else | |||
|
5119 | # Install the binary that we compiled earlier. | |||
|
5120 | file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` | |||
|
5121 | fi | |||
|
5122 | fi | |||
|
5123 | ||||
|
5124 | # remove .exe since cygwin /usr/bin/install will append another | |||
|
5125 | # one anyways | |||
|
5126 | case $install_prog,$host in | |||
|
5127 | */usr/bin/install*,*cygwin*) | |||
|
5128 | case $file:$destfile in | |||
|
5129 | *.exe:*.exe) | |||
|
5130 | # this is ok | |||
|
5131 | ;; | |||
|
5132 | *.exe:*) | |||
|
5133 | destfile=$destfile.exe | |||
|
5134 | ;; | |||
|
5135 | *:*.exe) | |||
|
5136 | destfile=`echo $destfile | ${SED} -e 's,.exe$,,'` | |||
|
5137 | ;; | |||
|
5138 | esac | |||
|
5139 | ;; | |||
|
5140 | esac | |||
|
5141 | $show "$install_prog$stripme $file $destfile" | |||
|
5142 | $run eval "$install_prog\$stripme \$file \$destfile" || exit $? | |||
|
5143 | test -n "$outputname" && ${rm}r "$tmpdir" | |||
|
5144 | ;; | |||
|
5145 | esac | |||
|
5146 | done | |||
|
5147 | ||||
|
5148 | for file in $staticlibs; do | |||
|
5149 | name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` | |||
|
5150 | ||||
|
5151 | # Set up the ranlib parameters. | |||
|
5152 | oldlib="$destdir/$name" | |||
|
5153 | ||||
|
5154 | $show "$install_prog $file $oldlib" | |||
|
5155 | $run eval "$install_prog \$file \$oldlib" || exit $? | |||
|
5156 | ||||
|
5157 | if test -n "$stripme" && test -n "$striplib"; then | |||
|
5158 | $show "$old_striplib $oldlib" | |||
|
5159 | $run eval "$old_striplib $oldlib" || exit $? | |||
|
5160 | fi | |||
|
5161 | ||||
|
5162 | # Do each command in the postinstall commands. | |||
|
5163 | eval cmds=\"$old_postinstall_cmds\" | |||
|
5164 | save_ifs="$IFS"; IFS='~' | |||
|
5165 | for cmd in $cmds; do | |||
|
5166 | IFS="$save_ifs" | |||
|
5167 | $show "$cmd" | |||
|
5168 | $run eval "$cmd" || exit $? | |||
|
5169 | done | |||
|
5170 | IFS="$save_ifs" | |||
|
5171 | done | |||
|
5172 | ||||
|
5173 | if test -n "$future_libdirs"; then | |||
|
5174 | $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 | |||
|
5175 | fi | |||
|
5176 | ||||
|
5177 | if test -n "$current_libdirs"; then | |||
|
5178 | # Maybe just do a dry run. | |||
|
5179 | test -n "$run" && current_libdirs=" -n$current_libdirs" | |||
|
5180 | exec_cmd='$SHELL $0 --finish$current_libdirs' | |||
|
5181 | else | |||
|
5182 | exit 0 | |||
|
5183 | fi | |||
|
5184 | ;; | |||
|
5185 | ||||
|
5186 | # libtool finish mode | |||
|
5187 | finish) | |||
|
5188 | modename="$modename: finish" | |||
|
5189 | libdirs="$nonopt" | |||
|
5190 | admincmds= | |||
|
5191 | ||||
|
5192 | if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then | |||
|
5193 | for dir | |||
|
5194 | do | |||
|
5195 | libdirs="$libdirs $dir" | |||
|
5196 | done | |||
|
5197 | ||||
|
5198 | for libdir in $libdirs; do | |||
|
5199 | if test -n "$finish_cmds"; then | |||
|
5200 | # Do each command in the finish commands. | |||
|
5201 | eval cmds=\"$finish_cmds\" | |||
|
5202 | save_ifs="$IFS"; IFS='~' | |||
|
5203 | for cmd in $cmds; do | |||
|
5204 | IFS="$save_ifs" | |||
|
5205 | $show "$cmd" | |||
|
5206 | $run eval "$cmd" || admincmds="$admincmds | |||
|
5207 | $cmd" | |||
|
5208 | done | |||
|
5209 | IFS="$save_ifs" | |||
|
5210 | fi | |||
|
5211 | if test -n "$finish_eval"; then | |||
|
5212 | # Do the single finish_eval. | |||
|
5213 | eval cmds=\"$finish_eval\" | |||
|
5214 | $run eval "$cmds" || admincmds="$admincmds | |||
|
5215 | $cmds" | |||
|
5216 | fi | |||
|
5217 | done | |||
|
5218 | fi | |||
|
5219 | ||||
|
5220 | # Exit here if they wanted silent mode. | |||
|
5221 | test "$show" = : && exit 0 | |||
|
5222 | ||||
|
5223 | echo "----------------------------------------------------------------------" | |||
|
5224 | echo "Libraries have been installed in:" | |||
|
5225 | for libdir in $libdirs; do | |||
|
5226 | echo " $libdir" | |||
|
5227 | done | |||
|
5228 | echo | |||
|
5229 | echo "If you ever happen to want to link against installed libraries" | |||
|
5230 | echo "in a given directory, LIBDIR, you must either use libtool, and" | |||
|
5231 | echo "specify the full pathname of the library, or use the \`-LLIBDIR'" | |||
|
5232 | echo "flag during linking and do at least one of the following:" | |||
|
5233 | if test -n "$shlibpath_var"; then | |||
|
5234 | echo " - add LIBDIR to the \`$shlibpath_var' environment variable" | |||
|
5235 | echo " during execution" | |||
|
5236 | fi | |||
|
5237 | if test -n "$runpath_var"; then | |||
|
5238 | echo " - add LIBDIR to the \`$runpath_var' environment variable" | |||
|
5239 | echo " during linking" | |||
|
5240 | fi | |||
|
5241 | if test -n "$hardcode_libdir_flag_spec"; then | |||
|
5242 | libdir=LIBDIR | |||
|
5243 | eval flag=\"$hardcode_libdir_flag_spec\" | |||
|
5244 | ||||
|
5245 | echo " - use the \`$flag' linker flag" | |||
|
5246 | fi | |||
|
5247 | if test -n "$admincmds"; then | |||
|
5248 | echo " - have your system administrator run these commands:$admincmds" | |||
|
5249 | fi | |||
|
5250 | if test -f /etc/ld.so.conf; then | |||
|
5251 | echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" | |||
|
5252 | fi | |||
|
5253 | echo | |||
|
5254 | echo "See any operating system documentation about shared libraries for" | |||
|
5255 | echo "more information, such as the ld(1) and ld.so(8) manual pages." | |||
|
5256 | echo "----------------------------------------------------------------------" | |||
|
5257 | exit 0 | |||
|
5258 | ;; | |||
|
5259 | ||||
|
5260 | # libtool execute mode | |||
|
5261 | execute) | |||
|
5262 | modename="$modename: execute" | |||
|
5263 | ||||
|
5264 | # The first argument is the command name. | |||
|
5265 | cmd="$nonopt" | |||
|
5266 | if test -z "$cmd"; then | |||
|
5267 | $echo "$modename: you must specify a COMMAND" 1>&2 | |||
|
5268 | $echo "$help" | |||
|
5269 | exit 1 | |||
|
5270 | fi | |||
|
5271 | ||||
|
5272 | # Handle -dlopen flags immediately. | |||
|
5273 | for file in $execute_dlfiles; do | |||
|
5274 | if test ! -f "$file"; then | |||
|
5275 | $echo "$modename: \`$file' is not a file" 1>&2 | |||
|
5276 | $echo "$help" 1>&2 | |||
|
5277 | exit 1 | |||
|
5278 | fi | |||
|
5279 | ||||
|
5280 | dir= | |||
|
5281 | case $file in | |||
|
5282 | *.la) | |||
|
5283 | # Check to see that this really is a libtool archive. | |||
|
5284 | if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : | |||
|
5285 | else | |||
|
5286 | $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 | |||
|
5287 | $echo "$help" 1>&2 | |||
|
5288 | exit 1 | |||
|
5289 | fi | |||
|
5290 | ||||
|
5291 | # Read the libtool library. | |||
|
5292 | dlname= | |||
|
5293 | library_names= | |||
|
5294 | ||||
|
5295 | # If there is no directory component, then add one. | |||
|
5296 | case $file in | |||
|
5297 | */* | *\\*) . $file ;; | |||
|
5298 | *) . ./$file ;; | |||
|
5299 | esac | |||
|
5300 | ||||
|
5301 | # Skip this library if it cannot be dlopened. | |||
|
5302 | if test -z "$dlname"; then | |||
|
5303 | # Warn if it was a shared library. | |||
|
5304 | test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" | |||
|
5305 | continue | |||
|
5306 | fi | |||
|
5307 | ||||
|
5308 | dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` | |||
|
5309 | test "X$dir" = "X$file" && dir=. | |||
|
5310 | ||||
|
5311 | if test -f "$dir/$objdir/$dlname"; then | |||
|
5312 | dir="$dir/$objdir" | |||
|
5313 | else | |||
|
5314 | $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 | |||
|
5315 | exit 1 | |||
|
5316 | fi | |||
|
5317 | ;; | |||
|
5318 | ||||
|
5319 | *.lo) | |||
|
5320 | # Just add the directory containing the .lo file. | |||
|
5321 | dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` | |||
|
5322 | test "X$dir" = "X$file" && dir=. | |||
|
5323 | ;; | |||
|
5324 | ||||
|
5325 | *) | |||
|
5326 | $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 | |||
|
5327 | continue | |||
|
5328 | ;; | |||
|
5329 | esac | |||
|
5330 | ||||
|
5331 | # Get the absolute pathname. | |||
|
5332 | absdir=`cd "$dir" && pwd` | |||
|
5333 | test -n "$absdir" && dir="$absdir" | |||
|
5334 | ||||
|
5335 | # Now add the directory to shlibpath_var. | |||
|
5336 | if eval "test -z \"\$$shlibpath_var\""; then | |||
|
5337 | eval "$shlibpath_var=\"\$dir\"" | |||
|
5338 | else | |||
|
5339 | eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" | |||
|
5340 | fi | |||
|
5341 | done | |||
|
5342 | ||||
|
5343 | # This variable tells wrapper scripts just to set shlibpath_var | |||
|
5344 | # rather than running their programs. | |||
|
5345 | libtool_execute_magic="$magic" | |||
|
5346 | ||||
|
5347 | # Check if any of the arguments is a wrapper script. | |||
|
5348 | args= | |||
|
5349 | for file | |||
|
5350 | do | |||
|
5351 | case $file in | |||
|
5352 | -*) ;; | |||
|
5353 | *) | |||
|
5354 | # Do a test to see if this is really a libtool program. | |||
|
5355 | if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then | |||
|
5356 | # If there is no directory component, then add one. | |||
|
5357 | case $file in | |||
|
5358 | */* | *\\*) . $file ;; | |||
|
5359 | *) . ./$file ;; | |||
|
5360 | esac | |||
|
5361 | ||||
|
5362 | # Transform arg to wrapped name. | |||
|
5363 | file="$progdir/$program" | |||
|
5364 | fi | |||
|
5365 | ;; | |||
|
5366 | esac | |||
|
5367 | # Quote arguments (to preserve shell metacharacters). | |||
|
5368 | file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` | |||
|
5369 | args="$args \"$file\"" | |||
|
5370 | done | |||
|
5371 | ||||
|
5372 | if test -z "$run"; then | |||
|
5373 | if test -n "$shlibpath_var"; then | |||
|
5374 | # Export the shlibpath_var. | |||
|
5375 | eval "export $shlibpath_var" | |||
|
5376 | fi | |||
|
5377 | ||||
|
5378 | # Restore saved environment variables | |||
|
5379 | if test "${save_LC_ALL+set}" = set; then | |||
|
5380 | LC_ALL="$save_LC_ALL"; export LC_ALL | |||
|
5381 | fi | |||
|
5382 | if test "${save_LANG+set}" = set; then | |||
|
5383 | LANG="$save_LANG"; export LANG | |||
|
5384 | fi | |||
|
5385 | ||||
|
5386 | # Now prepare to actually exec the command. | |||
|
5387 | exec_cmd="\$cmd$args" | |||
|
5388 | else | |||
|
5389 | # Display what would be done. | |||
|
5390 | if test -n "$shlibpath_var"; then | |||
|
5391 | eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" | |||
|
5392 | $echo "export $shlibpath_var" | |||
|
5393 | fi | |||
|
5394 | $echo "$cmd$args" | |||
|
5395 | exit 0 | |||
|
5396 | fi | |||
|
5397 | ;; | |||
|
5398 | ||||
|
5399 | # libtool clean and uninstall mode | |||
|
5400 | clean | uninstall) | |||
|
5401 | modename="$modename: $mode" | |||
|
5402 | rm="$nonopt" | |||
|
5403 | files= | |||
|
5404 | rmforce= | |||
|
5405 | exit_status=0 | |||
|
5406 | ||||
|
5407 | # This variable tells wrapper scripts just to set variables rather | |||
|
5408 | # than running their programs. | |||
|
5409 | libtool_install_magic="$magic" | |||
|
5410 | ||||
|
5411 | for arg | |||
|
5412 | do | |||
|
5413 | case $arg in | |||
|
5414 | -f) rm="$rm $arg"; rmforce=yes ;; | |||
|
5415 | -*) rm="$rm $arg" ;; | |||
|
5416 | *) files="$files $arg" ;; | |||
|
5417 | esac | |||
|
5418 | done | |||
|
5419 | ||||
|
5420 | if test -z "$rm"; then | |||
|
5421 | $echo "$modename: you must specify an RM program" 1>&2 | |||
|
5422 | $echo "$help" 1>&2 | |||
|
5423 | exit 1 | |||
|
5424 | fi | |||
|
5425 | ||||
|
5426 | rmdirs= | |||
|
5427 | ||||
|
5428 | for file in $files; do | |||
|
5429 | dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` | |||
|
5430 | if test "X$dir" = "X$file"; then | |||
|
5431 | dir=. | |||
|
5432 | objdir="$objdir" | |||
|
5433 | else | |||
|
5434 | objdir="$dir/$objdir" | |||
|
5435 | fi | |||
|
5436 | name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` | |||
|
5437 | test "$mode" = uninstall && objdir="$dir" | |||
|
5438 | ||||
|
5439 | # Remember objdir for removal later, being careful to avoid duplicates | |||
|
5440 | if test "$mode" = clean; then | |||
|
5441 | case " $rmdirs " in | |||
|
5442 | *" $objdir "*) ;; | |||
|
5443 | *) rmdirs="$rmdirs $objdir" ;; | |||
|
5444 | esac | |||
|
5445 | fi | |||
|
5446 | ||||
|
5447 | # Don't error if the file doesn't exist and rm -f was used. | |||
|
5448 | if (test -L "$file") >/dev/null 2>&1 \ | |||
|
5449 | || (test -h "$file") >/dev/null 2>&1 \ | |||
|
5450 | || test -f "$file"; then | |||
|
5451 | : | |||
|
5452 | elif test -d "$file"; then | |||
|
5453 | exit_status=1 | |||
|
5454 | continue | |||
|
5455 | elif test "$rmforce" = yes; then | |||
|
5456 | continue | |||
|
5457 | fi | |||
|
5458 | ||||
|
5459 | rmfiles="$file" | |||
|
5460 | ||||
|
5461 | case $name in | |||
|
5462 | *.la) | |||
|
5463 | # Possibly a libtool archive, so verify it. | |||
|
5464 | if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then | |||
|
5465 | . $dir/$name | |||
|
5466 | ||||
|
5467 | # Delete the libtool libraries and symlinks. | |||
|
5468 | for n in $library_names; do | |||
|
5469 | rmfiles="$rmfiles $objdir/$n" | |||
|
5470 | done | |||
|
5471 | test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" | |||
|
5472 | test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" | |||
|
5473 | ||||
|
5474 | if test "$mode" = uninstall; then | |||
|
5475 | if test -n "$library_names"; then | |||
|
5476 | # Do each command in the postuninstall commands. | |||
|
5477 | eval cmds=\"$postuninstall_cmds\" | |||
|
5478 | save_ifs="$IFS"; IFS='~' | |||
|
5479 | for cmd in $cmds; do | |||
|
5480 | IFS="$save_ifs" | |||
|
5481 | $show "$cmd" | |||
|
5482 | $run eval "$cmd" | |||
|
5483 | if test "$?" -ne 0 && test "$rmforce" != yes; then | |||
|
5484 | exit_status=1 | |||
|
5485 | fi | |||
|
5486 | done | |||
|
5487 | IFS="$save_ifs" | |||
|
5488 | fi | |||
|
5489 | ||||
|
5490 | if test -n "$old_library"; then | |||
|
5491 | # Do each command in the old_postuninstall commands. | |||
|
5492 | eval cmds=\"$old_postuninstall_cmds\" | |||
|
5493 | save_ifs="$IFS"; IFS='~' | |||
|
5494 | for cmd in $cmds; do | |||
|
5495 | IFS="$save_ifs" | |||
|
5496 | $show "$cmd" | |||
|
5497 | $run eval "$cmd" | |||
|
5498 | if test "$?" -ne 0 && test "$rmforce" != yes; then | |||
|
5499 | exit_status=1 | |||
|
5500 | fi | |||
|
5501 | done | |||
|
5502 | IFS="$save_ifs" | |||
|
5503 | fi | |||
|
5504 | # FIXME: should reinstall the best remaining shared library. | |||
|
5505 | fi | |||
|
5506 | fi | |||
|
5507 | ;; | |||
|
5508 | ||||
|
5509 | *.lo) | |||
|
5510 | # Possibly a libtool object, so verify it. | |||
|
5511 | if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then | |||
|
5512 | ||||
|
5513 | # Read the .lo file | |||
|
5514 | . $dir/$name | |||
|
5515 | ||||
|
5516 | # Add PIC object to the list of files to remove. | |||
|
5517 | if test -n "$pic_object" \ | |||
|
5518 | && test "$pic_object" != none; then | |||
|
5519 | rmfiles="$rmfiles $dir/$pic_object" | |||
|
5520 | fi | |||
|
5521 | ||||
|
5522 | # Add non-PIC object to the list of files to remove. | |||
|
5523 | if test -n "$non_pic_object" \ | |||
|
5524 | && test "$non_pic_object" != none; then | |||
|
5525 | rmfiles="$rmfiles $dir/$non_pic_object" | |||
|
5526 | fi | |||
|
5527 | fi | |||
|
5528 | ;; | |||
|
5529 | ||||
|
5530 | *) | |||
|
5531 | # Do a test to see if this is a libtool program. | |||
|
5532 | if test "$mode" = clean && | |||
|
5533 | (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then | |||
|
5534 | relink_command= | |||
|
5535 | . $dir/$file | |||
|
5536 | ||||
|
5537 | rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" | |||
|
5538 | if test "$fast_install" = yes && test -n "$relink_command"; then | |||
|
5539 | rmfiles="$rmfiles $objdir/lt-$name" | |||
|
5540 | fi | |||
|
5541 | fi | |||
|
5542 | ;; | |||
|
5543 | esac | |||
|
5544 | $show "$rm $rmfiles" | |||
|
5545 | $run $rm $rmfiles || exit_status=1 | |||
|
5546 | done | |||
|
5547 | ||||
|
5548 | # Try to remove the ${objdir}s in the directories where we deleted files | |||
|
5549 | for dir in $rmdirs; do | |||
|
5550 | if test -d "$dir"; then | |||
|
5551 | $show "rmdir $dir" | |||
|
5552 | $run rmdir $dir >/dev/null 2>&1 | |||
|
5553 | fi | |||
|
5554 | done | |||
|
5555 | ||||
|
5556 | exit $exit_status | |||
|
5557 | ;; | |||
|
5558 | ||||
|
5559 | "") | |||
|
5560 | $echo "$modename: you must specify a MODE" 1>&2 | |||
|
5561 | $echo "$generic_help" 1>&2 | |||
|
5562 | exit 1 | |||
|
5563 | ;; | |||
|
5564 | esac | |||
|
5565 | ||||
|
5566 | if test -z "$exec_cmd"; then | |||
|
5567 | $echo "$modename: invalid operation mode \`$mode'" 1>&2 | |||
|
5568 | $echo "$generic_help" 1>&2 | |||
|
5569 | exit 1 | |||
|
5570 | fi | |||
|
5571 | fi # test -z "$show_help" | |||
|
5572 | ||||
|
5573 | if test -n "$exec_cmd"; then | |||
|
5574 | eval exec $exec_cmd | |||
|
5575 | exit 1 | |||
|
5576 | fi | |||
|
5577 | ||||
|
5578 | # We need to display help for each of the modes. | |||
|
5579 | case $mode in | |||
|
5580 | "") $echo \ | |||
|
5581 | "Usage: $modename [OPTION]... [MODE-ARG]... | |||
|
5582 | ||||
|
5583 | Provide generalized library-building support services. | |||
|
5584 | ||||
|
5585 | --config show all configuration variables | |||
|
5586 | --debug enable verbose shell tracing | |||
|
5587 | -n, --dry-run display commands without modifying any files | |||
|
5588 | --features display basic configuration information and exit | |||
|
5589 | --finish same as \`--mode=finish' | |||
|
5590 | --help display this help message and exit | |||
|
5591 | --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] | |||
|
5592 | --quiet same as \`--silent' | |||
|
5593 | --silent don't print informational messages | |||
|
5594 | --tag=TAG use configuration variables from tag TAG | |||
|
5595 | --version print version information | |||
|
5596 | ||||
|
5597 | MODE must be one of the following: | |||
|
5598 | ||||
|
5599 | clean remove files from the build directory | |||
|
5600 | compile compile a source file into a libtool object | |||
|
5601 | execute automatically set library path, then run a program | |||
|
5602 | finish complete the installation of libtool libraries | |||
|
5603 | install install libraries or executables | |||
|
5604 | link create a library or an executable | |||
|
5605 | uninstall remove libraries from an installed directory | |||
|
5606 | ||||
|
5607 | MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for | |||
|
5608 | a more detailed description of MODE." | |||
|
5609 | exit 0 | |||
|
5610 | ;; | |||
|
5611 | ||||
|
5612 | clean) | |||
|
5613 | $echo \ | |||
|
5614 | "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... | |||
|
5615 | ||||
|
5616 | Remove files from the build directory. | |||
|
5617 | ||||
|
5618 | RM is the name of the program to use to delete files associated with each FILE | |||
|
5619 | (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed | |||
|
5620 | to RM. | |||
|
5621 | ||||
|
5622 | If FILE is a libtool library, object or program, all the files associated | |||
|
5623 | with it are deleted. Otherwise, only FILE itself is deleted using RM." | |||
|
5624 | ;; | |||
|
5625 | ||||
|
5626 | compile) | |||
|
5627 | $echo \ | |||
|
5628 | "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE | |||
|
5629 | ||||
|
5630 | Compile a source file into a libtool library object. | |||
|
5631 | ||||
|
5632 | This mode accepts the following additional options: | |||
|
5633 | ||||
|
5634 | -o OUTPUT-FILE set the output file name to OUTPUT-FILE | |||
|
5635 | -prefer-pic try to building PIC objects only | |||
|
5636 | -prefer-non-pic try to building non-PIC objects only | |||
|
5637 | -static always build a \`.o' file suitable for static linking | |||
|
5638 | ||||
|
5639 | COMPILE-COMMAND is a command to be used in creating a \`standard' object file | |||
|
5640 | from the given SOURCEFILE. | |||
|
5641 | ||||
|
5642 | The output file name is determined by removing the directory component from | |||
|
5643 | SOURCEFILE, then substituting the C source code suffix \`.c' with the | |||
|
5644 | library object suffix, \`.lo'." | |||
|
5645 | ;; | |||
|
5646 | ||||
|
5647 | execute) | |||
|
5648 | $echo \ | |||
|
5649 | "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... | |||
|
5650 | ||||
|
5651 | Automatically set library path, then run a program. | |||
|
5652 | ||||
|
5653 | This mode accepts the following additional options: | |||
|
5654 | ||||
|
5655 | -dlopen FILE add the directory containing FILE to the library path | |||
|
5656 | ||||
|
5657 | This mode sets the library path environment variable according to \`-dlopen' | |||
|
5658 | flags. | |||
|
5659 | ||||
|
5660 | If any of the ARGS are libtool executable wrappers, then they are translated | |||
|
5661 | into their corresponding uninstalled binary, and any of their required library | |||
|
5662 | directories are added to the library path. | |||
|
5663 | ||||
|
5664 | Then, COMMAND is executed, with ARGS as arguments." | |||
|
5665 | ;; | |||
|
5666 | ||||
|
5667 | finish) | |||
|
5668 | $echo \ | |||
|
5669 | "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... | |||
|
5670 | ||||
|
5671 | Complete the installation of libtool libraries. | |||
|
5672 | ||||
|
5673 | Each LIBDIR is a directory that contains libtool libraries. | |||
|
5674 | ||||
|
5675 | The commands that this mode executes may require superuser privileges. Use | |||
|
5676 | the \`--dry-run' option if you just want to see what would be executed." | |||
|
5677 | ;; | |||
|
5678 | ||||
|
5679 | install) | |||
|
5680 | $echo \ | |||
|
5681 | "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... | |||
|
5682 | ||||
|
5683 | Install executables or libraries. | |||
|
5684 | ||||
|
5685 | INSTALL-COMMAND is the installation command. The first component should be | |||
|
5686 | either the \`install' or \`cp' program. | |||
|
5687 | ||||
|
5688 | The rest of the components are interpreted as arguments to that command (only | |||
|
5689 | BSD-compatible install options are recognized)." | |||
|
5690 | ;; | |||
|
5691 | ||||
|
5692 | link) | |||
|
5693 | $echo \ | |||
|
5694 | "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... | |||
|
5695 | ||||
|
5696 | Link object files or libraries together to form another library, or to | |||
|
5697 | create an executable program. | |||
|
5698 | ||||
|
5699 | LINK-COMMAND is a command using the C compiler that you would use to create | |||
|
5700 | a program from several object files. | |||
|
5701 | ||||
|
5702 | The following components of LINK-COMMAND are treated specially: | |||
|
5703 | ||||
|
5704 | -all-static do not do any dynamic linking at all | |||
|
5705 | -avoid-version do not add a version suffix if possible | |||
|
5706 | -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime | |||
|
5707 | -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols | |||
|
5708 | -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) | |||
|
5709 | -export-symbols SYMFILE | |||
|
5710 | try to export only the symbols listed in SYMFILE | |||
|
5711 | -export-symbols-regex REGEX | |||
|
5712 | try to export only the symbols matching REGEX | |||
|
5713 | -LLIBDIR search LIBDIR for required installed libraries | |||
|
5714 | -lNAME OUTPUT-FILE requires the installed library libNAME | |||
|
5715 | -module build a library that can dlopened | |||
|
5716 | -no-fast-install disable the fast-install mode | |||
|
5717 | -no-install link a not-installable executable | |||
|
5718 | -no-undefined declare that a library does not refer to external symbols | |||
|
5719 | -o OUTPUT-FILE create OUTPUT-FILE from the specified objects | |||
|
5720 | -objectlist FILE Use a list of object files found in FILE to specify objects | |||
|
5721 | -release RELEASE specify package release information | |||
|
5722 | -rpath LIBDIR the created library will eventually be installed in LIBDIR | |||
|
5723 | -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries | |||
|
5724 | -static do not do any dynamic linking of libtool libraries | |||
|
5725 | -version-info CURRENT[:REVISION[:AGE]] | |||
|
5726 | specify library version info [each variable defaults to 0] | |||
|
5727 | ||||
|
5728 | All other options (arguments beginning with \`-') are ignored. | |||
|
5729 | ||||
|
5730 | Every other argument is treated as a filename. Files ending in \`.la' are | |||
|
5731 | treated as uninstalled libtool libraries, other files are standard or library | |||
|
5732 | object files. | |||
|
5733 | ||||
|
5734 | If the OUTPUT-FILE ends in \`.la', then a libtool library is created, | |||
|
5735 | only library objects (\`.lo' files) may be specified, and \`-rpath' is | |||
|
5736 | required, except when creating a convenience library. | |||
|
5737 | ||||
|
5738 | If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created | |||
|
5739 | using \`ar' and \`ranlib', or on Windows using \`lib'. | |||
|
5740 | ||||
|
5741 | If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file | |||
|
5742 | is created, otherwise an executable program is created." | |||
|
5743 | ;; | |||
|
5744 | ||||
|
5745 | uninstall) | |||
|
5746 | $echo \ | |||
|
5747 | "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... | |||
|
5748 | ||||
|
5749 | Remove libraries from an installation directory. | |||
|
5750 | ||||
|
5751 | RM is the name of the program to use to delete files associated with each FILE | |||
|
5752 | (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed | |||
|
5753 | to RM. | |||
|
5754 | ||||
|
5755 | If FILE is a libtool library, all the files associated with it are deleted. | |||
|
5756 | Otherwise, only FILE itself is deleted using RM." | |||
|
5757 | ;; | |||
|
5758 | ||||
|
5759 | *) | |||
|
5760 | $echo "$modename: invalid operation mode \`$mode'" 1>&2 | |||
|
5761 | $echo "$help" 1>&2 | |||
|
5762 | exit 1 | |||
|
5763 | ;; | |||
|
5764 | esac | |||
|
5765 | ||||
|
5766 | echo | |||
|
5767 | $echo "Try \`$modename --help' for more information about other modes." | |||
|
5768 | ||||
|
5769 | exit 0 | |||
|
5770 | ||||
|
5771 | # The TAGs below are defined such that we never get into a situation | |||
|
5772 | # in which we disable both kinds of libraries. Given conflicting | |||
|
5773 | # choices, we go for a static library, that is the most portable, | |||
|
5774 | # since we can't tell whether shared libraries were disabled because | |||
|
5775 | # the user asked for that or because the platform doesn't support | |||
|
5776 | # them. This is particularly important on AIX, because we don't | |||
|
5777 | # support having both static and shared libraries enabled at the same | |||
|
5778 | # time on that platform, so we default to a shared-only configuration. | |||
|
5779 | # If a disable-shared tag is given, we'll fallback to a static-only | |||
|
5780 | # configuration. But we'll never go from static-only to shared-only. | |||
|
5781 | ||||
|
5782 | # ### BEGIN LIBTOOL TAG CONFIG: disable-shared | |||
|
5783 | build_libtool_libs=no | |||
|
5784 | build_old_libs=yes | |||
|
5785 | # ### END LIBTOOL TAG CONFIG: disable-shared | |||
|
5786 | ||||
|
5787 | # ### BEGIN LIBTOOL TAG CONFIG: disable-static | |||
|
5788 | build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` | |||
|
5789 | # ### END LIBTOOL TAG CONFIG: disable-static | |||
|
5790 | ||||
|
5791 | # Local Variables: | |||
|
5792 | # mode:shell-script | |||
|
5793 | # sh-indentation:2 | |||
|
5794 | # End: |
@@ -0,0 +1,11 | |||||
|
1 | prefix=@prefix@ | |||
|
2 | exec_prefix=@exec_prefix@ | |||
|
3 | libdir=@libdir@ | |||
|
4 | includedir=@includedir@ | |||
|
5 | ||||
|
6 | Name: @PACKAGE_NAME@ | |||
|
7 | Description: Example C++ library. | |||
|
8 | Version: @PACKAGE_VERSION@ | |||
|
9 | URL: @PACKAGE_URL@ | |||
|
10 | Libs: -L${libdir} -lrs232-@RS232_API_VERSION@ | |||
|
11 | Cflags: -I${includedir}/rs232-@RS232_API_VERSION@ -I${libdir}/rs232-@RS232_API_VERSION@/include |
@@ -0,0 +1,15 | |||||
|
1 | lib_LTLIBRARIES = librs232-@RS232_API_VERSION@.la | |||
|
2 | ||||
|
3 | ||||
|
4 | librs232_@RS232_API_VERSION@_la_LDFLAGS = -version-info $(RS232_SO_VERSION) | |||
|
5 | ||||
|
6 | rs232_includedir = $(includedir)/rs232-$(RS232_API_VERSION) | |||
|
7 | ||||
|
8 | ||||
|
9 | rs232_libincludedir = $(libdir)/rs232-$(RS232_API_VERSION)/include | |||
|
10 | ||||
|
11 | librs232_@RS232_API_VERSION@_la_SOURCES = \ | |||
|
12 | RS232.c | |||
|
13 | ||||
|
14 | pkgconfigdir = $(libdir)/pkgconfig | |||
|
15 | pkgconfig_DATA = ../rs232-@RS232_API_VERSION@.pc |
@@ -0,0 +1,220 | |||||
|
1 | // SOPSUYSI_RS232.c - Function to communicate on Serial Port | |||
|
2 | ||||
|
3 | #include <stdio.h> | |||
|
4 | #include <unistd.h> | |||
|
5 | #include <fcntl.h> | |||
|
6 | #include <termios.h> | |||
|
7 | #include <string.h> | |||
|
8 | #include <errno.h> | |||
|
9 | #include "RS232.h" | |||
|
10 | ||||
|
11 | ||||
|
12 | speed_t rs232cfspeed(unsigned int BaudeRate) | |||
|
13 | { | |||
|
14 | if(BaudeRate<25) | |||
|
15 | return B0; | |||
|
16 | ||||
|
17 | if(BaudeRate<67) | |||
|
18 | return B50; | |||
|
19 | ||||
|
20 | if(BaudeRate<93) | |||
|
21 | return B75; | |||
|
22 | ||||
|
23 | if(BaudeRate<123) | |||
|
24 | return B110; | |||
|
25 | ||||
|
26 | if(BaudeRate<142) | |||
|
27 | return B134; | |||
|
28 | ||||
|
29 | if(BaudeRate<175) | |||
|
30 | return B150; | |||
|
31 | ||||
|
32 | if(BaudeRate<250) | |||
|
33 | return B200; | |||
|
34 | ||||
|
35 | if(BaudeRate<450) | |||
|
36 | return B300; | |||
|
37 | ||||
|
38 | if(BaudeRate<900) | |||
|
39 | return B600; | |||
|
40 | ||||
|
41 | if(BaudeRate<1500) | |||
|
42 | return B1200; | |||
|
43 | ||||
|
44 | if(BaudeRate<2100) | |||
|
45 | return B1800; | |||
|
46 | ||||
|
47 | if(BaudeRate<3600) | |||
|
48 | return B2400; | |||
|
49 | ||||
|
50 | if(BaudeRate<7200) | |||
|
51 | return B4800; | |||
|
52 | ||||
|
53 | if(BaudeRate<1400) | |||
|
54 | return B9600; | |||
|
55 | ||||
|
56 | if(BaudeRate<28800) | |||
|
57 | return B19200; | |||
|
58 | ||||
|
59 | if(BaudeRate<48000) | |||
|
60 | return B38400; | |||
|
61 | ||||
|
62 | if(BaudeRate<86400) | |||
|
63 | return B57600; | |||
|
64 | ||||
|
65 | if(BaudeRate<172800) | |||
|
66 | return B115200; | |||
|
67 | else | |||
|
68 | // if(172799<BaudeRate) | |||
|
69 | return B230400; | |||
|
70 | } | |||
|
71 | ||||
|
72 | ||||
|
73 | int rs232cfparity(int fd, struct termios *terminos, int Parity) | |||
|
74 | { | |||
|
75 | if (fd == -1) | |||
|
76 | { | |||
|
77 | return fd; | |||
|
78 | } | |||
|
79 | else | |||
|
80 | { | |||
|
81 | switch(Parity) | |||
|
82 | { | |||
|
83 | case 1: | |||
|
84 | terminos->c_cflag |= PARENB; | |||
|
85 | break; | |||
|
86 | default: | |||
|
87 | terminos->c_cflag &= ~PARENB; | |||
|
88 | break; | |||
|
89 | } | |||
|
90 | return 0; | |||
|
91 | } | |||
|
92 | } | |||
|
93 | ||||
|
94 | ||||
|
95 | int rs232cfnbstop(int fd, struct termios *terminos, int NbStop) | |||
|
96 | { | |||
|
97 | if (fd == -1) | |||
|
98 | { | |||
|
99 | return fd; | |||
|
100 | } | |||
|
101 | else | |||
|
102 | { | |||
|
103 | switch(NbStop) | |||
|
104 | { | |||
|
105 | case 2: | |||
|
106 | terminos->c_cflag |= CSTOPB; | |||
|
107 | break; | |||
|
108 | default: | |||
|
109 | terminos->c_cflag &= ~CSTOPB; | |||
|
110 | break; | |||
|
111 | } | |||
|
112 | return 0; | |||
|
113 | } | |||
|
114 | } | |||
|
115 | ||||
|
116 | ||||
|
117 | int rs232cfcsize(int fd, struct termios *terminos, int ChSize) | |||
|
118 | { | |||
|
119 | if (fd == -1) | |||
|
120 | { | |||
|
121 | return fd; | |||
|
122 | } | |||
|
123 | else | |||
|
124 | { | |||
|
125 | switch(ChSize) | |||
|
126 | { | |||
|
127 | case 5: | |||
|
128 | terminos->c_cflag |= CS5; | |||
|
129 | break; | |||
|
130 | case 6: | |||
|
131 | terminos->c_cflag |= CS6; | |||
|
132 | break; | |||
|
133 | case 7: | |||
|
134 | terminos->c_cflag |= CS7; | |||
|
135 | break; | |||
|
136 | default: | |||
|
137 | terminos->c_cflag |= CS8; | |||
|
138 | break; | |||
|
139 | } | |||
|
140 | return 0; | |||
|
141 | } | |||
|
142 | } | |||
|
143 | ||||
|
144 | ||||
|
145 | int rs232open(char* psPortName) | |||
|
146 | { | |||
|
147 | ||||
|
148 | int fd = open(psPortName, O_RDWR | O_NOCTTY | O_NDELAY); | |||
|
149 | ||||
|
150 | return fd; | |||
|
151 | } | |||
|
152 | ||||
|
153 | ||||
|
154 | int rs232setup(int fd, int ChSize, int BaudeRate, int Parity, int NbStop) | |||
|
155 | { | |||
|
156 | if (fd == -1) | |||
|
157 | { | |||
|
158 | return fd; | |||
|
159 | } | |||
|
160 | else | |||
|
161 | { | |||
|
162 | struct termios terminos; | |||
|
163 | tcgetattr(fd, &terminos); | |||
|
164 | ||||
|
165 | cfsetispeed(&terminos, rs232cfspeed(BaudeRate)); | |||
|
166 | cfsetospeed(&terminos, rs232cfspeed(BaudeRate)); | |||
|
167 | ||||
|
168 | terminos.c_cflag |= (CLOCAL | CREAD); | |||
|
169 | rs232cfparity(fd, &terminos, Parity); | |||
|
170 | rs232cfnbstop(fd, &terminos, NbStop); | |||
|
171 | rs232cfcsize(fd, &terminos, ChSize); | |||
|
172 | ||||
|
173 | ||||
|
174 | tcsetattr(fd, TCSANOW, &terminos); | |||
|
175 | tcgetattr(fd, &terminos); | |||
|
176 | return 0; | |||
|
177 | } | |||
|
178 | } | |||
|
179 | ||||
|
180 | ||||
|
181 | int rs232write(int fd,char *psWrite) | |||
|
182 | { | |||
|
183 | int Len_psWrite = (int)strlen(psWrite); | |||
|
184 | ||||
|
185 | if (fd == -1) | |||
|
186 | { | |||
|
187 | return fd; | |||
|
188 | } | |||
|
189 | else | |||
|
190 | { | |||
|
191 | return write(fd, psWrite, Len_psWrite); | |||
|
192 | } | |||
|
193 | } | |||
|
194 | ||||
|
195 | ||||
|
196 | int rs232read(int fd,char *psReadHex, int ReadBufferSize) | |||
|
197 | { | |||
|
198 | if (fd == -1) | |||
|
199 | { | |||
|
200 | return fd; | |||
|
201 | } | |||
|
202 | else | |||
|
203 | { | |||
|
204 | return read(fd, psReadHex, ReadBufferSize); | |||
|
205 | } | |||
|
206 | } | |||
|
207 | ||||
|
208 | ||||
|
209 | int rs232close(int fd) | |||
|
210 | { | |||
|
211 | if (fd == -1) | |||
|
212 | { | |||
|
213 | return fd; | |||
|
214 | } | |||
|
215 | else | |||
|
216 | { | |||
|
217 | close(fd); | |||
|
218 | return 0; | |||
|
219 | } | |||
|
220 | } |
@@ -0,0 +1,9 | |||||
|
1 | // SOPSUYSI_RS232.h | |||
|
2 | ||||
|
3 | ||||
|
4 | ||||
|
5 | int rs232open(char* psPortName); | |||
|
6 | int rs232close(int fd); | |||
|
7 | int rs232setup(int fd, int ChSize, int BaudeRate, int Parity, int NbStop); | |||
|
8 | int rs232write(int fd,char *psWrite); | |||
|
9 | int rs232read(int fd,char *psReadHex, int ReadBufferSize); |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now